From d693bd5377f09dc553b05f7b26056f8501533c0c Mon Sep 17 00:00:00 2001 From: Bruksx Date: Wed, 30 Sep 2026 10:02:38 +0100 Subject: [PATCH 01/13] bruks first commit --- .python-version | 2 +- alplora/views.py | 2 +- datacenterlight/cms_toolbar.py | 2 +- datacenterlight/tasks.py | 2 +- datacenterlight/templatetags/custom_tags.py | 2 +- datacenterlight/views.py | 2 +- digitalglarus/forms.py | 2 +- digitalglarus/urls.py | 2 +- digitalglarus/views.py | 2 +- dynamicweb/settings-test/__init__.py | 2 +- dynamicweb/settings/base.py | 3 +- hosting/forms.py | 2 +- hosting/views.py | 2 +- membership/forms.py | 2 +- membership/models.py | 2 +- nosystemd/forms.py | 2 +- templates/__init__.py | 2 +- templates/cms/__init__.py | 2 +- templates/cms/digitalglarus/__init__.py | 2 +- templates/cms/ungleichch/__init__.py | 2 +- ungleich/cms_toolbar.py | 2 +- ungleich/templates/cms/ungleichch/__init__.py | 2 +- ungleich/views.py | 2 +- ungleich_page/cms_menus.py | 2 +- ungleich_page/urls.py | 2 +- ungleich_page/views.py | 2 +- updated_requirements.txt | 102 ++++++++++++++++++ utils/forms.py | 2 +- utils/views.py | 2 +- 29 files changed, 131 insertions(+), 28 deletions(-) create mode 100644 updated_requirements.txt diff --git a/.python-version b/.python-version index 6cb9d3dd..95ed564f 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.4.3 +3.14.2 diff --git a/alplora/views.py b/alplora/views.py index d628cffc..5021c88d 100644 --- a/alplora/views.py +++ b/alplora/views.py @@ -1,7 +1,7 @@ from django.views.generic import TemplateView from django.utils.translation import get_language, get_language_info -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views.generic.edit import FormView from django.contrib import messages from django.shortcuts import render diff --git a/datacenterlight/cms_toolbar.py b/datacenterlight/cms_toolbar.py index 15a8cb4b..466cce2f 100644 --- a/datacenterlight/cms_toolbar.py +++ b/datacenterlight/cms_toolbar.py @@ -1,6 +1,6 @@ from cms.extensions.toolbar import ExtensionToolbar from cms.toolbar_pool import toolbar_pool -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from .cms_models import CMSFaviconExtension diff --git a/datacenterlight/tasks.py b/datacenterlight/tasks.py index 899b506f..deb6838a 100644 --- a/datacenterlight/tasks.py +++ b/datacenterlight/tasks.py @@ -7,7 +7,7 @@ from django.conf import settings from django.core.mail import EmailMessage from django.core.urlresolvers import reverse from django.utils import translation -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from dynamicweb.celery import app from hosting.models import HostingOrder diff --git a/datacenterlight/templatetags/custom_tags.py b/datacenterlight/templatetags/custom_tags.py index fc39eec7..d61e8c10 100644 --- a/datacenterlight/templatetags/custom_tags.py +++ b/datacenterlight/templatetags/custom_tags.py @@ -4,7 +4,7 @@ import logging from django import template from django.core.urlresolvers import resolve, reverse from django.utils.safestring import mark_safe -from django.utils.translation import activate, get_language, ugettext_lazy as _ +from django.utils.translation import activate, get_language, gettext_lazy as _ from hosting.models import GenericProduct, HostingOrder from utils.hosting_utils import get_ip_addresses diff --git a/datacenterlight/views.py b/datacenterlight/views.py index c708ff6a..fe88348e 100644 --- a/datacenterlight/views.py +++ b/datacenterlight/views.py @@ -12,7 +12,7 @@ from django.http import ( HttpResponseRedirect, JsonResponse, Http404, HttpResponse ) from django.shortcuts import render -from django.utils.translation import get_language, ugettext_lazy as _ +from django.utils.translation import get_language, gettext_lazy as _ from django.views.decorators.cache import cache_control from django.views.generic import FormView, CreateView, DetailView diff --git a/digitalglarus/forms.py b/digitalglarus/forms.py index 200099e3..3597f081 100644 --- a/digitalglarus/forms.py +++ b/digitalglarus/forms.py @@ -1,6 +1,6 @@ from django import forms from django.db.models import Q -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from utils.models import BillingAddress diff --git a/digitalglarus/urls.py b/digitalglarus/urls.py index 64a63303..ead9c659 100644 --- a/digitalglarus/urls.py +++ b/digitalglarus/urls.py @@ -1,5 +1,5 @@ from django.conf.urls import url -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.contrib.auth import views as auth_views from . import views diff --git a/digitalglarus/views.py b/digitalglarus/views.py index bf3ed2c6..716e03c6 100644 --- a/digitalglarus/views.py +++ b/digitalglarus/views.py @@ -4,7 +4,7 @@ from django.conf import settings from django.shortcuts import render from django.http import HttpResponseRedirect, Http404 from django.core.urlresolvers import reverse_lazy, reverse -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views.generic import TemplateView, UpdateView from django.contrib.auth.mixins import LoginRequiredMixin from django.utils.translation import get_language diff --git a/dynamicweb/settings-test/__init__.py b/dynamicweb/settings-test/__init__.py index 1a8babdd..3d66350a 100644 --- a/dynamicweb/settings-test/__init__.py +++ b/dynamicweb/settings-test/__init__.py @@ -5,7 +5,7 @@ Copyright 2015 ungleich. # -*- coding: utf-8 -*- # Build paths inside the project like this: os.path.join(BASE_DIR, ...) import os -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ # dotenv import dotenv diff --git a/dynamicweb/settings/base.py b/dynamicweb/settings/base.py index b7705e17..cea56679 100644 --- a/dynamicweb/settings/base.py +++ b/dynamicweb/settings/base.py @@ -10,7 +10,7 @@ import os # dotenv import dotenv -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ logger = logging.getLogger(__name__) @@ -739,6 +739,7 @@ LDAP_CUSTOMER_GROUP_ID = int(env('LDAP_CUSTOMER_GROUP_ID')) LDAP_MAX_UID_FILE_PATH = os.environ.get('LDAP_MAX_UID_FILE_PATH', os.path.join(os.path.abspath(os.path.dirname(__file__)), 'ldap_max_uid_file') ) +print(os.environ) LDAP_DEFAULT_START_UID = int(env('LDAP_DEFAULT_START_UID')) # Search union over OUs diff --git a/hosting/forms.py b/hosting/forms.py index 8df2bd3e..aadf15b7 100644 --- a/hosting/forms.py +++ b/hosting/forms.py @@ -7,7 +7,7 @@ import xml from django import forms from django.conf import settings from django.contrib.auth import authenticate -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from membership.models import CustomUser from .models import UserHostingKey, GenericProduct diff --git a/hosting/views.py b/hosting/views.py index c2470707..e895e8df 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -23,7 +23,7 @@ from django.utils.decorators import method_decorator from django.utils.html import escape from django.utils.http import urlsafe_base64_decode from django.utils.safestring import mark_safe -from django.utils.translation import get_language, ugettext_lazy as _ +from django.utils.translation import get_language, gettext_lazy as _ from django.utils.translation import ugettext from django.views.decorators.cache import never_cache from django.views.generic import ( diff --git a/membership/forms.py b/membership/forms.py index a70b109d..58550f55 100644 --- a/membership/forms.py +++ b/membership/forms.py @@ -1,6 +1,6 @@ __author__ = 'tomislav' from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.contrib.auth import authenticate from .models import CreditCards diff --git a/membership/models.py b/membership/models.py index 81054fb9..3be626a1 100644 --- a/membership/models.py +++ b/membership/models.py @@ -12,7 +12,7 @@ from django.core.urlresolvers import reverse from django.core.validators import RegexValidator from django.db import models, IntegrityError from django.utils.crypto import get_random_string -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.core.exceptions import ValidationError from utils.mailer import BaseEmail diff --git a/nosystemd/forms.py b/nosystemd/forms.py index 8aa3eb35..6f66b572 100644 --- a/nosystemd/forms.py +++ b/nosystemd/forms.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from utils.forms import LoginFormMixin, SignupFormMixin, BillingAddressForm diff --git a/templates/__init__.py b/templates/__init__.py index 44a1270e..f5f30f6d 100644 --- a/templates/__init__.py +++ b/templates/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# from django.utils.translation import ugettext_lazy as _ +# from django.utils.translation import gettext_lazy as _ # TEMPLATES = { # 'digitalglarus/about.html': _('DG.About'), # 'digitalglarus/contact.html': _('DG.Contact'), diff --git a/templates/cms/__init__.py b/templates/cms/__init__.py index f27d72f5..232f3c63 100644 --- a/templates/cms/__init__.py +++ b/templates/cms/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ TEMPLATES = { 'digitalglarus/about.html': _('DG.About'), 'digitalglarus/contact.html': _('DG.Contact'), diff --git a/templates/cms/digitalglarus/__init__.py b/templates/cms/digitalglarus/__init__.py index 7b16fec8..9793c25a 100644 --- a/templates/cms/digitalglarus/__init__.py +++ b/templates/cms/digitalglarus/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ TEMPLATES = { 'about.html': _('DG.About'), 'contact.html': _('DG.Contact'), diff --git a/templates/cms/ungleichch/__init__.py b/templates/cms/ungleichch/__init__.py index 403fbcc0..ba61977d 100644 --- a/templates/cms/ungleichch/__init__.py +++ b/templates/cms/ungleichch/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ TEMPLATES = { 'blog.html': _('Blog'), 'page.html': _('Page'), diff --git a/ungleich/cms_toolbar.py b/ungleich/cms_toolbar.py index c001cca8..09c16828 100644 --- a/ungleich/cms_toolbar.py +++ b/ungleich/cms_toolbar.py @@ -1,5 +1,5 @@ from cms.extensions.toolbar import ExtensionToolbar -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from cms.toolbar_pool import toolbar_pool diff --git a/ungleich/templates/cms/ungleichch/__init__.py b/ungleich/templates/cms/ungleichch/__init__.py index 43f88894..01c3db68 100644 --- a/ungleich/templates/cms/ungleichch/__init__.py +++ b/ungleich/templates/cms/ungleichch/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# from django.utils.translation import ugettext_lazy as _ +# from django.utils.translation import gettext_lazy as _ # TEMPLATES = { # 'blog_u.html': _('Blog'), # 'page.html': _('Page'), diff --git a/ungleich/views.py b/ungleich/views.py index af7cb304..0dc51c77 100644 --- a/ungleich/views.py +++ b/ungleich/views.py @@ -6,7 +6,7 @@ from django.utils.translation import get_language from djangocms_blog.models import Post from djangocms_blog.views import PostListView from djangocms_blog.settings import get_setting -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from djangocms_blog.models import BlogCategory diff --git a/ungleich_page/cms_menus.py b/ungleich_page/cms_menus.py index 4e17c352..415a12d1 100644 --- a/ungleich_page/cms_menus.py +++ b/ungleich_page/cms_menus.py @@ -1,6 +1,6 @@ from menus.base import NavigationNode from menus.menu_pool import menu_pool -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from cms.menu_bases import CMSAttachMenu from cms.templatetags.cms_tags import _get_placeholder from cms.utils.plugins import get_plugins diff --git a/ungleich_page/urls.py b/ungleich_page/urls.py index 607b7042..d359cd6b 100644 --- a/ungleich_page/urls.py +++ b/ungleich_page/urls.py @@ -1,6 +1,6 @@ from django.conf.urls import url from .views import ContactView, LandingView -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ urlpatterns = [ url(r'^$', LandingView.as_view(), name='landing'), diff --git a/ungleich_page/views.py b/ungleich_page/views.py index 01d1138d..521f18ba 100644 --- a/ungleich_page/views.py +++ b/ungleich_page/views.py @@ -1,7 +1,7 @@ from django.contrib import messages from django.views.generic.edit import FormView -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.core.urlresolvers import reverse_lazy from django.views.generic import View from django.shortcuts import render diff --git a/updated_requirements.txt b/updated_requirements.txt new file mode 100644 index 00000000..4b4b2305 --- /dev/null +++ b/updated_requirements.txt @@ -0,0 +1,102 @@ +Babel==2.3.4 +Django +Django-Select2==4.3.2 +Pillow==3.2.0 +URLObject==2.4.0 +Unidecode==0.04.19 +YURL==0.13 +aldryn-apphooks-config==0.2.7 +aldryn-boilerplates==0.7.4 +aldryn-categories==1.0.3 +aldryn-common==1.0.1 +aldryn-newsblog==1.2.1 +aldryn-people==1.2.0 +aldryn-reversion==1.0.8 +aldryn-search==0.2.11 +aldryn-translation-tools==0.2.1 +backport-collections==0.1 +cmsplugin-filer==1.0.1 +django-appconf==1.0.2 +django-appdata==0.1.5 +django-bootstrap3==7.0.1 +django-classy-tags==0.7.2 +django-cms==3.2.5 +django-compressor==2.0 +django-debug-toolbar==1.4 +python-dotenv==0.10.3 +django-extensions==1.6.7 +django-filer==1.2.0 +django-filter==0.13.0 +django-formtools==1.0 +django-guardian==1.4.4 +django-haystack==2.4.1 +django-meta==1.2 +django-meta-mixin==0.3.0 +django-model-utils==2.5 +django-mptt==0.8.4 +django-parler==1.6.3 +django-phonenumber-field==1.1.0 +django-polymorphic==0.8.1 +django-reversion==1.10.2 +django-sekizai==0.9.0 +django-sortedm2m==2.0.0 +django-spurl==0.6.4 +django-standard-form==1.1.1 +django-stored-messages==1.4.0 +django-taggit==0.18.3 +django-taggit-autosuggest==0.2.8 +django-taggit-templatetags==0.2.5 +django-templatetag-sugar==1.0 +django-treebeard==4.0.1 +djangocms-admin-style==1.1.1 +djangocms-apphook-setup==0.1.2 +djangocms-blog==0.9.0 +djangocms-file==1.0 +djangocms-flash==0.3.0 +djangocms-googlemap==0.4.0 +djangocms-inherit==0.2.1 +djangocms-link==1.7.2 +djangocms-page-meta==0.5.11 +djangocms-picture==1.0.0 +djangocms-teaser==0.2.0 +djangocms-text-ckeditor==2.9.3 +djangocms-video==1.0.0 +easy-thumbnails==2.3 +html5lib==0.9999999 +ldap3==2.6.1 +lxml==3.6.0 +model-mommy==1.2.6 +phonenumbers==7.4.0 +phonenumberslite==7.4.0 +psycopg2==2.7.3.2 +pycryptodome==3.6.6 +pylibmc==1.5.1 +python-dateutil==2.5.3 +python-slugify==1.2.0 +pytz==2016.4 +rcssmin==1.0.6 +requests==2.10.0 +rjsmin==1.0.12 +six==1.10.0 +sqlparse +stripe==2.41.0 +wheel==0.29.0 +django-admin-honeypot==1.0.0 +coverage==4.3.4 +git+https://github.com/ungleich/python-oca.git#egg=oca +djangorestframework==3.6.3 +flake8==3.3.0 +python-memcached==1.58 +celery==4.0.2 +redis==2.10.5 +django-celery-results==1.0.1 +kombu==4.1.0 +mccabe==0.6.1 +pycodestyle==2.3.1 +pyflakes==1.5.0 +billiard==3.5.0.3 +amqp==2.2.1 +vine==1.1.4 +cdist==5.0.1 +git+https://github.com/ungleich/djangocms-multisite.git#egg=djangocms_multisite +pyotp diff --git a/utils/forms.py b/utils/forms.py index 3cc57578..362c99db 100644 --- a/utils/forms.py +++ b/utils/forms.py @@ -2,7 +2,7 @@ from django import forms from django.contrib.auth import authenticate from django.core.mail import EmailMultiAlternatives from django.template.loader import render_to_string -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django_recaptcha.fields import ReCaptchaField diff --git a/utils/views.py b/utils/views.py index f30a349a..e39d20cd 100644 --- a/utils/views.py +++ b/utils/views.py @@ -10,7 +10,7 @@ from django.http import HttpResponseRedirect from django.shortcuts import render from django.utils.encoding import force_bytes from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views.decorators.cache import cache_control from django.views.generic import FormView, CreateView -- 2.52.0 From 1ece5ce7c7afdf15219795762353c55ce1714b72 Mon Sep 17 00:00:00 2001 From: Bruksx Date: Wed, 30 Sep 2026 10:43:10 +0100 Subject: [PATCH 02/13] fix import 'reverse' --- datacenterlight/tasks.py | 2 +- datacenterlight/templatetags/custom_tags.py | 2 +- datacenterlight/views.py | 2 +- digitalglarus/admin.py | 2 +- digitalglarus/mixins.py | 2 +- digitalglarus/models.py | 2 +- digitalglarus/test_views.py | 4 +- digitalglarus/views.py | 2 +- dynamicweb/settings/base.py | 46 ++--- dynamicweb/urls.py | 2 +- hosting/mixins.py | 2 +- hosting/test_views.py | 4 +- hosting/views.py | 2 +- membership/models.py | 2 +- membership/tests.py | 2 +- nosystemd/admin.py | 2 +- nosystemd/views.py | 2 +- ungleich/test_views.py | 4 +- ungleich_page/test_views.py | 4 +- ungleich_page/views.py | 2 +- updated_requirements.txt | 176 +++++++++----------- utils/views.py | 2 +- 22 files changed, 125 insertions(+), 145 deletions(-) diff --git a/datacenterlight/tasks.py b/datacenterlight/tasks.py index deb6838a..75db8cce 100644 --- a/datacenterlight/tasks.py +++ b/datacenterlight/tasks.py @@ -5,7 +5,7 @@ from celery.exceptions import MaxRetriesExceededError from celery.utils.log import get_task_logger from django.conf import settings from django.core.mail import EmailMessage -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils import translation from django.utils.translation import gettext_lazy as _ diff --git a/datacenterlight/templatetags/custom_tags.py b/datacenterlight/templatetags/custom_tags.py index d61e8c10..767df291 100644 --- a/datacenterlight/templatetags/custom_tags.py +++ b/datacenterlight/templatetags/custom_tags.py @@ -2,7 +2,7 @@ import datetime import logging from django import template -from django.core.urlresolvers import resolve, reverse +from from django.urls import reverse import resolve, reverse from django.utils.safestring import mark_safe from django.utils.translation import activate, get_language, gettext_lazy as _ diff --git a/datacenterlight/views.py b/datacenterlight/views.py index fe88348e..7128b669 100644 --- a/datacenterlight/views.py +++ b/datacenterlight/views.py @@ -7,7 +7,7 @@ from django.conf import settings from django.contrib import messages from django.contrib.auth import login, authenticate from django.core.exceptions import ValidationError -from django.core.urlresolvers import reverse +from django.urls import reverse from django.http import ( HttpResponseRedirect, JsonResponse, Http404, HttpResponse ) diff --git a/digitalglarus/admin.py b/digitalglarus/admin.py index c887e8d2..cd419d09 100644 --- a/digitalglarus/admin.py +++ b/digitalglarus/admin.py @@ -2,7 +2,7 @@ from django.contrib import admin from .models import DGGallery, DGPicture, Booking, BookingPrice,\ MembershipOrder, Membership, MembershipType, BookingOrder, BookingCancellation -from django.core.urlresolvers import reverse +from django.urls import reverse from utils.models import ContactMessage from django.utils.html import format_html diff --git a/digitalglarus/mixins.py b/digitalglarus/mixins.py index 18a02239..48347857 100644 --- a/digitalglarus/mixins.py +++ b/digitalglarus/mixins.py @@ -1,4 +1,4 @@ -from django.core.urlresolvers import reverse_lazy +from django.urls import reverse_lazy from django.contrib.auth.mixins import LoginRequiredMixin from django.views.generic import UpdateView from django.db import models diff --git a/digitalglarus/models.py b/digitalglarus/models.py index fc4289aa..10f23f6a 100644 --- a/digitalglarus/models.py +++ b/digitalglarus/models.py @@ -7,7 +7,7 @@ from django.db import models from django.db.models import Q from cms.models import CMSPlugin from filer.fields.image import FilerImageField -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils.functional import cached_property from .mixins import Ordereable diff --git a/digitalglarus/test_views.py b/digitalglarus/test_views.py index aff11081..39221be8 100644 --- a/digitalglarus/test_views.py +++ b/digitalglarus/test_views.py @@ -3,8 +3,8 @@ from unittest import mock, skipIf from django.test import TestCase from django.conf import settings -from django.core.urlresolvers import reverse -from django.core.urlresolvers import resolve +from django.urls import reverse +from from django.urls import reverse import resolve from cms.test_utils.testcases import CMSTestCase from django.contrib.auth.tokens import default_token_generator from django.utils.http import urlsafe_base64_encode diff --git a/digitalglarus/views.py b/digitalglarus/views.py index 716e03c6..6e620843 100644 --- a/digitalglarus/views.py +++ b/digitalglarus/views.py @@ -3,7 +3,7 @@ import logging from django.conf import settings from django.shortcuts import render from django.http import HttpResponseRedirect, Http404 -from django.core.urlresolvers import reverse_lazy, reverse +from django.urls import reverse_lazy, reverse from django.utils.translation import gettext_lazy as _ from django.views.generic import TemplateView, UpdateView from django.contrib.auth.mixins import LoginRequiredMixin diff --git a/dynamicweb/settings/base.py b/dynamicweb/settings/base.py index cea56679..4f48309b 100644 --- a/dynamicweb/settings/base.py +++ b/dynamicweb/settings/base.py @@ -96,7 +96,7 @@ INSTALLED_APPS = ( 'djangocms_multisite', 'easy_thumbnails', 'utils', - 'stored_messages', + #'stored_messages', 'mptt', 'parler', 'guardian', @@ -104,43 +104,43 @@ INSTALLED_APPS = ( 'taggit_autosuggest', # 'django_select2', 'meta', - 'meta_mixin', + #'meta_mixin', 'bootstrap3', 'compressor', 'filer', 'djangocms_blog', - 'cms', # django CMS itself - 'aldryn_apphooks_config', - 'aldryn_boilerplates', - 'aldryn_categories', - 'aldryn_common', - 'aldryn_newsblog', - 'aldryn_people', - 'aldryn_reversion', - 'aldryn_translation_tools', + #TODO'cms', # django CMS itself + #TODO'aldryn_apphooks_config', + #TODO'aldryn_boilerplates', + #TODO'aldryn_categories', + #TODO'aldryn_common', + #TODO'aldryn_newsblog', + #TODO'aldryn_people', + #TODO'aldryn_reversion', + #TODO'aldryn_translation_tools', 'treebeard', # utilities for implementing a tree 'sekizai', # for javascript and css management - 'menus', # helper for model independent hierarchical website navigation - 'cmsplugin_filer_image', + #TODO'menus', # helper for model independent hierarchical website navigation + #TODO'cmsplugin_filer_image', # 2nd migrate # django-cms plugins - 'djangocms_file', - 'djangocms_picture', - 'djangocms_video', - 'django_recaptcha', + #TODO'djangocms_file', + #TODO'djangocms_picture', + #TODO'djangocms_video', + #TODO'django_recaptcha', # 'djangocms_flash', # 'djangocms_googlemap', # 'djangocms_inherit', # 'djangocms_link', # 'djangocms_teaser', - 'djangocms_page_meta', + #TODO 'djangocms_page_meta', 'djangocms_text_ckeditor', - 'cmsplugin_filer_file', - 'cmsplugin_filer_folder', - 'cmsplugin_filer_link', + #TODO'cmsplugin_filer_file', + #TODO'cmsplugin_filer_folder', + #TODO 'cmsplugin_filer_link', # 'cmsplugin_filer_teaser', - 'cmsplugin_filer_video', + #'cmsplugin_filer_video', # # blog # versioning @@ -739,7 +739,7 @@ LDAP_CUSTOMER_GROUP_ID = int(env('LDAP_CUSTOMER_GROUP_ID')) LDAP_MAX_UID_FILE_PATH = os.environ.get('LDAP_MAX_UID_FILE_PATH', os.path.join(os.path.abspath(os.path.dirname(__file__)), 'ldap_max_uid_file') ) -print(os.environ) + LDAP_DEFAULT_START_UID = int(env('LDAP_DEFAULT_START_UID')) # Search union over OUs diff --git a/dynamicweb/urls.py b/dynamicweb/urls.py index 113a5cda..44c0ec27 100644 --- a/dynamicweb/urls.py +++ b/dynamicweb/urls.py @@ -15,7 +15,7 @@ from webhook import views as webhook_views from membership import urls as membership_urls from ungleich_page.views import LandingView from django.views.generic import RedirectView -from django.core.urlresolvers import reverse_lazy +from django.urls import reverse_lazy import debug_toolbar urlpatterns = [ diff --git a/hosting/mixins.py b/hosting/mixins.py index 5fb83383..dfb010cf 100644 --- a/hosting/mixins.py +++ b/hosting/mixins.py @@ -1,6 +1,6 @@ from django.shortcuts import redirect from django.conf import settings -from django.core.urlresolvers import reverse +from django.urls import reverse from opennebula_api.serializers import VirtualMachineTemplateSerializer from opennebula_api.models import OpenNebulaManager diff --git a/hosting/test_views.py b/hosting/test_views.py index 324aa4fa..d1665691 100644 --- a/hosting/test_views.py +++ b/hosting/test_views.py @@ -1,7 +1,7 @@ from django.conf import settings from django.test import TestCase -from django.core.urlresolvers import reverse -from django.core.urlresolvers import resolve +from django.urls import reverse +from from django.urls import reverse import resolve from django.contrib.auth.tokens import default_token_generator from django.utils.http import urlsafe_base64_encode from django.utils.encoding import force_bytes diff --git a/hosting/views.py b/hosting/views.py index e895e8df..adf0a423 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -13,7 +13,7 @@ from django.contrib.auth.tokens import default_token_generator from django.core.exceptions import ValidationError from django.core.files.base import ContentFile from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger -from django.core.urlresolvers import reverse_lazy, reverse +from django.urls import reverse_lazy, reverse from django.db.models import Q from django.http import ( Http404, HttpResponseRedirect, HttpResponse, JsonResponse diff --git a/membership/models.py b/membership/models.py index 3be626a1..d8eaa023 100644 --- a/membership/models.py +++ b/membership/models.py @@ -8,7 +8,7 @@ from django.contrib.auth.hashers import make_password from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, \ PermissionsMixin from django.contrib.sites.models import Site -from django.core.urlresolvers import reverse +from django.urls import reverse from django.core.validators import RegexValidator from django.db import models, IntegrityError from django.utils.crypto import get_random_string diff --git a/membership/tests.py b/membership/tests.py index 4b36fe4c..04a3bfdf 100644 --- a/membership/tests.py +++ b/membership/tests.py @@ -1,7 +1,7 @@ # import re # from django.test import TestCase -# from django.core.urlresolvers import reverse +# from django.urls import reverse # from django.core import mail diff --git a/nosystemd/admin.py b/nosystemd/admin.py index b07cea8c..93a912fc 100644 --- a/nosystemd/admin.py +++ b/nosystemd/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin from django.utils.html import format_html -from django.core.urlresolvers import reverse +from django.urls import reverse from .models import Donation diff --git a/nosystemd/views.py b/nosystemd/views.py index cca19e8d..7f6e0fc7 100644 --- a/nosystemd/views.py +++ b/nosystemd/views.py @@ -2,7 +2,7 @@ from django.views.generic import TemplateView, FormView, DetailView, UpdateView, ListView from django.http import HttpResponseRedirect from django.shortcuts import render -from django.core.urlresolvers import reverse_lazy, reverse +from django.urls import reverse_lazy, reverse from django.contrib.auth.mixins import LoginRequiredMixin from django.conf import settings from django.contrib import messages diff --git a/ungleich/test_views.py b/ungleich/test_views.py index 17130857..a2266df8 100644 --- a/ungleich/test_views.py +++ b/ungleich/test_views.py @@ -1,7 +1,7 @@ from utils.tests import BaseTestCase from django.conf import settings -from django.core.urlresolvers import reverse -from django.core.urlresolvers import resolve +from django.urls import reverse +from from django.urls import reverse import resolve from django.utils.translation import get_language from django.utils.translation import activate from djangocms_blog.settings import get_setting diff --git a/ungleich_page/test_views.py b/ungleich_page/test_views.py index d67708bd..9c8483fb 100644 --- a/ungleich_page/test_views.py +++ b/ungleich_page/test_views.py @@ -1,6 +1,6 @@ from django.test import TestCase -from django.core.urlresolvers import reverse -from django.core.urlresolvers import resolve +from django.urls import reverse +from from django.urls import reverse import resolve class ContactViewTest(TestCase): diff --git a/ungleich_page/views.py b/ungleich_page/views.py index 521f18ba..7df24427 100644 --- a/ungleich_page/views.py +++ b/ungleich_page/views.py @@ -2,7 +2,7 @@ from django.contrib import messages from django.views.generic.edit import FormView from django.utils.translation import gettext_lazy as _ -from django.core.urlresolvers import reverse_lazy +from django.urls import reverse_lazy from django.views.generic import View from django.shortcuts import render diff --git a/updated_requirements.txt b/updated_requirements.txt index 4b4b2305..b609d9a9 100644 --- a/updated_requirements.txt +++ b/updated_requirements.txt @@ -1,102 +1,82 @@ -Babel==2.3.4 -Django -Django-Select2==4.3.2 -Pillow==3.2.0 -URLObject==2.4.0 -Unidecode==0.04.19 -YURL==0.13 -aldryn-apphooks-config==0.2.7 -aldryn-boilerplates==0.7.4 -aldryn-categories==1.0.3 -aldryn-common==1.0.1 -aldryn-newsblog==1.2.1 -aldryn-people==1.2.0 -aldryn-reversion==1.0.8 -aldryn-search==0.2.11 -aldryn-translation-tools==0.2.1 -backport-collections==0.1 -cmsplugin-filer==1.0.1 -django-appconf==1.0.2 -django-appdata==0.1.5 -django-bootstrap3==7.0.1 -django-classy-tags==0.7.2 -django-cms==3.2.5 -django-compressor==2.0 -django-debug-toolbar==1.4 -python-dotenv==0.10.3 -django-extensions==1.6.7 -django-filer==1.2.0 -django-filter==0.13.0 -django-formtools==1.0 -django-guardian==1.4.4 -django-haystack==2.4.1 -django-meta==1.2 +aldryn-apphooks-config==0.7.0 +aldryn-boilerplates==0.8.0 +aldryn-common==1.0.5 +aldryn-newsblog==2.2.1 +aldryn-people==2.2.0 +aldryn-translation-tools==0.3.0 +amqp==5.4.0 +asgiref==3.12.1 +babel==2.18.0 +backport_collections==0.1 +billiard==4.3.0 +celery==5.6.3 +certifi==2026.7.22 +charset-normalizer==3.5.2 +click==8.5.0 +click-didyoumean==0.3.1 +click-plugins==1.1.1.2 +click-repl==0.4.0 +Django==6.1.1 +django-appconf==1.2.0 +django-appdata==0.4.0 +django-bootstrap3==26.2 +django-classy-tags==0.8.0 +django-cms==3.5.4 +django-filer==3.6.0 +django-formtools==2.1 +django-guardian==3.5.0 +django-js-asset==4.2.0 +django-meta==2.5.1 django-meta-mixin==0.3.0 -django-model-utils==2.5 -django-mptt==0.8.4 -django-parler==1.6.3 -django-phonenumber-field==1.1.0 -django-polymorphic==0.8.1 +django-mptt==0.18.0 +django-multisite==1.9.0 +django-parler==2.4 +django-phonenumber-field==1.3.0 +django-polymorphic==4.11.7 django-reversion==1.10.2 -django-sekizai==0.9.0 -django-sortedm2m==2.0.0 -django-spurl==0.6.4 -django-standard-form==1.1.1 -django-stored-messages==1.4.0 -django-taggit==0.18.3 -django-taggit-autosuggest==0.2.8 +django-sekizai==0.10.0 +django-sortedm2m==4.0.0 +django-taggit==6.1.0 +django-taggit-autosuggest==0.4.2 django-taggit-templatetags==0.2.5 django-templatetag-sugar==1.0 -django-treebeard==4.0.1 -djangocms-admin-style==1.1.1 -djangocms-apphook-setup==0.1.2 -djangocms-blog==0.9.0 -djangocms-file==1.0 -djangocms-flash==0.3.0 -djangocms-googlemap==0.4.0 -djangocms-inherit==0.2.1 -djangocms-link==1.7.2 -djangocms-page-meta==0.5.11 -djangocms-picture==1.0.0 -djangocms-teaser==0.2.0 -djangocms-text-ckeditor==2.9.3 -djangocms-video==1.0.0 -easy-thumbnails==2.3 -html5lib==0.9999999 -ldap3==2.6.1 -lxml==3.6.0 -model-mommy==1.2.6 -phonenumbers==7.4.0 -phonenumberslite==7.4.0 -psycopg2==2.7.3.2 -pycryptodome==3.6.6 -pylibmc==1.5.1 -python-dateutil==2.5.3 -python-slugify==1.2.0 -pytz==2016.4 -rcssmin==1.0.6 -requests==2.10.0 -rjsmin==1.0.12 -six==1.10.0 -sqlparse -stripe==2.41.0 -wheel==0.29.0 -django-admin-honeypot==1.0.0 -coverage==4.3.4 -git+https://github.com/ungleich/python-oca.git#egg=oca -djangorestframework==3.6.3 -flake8==3.3.0 -python-memcached==1.58 -celery==4.0.2 -redis==2.10.5 -django-celery-results==1.0.1 -kombu==4.1.0 -mccabe==0.6.1 -pycodestyle==2.3.1 -pyflakes==1.5.0 -billiard==3.5.0.3 -amqp==2.2.1 -vine==1.1.4 -cdist==5.0.1 -git+https://github.com/ungleich/djangocms-multisite.git#egg=djangocms_multisite -pyotp +django-treebeard==4.3.1 +django_compressor==4.6.0 +djangocms-admin-style==3.3.1 +djangocms-apphook-setup==0.5.1 +djangocms-blog==2.0.10 +djangocms-multisite==0.3.1 +djangocms-text-ckeditor==5.1.7 +easy-thumbnails==2.10.1 +html5lib==1.1 +idna==3.20 +kombu==5.6.2 +lxml==6.1.3 +packaging==26.3 +phonenumbers==9.0.40 +phonenumberslite==9.0.40 +pillow==12.3.0 +pluggy==0.13.1 +prompt_toolkit==3.0.53 +py_svg_hush==0.3.0 +python-dateutil==2.9.0.post0 +python-dotenv==1.2.3 +python-slugify==9.1.2 +pytz==2026.4 +rcssmin==1.2.2 +requests==2.34.2 +requests-file==3.0.1 +rjsmin==1.2.5 +six==1.17.0 +sqlparse==0.6.0 +text-unidecode==1.3 +tldextract==2.2.3 +typing_extensions==4.16.0 +tzdata==2026.4 +tzlocal==5.4.4 +Unidecode==1.4.0 +urllib3==2.8.0 +vine==5.1.0 +wcwidth==0.9.1 +webencodings==0.6.1 +YURL==1.0.0 diff --git a/utils/views.py b/utils/views.py index e39d20cd..c1fbed36 100644 --- a/utils/views.py +++ b/utils/views.py @@ -5,7 +5,7 @@ from django.contrib import messages from django.contrib.auth import authenticate, login from django.contrib.auth.tokens import default_token_generator from django.core.files.base import ContentFile -from django.core.urlresolvers import reverse_lazy +from django.urls import reverse_lazy from django.http import HttpResponseRedirect from django.shortcuts import render from django.utils.encoding import force_bytes -- 2.52.0 From afb096b7a3473f826a8ff63d4fd4c13a3f8f6b8f Mon Sep 17 00:00:00 2001 From: Bruksx Date: Wed, 30 Sep 2026 15:27:04 +0100 Subject: [PATCH 03/13] clone cms with menus, make menus standalone app --- cms/__init__.py | 1 + cms/__main__.py | 9 + cms/admin/__init__.py | 10 + cms/admin/forms.py | 1714 +++++ cms/admin/pageadmin.py | 1513 +++++ cms/admin/permissionadmin.py | 232 + cms/admin/placeholderadmin.py | 1355 ++++ cms/admin/settingsadmin.py | 156 + cms/admin/useradmin.py | 171 + cms/admin/utils.py | 1192 ++++ cms/api.py | 728 +++ cms/app_base.py | 259 + cms/app_registration.py | 203 + cms/apphook_pool.py | 102 + cms/appresolver.py | 295 + cms/apps.py | 14 + cms/cache/__init__.py | 87 + cms/cache/choices.py | 30 + cms/cache/page.py | 272 + cms/cache/permissions.py | 76 + cms/cache/placeholder.py | 171 + cms/cms_config.py | 87 + cms/cms_menus.py | 526 ++ cms/cms_plugins.py | 19 + cms/cms_toolbars.py | 730 +++ cms/cms_wizards.py | 56 + cms/constants.py | 90 + cms/context_processors.py | 31 + cms/exceptions.py | 85 + cms/extensions/__init__.py | 11 + cms/extensions/admin.py | 109 + cms/extensions/extension_pool.py | 94 + cms/extensions/models.py | 69 + cms/extensions/toolbar.py | 101 + cms/forms/__init__.py | 0 cms/forms/fields.py | 116 + cms/forms/login.py | 15 + cms/forms/utils.py | 107 + cms/forms/validators.py | 117 + cms/forms/widgets.py | 249 + cms/forms/wizards.py | 176 + cms/locale/af/LC_MESSAGES/django.po | 2264 +++++++ cms/locale/af/LC_MESSAGES/djangojs.po | 22 + cms/locale/ar/LC_MESSAGES/django.po | 1741 ++++++ cms/locale/ar/LC_MESSAGES/djangojs.po | 27 + cms/locale/ar_SA/LC_MESSAGES/django.po | 2268 +++++++ cms/locale/ar_SA/LC_MESSAGES/djangojs.po | 22 + cms/locale/be/LC_MESSAGES/django.po | 1632 +++++ cms/locale/be/LC_MESSAGES/djangojs.po | 22 + cms/locale/bg/LC_MESSAGES/django.po | 1763 ++++++ cms/locale/bg/LC_MESSAGES/djangojs.po | 27 + cms/locale/bn/LC_MESSAGES/django.po | 1753 ++++++ cms/locale/bn/LC_MESSAGES/djangojs.po | 23 + cms/locale/ca/LC_MESSAGES/django.po | 1764 ++++++ cms/locale/ca/LC_MESSAGES/djangojs.po | 23 + cms/locale/cmn/LC_MESSAGES/django.po | 1983 ++++++ cms/locale/cmn/LC_MESSAGES/djangojs.po | 22 + cms/locale/cs/LC_MESSAGES/django.po | 1757 ++++++ cms/locale/cs/LC_MESSAGES/djangojs.po | 26 + cms/locale/cs_CZ/LC_MESSAGES/django.po | 2266 +++++++ cms/locale/cs_CZ/LC_MESSAGES/djangojs.po | 22 + cms/locale/cy/LC_MESSAGES/django.po | 2266 +++++++ cms/locale/cy/LC_MESSAGES/djangojs.po | 22 + cms/locale/da/LC_MESSAGES/django.po | 1660 +++++ cms/locale/da/LC_MESSAGES/djangojs.po | 25 + cms/locale/de/LC_MESSAGES/django.po | 1774 ++++++ cms/locale/de/LC_MESSAGES/djangojs.po | 26 + cms/locale/el/LC_MESSAGES/django.po | 1781 ++++++ cms/locale/el/LC_MESSAGES/djangojs.po | 23 + cms/locale/en/LC_MESSAGES/django.po | 1992 ++++++ cms/locale/en/LC_MESSAGES/djangojs.po | 23 + cms/locale/en_GB/LC_MESSAGES/django.po | 2266 +++++++ cms/locale/en_GB/LC_MESSAGES/djangojs.po | 22 + cms/locale/en_HK/LC_MESSAGES/django.po | 2264 +++++++ cms/locale/en_HK/LC_MESSAGES/djangojs.po | 22 + cms/locale/en_US/LC_MESSAGES/django.po | 2264 +++++++ cms/locale/en_US/LC_MESSAGES/djangojs.po | 22 + cms/locale/eo/LC_MESSAGES/django.po | 2268 +++++++ cms/locale/eo/LC_MESSAGES/djangojs.po | 22 + cms/locale/es/LC_MESSAGES/django.po | 1780 ++++++ cms/locale/es/LC_MESSAGES/djangojs.po | 25 + cms/locale/es_AR/LC_MESSAGES/django.po | 2268 +++++++ cms/locale/es_AR/LC_MESSAGES/djangojs.po | 23 + cms/locale/es_BO/LC_MESSAGES/django.po | 2267 +++++++ cms/locale/es_BO/LC_MESSAGES/djangojs.po | 25 + cms/locale/es_DO/LC_MESSAGES/django.po | 2265 +++++++ cms/locale/es_DO/LC_MESSAGES/djangojs.po | 22 + cms/locale/et/LC_MESSAGES/django.po | 1638 +++++ cms/locale/et/LC_MESSAGES/djangojs.po | 24 + cms/locale/eu/LC_MESSAGES/django.po | 1642 +++++ cms/locale/eu/LC_MESSAGES/djangojs.po | 23 + cms/locale/fa/LC_MESSAGES/django.po | 1756 ++++++ cms/locale/fa/LC_MESSAGES/djangojs.po | 25 + cms/locale/fa_IR/LC_MESSAGES/django.po | 1633 +++++ cms/locale/fa_IR/LC_MESSAGES/djangojs.po | 23 + cms/locale/fi/LC_MESSAGES/django.po | 1762 ++++++ cms/locale/fi/LC_MESSAGES/djangojs.po | 23 + cms/locale/fi_FI/LC_MESSAGES/django.po | 2269 +++++++ cms/locale/fi_FI/LC_MESSAGES/djangojs.po | 22 + cms/locale/fr/LC_MESSAGES/django.po | 1782 ++++++ cms/locale/fr/LC_MESSAGES/djangojs.po | 28 + cms/locale/fr_CA/LC_MESSAGES/django.po | 2265 +++++++ cms/locale/fr_CA/LC_MESSAGES/djangojs.po | 22 + cms/locale/fr_FR/LC_MESSAGES/django.po | 1983 ++++++ cms/locale/fr_FR/LC_MESSAGES/djangojs.po | 22 + cms/locale/ga/LC_MESSAGES/django.po | 2267 +++++++ cms/locale/ga/LC_MESSAGES/djangojs.po | 22 + cms/locale/gl/LC_MESSAGES/django.po | 1636 +++++ cms/locale/gl/LC_MESSAGES/djangojs.po | 23 + cms/locale/gu/LC_MESSAGES/django.po | 1632 +++++ cms/locale/gu/LC_MESSAGES/djangojs.po | 22 + cms/locale/he/LC_MESSAGES/django.po | 1728 ++++++ cms/locale/he/LC_MESSAGES/djangojs.po | 26 + cms/locale/hi/LC_MESSAGES/django.po | 1751 ++++++ cms/locale/hi/LC_MESSAGES/djangojs.po | 22 + cms/locale/hr/LC_MESSAGES/django.po | 1762 ++++++ cms/locale/hr/LC_MESSAGES/djangojs.po | 24 + cms/locale/hu/LC_MESSAGES/django.po | 1772 ++++++ cms/locale/hu/LC_MESSAGES/djangojs.po | 25 + cms/locale/id/LC_MESSAGES/django.po | 1757 ++++++ cms/locale/id/LC_MESSAGES/djangojs.po | 22 + cms/locale/is/LC_MESSAGES/django.po | 1634 +++++ cms/locale/is/LC_MESSAGES/djangojs.po | 24 + cms/locale/is_IS/LC_MESSAGES/django.po | 2264 +++++++ cms/locale/is_IS/LC_MESSAGES/djangojs.po | 22 + cms/locale/it/LC_MESSAGES/django.po | 1764 ++++++ cms/locale/it/LC_MESSAGES/djangojs.po | 30 + cms/locale/ja/LC_MESSAGES/django.po | 1691 +++++ cms/locale/ja/LC_MESSAGES/djangojs.po | 24 + cms/locale/ka/LC_MESSAGES/django.po | 1632 +++++ cms/locale/ka/LC_MESSAGES/djangojs.po | 23 + cms/locale/kk/LC_MESSAGES/django.po | 1632 +++++ cms/locale/kk/LC_MESSAGES/djangojs.po | 24 + cms/locale/km/LC_MESSAGES/django.po | 1633 +++++ cms/locale/km/LC_MESSAGES/djangojs.po | 24 + cms/locale/ko/LC_MESSAGES/django.po | 1704 +++++ cms/locale/ko/LC_MESSAGES/djangojs.po | 22 + cms/locale/ko_KR/LC_MESSAGES/django.po | 1635 +++++ cms/locale/ko_KR/LC_MESSAGES/djangojs.po | 24 + cms/locale/ku_IQ/LC_MESSAGES/django.po | 1640 +++++ cms/locale/ku_IQ/LC_MESSAGES/djangojs.po | 22 + cms/locale/ky/LC_MESSAGES/django.po | 1634 +++++ cms/locale/ky/LC_MESSAGES/djangojs.po | 23 + cms/locale/lt/LC_MESSAGES/django.po | 1765 ++++++ cms/locale/lt/LC_MESSAGES/djangojs.po | 24 + cms/locale/lt_LT/LC_MESSAGES/django.po | 2266 +++++++ cms/locale/lt_LT/LC_MESSAGES/djangojs.po | 22 + cms/locale/lv/LC_MESSAGES/django.po | 1634 +++++ cms/locale/lv/LC_MESSAGES/djangojs.po | 23 + cms/locale/ml/LC_MESSAGES/django.po | 2264 +++++++ cms/locale/ml/LC_MESSAGES/djangojs.po | 22 + cms/locale/mn/LC_MESSAGES/django.po | 1632 +++++ cms/locale/mn/LC_MESSAGES/djangojs.po | 22 + cms/locale/mn_MN/LC_MESSAGES/django.po | 2266 +++++++ cms/locale/mn_MN/LC_MESSAGES/djangojs.po | 22 + cms/locale/ms/LC_MESSAGES/django.po | 2263 +++++++ cms/locale/ms/LC_MESSAGES/djangojs.po | 22 + cms/locale/mt/LC_MESSAGES/django.po | 2266 +++++++ cms/locale/mt/LC_MESSAGES/djangojs.po | 22 + cms/locale/nb/LC_MESSAGES/django.po | 1748 ++++++ cms/locale/nb/LC_MESSAGES/djangojs.po | 26 + cms/locale/nl/LC_MESSAGES/django.po | 1764 ++++++ cms/locale/nl/LC_MESSAGES/djangojs.po | 28 + cms/locale/no/LC_MESSAGES/django.po | 1646 +++++ cms/locale/no/LC_MESSAGES/djangojs.po | 25 + cms/locale/pap/LC_MESSAGES/django.po | 2264 +++++++ cms/locale/pap/LC_MESSAGES/djangojs.po | 22 + cms/locale/pl/LC_MESSAGES/django.po | 1762 ++++++ cms/locale/pl/LC_MESSAGES/djangojs.po | 26 + cms/locale/pt/LC_MESSAGES/django.po | 1766 ++++++ cms/locale/pt/LC_MESSAGES/djangojs.po | 24 + cms/locale/pt_BR/LC_MESSAGES/django.po | 1766 ++++++ cms/locale/pt_BR/LC_MESSAGES/djangojs.po | 25 + cms/locale/pt_PT/LC_MESSAGES/django.po | 1711 +++++ cms/locale/pt_PT/LC_MESSAGES/djangojs.po | 23 + cms/locale/ro/LC_MESSAGES/django.po | 1657 +++++ cms/locale/ro/LC_MESSAGES/djangojs.po | 24 + cms/locale/ro_RO/LC_MESSAGES/django.po | 2265 +++++++ cms/locale/ro_RO/LC_MESSAGES/djangojs.po | 22 + cms/locale/ru/LC_MESSAGES/django.po | 1771 ++++++ cms/locale/ru/LC_MESSAGES/djangojs.po | 26 + cms/locale/ru_RU/LC_MESSAGES/django.po | 2266 +++++++ cms/locale/ru_RU/LC_MESSAGES/djangojs.po | 22 + cms/locale/sk/LC_MESSAGES/django.po | 1664 +++++ cms/locale/sk/LC_MESSAGES/djangojs.po | 22 + cms/locale/sk_SK/LC_MESSAGES/django.po | 2268 +++++++ cms/locale/sk_SK/LC_MESSAGES/djangojs.po | 22 + cms/locale/sl/LC_MESSAGES/django.po | 1632 +++++ cms/locale/sl/LC_MESSAGES/djangojs.po | 22 + cms/locale/sl_SI/LC_MESSAGES/django.po | 2268 +++++++ cms/locale/sl_SI/LC_MESSAGES/djangojs.po | 25 + cms/locale/sq/LC_MESSAGES/django.po | 1762 ++++++ cms/locale/sq/LC_MESSAGES/djangojs.po | 25 + cms/locale/sq_AL/LC_MESSAGES/django.po | 2264 +++++++ cms/locale/sq_AL/LC_MESSAGES/djangojs.po | 22 + cms/locale/sr/LC_MESSAGES/django.po | 1631 +++++ cms/locale/sr/LC_MESSAGES/djangojs.po | 22 + cms/locale/sr@latin/LC_MESSAGES/django.po | 1633 +++++ cms/locale/sr@latin/LC_MESSAGES/djangojs.po | 22 + cms/locale/sv/LC_MESSAGES/django.po | 1757 ++++++ cms/locale/sv/LC_MESSAGES/djangojs.po | 25 + cms/locale/ta/LC_MESSAGES/django.po | 1632 +++++ cms/locale/ta/LC_MESSAGES/djangojs.po | 24 + cms/locale/th/LC_MESSAGES/django.po | 2263 +++++++ cms/locale/th/LC_MESSAGES/djangojs.po | 22 + cms/locale/th_TH/LC_MESSAGES/django.po | 2263 +++++++ cms/locale/th_TH/LC_MESSAGES/djangojs.po | 22 + cms/locale/tlh/LC_MESSAGES/django.po | 2264 +++++++ cms/locale/tlh/LC_MESSAGES/djangojs.po | 22 + cms/locale/tr/LC_MESSAGES/django.po | 1758 ++++++ cms/locale/tr/LC_MESSAGES/djangojs.po | 23 + cms/locale/tr_TR/LC_MESSAGES/django.po | 2269 +++++++ cms/locale/tr_TR/LC_MESSAGES/djangojs.po | 22 + cms/locale/ug/LC_MESSAGES/django.po | 2264 +++++++ cms/locale/ug/LC_MESSAGES/djangojs.po | 22 + cms/locale/uk/LC_MESSAGES/django.po | 1764 ++++++ cms/locale/uk/LC_MESSAGES/djangojs.po | 27 + cms/locale/ur/LC_MESSAGES/django.po | 1630 +++++ cms/locale/ur/LC_MESSAGES/djangojs.po | 22 + cms/locale/vi/LC_MESSAGES/django.po | 1748 ++++++ cms/locale/vi/LC_MESSAGES/djangojs.po | 22 + cms/locale/vi_VN/LC_MESSAGES/django.po | 2263 +++++++ cms/locale/vi_VN/LC_MESSAGES/djangojs.po | 22 + cms/locale/zh-Hans/LC_MESSAGES/django.po | 1984 ++++++ cms/locale/zh-Hans/LC_MESSAGES/djangojs.po | 22 + cms/locale/zh/LC_MESSAGES/django.po | 2312 +++++++ cms/locale/zh/LC_MESSAGES/djangojs.po | 22 + cms/locale/zh_CN.GB2312/LC_MESSAGES/django.po | 1981 ++++++ .../zh_CN.GB2312/LC_MESSAGES/djangojs.po | 22 + cms/locale/zh_CN/LC_MESSAGES/django.po | 1678 +++++ cms/locale/zh_CN/LC_MESSAGES/djangojs.po | 25 + cms/locale/zh_TW/LC_MESSAGES/django.po | 1675 +++++ cms/locale/zh_TW/LC_MESSAGES/djangojs.po | 26 + cms/management/__init__.py | 0 cms/management/commands/__init__.py | 0 cms/management/commands/cms.py | 33 + .../commands/djangocms_install_rules.json | 127 + cms/management/commands/startcmsproject.py | 1292 ++++ .../commands/subcommands/__init__.py | 0 cms/management/commands/subcommands/base.py | 105 + cms/management/commands/subcommands/check.py | 14 + cms/management/commands/subcommands/copy.py | 202 + .../subcommands/delete_orphaned_plugins.py | 121 + cms/management/commands/subcommands/list.py | 135 + cms/management/commands/subcommands/tree.py | 110 + .../commands/subcommands/uninstall.py | 69 + cms/management/djangocms.py | 24 + cms/menu_bases.py | 51 + cms/middleware/__init__.py | 0 cms/middleware/language.py | 40 + cms/middleware/page.py | 27 + cms/middleware/toolbar.py | 111 + cms/middleware/user.py | 21 + cms/middleware/utils.py | 17 + ...nitial_squashed_0022_auto_20180620_1551.py | 746 +++ .../0023_placeholder_source_field.py | 25 + .../0024_set_plugin_absolute_position.py | 66 + .../0025_remove_plugin_tree_fields.py | 42 + cms/migrations/0026_title_placeholders.py | 24 + .../0027_title_placeholders_data_migration.py | 120 + .../0028_remove_page_placeholders.py | 21 + .../0029_create_title_fields_and_url_model.py | 74 + cms/migrations/0030_auto_20180810_0629.py | 48 + cms/migrations/0031_remove_fields.py | 81 + .../0032_remove_title_to_pagecontent.py | 24 + .../0033_placeholder_source_data_migration.py | 55 + .../0034_remove_pagecontent_placeholders.py | 21 + cms/migrations/0035_auto_20230822_2208.py | 35 + ...2_2208_squashed_0036_auto_20240311_1028.py | 23 + cms/migrations/0036_auto_20240311_1028.py | 27 + cms/migrations/0037_merge_page_treenode.py | 90 + cms/migrations/0038_alter_page_site.py | 67 + ...languages_alter_pageurl_unique_together.py | 31 + ...0040_alter_pageuser_created_by_and_more.py | 35 + ...l_unique_together_pageurl_site_and_more.py | 23 + ...olderreference_placeholder_ref_and_more.py | 19 + ..._globalpagepermission_can_view_and_more.py | 57 + .../0044_pagecontent_slug_overwrite_url.py | 121 + .../0045_pageurl_site_unique_path.py | 100 + cms/migrations/__init__.py | 12 + cms/models/__init__.py | 13 + cms/models/aliaspluginmodel.py | 64 + cms/models/apphooks_reload.py | 39 + cms/models/contentmodels.py | 418 ++ cms/models/fields.py | 102 + cms/models/managers.py | 382 ++ cms/models/pagemodel.py | 1379 ++++ cms/models/permissionmodels.py | 382 ++ cms/models/placeholdermodel.py | 820 +++ cms/models/placeholderpluginmodel.py | 42 + cms/models/pluginmodel.py | 502 ++ cms/models/query.py | 133 + cms/models/settingmodels.py | 46 + cms/operations/__init__.py | 33 + cms/operations/helpers.py | 26 + cms/page_rendering.py | 98 + cms/plugin_base.py | 977 +++ cms/plugin_pool.py | 409 ++ cms/plugin_processors.py | 21 + cms/plugin_rendering.py | 798 +++ cms/signals/__init__.py | 128 + cms/signals/apphook.py | 49 + cms/signals/log_entries.py | 153 + cms/signals/pagecontent.py | 37 + cms/signals/permissions.py | 137 + cms/sitemaps/__init__.py | 1 + cms/sitemaps/cms_sitemap.py | 123 + cms/static/cms/css/5.2.0dev1/cms.admin.css | 3 + cms/static/cms/css/5.2.0dev1/cms.base.css | 3 + cms/static/cms/css/5.2.0dev1/cms.headless.css | 1 + cms/static/cms/css/5.2.0dev1/cms.pagetree.css | 3 + cms/static/cms/css/5.2.0dev1/cms.welcome.css | 3 + cms/static/cms/css/5.2.0dev1/cms.wizard.css | 3 + .../fonts/5.2.0dev1/django-cms-iconfont.eot | Bin 0 -> 15184 bytes .../fonts/5.2.0dev1/django-cms-iconfont.svg | 213 + .../fonts/5.2.0dev1/django-cms-iconfont.ttf | Bin 0 -> 14972 bytes .../fonts/5.2.0dev1/django-cms-iconfont.woff | Bin 0 -> 7988 bytes .../fonts/5.2.0dev1/django-cms-iconfont.woff2 | Bin 0 -> 6584 bytes cms/static/cms/fonts/src/_template.svgz | 5 + .../cms/fonts/src/advanced-settings.svg | 3 + cms/static/cms/fonts/src/alias.svg | 3 + cms/static/cms/fonts/src/apphook.svg | 3 + cms/static/cms/fonts/src/archive.svg | 3 + cms/static/cms/fonts/src/arrow-right.svg | 3 + cms/static/cms/fonts/src/arrow-wide.svg | 7 + cms/static/cms/fonts/src/arrow.svg | 3 + cms/static/cms/fonts/src/bin.svg | 3 + cms/static/cms/fonts/src/broadcast-off.svg | 22 + cms/static/cms/fonts/src/broadcast-on.svg | 22 + cms/static/cms/fonts/src/check-circle.svg | 4 + cms/static/cms/fonts/src/check-o.svg | 19 + cms/static/cms/fonts/src/check-square.svg | 3 + cms/static/cms/fonts/src/check.svg | 15 + cms/static/cms/fonts/src/close.svg | 3 + cms/static/cms/fonts/src/cogs.svg | 5 + cms/static/cms/fonts/src/comment.svg | 4 + cms/static/cms/fonts/src/compare.svg | 3 + cms/static/cms/fonts/src/copy.svg | 3 + cms/static/cms/fonts/src/cut.svg | 1 + cms/static/cms/fonts/src/edit-new.svg | 4 + cms/static/cms/fonts/src/edit.svg | 3 + .../cms/fonts/src/external-placeholder.svg | 4 + cms/static/cms/fonts/src/eye.svg | 4 + cms/static/cms/fonts/src/forbidden.svg | 14 + cms/static/cms/fonts/src/handler.svg | 12 + cms/static/cms/fonts/src/highlight.svg | 3 + cms/static/cms/fonts/src/home.svg | 4 + cms/static/cms/fonts/src/info.svg | 4 + cms/static/cms/fonts/src/layers.svg | 4 + cms/static/cms/fonts/src/list-ol.svg | 4 + cms/static/cms/fonts/src/loader.svg | 14 + cms/static/cms/fonts/src/lock.svg | 3 + cms/static/cms/fonts/src/logo.svg | 2 + cms/static/cms/fonts/src/manage-versions.svg | 26 + cms/static/cms/fonts/src/menu.svg | 3 + cms/static/cms/fonts/src/minimize.svg | 2 + cms/static/cms/fonts/src/minus-circle.svg | 4 + cms/static/cms/fonts/src/minus-square-o.svg | 18 + cms/static/cms/fonts/src/minus-square.svg | 4 + cms/static/cms/fonts/src/minus.svg | 2 + cms/static/cms/fonts/src/moderate.svg | 4 + cms/static/cms/fonts/src/paste.svg | 4 + cms/static/cms/fonts/src/pencil.svg | 4 + cms/static/cms/fonts/src/pin.svg | 3 + cms/static/cms/fonts/src/plugins.svg | 2 + cms/static/cms/fonts/src/plus-circle.svg | 4 + cms/static/cms/fonts/src/plus-square-o.svg | 20 + cms/static/cms/fonts/src/plus.svg | 3 + cms/static/cms/fonts/src/publish.svg | 3 + cms/static/cms/fonts/src/puzzle.svg | 4 + cms/static/cms/fonts/src/redirect.svg | 4 + cms/static/cms/fonts/src/redo.svg | 4 + cms/static/cms/fonts/src/rename.svg | 4 + cms/static/cms/fonts/src/scissors.svg | 3 + cms/static/cms/fonts/src/search.svg | 3 + cms/static/cms/fonts/src/settings.svg | 3 + cms/static/cms/fonts/src/sitemap.svg | 3 + cms/static/cms/fonts/src/squares.svg | 3 + cms/static/cms/fonts/src/theme-auto.svg | 3 + cms/static/cms/fonts/src/theme-dark.svg | 3 + cms/static/cms/fonts/src/theme-light.svg | 3 + cms/static/cms/fonts/src/undo.svg | 4 + cms/static/cms/fonts/src/unlock.svg | 3 + cms/static/cms/fonts/src/unpublish.svg | 22 + cms/static/cms/fonts/src/view.svg | 4 + cms/static/cms/fonts/src/window.svg | 2 + cms/static/cms/img/favicon.png | Bin 0 -> 10311 bytes cms/static/cms/img/icons/filetypes/flv.gif | Bin 0 -> 384 bytes cms/static/cms/img/icons/filetypes/gif.gif | Bin 0 -> 621 bytes cms/static/cms/img/icons/filetypes/html.gif | Bin 0 -> 285 bytes cms/static/cms/img/icons/filetypes/java.gif | Bin 0 -> 650 bytes cms/static/cms/img/icons/filetypes/jpg.gif | Bin 0 -> 621 bytes cms/static/cms/img/icons/filetypes/mp3.png | Bin 0 -> 388 bytes cms/static/cms/img/icons/filetypes/ods.png | Bin 0 -> 749 bytes cms/static/cms/img/icons/filetypes/odt.png | Bin 0 -> 702 bytes cms/static/cms/img/icons/filetypes/pdf.gif | Bin 0 -> 208 bytes cms/static/cms/img/icons/filetypes/php.gif | Bin 0 -> 296 bytes cms/static/cms/img/icons/filetypes/png.gif | Bin 0 -> 621 bytes cms/static/cms/img/icons/filetypes/swf.gif | Bin 0 -> 279 bytes cms/static/cms/img/icons/filetypes/tgz.png | Bin 0 -> 548 bytes cms/static/cms/img/icons/filetypes/ttf.gif | Bin 0 -> 648 bytes cms/static/cms/img/icons/filetypes/txt.gif | Bin 0 -> 276 bytes cms/static/cms/img/icons/filetypes/txt.png | Bin 0 -> 654 bytes cms/static/cms/img/icons/filetypes/wav.gif | Bin 0 -> 407 bytes cms/static/cms/img/icons/filetypes/zip.png | Bin 0 -> 548 bytes cms/static/cms/img/icons/plugins/file.png | Bin 0 -> 758 bytes .../img/icons/plugins/get_flash_player.gif | Bin 0 -> 1720 bytes cms/static/cms/img/icons/plugins/image.png | Bin 0 -> 969 bytes cms/static/cms/img/icons/plugins/link.png | Bin 0 -> 1705 bytes cms/static/cms/img/icons/plugins/snippet.png | Bin 0 -> 1017 bytes cms/static/cms/img/loader.gif | Bin 0 -> 4992 bytes cms/static/cms/img/loader@2x.gif | Bin 0 -> 11869 bytes cms/static/cms/img/pagetree/tree-li-drag.gif | Bin 0 -> 96 bytes .../cms/img/toolbar/render_model_add.png | Bin 0 -> 255 bytes .../cms/img/toolbar/render_model_icon.png | Bin 0 -> 336 bytes .../img/toolbar/render_model_placeholder.png | Bin 0 -> 172 bytes cms/static/cms/js/admin.base.js | 23 + cms/static/cms/js/admin.changeform.js | 14 + cms/static/cms/js/admin.pagetree.js | 3 + cms/static/cms/js/admin/actions.js | 201 + cms/static/cms/js/admin/language-selector.js | 39 + cms/static/cms/js/admin/usersettings.js | 22 + .../dist/5.2.0dev1/bundle.admin.base.min.js | 1 + .../5.2.0dev1/bundle.admin.changeform.min.js | 1 + .../5.2.0dev1/bundle.admin.pagetree.min.js | 1 + .../bundle.forms.apphookselect.min.js | 1 + .../bundle.forms.pageselectwidget.min.js | 1 + .../bundle.forms.pagesmartlinkwidget.min.js | 1 + .../5.2.0dev1/bundle.forms.slugwidget.min.js | 1 + .../js/dist/5.2.0dev1/bundle.toolbar.min.js | 1 + cms/static/cms/js/libs/jquery.min.js | 5 + .../cms/js/libs/jstree/jstree.grid.min.js | 830 +++ cms/static/cms/js/libs/jstree/jstree.min.js | 10 + cms/static/cms/js/modules/cms.base.js | 598 ++ cms/static/cms/js/modules/cms.changeform.js | 66 + .../cms/js/modules/cms.changetracker.js | 167 + cms/static/cms/js/modules/cms.clipboard.js | 270 + cms/static/cms/js/modules/cms.messages.js | 148 + cms/static/cms/js/modules/cms.modal.js | 1258 ++++ cms/static/cms/js/modules/cms.navigation.js | 385 ++ .../cms/js/modules/cms.pagetree.dropdown.js | 136 + cms/static/cms/js/modules/cms.pagetree.js | 1232 ++++ .../js/modules/cms.pagetree.stickyheader.js | 195 + cms/static/cms/js/modules/cms.plugins.js | 2378 +++++++ cms/static/cms/js/modules/cms.sideframe.js | 450 ++ .../cms/js/modules/cms.structureboard.js | 1819 ++++++ cms/static/cms/js/modules/cms.toolbar.js | 837 +++ cms/static/cms/js/modules/cms.tooltip.js | 170 + cms/static/cms/js/modules/cms.wizards.js | 118 + cms/static/cms/js/modules/dom-diff.js | 366 ++ cms/static/cms/js/modules/dropdown.js | 140 + cms/static/cms/js/modules/get-dist-path.js | 37 + .../cms/js/modules/jquery.noconflict.post.js | 4 + .../cms/js/modules/jquery.noconflict.pre.js | 5 + .../cms/js/modules/jquery.transition.js | 69 + cms/static/cms/js/modules/jquery.ui.custom.js | 7 + .../js/modules/jquery.ui.nestedsortable.js | 613 ++ .../cms/js/modules/jquery.ui.touchpunch.js | 11 + cms/static/cms/js/modules/keyboard.js | 120 + cms/static/cms/js/modules/loader.js | 54 + cms/static/cms/js/modules/nextuntil.js | 28 + cms/static/cms/js/modules/preload-images.js | 36 + cms/static/cms/js/modules/scrollbar.js | 23 + .../cms/js/modules/shortcuts/create-modal.js | 17 + cms/static/cms/js/modules/shortcuts/help.html | 28 + cms/static/cms/js/modules/shortcuts/help.js | 44 + cms/static/cms/js/modules/shortcuts/index.js | 16 + .../cms/js/modules/shortcuts/placeholders.js | 196 + .../cms/js/modules/shortcuts/toolbar.js | 16 + cms/static/cms/js/modules/slug.js | 74 + cms/static/cms/js/modules/tmpl.js | 43 + cms/static/cms/js/modules/trap.js | 111 + cms/static/cms/js/toolbar.js | 70 + cms/static/cms/js/welcome.js | 47 + .../cms/js/widgets/forms.apphookselect.js | 132 + .../cms/js/widgets/forms.pageselectwidget.js | 102 + .../js/widgets/forms.pagesmartlinkwidget.js | 56 + cms/static/cms/js/widgets/forms.slugwidget.js | 35 + .../cms/js/widgets/wizard.pagetypeselect.js | 35 + cms/static/cms/sass/cms.admin.scss | 240 + cms/static/cms/sass/cms.base.scss | 60 + cms/static/cms/sass/cms.headless.scss | 29 + cms/static/cms/sass/cms.pagetree.scss | 20 + cms/static/cms/sass/cms.welcome.scss | 14 + cms/static/cms/sass/cms.wizard.scss | 81 + .../cms/sass/components/_animation.scss | 11 + cms/static/cms/sass/components/_button.scss | 20 + .../cms/sass/components/_clipboard.scss | 69 + cms/static/cms/sass/components/_content.scss | 46 + .../sass/components/_dark-mode-toggle.scss | 23 + cms/static/cms/sass/components/_dialog.scss | 83 + cms/static/cms/sass/components/_dropdown.scss | 240 + cms/static/cms/sass/components/_general.scss | 73 + .../cms/sass/components/_hovertooltip.scss | 176 + .../cms/sass/components/_iconography.scss | 519 ++ cms/static/cms/sass/components/_loader.scss | 10 + cms/static/cms/sass/components/_modal.scss | 312 + .../cms/sass/components/_pluginpicker.scss | 105 + cms/static/cms/sass/components/_reset.scss | 46 + .../cms/sass/components/_shortcuts.scss | 43 + .../cms/sass/components/_sideframe.scss | 132 + .../cms/sass/components/_structureboard.scss | 632 ++ cms/static/cms/sass/components/_subnav.scss | 243 + cms/static/cms/sass/components/_toolbar.scss | 703 +++ cms/static/cms/sass/components/_tooltip.scss | 45 + cms/static/cms/sass/components/_welcome.scss | 134 + .../cms/sass/components/pagetree/_all.scss | 4 + .../sass/components/pagetree/_dropdown.scss | 165 + .../cms/sass/components/pagetree/_legend.scss | 64 + .../sass/components/pagetree/_node-state.scss | 70 + .../cms/sass/components/pagetree/_tree.scss | 1207 ++++ cms/static/cms/sass/libs/_iconfont.scss | 58 + cms/static/cms/sass/libs/_rtl_patch.scss | 87 + cms/static/cms/sass/mixins/_all.scss | 7 + cms/static/cms/sass/mixins/_buttons.scss | 96 + cms/static/cms/sass/mixins/_custom.scss | 12 + cms/static/cms/sass/mixins/_retina.scss | 12 + cms/static/cms/sass/mixins/_zindex.scss | 34 + cms/static/cms/sass/settings/_all.scss | 5 + cms/static/cms/sass/settings/_cms.scss | 425 ++ cms/static/cms/sass/settings/_pagetree.scss | 76 + cms/templates.py | 31 + .../admin/cms/extensions/change_form.html | 13 + .../admin/cms/grouper/change_form.html | 23 + .../admin/cms/grouper/change_list.html | 14 + .../admin/cms/grouper/content_inline.html | 0 cms/templates/admin/cms/icons/base.html | 5 + cms/templates/admin/cms/mail/base.html | 61 + cms/templates/admin/cms/mail/base.txt | 10 + .../admin/cms/mail/page_user_change.html | 15 + .../admin/cms/mail/page_user_change.txt | 7 + cms/templates/admin/cms/page/change_form.html | 119 + cms/templates/admin/cms/page/close_frame.html | 11 + .../admin/cms/page/delete_confirmation.html | 61 + .../admin/cms/page/delete_summary.html | 21 + .../admin/cms/page/includes/fieldset.html | 1 + .../admin/cms/page/includes/object_tools.html | 9 + cms/templates/admin/cms/page/permissions.html | 55 + .../admin/cms/page/plugin/change_form.html | 12 + .../admin/cms/page/plugin/confirm_form.html | 1 + .../cms/page/plugin/delete_confirmation.html | 4 + .../admin/cms/page/plugin/error_form.html | 15 + .../admin/cms/page/plugin/submit_line.html | 10 + cms/templates/admin/cms/page/submit_row.html | 13 + .../admin/cms/page/tree/actions_dropdown.html | 109 + cms/templates/admin/cms/page/tree/base.html | 317 + .../admin/cms/page/tree/copy_premissions.html | 15 + cms/templates/admin/cms/page/tree/filter.html | 10 + .../admin/cms/page/tree/indicator_legend.html | 8 + .../admin/cms/page/tree/indicator_menu.html | 13 + cms/templates/admin/cms/page/tree/legend.html | 59 + cms/templates/admin/cms/page/tree/menu.html | 254 + .../admin/cms/usersettings/change_form.html | 33 + cms/templates/cms/content.html | 1 + cms/templates/cms/dummy.html | 1 + cms/templates/cms/headless/placeholder.html | 27 + cms/templates/cms/noapphook.html | 25 + cms/templates/cms/toolbar/clipboard.html | 10 + cms/templates/cms/toolbar/content.html | 1 + cms/templates/cms/toolbar/dragbar.html | 47 + cms/templates/cms/toolbar/dragitem.html | 76 + .../cms/toolbar/dragitem_extra_menu.html | 5 + cms/templates/cms/toolbar/dragitem_menu.html | 10 + cms/templates/cms/toolbar/items/break.html | 1 + cms/templates/cms/toolbar/items/button.html | 1 + .../cms/toolbar/items/button_list.html | 17 + .../cms/toolbar/items/button_modal.html | 1 + .../cms/toolbar/items/button_sideframe.html | 1 + .../cms/toolbar/items/dark_mode_toggle.html | 1 + cms/templates/cms/toolbar/items/dropdown.html | 19 + .../cms/toolbar/items/dropdown_button.html | 5 + .../cms/toolbar/items/item_ajax.html | 5 + .../cms/toolbar/items/item_link.html | 3 + .../cms/toolbar/items/item_modal.html | 5 + .../cms/toolbar/items/item_sideframe.html | 5 + .../cms/toolbar/items/live_draft.html | 15 + cms/templates/cms/toolbar/items/login.html | 18 + cms/templates/cms/toolbar/items/logo.html | 2 + cms/templates/cms/toolbar/items/menu.html | 10 + cms/templates/cms/toolbar/plugin.html | 32 + .../cms/toolbar/render_plugin_block.html | 1 + cms/templates/cms/toolbar/structure.html | 15 + cms/templates/cms/toolbar/toolbar.html | 45 + .../cms/toolbar/toolbar_javascript.html | 136 + .../cms/toolbar/toolbar_with_structure.html | 95 + cms/templates/cms/welcome.html | 122 + .../cms/widgets/applicationconfigselect.html | 10 + .../cms/widgets/pageselectwidget.html | 4 + .../cms/widgets/pagesmartlinkwidget.html | 7 + cms/templates/cms/wizards/base.html | 21 + cms/templates/cms/wizards/create.html | 29 + .../cms/wizards/includes/form_fields.html | 10 + cms/templates/cms/wizards/start.html | 26 + .../cms/wizards/wizardoptionwidget.html | 29 + cms/templatetags/__init__.py | 0 cms/templatetags/cms_admin.py | 350 ++ cms/templatetags/cms_js_tags.py | 71 + cms/templatetags/cms_static.py | 104 + cms/templatetags/cms_tags.py | 1005 +++ cms/test_utils/.coveragerc | 10 + cms/test_utils/__init__.py | 0 cms/test_utils/fixtures/__init__.py | 0 cms/test_utils/fixtures/fakemlng.py | 13 + cms/test_utils/fixtures/menus.py | 132 + cms/test_utils/fixtures/navextenders.py | 28 + cms/test_utils/fixtures/templatetags.py | 14 + cms/test_utils/mail.py | 12 + cms/test_utils/project/__init__.py | 0 .../alt_templates/placeholder_tags.html | 1 + .../project/app_using_non_feature/__init__.py | 1 + .../project/app_using_non_feature/admin.py | 0 .../project/app_using_non_feature/apps.py | 6 + .../app_using_non_feature/cms_config.py | 7 + .../project/app_using_non_feature/models.py | 0 .../project/app_using_non_feature/views.py | 0 .../project/app_with_bad_cms_file/__init__.py | 1 + .../project/app_with_bad_cms_file/admin.py | 0 .../project/app_with_bad_cms_file/apps.py | 6 + .../app_with_bad_cms_file/cms_config.py | 3 + .../project/app_with_bad_cms_file/models.py | 0 .../project/app_with_bad_cms_file/views.py | 0 .../project/app_with_cms_config/__init__.py | 1 + .../project/app_with_cms_config/admin.py | 0 .../project/app_with_cms_config/apps.py | 6 + .../project/app_with_cms_config/cms_config.py | 5 + .../project/app_with_cms_config/models.py | 0 .../project/app_with_cms_config/views.py | 0 .../project/app_with_cms_feature/__init__.py | 1 + .../project/app_with_cms_feature/admin.py | 0 .../project/app_with_cms_feature/apps.py | 6 + .../app_with_cms_feature/cms_config.py | 12 + .../project/app_with_cms_feature/models.py | 0 .../project/app_with_cms_feature/views.py | 0 .../__init__.py | 1 + .../app_with_cms_feature_and_config/admin.py | 0 .../app_with_cms_feature_and_config/apps.py | 6 + .../cms_config.py | 11 + .../app_with_cms_feature_and_config/models.py | 0 .../app_with_cms_feature_and_config/views.py | 0 .../__init__.py | 1 + .../app_with_feature_not_implemented/admin.py | 0 .../app_with_feature_not_implemented/apps.py | 6 + .../cms_config.py | 5 + .../models.py | 0 .../app_with_feature_not_implemented/views.py | 0 .../__init__.py | 1 + .../app_with_two_cms_config_classes/admin.py | 0 .../app_with_two_cms_config_classes/apps.py | 6 + .../cms_config.py | 13 + .../app_with_two_cms_config_classes/models.py | 0 .../app_with_two_cms_config_classes/views.py | 0 .../__init__.py | 1 + .../app_with_two_cms_feature_classes/admin.py | 0 .../app_with_two_cms_feature_classes/apps.py | 6 + .../cms_config.py | 13 + .../models.py | 0 .../app_with_two_cms_feature_classes/views.py | 0 .../app_without_cms_app_class/__init__.py | 1 + .../app_without_cms_app_class/admin.py | 0 .../project/app_without_cms_app_class/apps.py | 6 + .../app_without_cms_app_class/cms_config.py | 0 .../app_without_cms_app_class/models.py | 0 .../app_without_cms_app_class/views.py | 0 .../project/app_without_cms_file/__init__.py | 1 + .../project/app_without_cms_file/admin.py | 0 .../project/app_without_cms_file/apps.py | 6 + .../project/app_without_cms_file/models.py | 0 .../project/app_without_cms_file/views.py | 0 .../project/backwards_wizards/__init__.py | 0 .../project/backwards_wizards/cms_wizards.py | 7 + .../project/backwards_wizards/wizards.py | 14 + .../project/brokenpluginapp/__init__.py | 0 .../project/brokenpluginapp/cms_plugins.py | 1 + .../project/bunch_of_plugins/__init__.py | 0 .../project/bunch_of_plugins/models.py | 17 + .../project/cms_urls_for_apphook_tests.py | 23 + .../project/custom_templates/__init__.py | 6 + .../project/custom_templates/base.html | 82 + .../custom_templates/wrong_col_three.html | 31 + .../custom_templates/wrong_col_two.html | 28 + .../project/customuserapp/__init__.py | 0 cms/test_utils/project/customuserapp/admin.py | 18 + .../project/customuserapp/models.py | 90 + .../project/emailuserapp/__init__.py | 0 cms/test_utils/project/emailuserapp/admin.py | 41 + cms/test_utils/project/emailuserapp/forms.py | 113 + cms/test_utils/project/emailuserapp/models.py | 126 + .../project/extensionapp/__init__.py | 0 cms/test_utils/project/extensionapp/admin.py | 21 + .../project/extensionapp/cms_toolbars.py | 75 + cms/test_utils/project/extensionapp/models.py | 47 + cms/test_utils/project/fakemlng/__init__.py | 0 .../project/fakemlng/fixtures/fakemlng.json | 1 + cms/test_utils/project/fakemlng/models.py | 23 + .../fourth_cms_urls_for_apphook_tests.py | 23 + .../project/fourth_urls_for_apphook_tests.py | 23 + cms/test_utils/project/models.py | 0 .../project/mti_pluginapp/__init__.py | 0 .../project/mti_pluginapp/cms_plugins.py | 31 + .../project/mti_pluginapp/models.py | 92 + .../templates/mti_pluginapp/alpha.html | 1 + .../templates/mti_pluginapp/beta.html | 1 + .../project/nested_plugins_app/__init__.py | 0 .../project/nested_plugins_app/cms_plugins.py | 22 + .../templates/nested_plugins_app/planet.html | 1 + .../nested_plugins_app/solar_system.html | 5 + cms/test_utils/project/noadmin_urls.py | 15 + cms/test_utils/project/nonroot_urls.py | 25 + .../project/objectpermissionsapp/__init__.py | 0 .../project/objectpermissionsapp/backends.py | 41 + .../project/objectpermissionsapp/models.py | 60 + .../__init__.py | 0 .../placeholder_relation_field_app/admin.py | 12 + .../placeholder_relation_field_app/models.py | 19 + .../templates/fancy_poll_app/detail.html | 14 + .../templates/fancy_poll_app/detail2.html | 15 + .../placeholder_relation_field_app/urls.py | 7 + .../placeholder_relation_field_app/views.py | 17 + .../project/placeholderapp/__init__.py | 0 .../project/placeholderapp/admin.py | 25 + .../project/placeholderapp/cms_apps.py | 22 + .../project/placeholderapp/cms_config.py | 9 + .../project/placeholderapp/cms_plugins.py | 30 + .../project/placeholderapp/cms_toolbars.py | 26 + .../project/placeholderapp/exceptions.py | 6 + .../project/placeholderapp/models.py | 106 + .../placeholderapp/templates/detail.html | 9 + .../templates/detail_multi.html | 9 + .../placeholderapp/templates/list.html | 9 + cms/test_utils/project/placeholderapp/urls.py | 11 + .../project/placeholderapp/views.py | 86 + cms/test_utils/project/placeholderapp_urls.py | 26 + cms/test_utils/project/pluginapp/__init__.py | 0 .../project/pluginapp/plugins/__init__.py | 0 .../pluginapp/plugins/caching/__init__.py | 0 .../pluginapp/plugins/caching/cms_plugins.py | 108 + .../pluginapp/plugins/caching/models.py | 0 .../plugins/extra_context/__init__.py | 0 .../plugins/extra_context/cms_plugins.py | 18 + .../pluginapp/plugins/extra_context/models.py | 0 .../pluginapp/plugins/link/__init__.py | 0 .../pluginapp/plugins/link/cms_plugins.py | 30 + .../project/pluginapp/plugins/link/models.py | 23 + .../plugins/manytomany_rel/__init__.py | 0 .../pluginapp/plugins/manytomany_rel/admin.py | 10 + .../plugins/manytomany_rel/cms_plugins.py | 70 + .../plugins/manytomany_rel/models.py | 56 + .../pluginapp/plugins/meta/__init__.py | 0 .../pluginapp/plugins/meta/cms_plugins.py | 50 + .../project/pluginapp/plugins/meta/models.py | 27 + .../pluginapp/plugins/multicolumn/__init__.py | 0 .../plugins/multicolumn/cms_plugins.py | 41 + .../pluginapp/plugins/multicolumn/forms.py | 29 + .../pluginapp/plugins/multicolumn/models.py | 11 + .../pluginapp/plugins/multiwrap/__init__.py | 0 .../plugins/multiwrap/cms_plugins.py | 39 + .../pluginapp/plugins/multiwrap/forms.py | 29 + .../pluginapp/plugins/multiwrap/models.py | 0 .../plugins/no_custom_model/__init__.py | 0 .../plugins/no_custom_model/cms_plugins.py | 11 + .../plugins/no_custom_model/models.py | 0 .../pluginapp/plugins/one_thing/__init__.py | 0 .../pluginapp/plugins/one_thing/models.py | 0 .../pluginapp/plugins/revdesc/__init__.py | 0 .../pluginapp/plugins/revdesc/cms_plugins.py | 52 + .../pluginapp/plugins/revdesc/models.py | 57 + .../pluginapp/plugins/style/__init__.py | 0 .../pluginapp/plugins/style/cms_plugins.py | 29 + .../project/pluginapp/plugins/style/models.py | 64 + .../pluginapp/plugins/validation/__init__.py | 0 .../plugins/validation/cms_plugins.py | 35 + .../pluginapp/plugins/validation/models.py | 0 cms/test_utils/project/sampleapp/__init__.py | 0 cms/test_utils/project/sampleapp/admin.py | 46 + cms/test_utils/project/sampleapp/cms_apps.py | 151 + .../project/sampleapp/cms_config.py | 7 + cms/test_utils/project/sampleapp/cms_menus.py | 82 + .../project/sampleapp/cms_toolbars.py | 32 + .../project/sampleapp/cms_wizards.py | 14 + cms/test_utils/project/sampleapp/forms.py | 24 + cms/test_utils/project/sampleapp/models.py | 135 + cms/test_utils/project/sampleapp/ns_urls.py | 9 + .../project/sampleapp/static/css/style.css | 0 .../sampleapp/static/sampleapp/img/gift.jpg | Bin 0 -> 4536 bytes .../templates/registration/login.html | 12 + .../sampleapp/templates/sampleapp/app.html | 2 + .../templates/sampleapp/category_view.html | 5 + .../sampleapp/templates/sampleapp/extra.html | 11 + .../sampleapp/templates/sampleapp/home.html | 27 + .../sampleapp/templates/sampleapp/plain.html | 5 + cms/test_utils/project/sampleapp/urls.py | 22 + cms/test_utils/project/sampleapp/urls2.py | 7 + .../project/sampleapp/urls_childapp.py | 7 + .../project/sampleapp/urls_example.py | 9 + .../project/sampleapp/urls_excluded.py | 6 + .../project/sampleapp/urls_extra.py | 7 + .../project/sampleapp/urls_parentapp.py | 7 + .../project/sampleapp/urls_sample_config.py | 7 + cms/test_utils/project/sampleapp/views.py | 78 + .../second_cms_urls_for_apphook_tests.py | 25 + .../project/second_urls_for_apphook_tests.py | 24 + cms/test_utils/project/template_backends.py | 22 + cms/test_utils/project/templates/404.html | 11 + .../project/templates/add_placeholder.html | 3 + .../page/change_form_object_tools_test.html | 9 + .../templates/allow_children_plugin.html | 6 + .../show_placeholder/cms/plugins/text.html | 1 + .../project/templates/articles.html | 6 + .../project/templates/articles_custom.html | 7 + cms/test_utils/project/templates/base.html | 82 + .../project/templates/col_invalid.html | 5 + .../project/templates/col_three.html | 32 + cms/test_utils/project/templates/col_two.html | 29 + .../project/templates/extra_context.html | 1 + .../templates/extra_context_plugin.html | 1 + cms/test_utils/project/templates/fail.html | 39 + .../inner_dir/custom_templates/__init__.py | 6 + .../inner_dir/custom_templates/base.html | 82 + .../custom_templates/right_col_three.html | 32 + .../custom_templates/right_col_two.html | 29 + .../inner_dir/custom_templates_2/__init__.py | 6 + .../inner_dir/custom_templates_2/base.html | 82 + .../custom_templates_2/right_col_three.html | 32 + .../custom_templates_2/right_col_two.html | 29 + .../project/templates/integration/base.html | 40 + .../templates/integration/fullwidth.html | 12 + .../project/templates/integration/page.html | 13 + .../integration/pluginapp/link/link.html | 4 + .../pluginapp/multicolumn/column.html | 6 + .../pluginapp/multicolumn/multicolumn.html | 6 + .../pluginapp/multiwrap/multiwrap.html | 4 + .../integration/pluginapp/multiwrap/wrap.html | 7 + .../integration/pluginapp/style/style.html | 4 + .../integration/plugins/no_custom_model.html | 1 + .../integration/plugins/nocache.html | 1 + .../integration/plugins/sekizai.html | 8 + .../integration/plugins/sub_empty_plugin.html | 2 + .../integration/plugins/sub_plugin.html | 5 + .../project/templates/integration/simple.html | 11 + .../project/templates/menu/breadcrumb.html | 3 + .../templates/menu/language_chooser.html | 4 + .../project/templates/menu/menu.html | 22 + .../project/templates/menu/sub_menu.html | 1 + .../templates/menu/test_language_chooser.html | 1 + .../project/templates/nav_playground.html | 163 + .../project/templates/page_wizard.html | 8 + .../templates/placeholder_tests/base.html | 15 + .../placeholder_tests/base_sekizai.html | 17 + .../templates/placeholder_tests/child.html | 3 + .../nested_super_level1.html | 7 + .../nested_super_level2.html | 7 + .../nested_super_level3.html | 7 + .../nested_super_level4.html | 5 + .../templates/placeholder_tests/outside.html | 14 + .../placeholder_tests/outside_base.html | 11 + .../outside_base_sekizai.html | 15 + .../placeholder_tests/outside_nested.html | 1 + .../outside_nested_sekizai.html | 1 + .../placeholder_tests/outside_sekizai.html | 14 + .../placeholder_tests/test_eleven.html | 5 + .../placeholder_tests/test_five.html | 21 + .../placeholder_tests/test_four.html | 22 + .../test_inherit_from_variable_extends.html | 1 + .../templates/placeholder_tests/test_one.html | 16 + .../placeholder_tests/test_one_sekizai.html | 16 + .../placeholder_tests/test_seven.html | 17 + .../templates/placeholder_tests/test_six.html | 25 + .../test_super_extends_1.html | 11 + .../test_super_extends_2.html | 8 + .../placeholder_tests/test_three.html | 17 + .../placeholder_tests/test_three_sekizai.html | 17 + .../templates/placeholder_tests/test_two.html | 17 + .../test_variable_extends.html | 3 + .../placeholder_tests/test_with_block.html | 6 + .../project/templates/placeholderapp.html | 11 + .../templates/pluginapp/link/bugs.html | 2 + .../templates/pluginapp/link/link.html | 4 + .../pluginapp/multicolumn/column.html | 6 + .../pluginapp/multicolumn/multicolumn.html | 6 + .../pluginapp/multiwrap/multiwrap.html | 4 + .../templates/pluginapp/multiwrap/wrap.html | 6 + .../pluginapp/plugins/no_custom_model.html | 1 + .../templates/pluginapp/plugins/nocache.html | 1 + .../templates/pluginapp/plugins/sekizai.html | 8 + .../pluginapp/plugins/sub_empty_plugin.html | 2 + .../pluginapp/plugins/sub_plugin.html | 5 + .../templates/pluginapp/style/style.html | 4 + .../templates/plugins/no_custom_model.html | 1 + .../project/templates/plugins/nocache.html | 1 + .../project/templates/plugins/sekizai.html | 8 + .../templates/plugins/sub_empty_plugin.html | 3 + .../project/templates/plugins/sub_plugin.html | 5 + .../templates/registration/logged_out.html | 10 + .../project/templates/sidebar_submenu.html | 5 + .../templates/sidebar_submenu_root.html | 9 + cms/test_utils/project/templates/simple.html | 11 + cms/test_utils/project/templates/static.html | 25 + .../project/templates/subdir/template.html | 1 + .../templates/tests/rendering/base.html | 1 + .../templates/tests/rendering/inherit.html | 1 + .../tests/rendering/inherit_with_or.html | 1 + .../templates/unicode_placeholder.html | 3 + .../third_cms_urls_for_apphook_tests.py | 23 + .../project/third_urls_for_apphook_tests.py | 23 + cms/test_utils/project/urls.py | 48 + cms/test_utils/project/urls_2.py | 29 + cms/test_utils/project/urls_3.py | 29 + .../project/urls_for_apphook_tests.py | 23 + cms/test_utils/project/urls_no18n.py | 27 + cms/test_utils/runners.py | 41 + cms/test_utils/testcases.py | 678 ++ cms/test_utils/tmpdir.py | 26 + cms/test_utils/util/__init__.py | 0 cms/test_utils/util/context_managers.py | 188 + cms/test_utils/util/fuzzy_int.py | 16 + cms/test_utils/util/grouper.py | 12 + cms/test_utils/util/menu_extender.py | 22 + cms/test_utils/util/mock.py | 18 + cms/test_utils/util/static_analysis.py | 47 + cms/tests/__init__.py | 0 cms/tests/data/image.jpg | Bin 0 -> 29513 bytes .../integration/add-multiple-plugins.js | 42 + .../frontend/integration/addFirstPage.js | 146 + cms/tests/frontend/integration/addNewUser.js | 130 + .../frontend/integration/changeSettings.js | 87 + cms/tests/frontend/integration/clipboard.js | 911 +++ .../frontend/integration/copy-apphook-page.js | 49 + .../integration/copy-from-language.js | 106 + .../frontend/integration/createContent.js | 134 + .../frontend/integration/disableToolbar.js | 38 + cms/tests/frontend/integration/dragndrop.js | 310 + cms/tests/frontend/integration/editContent.js | 132 + .../frontend/integration/editContentTools.js | 177 + cms/tests/frontend/integration/editMode.js | 99 + .../integration/handlers/externalMissing.js | 13 + .../integration/handlers/loadFailures.js | 12 + .../integration/handlers/missingPages.js | 16 + .../integration/handlers/pageErrors.js | 17 + .../integration/handlers/suiteFailures.js | 22 + .../frontend/integration/helpers/fixtures.js | 273 + cms/tests/frontend/integration/history.js | 134 + .../integration/link-plugin-content-mode.js | 51 + cms/tests/frontend/integration/loginAdmin.js | 54 + .../frontend/integration/loginAdmin.spec.js | 45 + .../frontend/integration/loginToolbar.js | 41 + cms/tests/frontend/integration/logout.js | 34 + cms/tests/frontend/integration/modal.js | 265 + .../frontend/integration/narrowScreen.js | 69 + cms/tests/frontend/integration/newPage.js | 63 + cms/tests/frontend/integration/nonadmin.js | 87 + cms/tests/frontend/integration/pageControl.js | 402 ++ cms/tests/frontend/integration/pageTypes.js | 229 + .../integration/pagetree-drag-n-drop-copy.js | 511 ++ .../integration/pagetree-no-permission.js | 487 ++ cms/tests/frontend/integration/pagetree.js | 1596 +++++ .../integration/permissions-disabled.js | 42 + .../integration/permissions-enabled.js | 42 + cms/tests/frontend/integration/permissions.js | 144 + cms/tests/frontend/integration/revertLive.js | 94 + cms/tests/frontend/integration/setup.js | 35 + cms/tests/frontend/integration/sideframe.js | 84 + .../frontend/integration/switchLanguage.js | 82 + .../integration/toolbar-login-apphooks.js | 136 + cms/tests/frontend/integration/toolbar.js | 34 + .../frontend/integration/touch-action.spec.js | 231 + .../integration/userSelectAdminWidget.spec.js | 157 + cms/tests/frontend/integration/users.js | 59 + cms/tests/frontend/integration/wizard.js | 186 + cms/tests/frontend/unit/cms.base.test.js | 885 +++ .../frontend/unit/cms.changetracker.test.js | 241 + cms/tests/frontend/unit/cms.clipboard.test.js | 552 ++ cms/tests/frontend/unit/cms.messages.test.js | 310 + cms/tests/frontend/unit/cms.modal.test.js | 2497 ++++++++ .../frontend/unit/cms.navigation.test.js | 286 + .../unit/cms.pagetree.dropdown.test.js | 228 + .../unit/cms.pagetree.stickyheader.test.js | 296 + cms/tests/frontend/unit/cms.pagetree.test.js | 441 ++ cms/tests/frontend/unit/cms.plugins.test.js | 2452 ++++++++ cms/tests/frontend/unit/cms.sideframe.test.js | 769 +++ .../frontend/unit/cms.structureboard.test.js | 2814 +++++++++ cms/tests/frontend/unit/cms.toolbar.test.js | 973 +++ cms/tests/frontend/unit/cms.tooltip.test.js | 269 + cms/tests/frontend/unit/dom-diff.test.js | 688 ++ .../frontend/unit/fixtures/clipboard.html | 61 + .../frontend/unit/fixtures/cms_root.html | 1 + .../frontend/unit/fixtures/iframe_form.html | 23 + .../frontend/unit/fixtures/messages.html | 8 + cms/tests/frontend/unit/fixtures/modal.html | 36 + .../frontend/unit/fixtures/pagetree.html | 68 + .../unit/fixtures/plugin_child_classes.html | 84 + cms/tests/frontend/unit/fixtures/plugins.html | 265 + .../unit/fixtures/plugins_complex_markup.html | 46 + .../frontend/unit/fixtures/sideframe.html | 13 + cms/tests/frontend/unit/fixtures/toolbar.html | 159 + .../frontend/unit/fixtures/toolbar_form.html | 8 + .../unit/fixtures/toolbar_with_dropdown.html | 21 + .../toolbar_with_dropdown_all_publish.html | 21 + cms/tests/frontend/unit/fixtures/tooltip.html | 7 + cms/tests/frontend/unit/helpers/fixture.js | 104 + .../frontend/unit/helpers/jasmine-compat.js | 383 ++ .../frontend/unit/helpers/jasmine-jquery.js | 29 + .../frontend/unit/helpers/jquery-global.js | 16 + cms/tests/frontend/unit/helpers/mock-ajax.js | 44 + cms/tests/frontend/unit/helpers/rewire.js | 167 + .../frontend/unit/html/modal_iframe.html | 19 + .../unit/html/modal_iframe_errorlist.html | 10 + .../unit/html/modal_iframe_errornote.html | 10 + .../unit/html/modal_iframe_messages.html | 16 + .../unit/html/modal_iframe_no_success.html | 10 + .../unit/html/modal_iframe_title.html | 17 + .../frontend/unit/html/sideframe_iframe.html | 11 + cms/tests/frontend/unit/keyboard.test.js | 29 + .../frontend/unit/preload-images.test.js | 78 + cms/tests/frontend/unit/setup.js | 117 + cms/tests/frontend/unit/shortcuts.test.js | 138 + cms/tests/frontend/unit/slug.test.js | 146 + cms/tests/settings.py | 329 + cms/tests/test_admin.py | 1442 +++++ cms/tests/test_api.py | 475 ++ cms/tests/test_app_registration.py | 559 ++ .../test_apphook_reload_language_variants.py | 226 + cms/tests/test_apphooks.py | 1544 +++++ cms/tests/test_cache.py | 1114 ++++ cms/tests/test_check.py | 228 + cms/tests/test_cms_config_wizards.py | 92 + cms/tests/test_copy_permissions.py | 558 ++ cms/tests/test_csp.py | 336 + cms/tests/test_extensions.py | 495 ++ cms/tests/test_fixture_loading.py | 46 + cms/tests/test_forms.py | 927 +++ cms/tests/test_grouper_admin.py | 1414 +++++ cms/tests/test_helpers.py | 34 + cms/tests/test_i18n.py | 675 ++ cms/tests/test_log_entries.py | 581 ++ cms/tests/test_mail.py | 109 + cms/tests/test_management.py | 889 +++ cms/tests/test_menu.py | 2216 +++++++ cms/tests/test_menu_page_viewperm.py | 649 ++ cms/tests/test_menu_page_viewperm_staff.py | 445 ++ cms/tests/test_menu_utils.py | 179 + cms/tests/test_middleware_user.py | 116 + cms/tests/test_migrations.py | 314 + cms/tests/test_mptree_backend.py | 1055 ++++ cms/tests/test_multilingual.py | 318 + cms/tests/test_navextender.py | 96 + cms/tests/test_nested_plugins.py | 1233 ++++ cms/tests/test_no_i18n.py | 156 + cms/tests/test_nonroot.py | 67 + cms/tests/test_page.py | 1126 ++++ cms/tests/test_page_admin.py | 5522 +++++++++++++++++ cms/tests/test_page_user_admin.py | 685 ++ cms/tests/test_page_user_group_admin.py | 477 ++ cms/tests/test_permission_signals.py | 202 + cms/tests/test_permissions.py | 708 +++ cms/tests/test_permmod.py | 764 +++ cms/tests/test_placeholder.py | 1811 ++++++ cms/tests/test_placeholder_admin.py | 1092 ++++ cms/tests/test_placeholder_app_admin.py | 887 +++ cms/tests/test_placeholder_checks.py | 394 ++ .../test_placeholder_operation_signals.py | 705 +++ cms/tests/test_plugin_renderers.py | 597 ++ cms/tests/test_plugins.py | 2294 +++++++ cms/tests/test_po.py | 77 + cms/tests/test_rendering.py | 982 +++ cms/tests/test_security.py | 222 + cms/tests/test_settings.py | 53 + cms/tests/test_signals.py | 111 + cms/tests/test_site.py | 160 + cms/tests/test_sitemap.py | 148 + cms/tests/test_startcmsproject.py | 803 +++ cms/tests/test_static_analysis.py | 13 + cms/tests/test_staticfiles.py | 118 + cms/tests/test_templates.py | 142 + cms/tests/test_templatetags.py | 1015 +++ cms/tests/test_toolbar.py | 3043 +++++++++ cms/tests/test_toolbar_enabled_models.py | 190 + cms/tests/test_toolbar_pool.py | 71 + cms/tests/test_urlutils.py | 29 + cms/tests/test_views.py | 801 +++ cms/tests/test_widgets.py | 24 + cms/tests/test_wizards.py | 848 +++ cms/toolbar/__init__.py | 0 cms/toolbar/items.py | 737 +++ cms/toolbar/toolbar.py | 648 ++ cms/toolbar/utils.py | 370 ++ cms/toolbar_base.py | 39 + cms/toolbar_pool.py | 65 + cms/urls.py | 52 + cms/utils/__init__.py | 81 + cms/utils/admin.py | 29 + cms/utils/apphook_reload.py | 105 + cms/utils/check.py | 496 ++ cms/utils/compat/__init__.py | 20 + cms/utils/compat/dj.py | 17 + cms/utils/compat/forms.py | 42 + cms/utils/compat/response.py | 11 + cms/utils/compat/warnings.py | 2 + cms/utils/conf.py | 336 + cms/utils/decorators.py | 74 + cms/utils/encoder.py | 27 + cms/utils/helpers.py | 116 + cms/utils/i18n.py | 255 + cms/utils/mail.py | 54 + cms/utils/mptree.py | 878 +++ cms/utils/page.py | 146 + cms/utils/page_permissions.py | 569 ++ cms/utils/permissions.py | 510 ++ cms/utils/placeholder.py | 442 ++ cms/utils/plugins.py | 560 ++ cms/utils/request_ip_resolvers.py | 72 + cms/utils/setup.py | 73 + cms/utils/urlutils.py | 121 + cms/views.py | 448 ++ cms/wizards/__init__.py | 0 cms/wizards/forms.py | 98 + cms/wizards/helpers.py | 12 + cms/wizards/urls.py | 7 + cms/wizards/views.py | 205 + cms/wizards/wizard_base.py | 218 + cms/wizards/wizard_pool.py | 93 + cmsf | 1 + datacenterlight/cms_models.py | 5 +- digitalglarus/cms_plugins.py | 2 +- digitalglarus/mixins.py | 4 +- digitalglarus/models.py | 14 +- dynamicweb/settings/base.py | 6 +- dynamicweb/settings/prod.py | 2 +- hosting/models.py | 14 +- legacy_compat.py | 495 ++ manage.py | 3 + membership/models.py | 6 +- menus/__init__.py | 1 + menus/apps.py | 8 + menus/base.py | 183 + menus/exceptions.py | 6 + menus/menu_pool.py | 396 ++ menus/migrations/0001_initial.py | 22 + menus/migrations/__init__.py | 0 menus/models.py | 38 + menus/modifiers.py | 100 + menus/templates/menu/breadcrumb.html | 9 + menus/templates/menu/dummy.html | 1 + menus/templates/menu/empty.html | 0 menus/templates/menu/language_chooser.html | 9 + menus/templates/menu/menu.html | 12 + menus/templates/menu/sub_menu.html | 1 + menus/templatetags/__init__.py | 0 menus/templatetags/menu_tags.py | 441 ++ menus/utils.py | 321 + nosystemd/models.py | 6 +- updated_requirements.txt | 18 +- utils/fields.py | 2 +- utils/models.py | 2 +- 1153 files changed, 318897 insertions(+), 37 deletions(-) create mode 100644 cms/__init__.py create mode 100644 cms/__main__.py create mode 100644 cms/admin/__init__.py create mode 100644 cms/admin/forms.py create mode 100644 cms/admin/pageadmin.py create mode 100644 cms/admin/permissionadmin.py create mode 100644 cms/admin/placeholderadmin.py create mode 100644 cms/admin/settingsadmin.py create mode 100644 cms/admin/useradmin.py create mode 100644 cms/admin/utils.py create mode 100644 cms/api.py create mode 100644 cms/app_base.py create mode 100644 cms/app_registration.py create mode 100644 cms/apphook_pool.py create mode 100644 cms/appresolver.py create mode 100644 cms/apps.py create mode 100644 cms/cache/__init__.py create mode 100644 cms/cache/choices.py create mode 100644 cms/cache/page.py create mode 100644 cms/cache/permissions.py create mode 100644 cms/cache/placeholder.py create mode 100644 cms/cms_config.py create mode 100644 cms/cms_menus.py create mode 100644 cms/cms_plugins.py create mode 100644 cms/cms_toolbars.py create mode 100755 cms/cms_wizards.py create mode 100644 cms/constants.py create mode 100644 cms/context_processors.py create mode 100644 cms/exceptions.py create mode 100644 cms/extensions/__init__.py create mode 100644 cms/extensions/admin.py create mode 100644 cms/extensions/extension_pool.py create mode 100644 cms/extensions/models.py create mode 100644 cms/extensions/toolbar.py create mode 100644 cms/forms/__init__.py create mode 100644 cms/forms/fields.py create mode 100644 cms/forms/login.py create mode 100644 cms/forms/utils.py create mode 100644 cms/forms/validators.py create mode 100644 cms/forms/widgets.py create mode 100644 cms/forms/wizards.py create mode 100644 cms/locale/af/LC_MESSAGES/django.po create mode 100644 cms/locale/af/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ar/LC_MESSAGES/django.po create mode 100644 cms/locale/ar/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ar_SA/LC_MESSAGES/django.po create mode 100644 cms/locale/ar_SA/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/be/LC_MESSAGES/django.po create mode 100644 cms/locale/be/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/bg/LC_MESSAGES/django.po create mode 100644 cms/locale/bg/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/bn/LC_MESSAGES/django.po create mode 100644 cms/locale/bn/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ca/LC_MESSAGES/django.po create mode 100644 cms/locale/ca/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/cmn/LC_MESSAGES/django.po create mode 100644 cms/locale/cmn/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/cs/LC_MESSAGES/django.po create mode 100644 cms/locale/cs/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/cs_CZ/LC_MESSAGES/django.po create mode 100644 cms/locale/cs_CZ/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/cy/LC_MESSAGES/django.po create mode 100644 cms/locale/cy/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/da/LC_MESSAGES/django.po create mode 100644 cms/locale/da/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/de/LC_MESSAGES/django.po create mode 100644 cms/locale/de/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/el/LC_MESSAGES/django.po create mode 100644 cms/locale/el/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/en/LC_MESSAGES/django.po create mode 100644 cms/locale/en/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/en_GB/LC_MESSAGES/django.po create mode 100644 cms/locale/en_GB/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/en_HK/LC_MESSAGES/django.po create mode 100644 cms/locale/en_HK/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/en_US/LC_MESSAGES/django.po create mode 100644 cms/locale/en_US/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/eo/LC_MESSAGES/django.po create mode 100644 cms/locale/eo/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/es/LC_MESSAGES/django.po create mode 100644 cms/locale/es/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/es_AR/LC_MESSAGES/django.po create mode 100644 cms/locale/es_AR/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/es_BO/LC_MESSAGES/django.po create mode 100644 cms/locale/es_BO/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/es_DO/LC_MESSAGES/django.po create mode 100644 cms/locale/es_DO/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/et/LC_MESSAGES/django.po create mode 100644 cms/locale/et/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/eu/LC_MESSAGES/django.po create mode 100644 cms/locale/eu/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/fa/LC_MESSAGES/django.po create mode 100644 cms/locale/fa/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/fa_IR/LC_MESSAGES/django.po create mode 100644 cms/locale/fa_IR/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/fi/LC_MESSAGES/django.po create mode 100644 cms/locale/fi/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/fi_FI/LC_MESSAGES/django.po create mode 100644 cms/locale/fi_FI/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/fr/LC_MESSAGES/django.po create mode 100644 cms/locale/fr/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/fr_CA/LC_MESSAGES/django.po create mode 100644 cms/locale/fr_CA/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/fr_FR/LC_MESSAGES/django.po create mode 100644 cms/locale/fr_FR/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ga/LC_MESSAGES/django.po create mode 100644 cms/locale/ga/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/gl/LC_MESSAGES/django.po create mode 100644 cms/locale/gl/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/gu/LC_MESSAGES/django.po create mode 100644 cms/locale/gu/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/he/LC_MESSAGES/django.po create mode 100644 cms/locale/he/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/hi/LC_MESSAGES/django.po create mode 100644 cms/locale/hi/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/hr/LC_MESSAGES/django.po create mode 100644 cms/locale/hr/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/hu/LC_MESSAGES/django.po create mode 100644 cms/locale/hu/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/id/LC_MESSAGES/django.po create mode 100644 cms/locale/id/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/is/LC_MESSAGES/django.po create mode 100644 cms/locale/is/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/is_IS/LC_MESSAGES/django.po create mode 100644 cms/locale/is_IS/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/it/LC_MESSAGES/django.po create mode 100644 cms/locale/it/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ja/LC_MESSAGES/django.po create mode 100644 cms/locale/ja/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ka/LC_MESSAGES/django.po create mode 100644 cms/locale/ka/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/kk/LC_MESSAGES/django.po create mode 100644 cms/locale/kk/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/km/LC_MESSAGES/django.po create mode 100644 cms/locale/km/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ko/LC_MESSAGES/django.po create mode 100644 cms/locale/ko/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ko_KR/LC_MESSAGES/django.po create mode 100644 cms/locale/ko_KR/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ku_IQ/LC_MESSAGES/django.po create mode 100644 cms/locale/ku_IQ/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ky/LC_MESSAGES/django.po create mode 100644 cms/locale/ky/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/lt/LC_MESSAGES/django.po create mode 100644 cms/locale/lt/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/lt_LT/LC_MESSAGES/django.po create mode 100644 cms/locale/lt_LT/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/lv/LC_MESSAGES/django.po create mode 100644 cms/locale/lv/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ml/LC_MESSAGES/django.po create mode 100644 cms/locale/ml/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/mn/LC_MESSAGES/django.po create mode 100644 cms/locale/mn/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/mn_MN/LC_MESSAGES/django.po create mode 100644 cms/locale/mn_MN/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ms/LC_MESSAGES/django.po create mode 100644 cms/locale/ms/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/mt/LC_MESSAGES/django.po create mode 100644 cms/locale/mt/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/nb/LC_MESSAGES/django.po create mode 100644 cms/locale/nb/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/nl/LC_MESSAGES/django.po create mode 100644 cms/locale/nl/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/no/LC_MESSAGES/django.po create mode 100644 cms/locale/no/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/pap/LC_MESSAGES/django.po create mode 100644 cms/locale/pap/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/pl/LC_MESSAGES/django.po create mode 100644 cms/locale/pl/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/pt/LC_MESSAGES/django.po create mode 100644 cms/locale/pt/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/pt_BR/LC_MESSAGES/django.po create mode 100644 cms/locale/pt_BR/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/pt_PT/LC_MESSAGES/django.po create mode 100644 cms/locale/pt_PT/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ro/LC_MESSAGES/django.po create mode 100644 cms/locale/ro/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ro_RO/LC_MESSAGES/django.po create mode 100644 cms/locale/ro_RO/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ru/LC_MESSAGES/django.po create mode 100644 cms/locale/ru/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ru_RU/LC_MESSAGES/django.po create mode 100644 cms/locale/ru_RU/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/sk/LC_MESSAGES/django.po create mode 100644 cms/locale/sk/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/sk_SK/LC_MESSAGES/django.po create mode 100644 cms/locale/sk_SK/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/sl/LC_MESSAGES/django.po create mode 100644 cms/locale/sl/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/sl_SI/LC_MESSAGES/django.po create mode 100644 cms/locale/sl_SI/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/sq/LC_MESSAGES/django.po create mode 100644 cms/locale/sq/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/sq_AL/LC_MESSAGES/django.po create mode 100644 cms/locale/sq_AL/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/sr/LC_MESSAGES/django.po create mode 100644 cms/locale/sr/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/sr@latin/LC_MESSAGES/django.po create mode 100644 cms/locale/sr@latin/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/sv/LC_MESSAGES/django.po create mode 100644 cms/locale/sv/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ta/LC_MESSAGES/django.po create mode 100644 cms/locale/ta/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/th/LC_MESSAGES/django.po create mode 100644 cms/locale/th/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/th_TH/LC_MESSAGES/django.po create mode 100644 cms/locale/th_TH/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/tlh/LC_MESSAGES/django.po create mode 100644 cms/locale/tlh/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/tr/LC_MESSAGES/django.po create mode 100644 cms/locale/tr/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/tr_TR/LC_MESSAGES/django.po create mode 100644 cms/locale/tr_TR/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ug/LC_MESSAGES/django.po create mode 100644 cms/locale/ug/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/uk/LC_MESSAGES/django.po create mode 100644 cms/locale/uk/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/ur/LC_MESSAGES/django.po create mode 100644 cms/locale/ur/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/vi/LC_MESSAGES/django.po create mode 100644 cms/locale/vi/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/vi_VN/LC_MESSAGES/django.po create mode 100644 cms/locale/vi_VN/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/zh-Hans/LC_MESSAGES/django.po create mode 100644 cms/locale/zh-Hans/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/zh/LC_MESSAGES/django.po create mode 100644 cms/locale/zh/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/zh_CN.GB2312/LC_MESSAGES/django.po create mode 100644 cms/locale/zh_CN.GB2312/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/zh_CN/LC_MESSAGES/django.po create mode 100644 cms/locale/zh_CN/LC_MESSAGES/djangojs.po create mode 100644 cms/locale/zh_TW/LC_MESSAGES/django.po create mode 100644 cms/locale/zh_TW/LC_MESSAGES/djangojs.po create mode 100644 cms/management/__init__.py create mode 100644 cms/management/commands/__init__.py create mode 100644 cms/management/commands/cms.py create mode 100644 cms/management/commands/djangocms_install_rules.json create mode 100644 cms/management/commands/startcmsproject.py create mode 100644 cms/management/commands/subcommands/__init__.py create mode 100644 cms/management/commands/subcommands/base.py create mode 100644 cms/management/commands/subcommands/check.py create mode 100644 cms/management/commands/subcommands/copy.py create mode 100644 cms/management/commands/subcommands/delete_orphaned_plugins.py create mode 100644 cms/management/commands/subcommands/list.py create mode 100644 cms/management/commands/subcommands/tree.py create mode 100644 cms/management/commands/subcommands/uninstall.py create mode 100644 cms/management/djangocms.py create mode 100644 cms/menu_bases.py create mode 100644 cms/middleware/__init__.py create mode 100644 cms/middleware/language.py create mode 100644 cms/middleware/page.py create mode 100644 cms/middleware/toolbar.py create mode 100644 cms/middleware/user.py create mode 100644 cms/middleware/utils.py create mode 100644 cms/migrations/0001_initial_squashed_0022_auto_20180620_1551.py create mode 100644 cms/migrations/0023_placeholder_source_field.py create mode 100644 cms/migrations/0024_set_plugin_absolute_position.py create mode 100644 cms/migrations/0025_remove_plugin_tree_fields.py create mode 100644 cms/migrations/0026_title_placeholders.py create mode 100644 cms/migrations/0027_title_placeholders_data_migration.py create mode 100644 cms/migrations/0028_remove_page_placeholders.py create mode 100644 cms/migrations/0029_create_title_fields_and_url_model.py create mode 100644 cms/migrations/0030_auto_20180810_0629.py create mode 100644 cms/migrations/0031_remove_fields.py create mode 100644 cms/migrations/0032_remove_title_to_pagecontent.py create mode 100644 cms/migrations/0033_placeholder_source_data_migration.py create mode 100644 cms/migrations/0034_remove_pagecontent_placeholders.py create mode 100644 cms/migrations/0035_auto_20230822_2208.py create mode 100644 cms/migrations/0035_auto_20230822_2208_squashed_0036_auto_20240311_1028.py create mode 100644 cms/migrations/0036_auto_20240311_1028.py create mode 100644 cms/migrations/0037_merge_page_treenode.py create mode 100644 cms/migrations/0038_alter_page_site.py create mode 100644 cms/migrations/0039_remove_page_languages_alter_pageurl_unique_together.py create mode 100644 cms/migrations/0040_alter_pageuser_created_by_and_more.py create mode 100644 cms/migrations/0041_alter_pageurl_unique_together_pageurl_site_and_more.py create mode 100644 cms/migrations/0042_remove_placeholderreference_placeholder_ref_and_more.py create mode 100644 cms/migrations/0043_alter_globalpagepermission_can_view_and_more.py create mode 100644 cms/migrations/0044_pagecontent_slug_overwrite_url.py create mode 100644 cms/migrations/0045_pageurl_site_unique_path.py create mode 100644 cms/migrations/__init__.py create mode 100644 cms/models/__init__.py create mode 100644 cms/models/aliaspluginmodel.py create mode 100644 cms/models/apphooks_reload.py create mode 100644 cms/models/contentmodels.py create mode 100644 cms/models/fields.py create mode 100644 cms/models/managers.py create mode 100644 cms/models/pagemodel.py create mode 100644 cms/models/permissionmodels.py create mode 100644 cms/models/placeholdermodel.py create mode 100644 cms/models/placeholderpluginmodel.py create mode 100644 cms/models/pluginmodel.py create mode 100644 cms/models/query.py create mode 100644 cms/models/settingmodels.py create mode 100644 cms/operations/__init__.py create mode 100644 cms/operations/helpers.py create mode 100644 cms/page_rendering.py create mode 100644 cms/plugin_base.py create mode 100644 cms/plugin_pool.py create mode 100644 cms/plugin_processors.py create mode 100644 cms/plugin_rendering.py create mode 100644 cms/signals/__init__.py create mode 100644 cms/signals/apphook.py create mode 100644 cms/signals/log_entries.py create mode 100644 cms/signals/pagecontent.py create mode 100644 cms/signals/permissions.py create mode 100644 cms/sitemaps/__init__.py create mode 100644 cms/sitemaps/cms_sitemap.py create mode 100644 cms/static/cms/css/5.2.0dev1/cms.admin.css create mode 100644 cms/static/cms/css/5.2.0dev1/cms.base.css create mode 100644 cms/static/cms/css/5.2.0dev1/cms.headless.css create mode 100644 cms/static/cms/css/5.2.0dev1/cms.pagetree.css create mode 100644 cms/static/cms/css/5.2.0dev1/cms.welcome.css create mode 100644 cms/static/cms/css/5.2.0dev1/cms.wizard.css create mode 100644 cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.eot create mode 100644 cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.svg create mode 100644 cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.ttf create mode 100644 cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.woff create mode 100644 cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.woff2 create mode 100755 cms/static/cms/fonts/src/_template.svgz create mode 100644 cms/static/cms/fonts/src/advanced-settings.svg create mode 100644 cms/static/cms/fonts/src/alias.svg create mode 100755 cms/static/cms/fonts/src/apphook.svg create mode 100644 cms/static/cms/fonts/src/archive.svg create mode 100644 cms/static/cms/fonts/src/arrow-right.svg create mode 100644 cms/static/cms/fonts/src/arrow-wide.svg create mode 100644 cms/static/cms/fonts/src/arrow.svg create mode 100644 cms/static/cms/fonts/src/bin.svg create mode 100644 cms/static/cms/fonts/src/broadcast-off.svg create mode 100644 cms/static/cms/fonts/src/broadcast-on.svg create mode 100644 cms/static/cms/fonts/src/check-circle.svg create mode 100755 cms/static/cms/fonts/src/check-o.svg create mode 100755 cms/static/cms/fonts/src/check-square.svg create mode 100755 cms/static/cms/fonts/src/check.svg create mode 100644 cms/static/cms/fonts/src/close.svg create mode 100755 cms/static/cms/fonts/src/cogs.svg create mode 100644 cms/static/cms/fonts/src/comment.svg create mode 100644 cms/static/cms/fonts/src/compare.svg create mode 100644 cms/static/cms/fonts/src/copy.svg create mode 100644 cms/static/cms/fonts/src/cut.svg create mode 100644 cms/static/cms/fonts/src/edit-new.svg create mode 100644 cms/static/cms/fonts/src/edit.svg create mode 100644 cms/static/cms/fonts/src/external-placeholder.svg create mode 100755 cms/static/cms/fonts/src/eye.svg create mode 100755 cms/static/cms/fonts/src/forbidden.svg create mode 100644 cms/static/cms/fonts/src/handler.svg create mode 100644 cms/static/cms/fonts/src/highlight.svg create mode 100644 cms/static/cms/fonts/src/home.svg create mode 100644 cms/static/cms/fonts/src/info.svg create mode 100644 cms/static/cms/fonts/src/layers.svg create mode 100644 cms/static/cms/fonts/src/list-ol.svg create mode 100755 cms/static/cms/fonts/src/loader.svg create mode 100644 cms/static/cms/fonts/src/lock.svg create mode 100644 cms/static/cms/fonts/src/logo.svg create mode 100644 cms/static/cms/fonts/src/manage-versions.svg create mode 100644 cms/static/cms/fonts/src/menu.svg create mode 100644 cms/static/cms/fonts/src/minimize.svg create mode 100644 cms/static/cms/fonts/src/minus-circle.svg create mode 100755 cms/static/cms/fonts/src/minus-square-o.svg create mode 100755 cms/static/cms/fonts/src/minus-square.svg create mode 100644 cms/static/cms/fonts/src/minus.svg create mode 100644 cms/static/cms/fonts/src/moderate.svg create mode 100644 cms/static/cms/fonts/src/paste.svg create mode 100644 cms/static/cms/fonts/src/pencil.svg create mode 100644 cms/static/cms/fonts/src/pin.svg create mode 100644 cms/static/cms/fonts/src/plugins.svg create mode 100644 cms/static/cms/fonts/src/plus-circle.svg create mode 100755 cms/static/cms/fonts/src/plus-square-o.svg create mode 100644 cms/static/cms/fonts/src/plus.svg create mode 100644 cms/static/cms/fonts/src/publish.svg create mode 100755 cms/static/cms/fonts/src/puzzle.svg create mode 100644 cms/static/cms/fonts/src/redirect.svg create mode 100644 cms/static/cms/fonts/src/redo.svg create mode 100644 cms/static/cms/fonts/src/rename.svg create mode 100644 cms/static/cms/fonts/src/scissors.svg create mode 100644 cms/static/cms/fonts/src/search.svg create mode 100644 cms/static/cms/fonts/src/settings.svg create mode 100755 cms/static/cms/fonts/src/sitemap.svg create mode 100755 cms/static/cms/fonts/src/squares.svg create mode 100644 cms/static/cms/fonts/src/theme-auto.svg create mode 100644 cms/static/cms/fonts/src/theme-dark.svg create mode 100644 cms/static/cms/fonts/src/theme-light.svg create mode 100644 cms/static/cms/fonts/src/undo.svg create mode 100644 cms/static/cms/fonts/src/unlock.svg create mode 100644 cms/static/cms/fonts/src/unpublish.svg create mode 100644 cms/static/cms/fonts/src/view.svg create mode 100644 cms/static/cms/fonts/src/window.svg create mode 100644 cms/static/cms/img/favicon.png create mode 100644 cms/static/cms/img/icons/filetypes/flv.gif create mode 100644 cms/static/cms/img/icons/filetypes/gif.gif create mode 100644 cms/static/cms/img/icons/filetypes/html.gif create mode 100644 cms/static/cms/img/icons/filetypes/java.gif create mode 100644 cms/static/cms/img/icons/filetypes/jpg.gif create mode 100644 cms/static/cms/img/icons/filetypes/mp3.png create mode 100644 cms/static/cms/img/icons/filetypes/ods.png create mode 100644 cms/static/cms/img/icons/filetypes/odt.png create mode 100644 cms/static/cms/img/icons/filetypes/pdf.gif create mode 100644 cms/static/cms/img/icons/filetypes/php.gif create mode 100644 cms/static/cms/img/icons/filetypes/png.gif create mode 100644 cms/static/cms/img/icons/filetypes/swf.gif create mode 100644 cms/static/cms/img/icons/filetypes/tgz.png create mode 100644 cms/static/cms/img/icons/filetypes/ttf.gif create mode 100644 cms/static/cms/img/icons/filetypes/txt.gif create mode 100644 cms/static/cms/img/icons/filetypes/txt.png create mode 100644 cms/static/cms/img/icons/filetypes/wav.gif create mode 100644 cms/static/cms/img/icons/filetypes/zip.png create mode 100644 cms/static/cms/img/icons/plugins/file.png create mode 100644 cms/static/cms/img/icons/plugins/get_flash_player.gif create mode 100644 cms/static/cms/img/icons/plugins/image.png create mode 100644 cms/static/cms/img/icons/plugins/link.png create mode 100644 cms/static/cms/img/icons/plugins/snippet.png create mode 100644 cms/static/cms/img/loader.gif create mode 100644 cms/static/cms/img/loader@2x.gif create mode 100644 cms/static/cms/img/pagetree/tree-li-drag.gif create mode 100644 cms/static/cms/img/toolbar/render_model_add.png create mode 100644 cms/static/cms/img/toolbar/render_model_icon.png create mode 100644 cms/static/cms/img/toolbar/render_model_placeholder.png create mode 100644 cms/static/cms/js/admin.base.js create mode 100644 cms/static/cms/js/admin.changeform.js create mode 100644 cms/static/cms/js/admin.pagetree.js create mode 100644 cms/static/cms/js/admin/actions.js create mode 100644 cms/static/cms/js/admin/language-selector.js create mode 100644 cms/static/cms/js/admin/usersettings.js create mode 100644 cms/static/cms/js/dist/5.2.0dev1/bundle.admin.base.min.js create mode 100644 cms/static/cms/js/dist/5.2.0dev1/bundle.admin.changeform.min.js create mode 100644 cms/static/cms/js/dist/5.2.0dev1/bundle.admin.pagetree.min.js create mode 100644 cms/static/cms/js/dist/5.2.0dev1/bundle.forms.apphookselect.min.js create mode 100644 cms/static/cms/js/dist/5.2.0dev1/bundle.forms.pageselectwidget.min.js create mode 100644 cms/static/cms/js/dist/5.2.0dev1/bundle.forms.pagesmartlinkwidget.min.js create mode 100644 cms/static/cms/js/dist/5.2.0dev1/bundle.forms.slugwidget.min.js create mode 100644 cms/static/cms/js/dist/5.2.0dev1/bundle.toolbar.min.js create mode 100644 cms/static/cms/js/libs/jquery.min.js create mode 100755 cms/static/cms/js/libs/jstree/jstree.grid.min.js create mode 100755 cms/static/cms/js/libs/jstree/jstree.min.js create mode 100644 cms/static/cms/js/modules/cms.base.js create mode 100644 cms/static/cms/js/modules/cms.changeform.js create mode 100644 cms/static/cms/js/modules/cms.changetracker.js create mode 100644 cms/static/cms/js/modules/cms.clipboard.js create mode 100644 cms/static/cms/js/modules/cms.messages.js create mode 100644 cms/static/cms/js/modules/cms.modal.js create mode 100644 cms/static/cms/js/modules/cms.navigation.js create mode 100644 cms/static/cms/js/modules/cms.pagetree.dropdown.js create mode 100644 cms/static/cms/js/modules/cms.pagetree.js create mode 100644 cms/static/cms/js/modules/cms.pagetree.stickyheader.js create mode 100644 cms/static/cms/js/modules/cms.plugins.js create mode 100644 cms/static/cms/js/modules/cms.sideframe.js create mode 100644 cms/static/cms/js/modules/cms.structureboard.js create mode 100644 cms/static/cms/js/modules/cms.toolbar.js create mode 100644 cms/static/cms/js/modules/cms.tooltip.js create mode 100644 cms/static/cms/js/modules/cms.wizards.js create mode 100644 cms/static/cms/js/modules/dom-diff.js create mode 100644 cms/static/cms/js/modules/dropdown.js create mode 100644 cms/static/cms/js/modules/get-dist-path.js create mode 100644 cms/static/cms/js/modules/jquery.noconflict.post.js create mode 100644 cms/static/cms/js/modules/jquery.noconflict.pre.js create mode 100644 cms/static/cms/js/modules/jquery.transition.js create mode 100644 cms/static/cms/js/modules/jquery.ui.custom.js create mode 100644 cms/static/cms/js/modules/jquery.ui.nestedsortable.js create mode 100644 cms/static/cms/js/modules/jquery.ui.touchpunch.js create mode 100644 cms/static/cms/js/modules/keyboard.js create mode 100644 cms/static/cms/js/modules/loader.js create mode 100644 cms/static/cms/js/modules/nextuntil.js create mode 100644 cms/static/cms/js/modules/preload-images.js create mode 100644 cms/static/cms/js/modules/scrollbar.js create mode 100644 cms/static/cms/js/modules/shortcuts/create-modal.js create mode 100644 cms/static/cms/js/modules/shortcuts/help.html create mode 100644 cms/static/cms/js/modules/shortcuts/help.js create mode 100644 cms/static/cms/js/modules/shortcuts/index.js create mode 100644 cms/static/cms/js/modules/shortcuts/placeholders.js create mode 100644 cms/static/cms/js/modules/shortcuts/toolbar.js create mode 100644 cms/static/cms/js/modules/slug.js create mode 100644 cms/static/cms/js/modules/tmpl.js create mode 100644 cms/static/cms/js/modules/trap.js create mode 100644 cms/static/cms/js/toolbar.js create mode 100644 cms/static/cms/js/welcome.js create mode 100644 cms/static/cms/js/widgets/forms.apphookselect.js create mode 100644 cms/static/cms/js/widgets/forms.pageselectwidget.js create mode 100644 cms/static/cms/js/widgets/forms.pagesmartlinkwidget.js create mode 100644 cms/static/cms/js/widgets/forms.slugwidget.js create mode 100644 cms/static/cms/js/widgets/wizard.pagetypeselect.js create mode 100644 cms/static/cms/sass/cms.admin.scss create mode 100644 cms/static/cms/sass/cms.base.scss create mode 100644 cms/static/cms/sass/cms.headless.scss create mode 100644 cms/static/cms/sass/cms.pagetree.scss create mode 100644 cms/static/cms/sass/cms.welcome.scss create mode 100644 cms/static/cms/sass/cms.wizard.scss create mode 100644 cms/static/cms/sass/components/_animation.scss create mode 100644 cms/static/cms/sass/components/_button.scss create mode 100644 cms/static/cms/sass/components/_clipboard.scss create mode 100644 cms/static/cms/sass/components/_content.scss create mode 100644 cms/static/cms/sass/components/_dark-mode-toggle.scss create mode 100644 cms/static/cms/sass/components/_dialog.scss create mode 100644 cms/static/cms/sass/components/_dropdown.scss create mode 100644 cms/static/cms/sass/components/_general.scss create mode 100644 cms/static/cms/sass/components/_hovertooltip.scss create mode 100644 cms/static/cms/sass/components/_iconography.scss create mode 100644 cms/static/cms/sass/components/_loader.scss create mode 100644 cms/static/cms/sass/components/_modal.scss create mode 100644 cms/static/cms/sass/components/_pluginpicker.scss create mode 100644 cms/static/cms/sass/components/_reset.scss create mode 100644 cms/static/cms/sass/components/_shortcuts.scss create mode 100644 cms/static/cms/sass/components/_sideframe.scss create mode 100644 cms/static/cms/sass/components/_structureboard.scss create mode 100644 cms/static/cms/sass/components/_subnav.scss create mode 100644 cms/static/cms/sass/components/_toolbar.scss create mode 100644 cms/static/cms/sass/components/_tooltip.scss create mode 100644 cms/static/cms/sass/components/_welcome.scss create mode 100644 cms/static/cms/sass/components/pagetree/_all.scss create mode 100644 cms/static/cms/sass/components/pagetree/_dropdown.scss create mode 100644 cms/static/cms/sass/components/pagetree/_legend.scss create mode 100644 cms/static/cms/sass/components/pagetree/_node-state.scss create mode 100644 cms/static/cms/sass/components/pagetree/_tree.scss create mode 100644 cms/static/cms/sass/libs/_iconfont.scss create mode 100644 cms/static/cms/sass/libs/_rtl_patch.scss create mode 100644 cms/static/cms/sass/mixins/_all.scss create mode 100644 cms/static/cms/sass/mixins/_buttons.scss create mode 100644 cms/static/cms/sass/mixins/_custom.scss create mode 100644 cms/static/cms/sass/mixins/_retina.scss create mode 100644 cms/static/cms/sass/mixins/_zindex.scss create mode 100644 cms/static/cms/sass/settings/_all.scss create mode 100644 cms/static/cms/sass/settings/_cms.scss create mode 100644 cms/static/cms/sass/settings/_pagetree.scss create mode 100644 cms/templates.py create mode 100644 cms/templates/admin/cms/extensions/change_form.html create mode 100644 cms/templates/admin/cms/grouper/change_form.html create mode 100644 cms/templates/admin/cms/grouper/change_list.html create mode 100644 cms/templates/admin/cms/grouper/content_inline.html create mode 100644 cms/templates/admin/cms/icons/base.html create mode 100644 cms/templates/admin/cms/mail/base.html create mode 100644 cms/templates/admin/cms/mail/base.txt create mode 100644 cms/templates/admin/cms/mail/page_user_change.html create mode 100644 cms/templates/admin/cms/mail/page_user_change.txt create mode 100644 cms/templates/admin/cms/page/change_form.html create mode 100644 cms/templates/admin/cms/page/close_frame.html create mode 100644 cms/templates/admin/cms/page/delete_confirmation.html create mode 100644 cms/templates/admin/cms/page/delete_summary.html create mode 100644 cms/templates/admin/cms/page/includes/fieldset.html create mode 100644 cms/templates/admin/cms/page/includes/object_tools.html create mode 100644 cms/templates/admin/cms/page/permissions.html create mode 100644 cms/templates/admin/cms/page/plugin/change_form.html create mode 100644 cms/templates/admin/cms/page/plugin/confirm_form.html create mode 100644 cms/templates/admin/cms/page/plugin/delete_confirmation.html create mode 100644 cms/templates/admin/cms/page/plugin/error_form.html create mode 100644 cms/templates/admin/cms/page/plugin/submit_line.html create mode 100644 cms/templates/admin/cms/page/submit_row.html create mode 100644 cms/templates/admin/cms/page/tree/actions_dropdown.html create mode 100644 cms/templates/admin/cms/page/tree/base.html create mode 100644 cms/templates/admin/cms/page/tree/copy_premissions.html create mode 100644 cms/templates/admin/cms/page/tree/filter.html create mode 100644 cms/templates/admin/cms/page/tree/indicator_legend.html create mode 100644 cms/templates/admin/cms/page/tree/indicator_menu.html create mode 100644 cms/templates/admin/cms/page/tree/legend.html create mode 100644 cms/templates/admin/cms/page/tree/menu.html create mode 100644 cms/templates/admin/cms/usersettings/change_form.html create mode 100644 cms/templates/cms/content.html create mode 100644 cms/templates/cms/dummy.html create mode 100644 cms/templates/cms/headless/placeholder.html create mode 100644 cms/templates/cms/noapphook.html create mode 100644 cms/templates/cms/toolbar/clipboard.html create mode 100644 cms/templates/cms/toolbar/content.html create mode 100644 cms/templates/cms/toolbar/dragbar.html create mode 100644 cms/templates/cms/toolbar/dragitem.html create mode 100644 cms/templates/cms/toolbar/dragitem_extra_menu.html create mode 100644 cms/templates/cms/toolbar/dragitem_menu.html create mode 100644 cms/templates/cms/toolbar/items/break.html create mode 100644 cms/templates/cms/toolbar/items/button.html create mode 100644 cms/templates/cms/toolbar/items/button_list.html create mode 100644 cms/templates/cms/toolbar/items/button_modal.html create mode 100644 cms/templates/cms/toolbar/items/button_sideframe.html create mode 100644 cms/templates/cms/toolbar/items/dark_mode_toggle.html create mode 100644 cms/templates/cms/toolbar/items/dropdown.html create mode 100644 cms/templates/cms/toolbar/items/dropdown_button.html create mode 100644 cms/templates/cms/toolbar/items/item_ajax.html create mode 100644 cms/templates/cms/toolbar/items/item_link.html create mode 100644 cms/templates/cms/toolbar/items/item_modal.html create mode 100644 cms/templates/cms/toolbar/items/item_sideframe.html create mode 100644 cms/templates/cms/toolbar/items/live_draft.html create mode 100644 cms/templates/cms/toolbar/items/login.html create mode 100644 cms/templates/cms/toolbar/items/logo.html create mode 100644 cms/templates/cms/toolbar/items/menu.html create mode 100644 cms/templates/cms/toolbar/plugin.html create mode 100644 cms/templates/cms/toolbar/render_plugin_block.html create mode 100644 cms/templates/cms/toolbar/structure.html create mode 100644 cms/templates/cms/toolbar/toolbar.html create mode 100644 cms/templates/cms/toolbar/toolbar_javascript.html create mode 100644 cms/templates/cms/toolbar/toolbar_with_structure.html create mode 100644 cms/templates/cms/welcome.html create mode 100644 cms/templates/cms/widgets/applicationconfigselect.html create mode 100644 cms/templates/cms/widgets/pageselectwidget.html create mode 100644 cms/templates/cms/widgets/pagesmartlinkwidget.html create mode 100755 cms/templates/cms/wizards/base.html create mode 100755 cms/templates/cms/wizards/create.html create mode 100755 cms/templates/cms/wizards/includes/form_fields.html create mode 100755 cms/templates/cms/wizards/start.html create mode 100644 cms/templates/cms/wizards/wizardoptionwidget.html create mode 100644 cms/templatetags/__init__.py create mode 100644 cms/templatetags/cms_admin.py create mode 100644 cms/templatetags/cms_js_tags.py create mode 100644 cms/templatetags/cms_static.py create mode 100644 cms/templatetags/cms_tags.py create mode 100644 cms/test_utils/.coveragerc create mode 100644 cms/test_utils/__init__.py create mode 100644 cms/test_utils/fixtures/__init__.py create mode 100644 cms/test_utils/fixtures/fakemlng.py create mode 100644 cms/test_utils/fixtures/menus.py create mode 100644 cms/test_utils/fixtures/navextenders.py create mode 100644 cms/test_utils/fixtures/templatetags.py create mode 100644 cms/test_utils/mail.py create mode 100644 cms/test_utils/project/__init__.py create mode 100644 cms/test_utils/project/alt_templates/placeholder_tags.html create mode 100644 cms/test_utils/project/app_using_non_feature/__init__.py create mode 100644 cms/test_utils/project/app_using_non_feature/admin.py create mode 100644 cms/test_utils/project/app_using_non_feature/apps.py create mode 100644 cms/test_utils/project/app_using_non_feature/cms_config.py create mode 100644 cms/test_utils/project/app_using_non_feature/models.py create mode 100644 cms/test_utils/project/app_using_non_feature/views.py create mode 100644 cms/test_utils/project/app_with_bad_cms_file/__init__.py create mode 100644 cms/test_utils/project/app_with_bad_cms_file/admin.py create mode 100644 cms/test_utils/project/app_with_bad_cms_file/apps.py create mode 100644 cms/test_utils/project/app_with_bad_cms_file/cms_config.py create mode 100644 cms/test_utils/project/app_with_bad_cms_file/models.py create mode 100644 cms/test_utils/project/app_with_bad_cms_file/views.py create mode 100644 cms/test_utils/project/app_with_cms_config/__init__.py create mode 100644 cms/test_utils/project/app_with_cms_config/admin.py create mode 100644 cms/test_utils/project/app_with_cms_config/apps.py create mode 100644 cms/test_utils/project/app_with_cms_config/cms_config.py create mode 100644 cms/test_utils/project/app_with_cms_config/models.py create mode 100644 cms/test_utils/project/app_with_cms_config/views.py create mode 100644 cms/test_utils/project/app_with_cms_feature/__init__.py create mode 100644 cms/test_utils/project/app_with_cms_feature/admin.py create mode 100644 cms/test_utils/project/app_with_cms_feature/apps.py create mode 100644 cms/test_utils/project/app_with_cms_feature/cms_config.py create mode 100644 cms/test_utils/project/app_with_cms_feature/models.py create mode 100644 cms/test_utils/project/app_with_cms_feature/views.py create mode 100644 cms/test_utils/project/app_with_cms_feature_and_config/__init__.py create mode 100644 cms/test_utils/project/app_with_cms_feature_and_config/admin.py create mode 100644 cms/test_utils/project/app_with_cms_feature_and_config/apps.py create mode 100644 cms/test_utils/project/app_with_cms_feature_and_config/cms_config.py create mode 100644 cms/test_utils/project/app_with_cms_feature_and_config/models.py create mode 100644 cms/test_utils/project/app_with_cms_feature_and_config/views.py create mode 100644 cms/test_utils/project/app_with_feature_not_implemented/__init__.py create mode 100644 cms/test_utils/project/app_with_feature_not_implemented/admin.py create mode 100644 cms/test_utils/project/app_with_feature_not_implemented/apps.py create mode 100644 cms/test_utils/project/app_with_feature_not_implemented/cms_config.py create mode 100644 cms/test_utils/project/app_with_feature_not_implemented/models.py create mode 100644 cms/test_utils/project/app_with_feature_not_implemented/views.py create mode 100644 cms/test_utils/project/app_with_two_cms_config_classes/__init__.py create mode 100644 cms/test_utils/project/app_with_two_cms_config_classes/admin.py create mode 100644 cms/test_utils/project/app_with_two_cms_config_classes/apps.py create mode 100644 cms/test_utils/project/app_with_two_cms_config_classes/cms_config.py create mode 100644 cms/test_utils/project/app_with_two_cms_config_classes/models.py create mode 100644 cms/test_utils/project/app_with_two_cms_config_classes/views.py create mode 100644 cms/test_utils/project/app_with_two_cms_feature_classes/__init__.py create mode 100644 cms/test_utils/project/app_with_two_cms_feature_classes/admin.py create mode 100644 cms/test_utils/project/app_with_two_cms_feature_classes/apps.py create mode 100644 cms/test_utils/project/app_with_two_cms_feature_classes/cms_config.py create mode 100644 cms/test_utils/project/app_with_two_cms_feature_classes/models.py create mode 100644 cms/test_utils/project/app_with_two_cms_feature_classes/views.py create mode 100644 cms/test_utils/project/app_without_cms_app_class/__init__.py create mode 100644 cms/test_utils/project/app_without_cms_app_class/admin.py create mode 100644 cms/test_utils/project/app_without_cms_app_class/apps.py create mode 100644 cms/test_utils/project/app_without_cms_app_class/cms_config.py create mode 100644 cms/test_utils/project/app_without_cms_app_class/models.py create mode 100644 cms/test_utils/project/app_without_cms_app_class/views.py create mode 100644 cms/test_utils/project/app_without_cms_file/__init__.py create mode 100644 cms/test_utils/project/app_without_cms_file/admin.py create mode 100644 cms/test_utils/project/app_without_cms_file/apps.py create mode 100644 cms/test_utils/project/app_without_cms_file/models.py create mode 100644 cms/test_utils/project/app_without_cms_file/views.py create mode 100644 cms/test_utils/project/backwards_wizards/__init__.py create mode 100644 cms/test_utils/project/backwards_wizards/cms_wizards.py create mode 100644 cms/test_utils/project/backwards_wizards/wizards.py create mode 100644 cms/test_utils/project/brokenpluginapp/__init__.py create mode 100644 cms/test_utils/project/brokenpluginapp/cms_plugins.py create mode 100644 cms/test_utils/project/bunch_of_plugins/__init__.py create mode 100644 cms/test_utils/project/bunch_of_plugins/models.py create mode 100644 cms/test_utils/project/cms_urls_for_apphook_tests.py create mode 100644 cms/test_utils/project/custom_templates/__init__.py create mode 100644 cms/test_utils/project/custom_templates/base.html create mode 100644 cms/test_utils/project/custom_templates/wrong_col_three.html create mode 100644 cms/test_utils/project/custom_templates/wrong_col_two.html create mode 100644 cms/test_utils/project/customuserapp/__init__.py create mode 100644 cms/test_utils/project/customuserapp/admin.py create mode 100644 cms/test_utils/project/customuserapp/models.py create mode 100644 cms/test_utils/project/emailuserapp/__init__.py create mode 100644 cms/test_utils/project/emailuserapp/admin.py create mode 100644 cms/test_utils/project/emailuserapp/forms.py create mode 100644 cms/test_utils/project/emailuserapp/models.py create mode 100644 cms/test_utils/project/extensionapp/__init__.py create mode 100644 cms/test_utils/project/extensionapp/admin.py create mode 100644 cms/test_utils/project/extensionapp/cms_toolbars.py create mode 100644 cms/test_utils/project/extensionapp/models.py create mode 100644 cms/test_utils/project/fakemlng/__init__.py create mode 100644 cms/test_utils/project/fakemlng/fixtures/fakemlng.json create mode 100644 cms/test_utils/project/fakemlng/models.py create mode 100644 cms/test_utils/project/fourth_cms_urls_for_apphook_tests.py create mode 100644 cms/test_utils/project/fourth_urls_for_apphook_tests.py create mode 100644 cms/test_utils/project/models.py create mode 100644 cms/test_utils/project/mti_pluginapp/__init__.py create mode 100644 cms/test_utils/project/mti_pluginapp/cms_plugins.py create mode 100644 cms/test_utils/project/mti_pluginapp/models.py create mode 100644 cms/test_utils/project/mti_pluginapp/templates/mti_pluginapp/alpha.html create mode 100644 cms/test_utils/project/mti_pluginapp/templates/mti_pluginapp/beta.html create mode 100644 cms/test_utils/project/nested_plugins_app/__init__.py create mode 100644 cms/test_utils/project/nested_plugins_app/cms_plugins.py create mode 100644 cms/test_utils/project/nested_plugins_app/templates/nested_plugins_app/planet.html create mode 100644 cms/test_utils/project/nested_plugins_app/templates/nested_plugins_app/solar_system.html create mode 100644 cms/test_utils/project/noadmin_urls.py create mode 100644 cms/test_utils/project/nonroot_urls.py create mode 100644 cms/test_utils/project/objectpermissionsapp/__init__.py create mode 100644 cms/test_utils/project/objectpermissionsapp/backends.py create mode 100644 cms/test_utils/project/objectpermissionsapp/models.py create mode 100644 cms/test_utils/project/placeholder_relation_field_app/__init__.py create mode 100644 cms/test_utils/project/placeholder_relation_field_app/admin.py create mode 100644 cms/test_utils/project/placeholder_relation_field_app/models.py create mode 100644 cms/test_utils/project/placeholder_relation_field_app/templates/fancy_poll_app/detail.html create mode 100644 cms/test_utils/project/placeholder_relation_field_app/templates/fancy_poll_app/detail2.html create mode 100644 cms/test_utils/project/placeholder_relation_field_app/urls.py create mode 100644 cms/test_utils/project/placeholder_relation_field_app/views.py create mode 100644 cms/test_utils/project/placeholderapp/__init__.py create mode 100644 cms/test_utils/project/placeholderapp/admin.py create mode 100644 cms/test_utils/project/placeholderapp/cms_apps.py create mode 100644 cms/test_utils/project/placeholderapp/cms_config.py create mode 100644 cms/test_utils/project/placeholderapp/cms_plugins.py create mode 100644 cms/test_utils/project/placeholderapp/cms_toolbars.py create mode 100644 cms/test_utils/project/placeholderapp/exceptions.py create mode 100644 cms/test_utils/project/placeholderapp/models.py create mode 100644 cms/test_utils/project/placeholderapp/templates/detail.html create mode 100644 cms/test_utils/project/placeholderapp/templates/detail_multi.html create mode 100644 cms/test_utils/project/placeholderapp/templates/list.html create mode 100644 cms/test_utils/project/placeholderapp/urls.py create mode 100644 cms/test_utils/project/placeholderapp/views.py create mode 100644 cms/test_utils/project/placeholderapp_urls.py create mode 100644 cms/test_utils/project/pluginapp/__init__.py create mode 100644 cms/test_utils/project/pluginapp/plugins/__init__.py create mode 100644 cms/test_utils/project/pluginapp/plugins/caching/__init__.py create mode 100644 cms/test_utils/project/pluginapp/plugins/caching/cms_plugins.py create mode 100644 cms/test_utils/project/pluginapp/plugins/caching/models.py create mode 100644 cms/test_utils/project/pluginapp/plugins/extra_context/__init__.py create mode 100644 cms/test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py create mode 100644 cms/test_utils/project/pluginapp/plugins/extra_context/models.py create mode 100644 cms/test_utils/project/pluginapp/plugins/link/__init__.py create mode 100644 cms/test_utils/project/pluginapp/plugins/link/cms_plugins.py create mode 100644 cms/test_utils/project/pluginapp/plugins/link/models.py create mode 100644 cms/test_utils/project/pluginapp/plugins/manytomany_rel/__init__.py create mode 100644 cms/test_utils/project/pluginapp/plugins/manytomany_rel/admin.py create mode 100644 cms/test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py create mode 100644 cms/test_utils/project/pluginapp/plugins/manytomany_rel/models.py create mode 100644 cms/test_utils/project/pluginapp/plugins/meta/__init__.py create mode 100644 cms/test_utils/project/pluginapp/plugins/meta/cms_plugins.py create mode 100644 cms/test_utils/project/pluginapp/plugins/meta/models.py create mode 100644 cms/test_utils/project/pluginapp/plugins/multicolumn/__init__.py create mode 100644 cms/test_utils/project/pluginapp/plugins/multicolumn/cms_plugins.py create mode 100644 cms/test_utils/project/pluginapp/plugins/multicolumn/forms.py create mode 100644 cms/test_utils/project/pluginapp/plugins/multicolumn/models.py create mode 100644 cms/test_utils/project/pluginapp/plugins/multiwrap/__init__.py create mode 100644 cms/test_utils/project/pluginapp/plugins/multiwrap/cms_plugins.py create mode 100644 cms/test_utils/project/pluginapp/plugins/multiwrap/forms.py create mode 100644 cms/test_utils/project/pluginapp/plugins/multiwrap/models.py create mode 100644 cms/test_utils/project/pluginapp/plugins/no_custom_model/__init__.py create mode 100644 cms/test_utils/project/pluginapp/plugins/no_custom_model/cms_plugins.py create mode 100644 cms/test_utils/project/pluginapp/plugins/no_custom_model/models.py create mode 100644 cms/test_utils/project/pluginapp/plugins/one_thing/__init__.py create mode 100644 cms/test_utils/project/pluginapp/plugins/one_thing/models.py create mode 100644 cms/test_utils/project/pluginapp/plugins/revdesc/__init__.py create mode 100644 cms/test_utils/project/pluginapp/plugins/revdesc/cms_plugins.py create mode 100644 cms/test_utils/project/pluginapp/plugins/revdesc/models.py create mode 100644 cms/test_utils/project/pluginapp/plugins/style/__init__.py create mode 100644 cms/test_utils/project/pluginapp/plugins/style/cms_plugins.py create mode 100644 cms/test_utils/project/pluginapp/plugins/style/models.py create mode 100644 cms/test_utils/project/pluginapp/plugins/validation/__init__.py create mode 100644 cms/test_utils/project/pluginapp/plugins/validation/cms_plugins.py create mode 100644 cms/test_utils/project/pluginapp/plugins/validation/models.py create mode 100644 cms/test_utils/project/sampleapp/__init__.py create mode 100644 cms/test_utils/project/sampleapp/admin.py create mode 100644 cms/test_utils/project/sampleapp/cms_apps.py create mode 100644 cms/test_utils/project/sampleapp/cms_config.py create mode 100644 cms/test_utils/project/sampleapp/cms_menus.py create mode 100644 cms/test_utils/project/sampleapp/cms_toolbars.py create mode 100644 cms/test_utils/project/sampleapp/cms_wizards.py create mode 100644 cms/test_utils/project/sampleapp/forms.py create mode 100644 cms/test_utils/project/sampleapp/models.py create mode 100644 cms/test_utils/project/sampleapp/ns_urls.py create mode 100644 cms/test_utils/project/sampleapp/static/css/style.css create mode 100644 cms/test_utils/project/sampleapp/static/sampleapp/img/gift.jpg create mode 100644 cms/test_utils/project/sampleapp/templates/registration/login.html create mode 100644 cms/test_utils/project/sampleapp/templates/sampleapp/app.html create mode 100644 cms/test_utils/project/sampleapp/templates/sampleapp/category_view.html create mode 100644 cms/test_utils/project/sampleapp/templates/sampleapp/extra.html create mode 100644 cms/test_utils/project/sampleapp/templates/sampleapp/home.html create mode 100644 cms/test_utils/project/sampleapp/templates/sampleapp/plain.html create mode 100644 cms/test_utils/project/sampleapp/urls.py create mode 100644 cms/test_utils/project/sampleapp/urls2.py create mode 100644 cms/test_utils/project/sampleapp/urls_childapp.py create mode 100644 cms/test_utils/project/sampleapp/urls_example.py create mode 100644 cms/test_utils/project/sampleapp/urls_excluded.py create mode 100644 cms/test_utils/project/sampleapp/urls_extra.py create mode 100644 cms/test_utils/project/sampleapp/urls_parentapp.py create mode 100644 cms/test_utils/project/sampleapp/urls_sample_config.py create mode 100644 cms/test_utils/project/sampleapp/views.py create mode 100644 cms/test_utils/project/second_cms_urls_for_apphook_tests.py create mode 100644 cms/test_utils/project/second_urls_for_apphook_tests.py create mode 100644 cms/test_utils/project/template_backends.py create mode 100644 cms/test_utils/project/templates/404.html create mode 100644 cms/test_utils/project/templates/add_placeholder.html create mode 100644 cms/test_utils/project/templates/admin/cms/page/change_form_object_tools_test.html create mode 100644 cms/test_utils/project/templates/allow_children_plugin.html create mode 100644 cms/test_utils/project/templates/alt_plugin_templates/show_placeholder/cms/plugins/text.html create mode 100644 cms/test_utils/project/templates/articles.html create mode 100644 cms/test_utils/project/templates/articles_custom.html create mode 100644 cms/test_utils/project/templates/base.html create mode 100644 cms/test_utils/project/templates/col_invalid.html create mode 100644 cms/test_utils/project/templates/col_three.html create mode 100644 cms/test_utils/project/templates/col_two.html create mode 100644 cms/test_utils/project/templates/extra_context.html create mode 100644 cms/test_utils/project/templates/extra_context_plugin.html create mode 100644 cms/test_utils/project/templates/fail.html create mode 100644 cms/test_utils/project/templates/inner_dir/custom_templates/__init__.py create mode 100644 cms/test_utils/project/templates/inner_dir/custom_templates/base.html create mode 100644 cms/test_utils/project/templates/inner_dir/custom_templates/right_col_three.html create mode 100644 cms/test_utils/project/templates/inner_dir/custom_templates/right_col_two.html create mode 100644 cms/test_utils/project/templates/inner_dir/custom_templates_2/__init__.py create mode 100644 cms/test_utils/project/templates/inner_dir/custom_templates_2/base.html create mode 100644 cms/test_utils/project/templates/inner_dir/custom_templates_2/right_col_three.html create mode 100644 cms/test_utils/project/templates/inner_dir/custom_templates_2/right_col_two.html create mode 100644 cms/test_utils/project/templates/integration/base.html create mode 100644 cms/test_utils/project/templates/integration/fullwidth.html create mode 100644 cms/test_utils/project/templates/integration/page.html create mode 100644 cms/test_utils/project/templates/integration/pluginapp/link/link.html create mode 100644 cms/test_utils/project/templates/integration/pluginapp/multicolumn/column.html create mode 100644 cms/test_utils/project/templates/integration/pluginapp/multicolumn/multicolumn.html create mode 100644 cms/test_utils/project/templates/integration/pluginapp/multiwrap/multiwrap.html create mode 100644 cms/test_utils/project/templates/integration/pluginapp/multiwrap/wrap.html create mode 100644 cms/test_utils/project/templates/integration/pluginapp/style/style.html create mode 100644 cms/test_utils/project/templates/integration/plugins/no_custom_model.html create mode 100644 cms/test_utils/project/templates/integration/plugins/nocache.html create mode 100644 cms/test_utils/project/templates/integration/plugins/sekizai.html create mode 100644 cms/test_utils/project/templates/integration/plugins/sub_empty_plugin.html create mode 100644 cms/test_utils/project/templates/integration/plugins/sub_plugin.html create mode 100644 cms/test_utils/project/templates/integration/simple.html create mode 100644 cms/test_utils/project/templates/menu/breadcrumb.html create mode 100644 cms/test_utils/project/templates/menu/language_chooser.html create mode 100644 cms/test_utils/project/templates/menu/menu.html create mode 100644 cms/test_utils/project/templates/menu/sub_menu.html create mode 100644 cms/test_utils/project/templates/menu/test_language_chooser.html create mode 100644 cms/test_utils/project/templates/nav_playground.html create mode 100644 cms/test_utils/project/templates/page_wizard.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/base.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/base_sekizai.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/child.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/nested_super_level1.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/nested_super_level2.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/nested_super_level3.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/nested_super_level4.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/outside.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/outside_base.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/outside_base_sekizai.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/outside_nested.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/outside_nested_sekizai.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/outside_sekizai.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/test_eleven.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/test_five.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/test_four.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/test_inherit_from_variable_extends.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/test_one.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/test_one_sekizai.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/test_seven.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/test_six.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/test_super_extends_1.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/test_super_extends_2.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/test_three.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/test_three_sekizai.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/test_two.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/test_variable_extends.html create mode 100644 cms/test_utils/project/templates/placeholder_tests/test_with_block.html create mode 100644 cms/test_utils/project/templates/placeholderapp.html create mode 100644 cms/test_utils/project/templates/pluginapp/link/bugs.html create mode 100644 cms/test_utils/project/templates/pluginapp/link/link.html create mode 100644 cms/test_utils/project/templates/pluginapp/multicolumn/column.html create mode 100644 cms/test_utils/project/templates/pluginapp/multicolumn/multicolumn.html create mode 100644 cms/test_utils/project/templates/pluginapp/multiwrap/multiwrap.html create mode 100644 cms/test_utils/project/templates/pluginapp/multiwrap/wrap.html create mode 100644 cms/test_utils/project/templates/pluginapp/plugins/no_custom_model.html create mode 100644 cms/test_utils/project/templates/pluginapp/plugins/nocache.html create mode 100644 cms/test_utils/project/templates/pluginapp/plugins/sekizai.html create mode 100644 cms/test_utils/project/templates/pluginapp/plugins/sub_empty_plugin.html create mode 100644 cms/test_utils/project/templates/pluginapp/plugins/sub_plugin.html create mode 100644 cms/test_utils/project/templates/pluginapp/style/style.html create mode 100644 cms/test_utils/project/templates/plugins/no_custom_model.html create mode 100644 cms/test_utils/project/templates/plugins/nocache.html create mode 100644 cms/test_utils/project/templates/plugins/sekizai.html create mode 100644 cms/test_utils/project/templates/plugins/sub_empty_plugin.html create mode 100644 cms/test_utils/project/templates/plugins/sub_plugin.html create mode 100644 cms/test_utils/project/templates/registration/logged_out.html create mode 100644 cms/test_utils/project/templates/sidebar_submenu.html create mode 100644 cms/test_utils/project/templates/sidebar_submenu_root.html create mode 100644 cms/test_utils/project/templates/simple.html create mode 100644 cms/test_utils/project/templates/static.html create mode 100644 cms/test_utils/project/templates/subdir/template.html create mode 100644 cms/test_utils/project/templates/tests/rendering/base.html create mode 100644 cms/test_utils/project/templates/tests/rendering/inherit.html create mode 100644 cms/test_utils/project/templates/tests/rendering/inherit_with_or.html create mode 100644 cms/test_utils/project/templates/unicode_placeholder.html create mode 100644 cms/test_utils/project/third_cms_urls_for_apphook_tests.py create mode 100644 cms/test_utils/project/third_urls_for_apphook_tests.py create mode 100644 cms/test_utils/project/urls.py create mode 100644 cms/test_utils/project/urls_2.py create mode 100644 cms/test_utils/project/urls_3.py create mode 100644 cms/test_utils/project/urls_for_apphook_tests.py create mode 100644 cms/test_utils/project/urls_no18n.py create mode 100644 cms/test_utils/runners.py create mode 100644 cms/test_utils/testcases.py create mode 100644 cms/test_utils/tmpdir.py create mode 100644 cms/test_utils/util/__init__.py create mode 100644 cms/test_utils/util/context_managers.py create mode 100644 cms/test_utils/util/fuzzy_int.py create mode 100644 cms/test_utils/util/grouper.py create mode 100644 cms/test_utils/util/menu_extender.py create mode 100644 cms/test_utils/util/mock.py create mode 100644 cms/test_utils/util/static_analysis.py create mode 100644 cms/tests/__init__.py create mode 100644 cms/tests/data/image.jpg create mode 100644 cms/tests/frontend/integration/add-multiple-plugins.js create mode 100644 cms/tests/frontend/integration/addFirstPage.js create mode 100644 cms/tests/frontend/integration/addNewUser.js create mode 100644 cms/tests/frontend/integration/changeSettings.js create mode 100644 cms/tests/frontend/integration/clipboard.js create mode 100644 cms/tests/frontend/integration/copy-apphook-page.js create mode 100644 cms/tests/frontend/integration/copy-from-language.js create mode 100644 cms/tests/frontend/integration/createContent.js create mode 100644 cms/tests/frontend/integration/disableToolbar.js create mode 100644 cms/tests/frontend/integration/dragndrop.js create mode 100644 cms/tests/frontend/integration/editContent.js create mode 100644 cms/tests/frontend/integration/editContentTools.js create mode 100644 cms/tests/frontend/integration/editMode.js create mode 100644 cms/tests/frontend/integration/handlers/externalMissing.js create mode 100644 cms/tests/frontend/integration/handlers/loadFailures.js create mode 100644 cms/tests/frontend/integration/handlers/missingPages.js create mode 100644 cms/tests/frontend/integration/handlers/pageErrors.js create mode 100644 cms/tests/frontend/integration/handlers/suiteFailures.js create mode 100644 cms/tests/frontend/integration/helpers/fixtures.js create mode 100644 cms/tests/frontend/integration/history.js create mode 100644 cms/tests/frontend/integration/link-plugin-content-mode.js create mode 100644 cms/tests/frontend/integration/loginAdmin.js create mode 100644 cms/tests/frontend/integration/loginAdmin.spec.js create mode 100644 cms/tests/frontend/integration/loginToolbar.js create mode 100644 cms/tests/frontend/integration/logout.js create mode 100644 cms/tests/frontend/integration/modal.js create mode 100644 cms/tests/frontend/integration/narrowScreen.js create mode 100644 cms/tests/frontend/integration/newPage.js create mode 100644 cms/tests/frontend/integration/nonadmin.js create mode 100644 cms/tests/frontend/integration/pageControl.js create mode 100644 cms/tests/frontend/integration/pageTypes.js create mode 100644 cms/tests/frontend/integration/pagetree-drag-n-drop-copy.js create mode 100644 cms/tests/frontend/integration/pagetree-no-permission.js create mode 100644 cms/tests/frontend/integration/pagetree.js create mode 100644 cms/tests/frontend/integration/permissions-disabled.js create mode 100644 cms/tests/frontend/integration/permissions-enabled.js create mode 100644 cms/tests/frontend/integration/permissions.js create mode 100644 cms/tests/frontend/integration/revertLive.js create mode 100644 cms/tests/frontend/integration/setup.js create mode 100644 cms/tests/frontend/integration/sideframe.js create mode 100644 cms/tests/frontend/integration/switchLanguage.js create mode 100644 cms/tests/frontend/integration/toolbar-login-apphooks.js create mode 100644 cms/tests/frontend/integration/toolbar.js create mode 100644 cms/tests/frontend/integration/touch-action.spec.js create mode 100644 cms/tests/frontend/integration/userSelectAdminWidget.spec.js create mode 100644 cms/tests/frontend/integration/users.js create mode 100644 cms/tests/frontend/integration/wizard.js create mode 100644 cms/tests/frontend/unit/cms.base.test.js create mode 100644 cms/tests/frontend/unit/cms.changetracker.test.js create mode 100644 cms/tests/frontend/unit/cms.clipboard.test.js create mode 100644 cms/tests/frontend/unit/cms.messages.test.js create mode 100644 cms/tests/frontend/unit/cms.modal.test.js create mode 100644 cms/tests/frontend/unit/cms.navigation.test.js create mode 100644 cms/tests/frontend/unit/cms.pagetree.dropdown.test.js create mode 100644 cms/tests/frontend/unit/cms.pagetree.stickyheader.test.js create mode 100644 cms/tests/frontend/unit/cms.pagetree.test.js create mode 100644 cms/tests/frontend/unit/cms.plugins.test.js create mode 100644 cms/tests/frontend/unit/cms.sideframe.test.js create mode 100644 cms/tests/frontend/unit/cms.structureboard.test.js create mode 100644 cms/tests/frontend/unit/cms.toolbar.test.js create mode 100644 cms/tests/frontend/unit/cms.tooltip.test.js create mode 100644 cms/tests/frontend/unit/dom-diff.test.js create mode 100644 cms/tests/frontend/unit/fixtures/clipboard.html create mode 100644 cms/tests/frontend/unit/fixtures/cms_root.html create mode 100644 cms/tests/frontend/unit/fixtures/iframe_form.html create mode 100644 cms/tests/frontend/unit/fixtures/messages.html create mode 100644 cms/tests/frontend/unit/fixtures/modal.html create mode 100644 cms/tests/frontend/unit/fixtures/pagetree.html create mode 100644 cms/tests/frontend/unit/fixtures/plugin_child_classes.html create mode 100644 cms/tests/frontend/unit/fixtures/plugins.html create mode 100644 cms/tests/frontend/unit/fixtures/plugins_complex_markup.html create mode 100644 cms/tests/frontend/unit/fixtures/sideframe.html create mode 100644 cms/tests/frontend/unit/fixtures/toolbar.html create mode 100644 cms/tests/frontend/unit/fixtures/toolbar_form.html create mode 100644 cms/tests/frontend/unit/fixtures/toolbar_with_dropdown.html create mode 100644 cms/tests/frontend/unit/fixtures/toolbar_with_dropdown_all_publish.html create mode 100644 cms/tests/frontend/unit/fixtures/tooltip.html create mode 100644 cms/tests/frontend/unit/helpers/fixture.js create mode 100644 cms/tests/frontend/unit/helpers/jasmine-compat.js create mode 100644 cms/tests/frontend/unit/helpers/jasmine-jquery.js create mode 100644 cms/tests/frontend/unit/helpers/jquery-global.js create mode 100644 cms/tests/frontend/unit/helpers/mock-ajax.js create mode 100644 cms/tests/frontend/unit/helpers/rewire.js create mode 100644 cms/tests/frontend/unit/html/modal_iframe.html create mode 100644 cms/tests/frontend/unit/html/modal_iframe_errorlist.html create mode 100644 cms/tests/frontend/unit/html/modal_iframe_errornote.html create mode 100644 cms/tests/frontend/unit/html/modal_iframe_messages.html create mode 100644 cms/tests/frontend/unit/html/modal_iframe_no_success.html create mode 100644 cms/tests/frontend/unit/html/modal_iframe_title.html create mode 100644 cms/tests/frontend/unit/html/sideframe_iframe.html create mode 100644 cms/tests/frontend/unit/keyboard.test.js create mode 100644 cms/tests/frontend/unit/preload-images.test.js create mode 100644 cms/tests/frontend/unit/setup.js create mode 100644 cms/tests/frontend/unit/shortcuts.test.js create mode 100644 cms/tests/frontend/unit/slug.test.js create mode 100644 cms/tests/settings.py create mode 100644 cms/tests/test_admin.py create mode 100644 cms/tests/test_api.py create mode 100644 cms/tests/test_app_registration.py create mode 100644 cms/tests/test_apphook_reload_language_variants.py create mode 100644 cms/tests/test_apphooks.py create mode 100644 cms/tests/test_cache.py create mode 100644 cms/tests/test_check.py create mode 100644 cms/tests/test_cms_config_wizards.py create mode 100644 cms/tests/test_copy_permissions.py create mode 100644 cms/tests/test_csp.py create mode 100644 cms/tests/test_extensions.py create mode 100644 cms/tests/test_fixture_loading.py create mode 100644 cms/tests/test_forms.py create mode 100644 cms/tests/test_grouper_admin.py create mode 100644 cms/tests/test_helpers.py create mode 100644 cms/tests/test_i18n.py create mode 100644 cms/tests/test_log_entries.py create mode 100644 cms/tests/test_mail.py create mode 100644 cms/tests/test_management.py create mode 100644 cms/tests/test_menu.py create mode 100644 cms/tests/test_menu_page_viewperm.py create mode 100644 cms/tests/test_menu_page_viewperm_staff.py create mode 100644 cms/tests/test_menu_utils.py create mode 100644 cms/tests/test_middleware_user.py create mode 100644 cms/tests/test_migrations.py create mode 100644 cms/tests/test_mptree_backend.py create mode 100644 cms/tests/test_multilingual.py create mode 100644 cms/tests/test_navextender.py create mode 100644 cms/tests/test_nested_plugins.py create mode 100644 cms/tests/test_no_i18n.py create mode 100644 cms/tests/test_nonroot.py create mode 100644 cms/tests/test_page.py create mode 100644 cms/tests/test_page_admin.py create mode 100644 cms/tests/test_page_user_admin.py create mode 100644 cms/tests/test_page_user_group_admin.py create mode 100644 cms/tests/test_permission_signals.py create mode 100644 cms/tests/test_permissions.py create mode 100644 cms/tests/test_permmod.py create mode 100644 cms/tests/test_placeholder.py create mode 100644 cms/tests/test_placeholder_admin.py create mode 100644 cms/tests/test_placeholder_app_admin.py create mode 100644 cms/tests/test_placeholder_checks.py create mode 100644 cms/tests/test_placeholder_operation_signals.py create mode 100644 cms/tests/test_plugin_renderers.py create mode 100644 cms/tests/test_plugins.py create mode 100644 cms/tests/test_po.py create mode 100644 cms/tests/test_rendering.py create mode 100644 cms/tests/test_security.py create mode 100644 cms/tests/test_settings.py create mode 100644 cms/tests/test_signals.py create mode 100644 cms/tests/test_site.py create mode 100644 cms/tests/test_sitemap.py create mode 100644 cms/tests/test_startcmsproject.py create mode 100644 cms/tests/test_static_analysis.py create mode 100644 cms/tests/test_staticfiles.py create mode 100644 cms/tests/test_templates.py create mode 100644 cms/tests/test_templatetags.py create mode 100644 cms/tests/test_toolbar.py create mode 100644 cms/tests/test_toolbar_enabled_models.py create mode 100644 cms/tests/test_toolbar_pool.py create mode 100644 cms/tests/test_urlutils.py create mode 100644 cms/tests/test_views.py create mode 100644 cms/tests/test_widgets.py create mode 100644 cms/tests/test_wizards.py create mode 100644 cms/toolbar/__init__.py create mode 100644 cms/toolbar/items.py create mode 100644 cms/toolbar/toolbar.py create mode 100644 cms/toolbar/utils.py create mode 100644 cms/toolbar_base.py create mode 100644 cms/toolbar_pool.py create mode 100644 cms/urls.py create mode 100644 cms/utils/__init__.py create mode 100644 cms/utils/admin.py create mode 100644 cms/utils/apphook_reload.py create mode 100644 cms/utils/check.py create mode 100644 cms/utils/compat/__init__.py create mode 100644 cms/utils/compat/dj.py create mode 100644 cms/utils/compat/forms.py create mode 100644 cms/utils/compat/response.py create mode 100644 cms/utils/compat/warnings.py create mode 100644 cms/utils/conf.py create mode 100644 cms/utils/decorators.py create mode 100644 cms/utils/encoder.py create mode 100644 cms/utils/helpers.py create mode 100644 cms/utils/i18n.py create mode 100644 cms/utils/mail.py create mode 100644 cms/utils/mptree.py create mode 100644 cms/utils/page.py create mode 100644 cms/utils/page_permissions.py create mode 100644 cms/utils/permissions.py create mode 100644 cms/utils/placeholder.py create mode 100644 cms/utils/plugins.py create mode 100644 cms/utils/request_ip_resolvers.py create mode 100644 cms/utils/setup.py create mode 100644 cms/utils/urlutils.py create mode 100644 cms/views.py create mode 100644 cms/wizards/__init__.py create mode 100755 cms/wizards/forms.py create mode 100644 cms/wizards/helpers.py create mode 100755 cms/wizards/urls.py create mode 100644 cms/wizards/views.py create mode 100644 cms/wizards/wizard_base.py create mode 100644 cms/wizards/wizard_pool.py create mode 160000 cmsf create mode 100644 legacy_compat.py create mode 100644 menus/__init__.py create mode 100644 menus/apps.py create mode 100644 menus/base.py create mode 100644 menus/exceptions.py create mode 100644 menus/menu_pool.py create mode 100644 menus/migrations/0001_initial.py create mode 100644 menus/migrations/__init__.py create mode 100644 menus/models.py create mode 100644 menus/modifiers.py create mode 100644 menus/templates/menu/breadcrumb.html create mode 100644 menus/templates/menu/dummy.html create mode 100644 menus/templates/menu/empty.html create mode 100644 menus/templates/menu/language_chooser.html create mode 100644 menus/templates/menu/menu.html create mode 100644 menus/templates/menu/sub_menu.html create mode 100644 menus/templatetags/__init__.py create mode 100644 menus/templatetags/menu_tags.py create mode 100644 menus/utils.py diff --git a/cms/__init__.py b/cms/__init__.py new file mode 100644 index 00000000..38a103a6 --- /dev/null +++ b/cms/__init__.py @@ -0,0 +1 @@ +__version__ = '5.2.0dev1' diff --git a/cms/__main__.py b/cms/__main__.py new file mode 100644 index 00000000..04d6e74f --- /dev/null +++ b/cms/__main__.py @@ -0,0 +1,9 @@ +""" +Invokes djangocms when the cms module is run as a script. + +Example: python -m cms mysite +""" +from cms.management import djangocms + +if __name__ == "__main__": + djangocms.execute_from_command_line() diff --git a/cms/admin/__init__.py b/cms/admin/__init__.py new file mode 100644 index 00000000..dc966655 --- /dev/null +++ b/cms/admin/__init__.py @@ -0,0 +1,10 @@ +import cms.admin.pageadmin # noqa: F401 +import cms.admin.permissionadmin # noqa: F401 +import cms.admin.placeholderadmin # noqa: F401 +import cms.admin.settingsadmin # noqa: F401 +import cms.admin.useradmin # noqa: F401 + +# Piggyback off admin.autodiscover() to discover cms plugins +from cms import plugin_pool + +plugin_pool.plugin_pool.discover_plugins() diff --git a/cms/admin/forms.py b/cms/admin/forms.py new file mode 100644 index 00000000..af3e1959 --- /dev/null +++ b/cms/admin/forms.py @@ -0,0 +1,1714 @@ +from django import forms +from django.apps import apps +from django.contrib.auth import get_permission_codename, get_user_model +from django.contrib.auth.models import Permission +from django.contrib.contenttypes.models import ContentType +from django.contrib.sites.models import Site +from django.core.exceptions import ObjectDoesNotExist, ValidationError +from django.forms.utils import ErrorList +from django.forms.widgets import HiddenInput +from django.utils import timezone +from django.utils.encoding import force_str +from django.utils.functional import cached_property +from django.utils.translation import get_language, gettext, gettext_lazy as _ + +from cms import api +from cms.apphook_pool import apphook_pool +from cms.cache.permissions import clear_permission_cache +from cms.constants import PAGE_TYPES_ID, ROOT_USER_LEVEL +from cms.exceptions import PluginLimitReached +from cms.extensions import extension_pool +from cms.forms.fields import PageSmartLinkField +from cms.forms.validators import validate_path, validate_relative_url, validate_url_uniqueness +from cms.forms.widgets import ( + AppHookSelect, + ApplicationConfigSelect, + UserSelectAdminWidget, +) +from cms.models import ( + CMSPlugin, + GlobalPagePermission, + Page, + PageContent, + PagePermission, + PageType, + PageUser, + PageUserGroup, + Placeholder, +) +from cms.models.permissionmodels import ( + EDIT_PERMISSION_REQUIRED_MESSAGES, + User, +) +from cms.operations import ADD_PAGE_TRANSLATION, CHANGE_PAGE_TRANSLATION +from cms.operations.helpers import ( + send_post_page_operation, + send_pre_page_operation, +) +from cms.plugin_pool import plugin_pool +from cms.signals.apphook import set_restart_trigger +from cms.utils import get_current_site +from cms.utils.compat.forms import UserChangeForm +from cms.utils.conf import get_cms_setting +from cms.utils.i18n import get_language_list, get_site_language_from_request +from cms.utils.page import get_clean_username +from cms.utils.page_permissions import ( + user_can_add_page, + user_can_add_subpage, + user_can_change_page, + user_can_view_page, +) +from cms.utils.permissions import ( + get_current_user, + get_grantable_global_permissions, + get_model_permission_codename, + get_subordinate_groups, + get_subordinate_users, + get_user_permission_level, +) +from cms.utils.urlutils import static_with_version +from menus.menu_pool import menu_pool + + +def get_permission_accessor(obj): + User = get_user_model() + + if isinstance( + obj, + ( + PageUser, + User, + ), + ): + rel_name = "user_permissions" + else: + rel_name = "permissions" + return getattr(obj, rel_name) + + +def get_page_changed_by_filter_choices(): + # This is not site-aware + # Been like this forever + # Would be nice for it to filter out by site + values = Page.objects.distinct().order_by("changed_by").values_list("changed_by", flat=True) + + yield ("", _("All")) + + for value in values: + yield (value, value) + + +def get_page_template_filter_choices(): + yield ("", _("All")) + + yield from get_cms_setting("TEMPLATES") + + +def get_main_language_page_content_template(new_page): + # If you have djangocms-versioning installed, this will get the latest version of the page content, and ignore drafts. + # Get the main language page content template if available + if new_page: + try: + main_language = new_page.get_languages()[0] + main_language_page_content = new_page.get_admin_content(language=main_language) + return main_language_page_content.template if main_language_page_content else None + except (IndexError, AttributeError): + # Handle cases where get_languages() returns empty list + # or if there's any attribute access error + pass + return None + + +# Permission actions managed by the CMS permission forms (Django's defaults). +CMS_PERMISSION_ACTIONS = ("add", "change", "delete") + +# Maps each ``can__`` permission group to the model whose +# permission governs it. Used to render, read and authorize the checkboxes. +CMS_PERMISSION_MODELS = ( + (Page, "page"), + (PageUser, "pageuser"), + (PagePermission, "pagepermission"), +) + + +def save_permissions(data, obj): + # ``PageUserGroup`` shares the ``pageuser`` field with ``PageUser`` but has + # its own content type, so the permission must be (un)assigned on both. + models = (*CMS_PERMISSION_MODELS, (PageUserGroup, "pageuser")) + + if not obj.pk: + # save obj, otherwise we can't assign permissions to him + obj.save() + + permission_accessor = get_permission_accessor(obj) + + for model, name in models: + content_type = ContentType.objects.get_for_model(model) + for key in CMS_PERMISSION_ACTIONS: + # add permission `key` for model `model` + codename = get_permission_codename(key, model._meta) + permission = Permission.objects.get(content_type=content_type, codename=codename) + field = f"can_{key}_{name}" + + if data.get(field): + permission_accessor.add(permission) + elif field in data: + permission_accessor.remove(permission) + + +class CopyPermissionForm(forms.Form): + """ + Holds the specific field for permissions + """ + + copy_permissions = forms.BooleanField( + label=_("Copy permissions"), + required=False, + initial=True, + ) + + +class SlugWidget(forms.widgets.TextInput): + """ + Special widget for the slug field that requires Title field to be there. + Adds the js for the slugifying. + """ + + def __init__(self, attrs=None): + if attrs is None: + attrs = {} + else: + attrs = attrs.copy() + language = attrs.get("language", get_language()) + self.uhd_lang, self.uhd_urls = self.get_unihandecode_settings(language) + attrs["data-decoder"] = self.uhd_lang + super().__init__(attrs) + + def get_unihandecode_settings(self, language): + if language[:2] in get_cms_setting("UNIHANDECODE_DECODERS"): + uhd_lang = language[:2] + else: + uhd_lang = get_cms_setting("UNIHANDECODE_DEFAULT_DECODER") + uhd_host = get_cms_setting("UNIHANDECODE_HOST") + uhd_version = get_cms_setting("UNIHANDECODE_VERSION") + if uhd_lang and uhd_host and uhd_version: + uhd_urls = [ + f"{uhd_host}unihandecode-{uhd_version}.core.min.js", + f"{uhd_host}unihandecode-{uhd_version}.{uhd_lang}.min.js", + ] + else: + uhd_urls = [] + return uhd_lang, uhd_urls + + @property + def media(self): + js_media = [ + "admin/js/urlify.js", + static_with_version("cms/js/dist/bundle.forms.slugwidget.min.js"), + ] + self.uhd_urls + return forms.Media(js=js_media) + + +class BasePageContentForm(forms.ModelForm): + _site = None + _request = None + + title = forms.CharField( + label=PageContent._meta.get_field("title").verbose_name.capitalize(), + max_length=255, + widget=forms.TextInput(), + help_text=PageContent._meta.get_field("title").help_text, + ) + slug = forms.SlugField( + label=_("Slug"), + max_length=255, + help_text=_("The part of the title that is used in the URL"), + ) + menu_title = forms.CharField( + label=PageContent._meta.get_field("menu_title").verbose_name.capitalize(), + widget=forms.TextInput(), + help_text=PageContent._meta.get_field("menu_title").help_text, + required=False, + ) + page_title = forms.CharField( + label=PageContent._meta.get_field("page_title").verbose_name.capitalize(), + widget=forms.TextInput(), + required=False, + help_text=PageContent._meta.get_field("page_title").help_text, + ) + meta_description = forms.CharField( + label=PageContent._meta.get_field("meta_description").verbose_name.capitalize(), + max_length=320, + required=False, + widget=forms.Textarea(attrs={"maxlength": "320", "rows": "4"}), + help_text=PageContent._meta.get_field("meta_description").help_text, + ) + + class Meta: + model = PageContent + fields = [] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + attrs = dict(self.fields["slug"].widget.attrs or {}, language=self._language) + self.fields["slug"].widget = SlugWidget(attrs=attrs) + + @cached_property + def _language(self): + return get_site_language_from_request(self._request, site_id=self._site.pk) + + @property + def _user(self): + return self._request.user + + +class AddPageForm(BasePageContentForm): + source = forms.ModelChoiceField( + label=_("Page type"), + queryset=Page.objects.filter(is_page_type=True), + required=False, + ) + cms_page = forms.ModelChoiceField( + queryset=Page.objects.all(), + required=False, + widget=forms.HiddenInput(), + ) + parent_page = forms.ModelChoiceField( + queryset=Page.objects.all(), + required=False, + widget=forms.HiddenInput(), + ) + edit = forms.IntegerField( + # Got to edit/preview mode after adding + required=False, + widget=forms.HiddenInput(), + ) + content_defaults = { + "in_navigation": get_cms_setting("DEFAULT_IN_NAVIGATION"), + } + source_permission_denied = _("You do not have permission to use this page type.") + + class Meta: + model = PageContent + fields = ["source"] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + page_field = self.fields.get("cms_page") + if page_field: + page_field.queryset = page_field.queryset.filter(site=self._site) + + source_field = self.fields.get("source") + + if not source_field or source_field.widget.is_hidden: + return + + root_page = PageType.get_root_page(site=self._site) + + if root_page: + # Set the choicefield's choices to the various page_types + descendants = root_page.get_descendant_pages().filter(is_page_type=True) + titles = PageContent.objects.filter(page__in=descendants, language=self._language) + choices = [("", "---------")] + choices.extend((title.page_id, title.title) for title in titles) + # Narrow the queryset and not just the choices: ``source`` is validated + # against the queryset, which otherwise spans the page types of every + # site, while the choices are merely what the widget renders. + source_field.queryset = descendants + source_field.choices = choices + else: + source_field.queryset = source_field.queryset.none() + choices = [] + + if len(choices) < 2: + source_field.widget = forms.HiddenInput() + + def clean(self): + data = self.cleaned_data + + if self._errors: + # Form already has errors, best to let those be + # addressed first. + return data + + if data.get("cms_page") and data.get("source"): + # Translations reuse an existing page and skip from_source(), where + # the source's view restrictions are preserved before copying content. + self.add_error("source", _("A source page cannot be used when adding a translation.")) + return data + + parent_page = data.get("parent_page") + if parent_page: + slug = data["slug"] + parent_path = parent_page.get_path(self._language) + path = f"{parent_path}/{slug}" if parent_path else slug + else: + path = data["slug"] + + try: + # Validate the url + validate_url_uniqueness( + self._site, + path=path, + language=self._language, + user_language=self._language, + ) + except ValidationError as error: + self.add_error("slug", error) + else: + data["path"] = path + return data + + def clean_source(self): + source = self.cleaned_data.get("source") + # ``source`` is a hidden field whose value is fully controlled by the + # client on POST and ``has_add_permission`` only checks that the user may + # create *a* page, not that they may read ``source`` -- whose placeholders, + # plugins and extensions ``save()`` copies into the new page. + if source and not user_can_view_page(self._user, source): + raise ValidationError(self.source_permission_denied) + return source + + def clean_parent_page(self): + parent_page = self.cleaned_data.get("parent_page") + if parent_page and parent_page.site_id != self._site.pk: + raise ValidationError("Site doesn't match the parent's page site") + + if self.cleaned_data.get("cms_page"): + # A translation is added to an existing page, the parent is not used. + # ``clean_cms_page`` checks the permission on that page instead. + return parent_page + + # ``parent_page`` is a hidden field whose value is fully controlled by the + # client on POST, while ``has_add_permission`` only validated the parent + # taken from the query string. Re-check the permission against the parent + # the page is actually created under -- this is to prevent people from + # possible form-hacking. + if parent_page: + has_perm = user_can_add_subpage(self._user, target=parent_page, site=self._site) + else: + has_perm = user_can_add_page(self._user, site=self._site) + + if not has_perm: + raise ValidationError(_("You do not have permission to add a page here.")) + return parent_page + + def clean_cms_page(self): + page = self.cleaned_data.get("cms_page") + if page and not user_can_change_page(self._user, page, site=page.site): + raise ValidationError(_("You do not have permission to change this page.")) + return page + + def create_translation(self, page, main_language_page_content_template=None): + data = self.cleaned_data + title_kwargs = { + "page": page, + "language": self._language, + "slug": data["slug"], + "path": data["path"], + "title": data["title"], + "template": self.get_template(), + "created_by": self._user, + } + title_kwargs.update(self.content_defaults) + + if "menu_title" in data: + title_kwargs["menu_title"] = data["menu_title"] + + if "page_title" in data: + title_kwargs["page_title"] = data["page_title"] + + if "meta_description" in data: + title_kwargs["meta_description"] = data["meta_description"] + + if main_language_page_content_template: + title_kwargs["template"] = main_language_page_content_template + + return api.create_page_content(**title_kwargs) + + def from_source(self, source, parent=None): + new_page = source.copy( + site=self._site, + parent_page=parent, + language=self._language, + translations=False, + permissions=False, + extensions=False, + user=self._user, + ) + new_page.update(is_page_type=False) + # ``Page.copy()`` is called with ``permissions=False``, so a copy of a + # view-restricted source would be world-readable. Carry the source's view + # restrictions -- its own and the ones it inherits -- over to the copy. + new_page.apply_view_restrictions(source.get_view_restrictions(), user=self._user) + return new_page + + def get_template(self): + source = self.cleaned_data.get("source") + if source: + return source.get_template(self._language) + return PageContent.TEMPLATE_DEFAULT + + def save(self, *args, **kwargs): + page = self.cleaned_data.get("cms_page") + source = self.cleaned_data.get("source") + parent = self.cleaned_data.get("parent_page") + + operation_token = send_pre_page_operation( + request=self._request, + operation=ADD_PAGE_TRANSLATION, + language=self._language, + ) + + if page: + new_page = page + elif source: + new_page = self.from_source(source, parent=parent) + else: + new_page = Page(site=self._site, parent=parent) + new_page.add_to_tree(position="last-child") + new_page.save() + + translation = self.create_translation( + new_page, main_language_page_content_template=get_main_language_page_content_template(new_page) + ) + new_page.page_content_cache[translation.language] = translation + + if source: + extension_pool.copy_extensions( + source_page=source, + target_page=new_page, + languages=[translation.language], + ) + placeholders = source.get_placeholders(translation.language) + + for source_placeholder in placeholders: + target_placeholder = translation.placeholders.create( + slot=source_placeholder.slot, + default_width=source_placeholder.default_width, + ) + source_placeholder.copy_plugins(target_placeholder, language=translation.language) + + is_first = not (Page.objects.on_site(self._site).exclude(pk=new_page.id).exists()) + + if is_first and not new_page.is_page_type: + # it's the first page. Make it the homepage + new_page.set_as_homepage(self._user) + + send_post_page_operation( + request=self._request, + operation=ADD_PAGE_TRANSLATION, + token=operation_token, + obj=new_page, + language=self._language, + ) + return translation + + def save_m2m(self): + return + + +class AddPageTypeForm(AddPageForm): + menu_title = None + meta_description = None + page_title = None + source = forms.ModelChoiceField( + queryset=Page.objects.all(), + required=False, + widget=forms.HiddenInput(), + ) + content_defaults = { + "in_navigation": False, + } + + def get_or_create_root(self): + """ + Creates the root node used to store all page types + for the current site if it doesn't exist. + """ + root_page = PageType.get_root_page(site=self._site) + if not root_page: + root_page = Page(is_page_type=True) + root_page.set_tree_node(self._site) + root_page.save() + + if not root_page.has_translation(self._language): + api.create_page_content( + language=self._language, + title=gettext("Page Types"), + page=root_page, + slug=PAGE_TYPES_ID, + path=PAGE_TYPES_ID, + in_navigation=False, + ) + return root_page + + def clean_parent_page(self): + parent_page = super().clean_parent_page() + + if parent_page and not parent_page.item.is_page_type: + raise ValidationError("Parent has to be a page type.") + + if not parent_page: + # parent was not explicitly selected. + # fallback to the page types root + parent_page = self.get_or_create_root() + return parent_page + + def from_source(self, source, parent=None): + new_page = source.copy( + site=self._site, + parent_page=parent, + language=self._language, + translations=False, + permissions=False, + extensions=False, + ) + new_page.update(is_page_type=True) + return new_page + + def save(self, *args, **kwargs): + new_page = super().save(*args, **kwargs) + + if not self.cleaned_data.get("source"): + # User has created a page-type via "Add page" + # instead of from another page. + new_page.update(is_page_type=True) + return new_page + + +class DuplicatePageForm(AddPageForm): + source = forms.ModelChoiceField( + queryset=Page.objects.all(), + required=True, + widget=forms.HiddenInput(), + ) + source_permission_denied = _("You do not have permission to copy this page.") + + +class ChangePageForm(BasePageContentForm): + overwrite_url = forms.CharField( + label=_("Overwrite URL"), + max_length=255, + required=False, + help_text=_("Keep this field empty if standard path should be used."), + ) + soft_root = forms.BooleanField( + label=PageContent._meta.get_field("soft_root").verbose_name.capitalize(), + required=False, + help_text=PageContent._meta.get_field("soft_root").help_text, + ) + redirect = PageSmartLinkField( + label=PageContent._meta.get_field("redirect").verbose_name.capitalize(), + required=False, + help_text=PageContent._meta.get_field("redirect").help_text, + placeholder_text=_("Start typing..."), + ajax_view="admin:cms_page_get_list", + ) + limit_visibility_in_menu = forms.TypedChoiceField( + choices=PageContent._meta.get_field("limit_visibility_in_menu").choices, + label=PageContent._meta.get_field("limit_visibility_in_menu").verbose_name.capitalize(), + help_text=_("limit when this page is visible in the menu"), + initial=PageContent._meta.get_field("limit_visibility_in_menu").default, + required=False, + coerce=int, + empty_value=None, + ) + xframe_options = forms.ChoiceField( + choices=PageContent._meta.get_field("xframe_options").choices, + label=_("X Frame Options"), + help_text=_("Whether this page can be embedded in other pages or websites."), + initial=PageContent._meta.get_field("xframe_options").default, + required=False, + ) + fieldsets = ( + ( + None, + { + "fields": ( + "title", + "slug", + "template", + "page_title", + "meta_description", + ), + }, + ), + ( + _("URL options"), + { + "fields": ("overwrite_url", "redirect"), + "classes": ["collapse"], + }, + ), + ( + _("Menu options"), + { + "fields": ("soft_root", "menu_title", "limit_visibility_in_menu"), + "classes": ["collapse"], + }, + ), + ( + _("Headers"), + { + "fields": ("xframe_options",), + "classes": ["collapse"], + }, + ), + ) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + self.fields["slug"].initial = self.instance.slug + self.fields["redirect"].widget.language = self._language + self.fields["redirect"].initial = self.instance.redirect + + if self.instance.overwrite_url: + self.fields["overwrite_url"].initial = self.instance.overwrite_url + + @cached_property + def _language(self): + return self.instance.language + + def clean_overwrite_url(self): + path = (self.cleaned_data.get("overwrite_url") or "").strip("/") + if path: + # Validate the characters here rather than in ``clean()``: that method returns early + # for the home page and for pages without a reachable path, but the value is persisted + # either way and becomes the live url as soon as the page stops being home. + validate_path(path) + return self.cleaned_data["overwrite_url"] + + def clean(self): + data = super().clean() + + if self._errors: + # Form already has errors, best to let those be + # addressed first. + return data + + page = self.instance.page + + if page.is_home: + # the home page always lives at the root path + return data + + slug = data["slug"] + path_override = self.cleaned_data.get("overwrite_url") + + # the same derivation Page.update_urls_from_content applies on save + path = page.get_url_data(slug, path_override, self._language)["path"] + + if path is None: + # the page has no reachable path (e.g. unpublished parent), + # so there is no URL to validate + return data + + user_language = get_site_language_from_request(self._request, site_id=self._site.pk) + + try: + # Validate the url + validate_url_uniqueness( + self._site, + path=path, + language=self._language, + user_language=user_language, + exclude_page=page, + ) + except ValidationError as error: + field = "overwrite_url" if path_override else "slug" + self.add_error(field, error) + return data + + def clean_xframe_options(self): + if "xframe_options" not in self.fields: + return # nothing to do, field isn't present + + xframe_options = self.cleaned_data["xframe_options"] + + if xframe_options == "": + return PageContent._meta.get_field("xframe_options").default + return xframe_options + + def save(self, commit=True): + operation_token = send_pre_page_operation( + request=self._request, + operation=CHANGE_PAGE_TRANSLATION, + language=self._language, + ) + + data = self.cleaned_data.copy() + page = self.instance.page + data["overwrite_url"] = (data.get("overwrite_url") or "").strip("/") or None + page_content = super().save(commit=False) + page_content.update( + changed_by=get_clean_username(self._request.user), + changed_date=timezone.now(), + **data, + ) + if page_content.is_public(): + # This content is what visitors see (nothing like a versioning + # package hides it), so the page URL follows the change right away. + # Otherwise the URL is only updated once this content is published. + page.update_urls_from_content(self._language) + + if page.application_urls and "slug" in self.changed_data: + # Connects the apphook restart handler to the request finished signal + set_restart_trigger() + page.clear_cache(menu=True) + send_post_page_operation( + request=self._request, + operation=CHANGE_PAGE_TRANSLATION, + token=operation_token, + obj=page, + language=self._language, + ) + return page_content + + +class AdvancedSettingsForm(forms.ModelForm): + _site = None + _request = None + + application_urls = forms.ChoiceField( + label=_("Application"), + choices=(), + required=False, + help_text=_("Hook application to this page."), + ) + # This is really a 'fake' field which does not correspond to any Page attribute + # But creates a stub field to be populate by js + application_configs = forms.CharField( + label=_("Application configurations"), + required=False, + widget=ApplicationConfigSelect, + ) + + class Meta: + model = Page + fields = [ + "login_required", + "reverse_id", + "navigation_extenders", + "application_urls", + "application_namespace", + "application_configs", + ] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + if "navigation_extenders" in self.fields: + navigation_extenders = self.get_navigation_extenders() + self.fields["navigation_extenders"].widget = forms.Select({}, [("", "---------")] + navigation_extenders) + if "application_urls" in self.fields: + # Prepare a dict mapping the apps by class name ('PollApp') to + # their app_name attribute ('polls'), if any. + app_namespaces = {} + app_configs = {} + for hook in apphook_pool.get_apphooks(): + app = apphook_pool.get_apphook(hook[0]) + if app.app_name: + app_namespaces[hook[0]] = app.app_name + if app.app_config: + app_configs[hook[0]] = app + + self.fields["application_urls"].widget = AppHookSelect( + attrs={"id": "application_urls"}, app_namespaces=app_namespaces + ) + self.fields["application_urls"].choices = [("", "---------")] + apphook_pool.get_apphooks() + + page_data = self.data if self.data else self.initial + if app_configs: + self.fields["application_configs"].widget = ApplicationConfigSelect( + attrs={"id": "application_configs"}, + app_configs=app_configs, + ) + + if page_data.get("application_urls", False) and page_data["application_urls"] in app_configs: + configs = app_configs[page_data["application_urls"]].get_configs() + self.fields["application_configs"].widget.choices = [ + (config.pk, force_str(config)) for config in configs + ] + + try: + config = configs.get(namespace=self.initial["application_namespace"]) + self.fields["application_configs"].initial = config.pk + except ObjectDoesNotExist: + # Provided apphook configuration doesn't exist (anymore), + # just skip it + # The user will choose another value anyway + pass + + @cached_property + def _language(self): + return get_site_language_from_request(self._request, site_id=self._site.pk) + + def clean(self): + cleaned_data = super().clean() + + if self._errors: + # Fail fast if there's errors in the form + return cleaned_data + + if "reverse_id" in self.fields: + reverse_id = cleaned_data["reverse_id"] + if reverse_id: + lookup = Page.objects.on_site(self._site).filter(reverse_id=reverse_id) + if lookup.exclude(pk=self.instance.pk).exists(): + self._errors["reverse_id"] = self.error_class( + [_("A page with this reverse URL id exists already.")] + ) + apphook = cleaned_data.get("application_urls", None) + # The field 'application_namespace' is a misnomer. It should be + # 'instance_namespace'. + instance_namespace = cleaned_data.get("application_namespace", None) + application_config = cleaned_data.get("application_configs", None) + + if apphook: + apphooks_with_config = self.get_apphooks_with_config() + + # application_config wins over application_namespace + if apphook in apphooks_with_config and application_config: + # the value of the application config namespace is saved in + # the 'usual' namespace field to be backward compatible + # with existing apphooks + try: + appconfig_pk = forms.IntegerField(required=True).to_python(application_config) + except ValidationError: + self._errors["application_configs"] = ErrorList([_("Invalid application config value")]) + return self.cleaned_data + + try: + config = apphooks_with_config[apphook].get_configs().get(pk=appconfig_pk) + except ObjectDoesNotExist: + self._errors["application_configs"] = ErrorList([_("Invalid application config value")]) + return self.cleaned_data + + if self._check_unique_namespace_instance(config.namespace): + # Looks like there's already one with the default instance + # namespace defined. + self._errors["application_configs"] = ErrorList( + [_("An application instance using this configuration already exists.")] + ) + else: + self.cleaned_data["application_namespace"] = config.namespace + else: + if instance_namespace: + if self._check_unique_namespace_instance(instance_namespace): + self._errors["application_namespace"] = ErrorList( + [_("An application instance with this name already exists.")] + ) + else: + # The attribute on the apps 'app_name' is a misnomer, it should be + # 'application_namespace'. + application_namespace = apphook_pool.get_apphook(apphook).app_name + if application_namespace and not instance_namespace: + if self._check_unique_namespace_instance(application_namespace): + # Looks like there's already one with the default instance + # namespace defined. + self._errors["application_namespace"] = ErrorList( + [_("An application instance with this name already exists.")] + ) + else: + # OK, there are zero instances of THIS app that use the + # default instance namespace, so, since the user didn't + # provide one, we'll use the default. NOTE: The following + # line is really setting the "instance namespace" of the + # new app to the app's "application namespace", which is + # the default instance namespace. + self.cleaned_data["application_namespace"] = application_namespace + + if instance_namespace and not apphook: + self.cleaned_data["application_namespace"] = None + + if application_config and not apphook: + self.cleaned_data["application_configs"] = None + return self.cleaned_data + + def get_apphooks(self): + for hook in apphook_pool.get_apphooks(): + yield (hook[0], apphook_pool.get_apphook(hook[0])) + + def get_apphooks_with_config(self): + return {key: app for key, app in self.get_apphooks() if app.app_config} + + def get_navigation_extenders(self): + return menu_pool.get_menus_by_attribute("cms_enabled", True) + + def _check_unique_namespace_instance(self, namespace): + return ( + Page.objects.on_site(self._site) + .filter(application_namespace=namespace) + .exclude(pk=self.instance.pk) + .exists() + ) + + def has_changed_apphooks(self): + changed_data = self.changed_data + + if "application_urls" in changed_data: + return True + return "application_namespace" in changed_data + + def save(self, *args, **kwargs): + page = super().save(*args, **kwargs) + page.clear_cache(menu=True) + clear_permission_cache() + + if self.has_changed_apphooks(): + set_restart_trigger() + return page + + +class PageTreeForm(forms.Form): + position = forms.IntegerField(initial=0, required=True) + target = forms.ModelChoiceField(queryset=Page.objects.none(), required=False) + + def __init__(self, *args, **kwargs): + self.page = kwargs.pop("page") + self._site = kwargs.pop("site", self.page.site) + super().__init__(*args, **kwargs) + self.fields["target"].queryset = Page.objects.filter( + site=self._site, + is_page_type=self.page.is_page_type, + ) + + def get_root_pages(self): + pages = Page.get_root_nodes() + return pages.exclude(is_page_type=not self.page.is_page_type) + + def get_tree_options(self): + position = self.cleaned_data["position"] + if target_page := self.cleaned_data.get("target"): + return self._get_tree_options_for_parent(target_page, position) + return self._get_tree_options_for_root(position) + + def _get_tree_options_for_root(self, position): + siblings = Page.get_root_nodes().filter(site=self._site) + try: + return siblings[position], "left" + except IndexError: + # The position requested is not occupied. + # Add the node as the last root node, + # relative to the current site. + return siblings.reverse()[0], "right" + + def _get_tree_options_for_parent(self, parent_page, position): + if position == 0: + return parent_page, "first-child" + + siblings = parent_page.get_children().filter(site=self._site) + try: + return siblings[position], "left" + except IndexError: + # The position requested is not occupied. + # Add the node to be the parent's first child + return parent_page, "last-child" + + +class MovePageForm(PageTreeForm): + def clean(self): + cleaned_data = super().clean() + + if self.page.is_home and cleaned_data.get("target"): + self.add_error( + "target", + force_str(_("You can't move the home page inside another page")), + ) + return cleaned_data + + if self.page.is_home: + # The home page can only be reordered among the root pages, which + # changes neither its URLs nor those of its descendants. + return cleaned_data + + target_page, position = self.get_tree_options() + new_parent = self._determine_new_parent(target_page, position) + + # Moving affects every URL, regardless of the active admin language or + # whether public content is available. Never-published pages may have + # no URLs yet; their URLs will be validated when they are published. + for url in self.page.urls.all(): + if not url.managed: + # Overwritten URLs keep their fixed path when the page moves, + # so they cannot collide at the new position. + continue + + language, slug = url.language, url.slug + + if position not in ("first-child", "last-child"): + self._validate_slug_uniqueness(new_parent, language, slug) + + if new_parent: + parent_path = new_parent.get_path(language) + if parent_path is None: + # Below an unreachable parent the page is unreachable, too. + # Its URL is validated once the parent gets a path. + continue + new_path = f"{parent_path}/{slug}" if parent_path else slug + else: + new_path = slug + + self._validate_url_uniqueness(new_path, language) + + return cleaned_data + + def get_tree_options(self): + target_page, target_page_position = super().get_tree_options() + if target_page_position != "left": + return target_page, target_page_position + + if self.page.path < target_page.path: + if self.page.is_sibling_of(target_page): + # The page being moved appears before the target page and is a sibling of the target node. + # The user is moving from left to right. + return target_page, "right" + + # The node being moved appears before the target node but is not a sibling of the target node. + # The user is moving from right to left. + return target_page, "left" + + # The node being moved appears after the target node. + # The user is moving from right to left. + return target_page, "left" + + def move_page(self, user=None): + self.page.move_page(*self.get_tree_options(), user=user) + + def _determine_new_parent(self, target_page, position): + if position in ("first-child", "last-child"): + return target_page + return target_page.parent + + def _validate_slug_uniqueness(self, parent, language, slug): + target_siblings = Page.objects.filter( + parent=parent, + site=self._site, + is_page_type=self.page.is_page_type, + ).exclude(pk=self.page.pk) + if target_siblings.filter(urls__slug=slug, urls__language=language).exists(): + raise ValidationError( + _( + "You cannot have two pages with the same slug at the same page level. " + "Please alter the slug of one of the pages before trying to move again." + ) + ) + + def _validate_url_uniqueness(self, path, language): + try: + validate_url_uniqueness( + self._site, + path=path, + language=language, + exclude_page=self.page, + ) + except ValidationError: + raise ValidationError( + _( + "You cannot have two pages with the same slug at the same page level. " + "Please alter the slug of one of the pages before trying to move again." + ) + ) + + +class CopyPageForm(PageTreeForm): + copy_permissions = forms.BooleanField(initial=False, required=False) + + def copy_page(self, user): + target_page, position = self.get_tree_options() + copy_permissions = self.cleaned_data.get("copy_permissions", False) + new_page = self.page.copy_with_descendants( + target_page=target_page, + position=position, + copy_permissions=copy_permissions, + target_site=self._site, + user=user, + ) + return new_page + + def _get_tree_options_for_root(self, position): + try: + return super()._get_tree_options_for_root(position) + except IndexError: + # The user is copying a page to a site with no pages + # Add the node as the last root node. + siblings = self.get_root_pages().reverse() + return (siblings[0], "right") + + +class ChangeListForm(forms.Form): + BOOLEAN_CHOICES = ( + ("", _("All")), + ("1", _("Yes")), + ("0", _("No")), + ) + + q = forms.CharField(required=False, widget=forms.HiddenInput()) + in_navigation = forms.ChoiceField(required=False, choices=BOOLEAN_CHOICES) + template = forms.ChoiceField(required=False) + changed_by = forms.ChoiceField(required=False) + soft_root = forms.ChoiceField(required=False, choices=BOOLEAN_CHOICES) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields["changed_by"].choices = get_page_changed_by_filter_choices() + self.fields["template"].choices = get_page_template_filter_choices() + + def is_filtered(self): + data = self.cleaned_data + + if self.cleaned_data.get("q"): + return True + return any(bool(data.get(field.name)) for field in self.visible_fields()) + + def get_filter_items(self): + for field in self.visible_fields(): + value = self.cleaned_data.get(field.name) + + if value: + yield (field.name, value) + + def run_filters(self, queryset): + for field, value in self.get_filter_items(): + query = {f"{field}__exact": value} + queryset = queryset.filter(**query) + return queryset + + +class BasePermissionAdminForm(forms.ModelForm): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + permission_fields = self._meta.model.get_all_permissions() + + for field in permission_fields: + if field not in self.base_fields: + setattr(self.instance, field, False) + + +class PagePermissionInlineAdminForm(BasePermissionAdminForm): + """ + Page permission inline admin form used in inline admin. Required, because + user and group queryset must be changed. User can see only users on the same + level or under him in chosen page tree, and users which were created by him, + but aren't assigned to higher page level than current user. + """ + + _page = None + + page = forms.ModelChoiceField( + queryset=Page.objects.all(), + label=_("user"), + widget=HiddenInput(), + required=True, + ) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + user = get_current_user() # current user from threadlocals + + site_id = getattr(self._page, "site_id", None) + site = Site.objects._get_site_by_id(site_id) if site_id else None + sub_users = get_subordinate_users(user, site) + + limit_choices = True + use_raw_id = False + + # Unfortunately, if there are > 500 users in the system, non-superusers + # won't see any benefit here because if we ask Django to put all the + # user PKs in limit_choices_to in the query string of the popup we're + # in danger of causing 414 errors so we fall back to the normal input + # widget. + if get_cms_setting("RAW_ID_USERS"): + if sub_users.count() < 500: + # If there aren't too many users, proceed as normal and use a + # raw id field with limit_choices_to + limit_choices = True + use_raw_id = True + elif get_user_permission_level(user, site) == ROOT_USER_LEVEL: + # If there are enough choices to possibly cause a 414 request + # URI too large error, we only proceed with the raw id field if + # the user is a superuser & thus can legitimately circumvent + # the limit_choices_to condition. + limit_choices = False + use_raw_id = True + + # We don't use the fancy custom widget if the admin form wants to use a + # raw id field for the user + if use_raw_id: + from django.contrib.admin.widgets import ForeignKeyRawIdWidget + + # This check will be False if the number of users in the system + # is less than the threshold set by the RAW_ID_USERS setting. + if isinstance(self.fields["user"].widget, ForeignKeyRawIdWidget): + # We can't set a queryset on a raw id lookup, but we can use + # the fact that it respects the limit_choices_to parameter. + if limit_choices: + self.fields["user"].widget.rel.limit_choices_to = dict( + id__in=list(sub_users.values_list("pk", flat=True)) + ) + else: + self.fields["user"].widget = UserSelectAdminWidget() + self.fields["user"].queryset = sub_users + self.fields["user"].widget.user = user # assign current user + + self.fields["group"].queryset = get_subordinate_groups(user, site) + + class Meta: + fields = [ + "user", + "group", + "can_add", + "can_change", + "can_delete", + "can_publish", + "can_change_advanced_settings", + "can_change_permissions", + "can_move_page", + "grant_on", + ] + model = PagePermission + + +class ViewRestrictionInlineAdminForm(BasePermissionAdminForm): + page = forms.ModelChoiceField( + queryset=Page.objects.all(), + label=_("user"), + widget=HiddenInput(), + required=True, + ) + can_view = forms.BooleanField( + label=_("can_view"), + widget=HiddenInput(), + initial=True, + ) + + class Meta: + fields = [ + "user", + "group", + "grant_on", + "can_view", + ] + model = PagePermission + + def clean_can_view(self): + return True + + +class GlobalPagePermissionAdminForm(BasePermissionAdminForm): + """Admin form for site-wide page permissions. + + Unlike :class:`PagePermissionInlineAdminForm`, whose admin restricts the + rendered ``can_*`` flags in ``PagePermissionInlineAdmin.get_formset``, this + form is the only place where the "a manager cannot hand out rights they do + not hold themselves" invariant (see ``docs/explanation/permissions.rst``) + can be enforced for :class:`~cms.models.GlobalPagePermission`. + + Without it, a delegate whose sole elevated right is ``can_change_permissions`` + could grant themselves ``can_publish``, ``can_delete``, + ``can_change_advanced_settings`` and ``can_move_page`` site-wide (CWE-269). + """ + + _current_user = None + + class Meta: + fields = [ + "user", + "group", + "can_add", + "can_change", + "can_delete", + "can_publish", + "can_change_advanced_settings", + "can_change_permissions", + "can_move_page", + "can_view", + "sites", + ] + model = GlobalPagePermission + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + if not self.instance.pk: + return + + # ``GlobalPagePermissionAdmin.get_form`` excludes the flags the manager + # may not grant, and ``BasePermissionAdminForm`` then blanks every + # excluded flag on the instance. That is right for a new row -- several + # ``can_*`` flags default to ``True`` on the model -- but on an existing + # one it would silently *revoke* rights the manager is equally + # unauthorized to touch, so restore the stored values here. + stored = ( + self._meta.model._base_manager.filter(pk=self.instance.pk) + .values(*self._meta.model.get_all_permissions()) + .first() + ) + for field, value in (stored or {}).items(): + if field not in self.fields: + setattr(self.instance, field, value) + + def clean(self): + cleaned_data = super().clean() + + user = self._current_user or get_current_user() + if user is None: + # No acting user means the form is used outside an admin request -- + # a script, data migration or test -- where there is no privilege + # boundary to enforce. ``GlobalPagePermissionAdmin.get_form`` always + # sets ``_current_user``, so the admin never takes this path. + return cleaned_data + + # ``sites`` is excluded from ``cleaned_data`` when it failed validation; + # falling back to "all sites" then applies the strictest check. + site_ids = [site.pk for site in cleaned_data.get("sites") or []] + grantable = get_grantable_global_permissions(user, site_ids) + + if "can_change_permissions" not in grantable: + # ``has_add_permission`` only checks the current site; a manager must + # be allowed to manage permissions on every site the grant covers. + self.add_error( + "sites" if "sites" in self.fields else None, + forms.ValidationError( + _("You cannot manage permissions on every selected site."), + code="sites_not_managed", + ), + ) + return cleaned_data + + for field in self._meta.model.get_all_permissions(): + # Fields absent from the form were already excluded as ungrantable + # on any site; this catches the narrower case of a flag the manager + # holds on one site being granted for another. + if field in self.fields and cleaned_data.get(field) and field not in grantable: + self.add_error( + field, + forms.ValidationError( + _( + 'You cannot grant "%(permission)s" because you do not hold it ' + "yourself on every selected site." + ), + code="permission_not_held", + params={"permission": self.fields[field].label or field}, + ), + ) + return cleaned_data + + +class GenericCmsPermissionForm(forms.ModelForm): + """Generic form for User & Group permissions in cms""" + + _current_user = None + + can_add_page = forms.BooleanField(label=_("Add"), required=False, initial=True) + can_change_page = forms.BooleanField(label=_("Change"), required=False, initial=True) + can_delete_page = forms.BooleanField(label=_("Delete"), required=False) + + # pageuser is for pageuser & group - they are combined together, + # and read out from PageUser model + can_add_pageuser = forms.BooleanField(label=_("Add"), required=False) + can_change_pageuser = forms.BooleanField(label=_("Change"), required=False) + can_delete_pageuser = forms.BooleanField(label=_("Delete"), required=False) + + can_add_pagepermission = forms.BooleanField(label=_("Add"), required=False) + can_change_pagepermission = forms.BooleanField(label=_("Change"), required=False) + can_delete_pagepermission = forms.BooleanField(label=_("Delete"), required=False) + + # Maps the ``can__`` permission fields to the model whose + # permission they grant. Mirrors ``save_permissions`` and the fieldsets + # rendered by ``PageUserGroupAdmin``/``PageUserAdmin``. + + def __init__(self, *args, **kwargs): + instance = kwargs.get("instance") + initial = kwargs.get("initial") or {} + + if instance: + initial = initial or {} + initial.update(self.populate_initials(instance)) + kwargs["initial"] = initial + super().__init__(*args, **kwargs) + + def clean(self): + data = super().clean() + + # Validate Page options + if not data.get("can_change_page"): + if data.get("can_add_page"): + raise ValidationError(EDIT_PERMISSION_REQUIRED_MESSAGES["can_add"]) + + if data.get("can_delete_page"): + raise ValidationError(EDIT_PERMISSION_REQUIRED_MESSAGES["can_delete"]) + + if data.get("can_add_pagepermission"): + message = _( + "Users can't set page permissions without also being able to " + "change the page. Please also enable 'Can edit'." + ) + raise ValidationError(message) + + if data.get("can_delete_pagepermission"): + message = _( + "Users can't delete page permissions without also being able " + "to change the page. Please also enable 'Can edit'." + ) + raise ValidationError(message) + + # Validate PagePermission options + if not data.get("can_change_pagepermission"): + if data.get("can_add_pagepermission"): + message = _( + "Users can't create page permissions without also being able " + "to change them. Please also enable 'Can edit'." + ) + raise ValidationError(message) + + if data.get("can_delete_pagepermission"): + message = _( + "Users can't delete page permissions without also being able " + "to change them. Please also enable 'Can edit'." + ) + raise ValidationError(message) + + # Enforce "nobody can grant more than they have" at the data layer. + self._drop_unauthorized_permissions(data) + return data + + def _drop_unauthorized_permissions(self, data): + """Remove ``can_*`` entries the current manager is not allowed to manage. + + ``PageUserGroupAdmin.get_fieldsets`` only *renders* the permission + checkboxes the manager actually holds, but the ``can_*`` fields are + declared on this form and therefore stay in ``base_fields`` regardless + of the admin's ``fields=`` restriction. A crafted POST can set the + hidden ones, and ``save_permissions`` would then grant them -- letting a + delegated manager escalate a group beyond their own rights (CWE-269). + Dropping the unauthorized entries here means they are neither granted + nor revoked, so any existing value the manager may not touch is left + untouched as well. + """ + user = self._current_user + for model, name in CMS_PERMISSION_MODELS: + for action in CMS_PERMISSION_ACTIONS: + field = f"can_{action}_{name}" + if field not in self.fields: + continue + if user is None or not user.has_perm(get_model_permission_codename(model, action)): + data.pop(field, None) + return data + + def populate_initials(self, obj): + """Read out permissions from permission system.""" + initials = {} + permission_accessor = get_permission_accessor(obj) + + for model, name in CMS_PERMISSION_MODELS: + content_type = ContentType.objects.get_for_model(model) + permissions = permission_accessor.filter(content_type=content_type).values_list("codename", flat=True) + for key in CMS_PERMISSION_ACTIONS: + codename = get_permission_codename(key, model._meta) + initials[f"can_{key}_{name}"] = codename in permissions + return initials + + def save(self, commit=True): + instance = super().save(commit=False) + instance.save() + save_permissions(self.cleaned_data, instance) + return instance + + +class PageUserAddForm(forms.ModelForm): + _current_user = None + + user = forms.ModelChoiceField(queryset=User.objects.none()) + + class Meta: + fields = ["user"] + model = PageUser + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields["user"].queryset = self.get_subordinates() + + def get_subordinates(self): + subordinates = get_subordinate_users(self._current_user, self._current_site) + return subordinates.filter(pageuser__isnull=True) + + def save(self, commit=True): + user = self.cleaned_data["user"] + instance = super().save(commit=False) + instance.created_by = self._current_user + + for field in user._meta.fields: + # assign all the fields - we can do this, because object is + # subclassing User (one to one relation) + value = getattr(user, field.name) + setattr(instance, field.name, value) + + if commit: + instance.save() + return instance + + +class PageUserChangeForm(UserChangeForm): + _current_user = None + + class Meta: + fields = "__all__" + model = PageUser + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + if not self._current_user.is_superuser: + # Limit permissions to include only + # the permissions available to the manager. + permissions = self.get_available_permissions() + self.fields["user_permissions"].queryset = permissions + + # Limit groups to include only those where + # the manager is a member. + self.fields["groups"].queryset = self.get_available_groups() + + def get_available_permissions(self): + permissions = self._current_user.get_all_permissions() + permission_codes = (perm.rpartition(".")[-1] for perm in permissions) + return Permission.objects.filter(codename__in=permission_codes) + + def get_available_groups(self): + return self._current_user.groups.all() + + +class PageUserGroupForm(GenericCmsPermissionForm): + class Meta: + model = PageUserGroup + fields = ("name",) + + def save(self, commit=True): + if not self.instance.pk: + self.instance.created_by = self._current_user + return super().save(commit=commit) + + +class PluginAddValidationForm(forms.Form): + placeholder_id = forms.ModelChoiceField( + queryset=Placeholder.objects.all(), + required=True, + ) + plugin_position = forms.IntegerField(required=True) + plugin_language = forms.CharField(required=True) + plugin_parent = forms.ModelChoiceField( + CMSPlugin.objects.all(), + required=False, + ) + plugin_type = forms.CharField(required=True) + + def clean_plugin_type(self): + plugin_type = self.cleaned_data["plugin_type"] + + try: + plugin_pool.get_plugin(plugin_type) + except KeyError: + message = gettext("Invalid plugin type '%s'") % plugin_type + raise ValidationError(message) + return plugin_type + + def clean(self): + from cms.utils.plugins import has_reached_plugin_limit + + data = self.cleaned_data + + if self.errors: + return data + + language = data["plugin_language"] + position = data["plugin_position"] + placeholder = data["placeholder_id"] + parent_plugin = data.get("plugin_parent") + site = get_current_site(getattr(self, "_request", None)) + if language not in get_language_list(site_id=site.pk): + message = gettext("Language must be set to a supported language!") + self.add_error("plugin_language", message) + return self.cleaned_data + + if parent_plugin: + if parent_plugin.language != language: + message = gettext("Parent plugin language must be same as language!") + self.add_error("plugin_language", message) + return self.cleaned_data + + if parent_plugin.placeholder_id != placeholder.pk: + message = gettext("Parent plugin placeholder must be same as placeholder!") + self.add_error("placeholder_id", message) + return self.cleaned_data + + if position <= parent_plugin.position: + message = gettext("Plugin position must be greater than %(position)d") + self.add_error("placeholder_id", message % {"position": parent_plugin.position}) + return self.cleaned_data + + page = placeholder.page + template = page.get_template() if page else None + + plugin_class = plugin_pool.get_plugin(data["plugin_type"]) + if not plugin_class.is_allowed_in_slot(placeholder.slot): + message = gettext("Plugin %(plugin)s is not allowed in placeholder '%(slot)s'.") + self.add_error(None, message % {"plugin": plugin_class.__name__, "slot": placeholder.slot}) + return self.cleaned_data + + try: + has_reached_plugin_limit(placeholder, data["plugin_type"], language, template=template) + except PluginLimitReached as error: + self.add_error(None, force_str(error)) + return self.cleaned_data + + +class RequestToolbarForm(forms.Form): + obj_id = forms.CharField(required=False) + obj_type = forms.CharField(required=False) + cms_path = forms.CharField(required=False) + + def clean(self): + data = self.cleaned_data + + obj_id = data.get("obj_id") + obj_type = data.get("obj_type") + + if not bool(obj_id or obj_type): + return data + + if (obj_id and not obj_type) or (obj_type and not obj_id): + message = "Invalid object lookup. Both obj_id and obj_type are required" + raise forms.ValidationError(message) + + app, sep, model = obj_type.rpartition(".") + + try: + model_class = apps.get_model(app_label=app, model_name=model) + except LookupError: + message = "Invalid object lookup. Both obj_id and obj_type are required" + raise forms.ValidationError(message) + + try: + # Use admin manager if available for the toolbar form + if issubclass(model_class, PageContent): + generic_obj = model_class.admin_manager.select_related("page").get(pk=obj_id) + elif hasattr(model_class, "admin_manager"): + generic_obj = model_class.admin_manager.get(pk=obj_id) + else: + generic_obj = model_class.objects.get(pk=obj_id) + except model_class.DoesNotExist: + message = "Invalid object lookup. Both obj_id and obj_type are required" + raise forms.ValidationError(message) + else: + data["attached_obj"] = generic_obj + return data + + def clean_cms_path(self): + path = self.cleaned_data.get("cms_path") + + if path: + validate_relative_url(path) + return path diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py new file mode 100644 index 00000000..c1b3a0f8 --- /dev/null +++ b/cms/admin/pageadmin.py @@ -0,0 +1,1513 @@ +from __future__ import annotations + +import json +import re +from collections import defaultdict, namedtuple + +import django +from django.conf import settings +from django.contrib import admin, messages +from django.contrib.admin.helpers import AdminForm +from django.contrib.admin.options import IS_POPUP_VAR +from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ( + PermissionDenied, + ValidationError, +) +from django.db import transaction +from django.db.models import Prefetch, Q +from django.db.models.query import QuerySet +from django.forms import ModelForm +from django.forms.fields import IntegerField +from django.http import ( + Http404, + HttpResponse, + HttpResponseBadRequest, + HttpResponseForbidden, + HttpResponseRedirect, + QueryDict, +) +from django.shortcuts import get_object_or_404, render +from django.template.defaultfilters import escape +from django.template.loader import get_template +from django.template.response import SimpleTemplateResponse, TemplateResponse +from django.urls import re_path +from django.utils.decorators import method_decorator +from django.utils.encoding import force_str +from django.utils.html import format_html +from django.utils.safestring import mark_safe +from django.utils.text import capfirst +from django.utils.translation import gettext as _ +from django.views.decorators.http import require_POST + +from cms import operations +from cms.admin.forms import ( + AddPageForm, + AdvancedSettingsForm, + ChangeListForm, + ChangePageForm, + CopyPageForm, + CopyPermissionForm, + DuplicatePageForm, + MovePageForm, +) +from cms.admin.permissionadmin import PERMISSION_ADMIN_INLINES +from cms.cache.permissions import clear_permission_cache +from cms.constants import MODAL_HTML_REDIRECT +from cms.models import ( + CMSPlugin, + GlobalPagePermission, + Page, + PageContent, + PagePermission, + PageUrl, + Placeholder, +) +from cms.models.pagemodel import AdminCacheDict +from cms.models.permissionmodels import PermissionTuple +from cms.operations.helpers import ( + send_post_page_operation, + send_pre_page_operation, +) +from cms.plugin_pool import plugin_pool +from cms.signals.apphook import set_restart_trigger +from cms.toolbar.utils import get_object_edit_url +from cms.utils import get_current_site, page_permissions, permissions +from cms.utils.admin import get_site_from_request, jsonify_request +from cms.utils.compat.warnings import RemovedInDjangoCMS60Warning +from cms.utils.conf import get_cms_setting +from cms.utils.i18n import ( + get_language_list, + get_language_object, + get_language_tuple, + get_site_language_from_request, +) +from cms.utils.permissions import clear_permission_lru_caches +from cms.utils.plugins import copy_plugins_to_placeholder, downcast_plugins +from cms.utils.urlutils import admin_reverse, static_with_version + +require_POST = method_decorator(require_POST) + +#: Upper bound for the number of pages :meth:`PageAdmin.get_list` returns. The +#: view feeds an autocomplete, so a full inventory of the site is never useful. +PAGE_SMART_LINK_MAX_RESULTS = 50 + + +class PageDeleteMessageMixin: + """Expressive and simplified delete confirmation message for pages and translations.""" + + delete_confirmation_template = "admin/cms/page/delete_confirmation.html" + + def get_deleted_objects(self, objs, request): + """Minimize complexity of delete selected confirmation: Only show pages, page contents and plugins numbers, + only show Page and PageContent objects in the details. + """ + + def recursively_remove(deleted_objects: list | str) -> list | str: + """Remove all objects that are not Page or PageContent from the nested list of deleted objects. + Reformat the messages.""" + if isinstance(deleted_objects, str): + return deleted_objects + result = [] + for obj in deleted_objects: + item = recursively_remove(obj) + if isinstance(item, str): + if obj.startswith(f"{capfirst(Page._meta.verbose_name)}: "): + # ``Page`` is registered in the admin, so Django built this entry with + # ``format_html()`` as ``Page: title``: the title inside the + # anchor is already escaped and must not be escaped a second time. + text = re.findall(r">(.*)<", obj) + if text: + result.append(format_html("{}", mark_safe(text[0]))) + else: + # No admin link, so this is Django's raw ``"Page: %s" % obj`` string. + result.append( + format_html("{}", item.removeprefix(f"{capfirst(Page._meta.verbose_name)}: ")) + ) + elif obj.startswith(f"{capfirst(PageUrl._meta.verbose_name)}: "): + # ``PageUrl`` has no admin, so Django returns the raw, unescaped + # ``"Page url: %s" % obj`` string. The path is author-controlled (it can be set + # through "Overwrite URL"), so it must not be marked safe (CWE-79). + result.insert(0, escape(item.removeprefix(f"{capfirst(PageUrl._meta.verbose_name)}: "))) + elif item: + result.append(item) + return result + + if len(objs) == 1 and isinstance(objs[0], PageContent): + # Always look for all page/language combinations + objs = list(PageContent.admin_manager.filter(page=objs[0].page, language=objs[0].language)) + + to_delete, trad_model_count, perms_needed, protected = super().get_deleted_objects(objs, request) + to_delete = recursively_remove(to_delete) + + model_count = { + Page._meta.verbose_name_plural: trad_model_count.get(Page._meta.verbose_name_plural, 0), + _("Translations"): trad_model_count.get(PageUrl._meta.verbose_name_plural, 0), + CMSPlugin._meta.verbose_name_plural: trad_model_count.get(CMSPlugin._meta.verbose_name_plural, 0), + } + return to_delete, model_count, perms_needed, protected + + +@admin.register(Page) +class PageAdmin(PageDeleteMessageMixin, admin.ModelAdmin): + actions_menu_template = "admin/cms/page/tree/actions_dropdown.html" + + form = AdvancedSettingsForm + copy_form = CopyPageForm + move_form = MovePageForm + inlines = PERMISSION_ADMIN_INLINES + search_fields = ("=id", "urls__slug", "pagecontent_set__title", "reverse_id") + title_frontend_editable_fields = ["title", "menu_title", "page_title"] + + def has_module_permission(self, request): + return False # Hides page model from the admin index + + def has_add_permission(self, request): + return False + + def has_change_permission(self, request, obj=None): + """ + Return true if the current user has permission on the page. + Return the string 'All' if the user has all rights. + """ + if obj is None: + site = get_site_from_request(request) + # Checks if user can change at least one page + return page_permissions.user_can_change_at_least_one_page( + user=request.user, + site=site, + ) + return page_permissions.user_can_change_page(request.user, page=obj, site=obj.site) + + def has_change_advanced_settings_permission(self, request, obj=None): + if not obj: + return False + return page_permissions.user_can_change_page_advanced_settings(request.user, page=obj, site=obj.site) + + def log_deletion(self, request, object, object_repr): + # DJANGO_42 + # Block the admin log for deletion. A signal takes care of this! + return + + def log_deletions(self, request, queryset): + # Block the admin log for deletion. A signal takes care of this! + return + + def get_admin_url(self, action, *args): + url_name = f"{self.opts.app_label}_{self.opts.model_name}_{action}" + return admin_reverse(url_name, args=args) + + def get_preserved_filters(self, request): + """ + This override is in place to preserve the "language" get parameter in + the "Save" page redirect + """ + site = get_site_from_request(request) + preserved_filters_encoded = super().get_preserved_filters(request) + preserved_filters = QueryDict(preserved_filters_encoded).copy() + lang = get_site_language_from_request(request, site_id=site.pk) + + if lang: + preserved_filters["language"] = lang + return preserved_filters.urlencode() + + def get_page_from_id(self, page_id): + page_id = self.model._meta.pk.to_python(page_id) + + try: + page = self.model.objects.get(pk=page_id) + except self.model.DoesNotExist: + page = None + return page + + def get_urls(self): + """Get the admin urls""" + info = f"{self.model._meta.app_label}_{self.model._meta.model_name}" + + def pat(regex, fn): + return re_path(regex, self.admin_site.admin_view(fn), name=f"{info}_{fn.__name__}") + + url_patterns = [ + pat(r"^list/$", self.get_list), + pat(r"^(?P[0-9]+)/actions-menu/$", self.actions_menu), + pat(r"^([0-9]+)/([a-z\-]+)/edit-field/$", self.edit_title_fields), + pat(r"^(?P[0-9]+)/advanced-settings/$", self.advanced), # named object_id + pat(r"^([0-9]+)/move-page/$", self.move_page), + pat(r"^([0-9]+)/copy-page/$", self.copy_page), + pat(r"^([0-9]+)/dialog/copy/$", self.get_copy_dialog), # copy dialog + pat(r"^([0-9]+)/permissions/$", self.get_permissions), + pat(r"^(?P[0-9]+)/set-home/$", self.set_home), + ] + + if plugin_pool.registered_plugins: + url_patterns += plugin_pool.get_patterns() + return url_patterns + super().get_urls() + + def get_inline_instances(self, request, obj=None): + if obj and get_cms_setting("PERMISSION"): + can_change_perms = self.has_change_permissions_permission(request, obj=obj) + else: + can_change_perms = False + + if can_change_perms: + return super().get_inline_instances(request, obj) + return [] + + def get_form(self, request, obj=None, **kwargs): + """ + Get PageForm for the Page model and modify its fields depending on + the request. + """ + if not self.has_change_advanced_settings_permission(request, obj=obj): + form = type("EmptyForm", (ModelForm,), {"Meta": type("Meta", (self.form.Meta,), {"fields": []})}) + else: + form = super().get_form(request, obj, **kwargs) + form._site = get_site_from_request(request) + form._request = request + return form + + def actions_menu(self, request, object_id, extra_context=None): + page = self.get_object(request, object_id=object_id) + + if page is None: + raise self._get_404_exception(object_id) + + if not self.has_view_permission(request, obj=page): + raise PermissionDenied("No permission for actions menu") + + site = get_site_from_request(request) + paste_enabled = request.GET.get("has_copy") or request.GET.get("has_cut") + context = { + "page": page, + "opts": self.opts, + "site": site, + "page_is_restricted": page.has_view_restrictions(site), + "paste_enabled": paste_enabled, + "has_add_permission": page_permissions.user_can_add_subpage(request.user, target=page), + "has_copy_page_permission": page_permissions.user_can_view_page_draft(request.user, page, site=site), + "has_change_permission": self.has_change_permission(request, obj=page), + "has_change_advanced_settings_permission": self.has_change_advanced_settings_permission(request, obj=page), + "has_change_permissions_permission": self.has_change_permissions_permission(request, obj=page), + "has_move_page_permission": self.has_move_page_permission(request, obj=page), + "has_delete_permission": self.has_delete_permission(request, obj=page), + "CMS_PERMISSION": get_cms_setting("PERMISSION"), + } + + if extra_context: + context.update(extra_context) + return render(request, self.actions_menu_template, context) + + def advanced(self, request, object_id): + page = self.get_object(request, object_id=object_id) + + if page is None: + raise self._get_404_exception(object_id) + + if get_cms_setting("PERMISSION"): + show_permissions = self.has_change_permissions_permission(request, obj=page) + else: + show_permissions = False + + show_advanced_settings = self.has_change_advanced_settings_permission(request, obj=page) + + if not show_permissions and not show_advanced_settings: + raise PermissionDenied("No permission for editing advanced settings") + + context = { + "title": _("Advanced Settings") if show_advanced_settings else _("Change Permissions"), + "show_permissions": show_permissions, + } + return self.change_view(request, object_id, extra_context=context) + + def response_post_save_change(self, request, obj): + """ + Figure out where to redirect after the 'Save' button has been pressed + when adding a new object. + """ + can_change_any_page = page_permissions.user_can_change_at_least_one_page( + user=request.user, + site=obj.site, + use_cache=False, + ) + + if can_change_any_page: + query = self.get_preserved_filters(request) + post_url = admin_reverse("cms_pagecontent_changelist") + "?" + query + "&site=" + str(obj.site_id) + else: + post_url = admin_reverse("index") + return HttpResponseRedirect(post_url) + + @require_POST + @transaction.atomic + def set_home(self, request, object_id): + page = self.get_object(request, object_id=object_id) + + if page is None: + raise self._get_404_exception(object_id) + + if not self.has_change_permission(request, page): + raise PermissionDenied("You do not have permission to set 'home'.") + + if not page.is_potential_home(): + return HttpResponseBadRequest(_("The page is not eligible to be home.")) + + # Setting a new home page demotes the current one and rewrites the url + # paths of both trees, so it takes change permission on both pages. + old_home = self.model.objects.filter(is_home=True, site=page.site_id).first() + + if old_home and not self.has_change_permission(request, old_home): + raise PermissionDenied("You do not have permission to change the current home page.") + + new_home_tree, old_home_tree = page.set_as_homepage(request.user) + + # Check if one of the affected pages either from the old homepage + # or the homepage had an apphook attached + if old_home_tree: + apphooks_affected = old_home_tree.has_apphooks() + else: + apphooks_affected = False + + if not apphooks_affected: + apphooks_affected = new_home_tree.has_apphooks() + + if apphooks_affected: + # One or more pages affected by this operation was attached to an apphook. + # As a result, fire the apphook reload signal to reload the url patterns. + set_restart_trigger() + return HttpResponse("ok") + + def get_list(self, request): + """ + This view is used by the PageSmartLinkWidget as the user type to feed the autocomplete drop-down. + """ + + if not self.has_view_permission(request): + raise PermissionDenied("No permission for page list view") + + if request.headers.get("x-requested-with") == "XMLHttpRequest": + site = get_site_from_request(request) + query_term = request.GET.get("q", "").strip("/") + + if not query_term: + # ``icontains`` matches every page for an empty term, which would + # turn this autocomplete into a full listing of the site. + return HttpResponse(json.dumps([]), content_type="application/json") + + language_code = request.GET.get("language_code", settings.LANGUAGE_CODE) + matching_pages = ( + self.model.objects.on_site(site) + .filter( + Q(pagecontent_set__title__icontains=query_term, pagecontent_set__language=language_code) + | Q(urls__path__icontains=query_term, pagecontent_set__language=language_code) + | Q(pagecontent_set__menu_title__icontains=query_term, pagecontent_set__language=language_code) + | Q(pagecontent_set__page_title__icontains=query_term, pagecontent_set__language=language_code) + ) + # Page types are blueprints for new pages, not link targets. + .filter(is_page_type=False) + .prefetch_related("urls", "pagecontent_set") + .distinct()[:PAGE_SMART_LINK_MAX_RESULTS] + ) + + results = [] + for page in matching_pages: + results.append( + { + "path": page.get_path(language=language_code), + "title": page.get_title(language=language_code), + "redirect_url": page.get_absolute_url(language=language_code), + } + ) + return HttpResponse(json.dumps(results), content_type="application/json") + return HttpResponseForbidden() + + def changelist_view(self, request, extra_context=None): + parameter = "?" + request.GET.urlencode() if request.GET else "" + return HttpResponseRedirect(admin_reverse("cms_pagecontent_changelist") + parameter) + + def response_delete(self, request, obj_display, obj_id): + """ + Determine the HttpResponse for the delete_view stage. Clear the user's permission + lru cache + """ + clear_permission_lru_caches(request.user) + return super().response_delete(request, obj_display, obj_id) + + def delete_model(self, request, obj): + operation_token = send_pre_page_operation( + request=request, operation=operations.DELETE_PAGE, obj=obj, sender=self.model + ) + + cms_pages = [obj] + + if obj.is_branch: + descendant_ids = obj.get_descendants().values_list("id", flat=True) + cms_pages.extend(self.model.objects.filter(id__in=descendant_ids)) + + # Delete all associated pages contents + ct_page_content = ContentType.objects.get_for_model(PageContent) + page_content_objs = PageContent.admin_manager.filter(page__in=cms_pages).values_list("pk", flat=True) + placeholders = Placeholder.objects.filter( + content_type=ct_page_content, + object_id__in=page_content_objs, + ) + plugins = CMSPlugin.objects.filter(placeholder__in=placeholders) + QuerySet.delete(plugins) + placeholders.delete() + + super().delete_model(request, obj) + + send_post_page_operation( + request=request, + operation=operations.DELETE_PAGE, + token=operation_token, + obj=obj, + sender=self.model, + ) + + clear_permission_cache() + + if obj.application_urls: + set_restart_trigger() + + def get_copy_dialog(self, request, page_id): + if not get_cms_setting("PERMISSION"): + return HttpResponse("") + + page = self.get_page_from_id(page_id) + + if page is None: + raise self._get_404_exception(page_id) + + if request.method == "GET": + data = request.GET + else: + data = request.POST + + target_id = data.get("target") + + site = get_site_from_request(request) + user = request.user + can_view_page = page_permissions.user_can_view_page(user, page, page.site) + + if not can_view_page: + raise PermissionDenied + + if target_id: + try: + target = Page.objects.get(pk=target_id) + except Page.DoesNotExist: + raise Http404 + if not page_permissions.user_can_add_subpage(user, target, target.site): + raise PermissionDenied + elif not page_permissions.user_can_add_page(user, site): + raise PermissionDenied + + context = { + "dialog_id": "dialog-copy", + "form": CopyPermissionForm(), # class needs to be instantiated + "opts": self.opts, + } + return render(request, "admin/cms/page/tree/copy_premissions.html", context) + + def _get_404_exception(self, object_id): + exception = Http404( + _("%(name)s object with primary key %(key)r does not exist.") + % { + "name": force_str(self.opts.verbose_name), + "key": escape(object_id), + } + ) + return exception + + def has_view_permission(self, request, obj=None): + return self.has_change_permission(request, obj) + + def has_change_permissions_permission(self, request, obj=None): + if not obj: + return False + return page_permissions.user_can_change_page_permissions(request.user, page=obj, site=obj.site) + + def has_delete_permission(self, request, obj=None): + """ + Returns True if the current user has permission to delete the page. + """ + if not obj: + return False + return page_permissions.user_can_delete_page(request.user, page=obj, site=obj.site) + + def has_move_page_permission(self, request, obj=None): + if not obj: + return False + return page_permissions.user_can_move_page(user=request.user, page=obj, site=obj.site) + + @require_POST + @transaction.atomic + def move_page(self, request, page_id, extra_context=None): + """ + Move the page to the requested target, at the given position. + + NOTE: We have to change from one "coordinate system" to another to + adapt JSTree to Django Treebeard. + + If the Tree looks like this: + + + ⊢ … + ⊢ … + ⊢ Page 4 + ⊢ Page 5 (position 0) + ⊢ … + + For example, + target=4, position=1 => target=5, position="right" + target=4, position=0 => target=4, position="first-child" + + """ + page = self.get_object(request, object_id=page_id) + + if page is None: + return jsonify_request(HttpResponseBadRequest("error")) + + user = request.user + form = self.move_form(request.POST or None, page=page, site=page.site) + + if not form.is_valid(): + return jsonify_request(HttpResponseBadRequest(str(form.errors.get("__all__", _("error"))))) + + target = form.cleaned_data["target"] + can_move_page = self.has_move_page_permission(request, obj=page) + + # Does the user have permissions to do this...? + if not can_move_page or (target and not target.has_add_permission(user)): + message = _("Error! You don't have permissions to move this page. Please reload the page") + return jsonify_request(HttpResponseForbidden(message)) + + # The whole subtree moves along, so authorize the whole subtree: the + # destination may grant access that the source did not. + target_page, position = form.get_tree_options() + if position in ("first-child", "last-child"): + parent_page = target_page + else: + parent_page = target_page.parent if target_page else None + + if not page_permissions.user_can_move_descendants(user, page, page.site, parent_page): + message = _("Error! You don't have permissions to move this page. Please reload the page") + return jsonify_request(HttpResponseForbidden(message)) + + operation_token = send_pre_page_operation( + request=request, + operation=operations.MOVE_PAGE, + obj=page, + sender=self.model, + ) + + form.move_page(user=user) + + send_post_page_operation( + request=request, + operation=operations.MOVE_PAGE, + token=operation_token, + obj=page, + sender=self.model, + ) + return jsonify_request(HttpResponse(status=200)) + + def get_permissions(self, request, page_id): + rows = [] + user = request.user + page = self.get_object(request, object_id=page_id) + + if page is None: + raise self._get_404_exception(page_id) + + if not self.has_view_permission(request, obj=page): + raise PermissionDenied("No permission for page permissions view") + + site = get_site_from_request(request) + PermissionRow = namedtuple("Permission", ["is_global", "can_change", "permission"]) + + global_permissions = GlobalPagePermission.objects.filter(sites__in=[site.pk]) + can_change_global_permissions = permissions.user_can_change_global_permissions(user, site) + + for permission in global_permissions.iterator(): + row = PermissionRow( + is_global=True, + can_change=can_change_global_permissions, + permission=permission, + ) + rows.append(row) + + _page_permissions = PagePermission.objects.for_page(page).select_related("page") + + if not can_change_global_permissions: + allowed_pages = page_permissions.get_change_perm_tuples(user, site, check_global=False) + + for permission in _page_permissions.iterator(): + if can_change_global_permissions: + can_change = True + else: + page_path = permission.page.path + can_change = any(PermissionTuple(perm_tuple).contains(page_path) for perm_tuple in allowed_pages) + + row = PermissionRow( + is_global=False, + can_change=can_change, + permission=permission, + ) + rows.append(row) + + context = { + "page": page, + "rows": rows, + "opts": self.opts, + } + return render(request, "admin/cms/page/permissions.html", context) + + @require_POST + @transaction.atomic + def copy_page(self, request, page_id): + """ + Copy the page and all its plugins and descendants to the requested + target, at the given position + """ + page = self.get_page_from_id(page_id) + + if page is None: + return jsonify_request(HttpResponseBadRequest("error")) + + user = request.user + site = get_site_from_request(request) + form = self.copy_form(request.POST or None, page=page, site=site) + + if not form.is_valid(): + return jsonify_request(HttpResponseBadRequest("error")) + + target = form.cleaned_data["target"] + + # User can only copy pages he can see + can_copy_page = page_permissions.user_can_view_page(user, page, page.site) + + if can_copy_page and target: + # User can only copy a page into another one if he has permission + # to add a page under the target page. + can_copy_page = page_permissions.user_can_add_subpage(user, target, site) + elif can_copy_page: + # User can only copy / paste a page if he has permission to add a page + can_copy_page = page_permissions.user_can_add_page(user, site) + + if can_copy_page: + target_page, position = form.get_tree_options() + if position in ("first-child", "last-child"): + parent_page = target_page + else: + parent_page = target_page.parent if target_page else None + can_copy_page = page_permissions.user_can_copy_descendants( + user, page, site, parent_page, form.cleaned_data["copy_permissions"] + ) + + if not can_copy_page: + message = _("Error! You don't have permissions to copy this page.") + return jsonify_request(HttpResponseForbidden(message)) + + page_languages = page.get_languages() + site_languages = get_language_list(site_id=site.pk) + + if not any(lang in page_languages for lang in site_languages): + message = _( + "Error! " + "The page you're pasting is not translated in any of the languages configured by the target site." + ) + return jsonify_request(HttpResponseBadRequest(message)) + + new_page = form.copy_page(user) + return HttpResponse(json.dumps({"id": new_page.pk}), content_type="application/json") + + def edit_title_fields(self, request, page_id, language): + page = self.get_object(request, object_id=page_id) + + if page is None: + raise self._get_404_exception(page_id) + + if not self.has_change_permission(request, obj=page): + return HttpResponseForbidden(_("You do not have permission to edit this page")) + + translation = page.get_admin_content(language) + + if not translation: + raise Http404("No translation matches requested language.") + + saved_successfully = False + raw_fields = request.GET.get("edit_fields", "title") + edit_fields = [field for field in raw_fields.split(",") if field in self.title_frontend_editable_fields] + cancel_clicked = request.POST.get("_cancel", False) + opts = PageContent._meta + + if not edit_fields: + # Defaults to title + edit_fields = ("title",) + + class PageTitleForm(django.forms.ModelForm): + """ + Dynamic form showing only the fields to be edited + """ + + class Meta: + model = PageContent + fields = edit_fields + + if not cancel_clicked and request.method == "POST": + form = PageTitleForm(instance=translation, data=request.POST) + if form.is_valid(): + form.save() + saved_successfully = True + else: + form = PageTitleForm(instance=translation) + admin_form = AdminForm( + form, fieldsets=[(None, {"fields": edit_fields})], prepopulated_fields={}, model_admin=self + ) + media = self.media + admin_form.media + context = { + "CMS_MEDIA_URL": get_cms_setting("MEDIA_URL"), + "title": "Title", + "plugin": page, + "plugin_id": page.pk, + "adminform": admin_form, + "add": False, + "is_popup": True, + "media": media, + "opts": opts, + "change": True, + "save_as": False, + "has_add_permission": False, + "window_close_timeout": 10, + } + if cancel_clicked: + # cancel button was clicked + context.update( + { + "cancel": True, + } + ) + return render(request, "admin/cms/page/plugin/confirm_form.html", context) + if not cancel_clicked and request.method == "POST" and saved_successfully: + return render(request, "admin/cms/page/plugin/confirm_form.html", context) + return render(request, "admin/cms/page/plugin/change_form.html", context) + + +@admin.register(PageContent) +class PageContentAdmin(PageDeleteMessageMixin, admin.ModelAdmin): + ordering = ("page__path",) + search_fields = ("=id", "page__id", "page__urls__slug", "title", "page__reverse_id") + change_form_template = "admin/cms/page/change_form.html" + change_list_template = "admin/cms/page/tree/base.html" + actions_menu_template = "admin/cms/page/tree/actions_dropdown.html" + page_tree_row_template = "admin/cms/page/tree/menu.html" + + class Media: + css = {"all": (static_with_version("cms/css/cms.admin.css"),)} + + form = AddPageForm + add_form = form + change_form = ChangePageForm + copy_form = CopyPageForm + move_form = MovePageForm + changelist_form = ChangeListForm + duplicate_form = DuplicatePageForm + + def log_addition(self, request, object, object_repr): + # Block the admin log for addition. A signal takes care of this! + return + + def log_deletion(self, request, object, object_repr): + # DJANGO_42 + # Block the admin log for deletion. A signal takes care of this! + return + + def log_deletions(self, request, queryset): + # Block the admin log for deletion. A signal takes care of this! + return + + def log_change(self, request, object, message): + # Block the admin log for change. A signal takes care of this! + return + + def get_admin_url(self, action, *args): + url_name = f"{self.opts.app_label}_{self.opts.model_name}_{action}" + return admin_reverse(url_name, args=args) + + def get_preserved_filters(self, request): + """ + This override is in place to preserve the "language" get parameter in + the "Save" page redirect + """ + site = get_site_from_request(request) + preserved_filters_encoded = super().get_preserved_filters(request) + preserved_filters = QueryDict(preserved_filters_encoded).copy() + lang = get_site_language_from_request(request, site_id=site.pk) + + if lang: + preserved_filters["language"] = lang + if site and site.pk != get_current_site(request).pk: + preserved_filters["site"] = site.pk + return preserved_filters.urlencode() + + def get_queryset(self, request): + return super().get_queryset(request).select_related("page") + + def get_urls(self): + """Get the admin urls""" + info = f"{self.model._meta.app_label}_{self.model._meta.model_name}" + + def pat(regex, fn): + return re_path(regex, self.admin_site.admin_view(fn), name=f"{info}_{fn.__name__}") + + url_patterns = [ + pat(r"^get-tree/$", self.get_tree), + pat(r"^([0-9]+)/duplicate/$", self.duplicate), + pat(r"^([0-9]+)/copy-language/$", self.copy_language), + pat(r"^([0-9]+)/change-navigation/$", self.change_innavigation), + pat(r"^([0-9]+)/change-template/$", self.change_template), + ] + return url_patterns + super().get_urls() + + def get_fieldsets(self, request, obj=None): + form = self.get_form(request, obj, fields=None) + + try: + fieldsets = form.fieldsets + except AttributeError: + fields = list(form.base_fields) + list(self.get_readonly_fields(request, obj)) + fieldsets = [(None, {"fields": fields})] + return fieldsets + + def get_form_class(self, request, obj=None, **kwargs): + if "change" in request.path_info: + return self.change_form + elif "duplicate" in request.path_info: + return self.duplicate_form + return self.add_form + + def get_form(self, request, obj=None, **kwargs): + """ + Get PageForm for the Page model and modify its fields depending on + the request. + """ + form = super().get_form(request, obj, form=self.get_form_class(request, obj), **kwargs) + form._site = get_site_from_request(request) + form._request = request + return form + + def duplicate(self, request, object_id): + """ + Leverages the add view logic to duplicate the page. + """ + obj = self.get_object(request, object_id=object_id) + + if obj is None: + raise self._get_404_exception(object_id) + + if request.method == "GET": + # source is a field in the form + # because its value is in the url, + # we have to set the initial value manually + request.GET = request.GET.copy() + request.GET["source"] = obj.page_id + return self.add_view(request) + + def add_view(self, request, form_url="", extra_context=None): + site = get_site_from_request(request) + language = get_site_language_from_request(request, site_id=site.pk) + + if extra_context is None: + extra_context = {} + + try: + page_id = request.GET.get("cms_page") or request.POST.get("cms_page") + page_id = IntegerField().clean(page_id) + cms_page = Page.objects.get(pk=page_id) + except (ValidationError, Page.DoesNotExist): + cms_page = None + + if cms_page: + # Adding content for an existing page in a language it does not have yet + extra_context["title"] = _("Add Translation") + elif "duplicate" in request.path_info: + extra_context["title"] = _("Add Page Copy") + elif "parent_page" in request.GET: + extra_context["title"] = _("New sub page") + else: + extra_context["title"] = _("New page") + + if cms_page: + extra_context["cms_page"] = cms_page + extra_context["language_tabs"] = get_language_tuple(site.pk) + extra_context["filled_languages"] = self.get_filled_languages(request, cms_page) + extra_context["show_language_tabs"] = len(extra_context["language_tabs"]) + extra_context["language"] = language + return super().add_view(request, form_url, extra_context=extra_context) + + def change_view(self, request, object_id, form_url="", extra_context=None): + """ + The 'change' admin view for the PageContent model. + """ + if extra_context is None: + extra_context = {"basic_info": True} + + obj = self.get_object(request, object_id=object_id) + + if obj is None: + raise self._get_404_exception(object_id) + + site = obj.page.site + context = { + "cms_page": obj.page, + "CMS_PERMISSION": get_cms_setting("PERMISSION"), + "can_change": self.has_change_permission(request, obj=obj), + "language": obj.language, + "language_tabs": get_language_tuple(site.pk), + "filled_languages": self.get_filled_languages(request, obj.page), + } + # Only offer the language selector for the latest content. Switching the language always + # navigates to the latest content of the target language, so for an older content object + # (e.g. an outdated version) switching languages back and forth would silently bring up a + # different (the latest) content object - confusing UX. + latest = obj.page.get_admin_content(obj.language) + is_latest_content = getattr(latest, "pk", None) == obj.pk + context["show_language_tabs"] = len(context["language_tabs"]) if is_latest_content else 0 + context.update(extra_context or {}) + + if "basic_info" in extra_context: + _has_advanced_settings_perm = self.has_change_advanced_settings_permission(request, obj=obj) + context["can_change_advanced_settings"] = _has_advanced_settings_perm + + return super().change_view(request, object_id, form_url=form_url, extra_context=context) + + def response_add(self, request, obj): + redirect = request.POST.get("edit", False) + if redirect == "1": + from django.core.cache import cache + + from cms.cache.permissions import get_cache_key, get_cache_permission_version + + cache.delete( + get_cache_key(request.user, obj.page.site, "change_page"), + version=get_cache_permission_version(), + ) + + # redirect to the edit view if added from the toolbar + url = get_object_edit_url(obj) # Redirects to preview if necessary + return HttpResponse(MODAL_HTML_REDIRECT.format(url=url)) + return super().response_add(request, obj) + + def get_filled_languages(self, request, page): + site_id = page.site_id + filled_languages = page.get_languages() + allowed_languages = [lang[0] for lang in get_language_tuple(site_id)] + return [lang for lang in filled_languages if lang in allowed_languages] + + def _get_404_exception(self, object_id): + exception = Http404( + _("%(name)s object with primary key %(key)r does not exist.") + % { + "name": force_str(self.opts.verbose_name), + "key": escape(object_id), + } + ) + return exception + + def _has_add_permission_from_request(self, request): + if parent_id := request.GET.get("parent_page"): + try: + parent_id = IntegerField().clean(parent_id) + parent_item = Page.objects.get(id=parent_id) + except (ValidationError, Page.DoesNotExist): + return False + else: + parent_item = None + + if parent_item: + has_perm = page_permissions.user_can_add_subpage( + request.user, + target=parent_item, + site=parent_item.site, + ) + else: + site = get_site_from_request(request) + has_perm = page_permissions.user_can_add_page(request.user, site=site) + return has_perm + + def has_add_permission(self, request): + """ + Return true if the current user has permission to add a new page. + """ + return self._has_add_permission_from_request(request) + + def has_change_permission(self, request, obj=None): + """ + Return true if the current user has permission on the page. + Return the string 'All' if the user has all rights. + """ + + if obj: + return page_permissions.user_can_change_page(request.user, page=obj.page, site=obj.page.site) + return page_permissions.user_can_change_at_least_one_page( + user=request.user, + site=get_site_from_request(request), + ) + + def has_view_permission(self, request, obj=None): + """ + Return true if the current user has permission on the page. + Return the string 'All' if the user has all rights. + """ + # Identical to has_change_permission, but will remain untouched by any subclassing + # as done, e.g., by djangocms-versioning + + if obj: + return page_permissions.user_can_change_page(request.user, page=obj.page, site=obj.page.site) + return page_permissions.user_can_change_at_least_one_page( + user=request.user, + site=get_site_from_request(request), + use_cache=False, + ) + + def has_delete_permission(self, request, obj=None): + """ + Returns True if the current user has permission to delete the page. + """ + if not obj: + return False + return page_permissions.user_can_delete_page(request.user, page=obj.page, site=obj.page.site) + + def has_change_advanced_settings_permission(self, request, obj=None): + if not obj: + return False + return page_permissions.user_can_change_page_advanced_settings(request.user, page=obj.page, site=obj.page.site) + + def has_delete_translation_permission(self, request, language, obj=None): + if not obj: + return False + + has_perm = page_permissions.user_can_delete_page_translation( + user=request.user, + page=obj, + language=language, + site=obj.site, + ) + return has_perm + + def get_sites_for_user(self, user): + from django.contrib.sites.models import Site + + if hasattr(user, "_cms_user_sites"): + return user._cms_user_sites + + sites = Site.objects.order_by("name") + if not get_cms_setting("PERMISSION") or user.is_superuser: + user._cms_user_sites = sites + return sites + + _has_perm = page_permissions.user_can_change_at_least_one_page + user_sites = [site for site in sites if _has_perm(user, site)] + user._cms_user_sites = user_sites + return user_sites + + def user_can_access_site(self, request): + """ + .. deprecated:: 5.2 + Unused. Site isolation is enforced by ``has_change_permission``, + which checks ``user_can_change_at_least_one_page`` against the site + of the request. + """ + import warnings + + warnings.warn( + "PageContentAdmin.user_can_access_site() is deprecated and unused. " + "Use has_change_permission(request) instead, which already scopes the check to the " + "site of the request.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + site = get_site_from_request(request) + user_sites = self.get_sites_for_user(request.user) + return site in user_sites + + def raise_site_permission_denied(self): + """ + .. deprecated:: 5.2 + Unused. Raise ``django.core.exceptions.PermissionDenied`` directly. + """ + import warnings + + warnings.warn( + "PageContentAdmin.raise_site_permission_denied() is deprecated and unused. " + "Raise django.core.exceptions.PermissionDenied directly instead.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + raise PermissionDenied(_("You do not have permission to access this site. Please contact your administrator.")) + + def changelist_view(self, request, extra_context=None): + from django.contrib.admin.views.main import ERROR_FLAG + + if not self.has_change_permission(request, obj=None): + raise PermissionDenied + + site = get_site_from_request(request) + language = get_site_language_from_request(request, site_id=site.pk) + query = request.GET.get("q", "") + page_contents = self.get_queryset(request) + page_contents = self.get_search_results(request, page_contents, query)[0] + changelist_form = self.changelist_form(request.GET) + + try: + changelist_form.full_clean() + page_contents = changelist_form.run_filters(page_contents) + except (ValueError, ValidationError): + # Wacky lookup parameters were given, so redirect to the main + # changelist page, without parameters, and pass an 'invalid=1' + # parameter via the query string. If wacky parameters were given + # and the 'invalid=1' parameter was already in the query string, + # something is screwed up with the database, so display an error + # page. + if ERROR_FLAG in request.GET.keys(): + return SimpleTemplateResponse( + "admin/invalid_setup.html", + { + "title": _("Database error"), + }, + ) + return HttpResponseRedirect(request.path + "?" + ERROR_FLAG + "=1") + + pages = Page.objects.on_site(site).filter(pagecontent_set__in=page_contents).distinct().order_by("path") + pages = pages.prefetch_related( + Prefetch( + "pagecontent_set", + to_attr="filtered_translations", + queryset=page_contents, + ), + "urls", # rendering a tree row resolves the page's URLs + ) + + if changelist_form.is_filtered(): + # Evaluates the queryset + has_items = len(pages) >= 1 + else: + has_items = pages.exists() + + context = self.admin_site.each_context(request) + context.update( + { + "opts": self.model._meta, + "media": self.media, + "CMS_MEDIA_URL": get_cms_setting("MEDIA_URL"), + "CMS_PERMISSION": get_cms_setting("PERMISSION"), + "site_languages": get_language_tuple(site.pk), + "preview_language": language, + "changelist_form": changelist_form, + "cms_current_site": site, + "has_add_permission": self.has_add_permission(request), + "module_name": force_str(self.model._meta.verbose_name_plural), + "admin": self, + "tree": { + "site": site, + "sites": self.get_sites_for_user(request.user), + "query": query, + "is_filtered": changelist_form.is_filtered(), + "items": pages, + "has_items": has_items, + }, + } + ) + context.update(extra_context or {}) + request.current_app = self.admin_site.name + return TemplateResponse(request, self.change_list_template, context) + + @require_POST + def change_template(self, request, object_id): + page_content = self.get_object(request, object_id=object_id) + + if not self.has_change_permission(request, obj=page_content): + raise PermissionDenied("No permissions to change the template") + + if page_content is None: + raise self._get_404_exception(object_id) + + to_template = request.POST.get("template", None) + + if get_cms_setting("TEMPLATES"): + if to_template not in dict(get_cms_setting("TEMPLATES")): + return HttpResponseBadRequest(_("Template not valid")) + else: + if to_template not in (placeholder_set[0] for placeholder_set in get_cms_setting("PLACEHOLDERS")): + return HttpResponseBadRequest(_("Placeholder selection not valid")) + + page_content.template = to_template + page_content.save() + + return HttpResponse(_("The template was successfully changed")) + + @require_POST + @transaction.atomic + def copy_language(self, request, object_id): + target_language = request.POST.get("target_language") + source_page_content = self.get_object(request, object_id=object_id) + + if not self.has_change_permission(request, obj=source_page_content): + raise PermissionDenied + + if source_page_content is None: + raise self._get_404_exception(object_id) + + page = source_page_content.page + + if not target_language or target_language not in get_language_list(site_id=page.site_id): + return HttpResponseBadRequest(_("Language must be set to a supported language!")) + + target_page_content = page.get_content_obj(target_language, fallback=False) + + source_placeholders = list(source_page_content.get_placeholders()) + target_placeholders = { + placeholder.slot: placeholder + for placeholder in target_page_content.get_placeholders() + } + source_plugins = downcast_plugins( + CMSPlugin.objects.filter( + placeholder_id__in=[placeholder.pk for placeholder in source_placeholders], + language=source_page_content.language, + ).order_by("position") + ) + plugins_by_placeholder = defaultdict(list) + for plugin in source_plugins: + plugins_by_placeholder[plugin.placeholder_id].append(plugin) + + for placeholder in source_placeholders: + target = target_placeholders.get(placeholder.slot) + if target is None: + messages.warning(request, _("Placeholder '%s' does not exist in target language") % placeholder.slot) + continue + plugins = plugins_by_placeholder[placeholder.pk] + + if not target.has_add_plugins_permission(request.user, plugins): + return HttpResponseForbidden(_("You do not have permission to copy these plugins.")) + copy_plugins_to_placeholder( + plugins, + target, + language=target_language, + plugins_are_downcast=True, + ) + return HttpResponse("ok") + + def delete_view(self, request, object_id, extra_context=None): + page_content = self.get_object(request, object_id=object_id) + + if page_content is None: + raise self._get_404_exception(object_id) + + page = page_content.page + + if not self.has_delete_translation_permission(request, page_content.language, page): + return HttpResponseForbidden(_("You do not have permission to delete this page")) + + if not len(list(page.get_languages())) > 1: + return HttpResponseBadRequest("There only exists one translation for this page") + + return super().delete_view(request, object_id, extra_context) + + def delete_model(self, request, obj): + ct_page_content = ContentType.objects.get_for_model(PageContent) + page_contents = PageContent.admin_manager.filter(page=obj.page, language=obj.language) + placeholders = Placeholder.objects.filter( + content_type=ct_page_content, + object_id__in=page_contents.values("pk"), + ) + saved_plugins = CMSPlugin.objects.filter(placeholder__in=placeholders) + # A translation that has never been published may have no PageUrl + page_urls = obj.page.urls.filter(language=obj.language) + + operation_token = send_pre_page_operation( + request=request, + operation=operations.DELETE_PAGE_TRANSLATION, + obj=obj.page, + translation=obj, + sender=self.model, + ) + + message = _("Title and plugins with language %(language)s was deleted") % { + "language": force_str(get_language_object(obj.language, site_id=obj.page.site_id)["name"]) + } + messages.success(request, message) + if obj.page.admin_content_cache and obj.language in obj.page.admin_content_cache: + del obj.page.admin_content_cache[obj.language] + if obj.language in obj.page.page_content_cache: + del obj.page.page_content_cache[obj.language] + + page_urls.delete() + page_contents.delete() + saved_plugins.delete() + + send_post_page_operation( + request=request, + operation=operations.DELETE_PAGE_TRANSLATION, + token=operation_token, + obj=obj.page, + translation=obj, + sender=self.model, + ) + + @require_POST + def change_innavigation(self, request, object_id): + """ + Switch the in_navigation of a page + """ + page_content = self.get_object(request, object_id=object_id) + + if not self.has_change_permission(request, obj=page_content): + if self.has_change_permission(request): + # General (permission) problem + message = "You do not have permission to change a page's navigation status" + else: + # Only this page? Can be permissions or versioning, or ... + message = "You cannot change this page's navigation status" + return HttpResponseForbidden(_(message)) + + if page_content is None: + raise self._get_404_exception(object_id) + + page_content.toggle_in_navigation() + # 204 -> request was successful but no response returned. + return HttpResponse(status=204) + + def get_tree(self, request): + """ + Get html for the descendants (only) of given page or if no page_id is + provided, all the root nodes. + + Used for lazy loading pages in cms.pagetree.js + """ + if not self.has_change_permission(request, obj=None): + raise PermissionDenied + site = get_site_from_request(request) + pages = Page.objects.on_site(site).order_by("path") + node_id = re.sub(r"[^\d]", "", request.GET.get("nodeId", "")) or None + open_page_ids = [int(id) for id in request.GET.getlist("openNodes[]") if id.isdigit()] + if node_id: + page = get_object_or_404(pages, id=node_id) + pages = page.get_descendant_pages().filter(Q(id__in=open_page_ids) | Q(parent__in=open_page_ids)) + else: + page = None + pages = pages.filter( + # get all root pages or children which were previously open or children of the open descendants + Q(depth=1) | Q(depth=2, id__in=open_page_ids) | Q(parent__in=open_page_ids) + ) + pages = pages.prefetch_related( + Prefetch( + "pagecontent_set", + to_attr="filtered_translations", + queryset=PageContent.admin_manager.get_queryset().latest_content(), + ), + "urls", # rendering a tree row resolves the page's URLs + ) + rows = self.get_tree_rows( + request, + pages=pages, + language=get_site_language_from_request(request, site_id=site.pk), + depth=(page.depth + 1 if page else 1), + follow_descendants=True, + ) + return HttpResponse("".join(rows)) + + def get_tree_rows(self, request, pages, language, depth=1, follow_descendants=True): + """ + Used for rendering the page tree, inserts into context everything what + we need for single item + """ + if not self.has_change_permission(request, obj=None): + raise PermissionDenied + site = get_site_from_request(request) + permissions_on = get_cms_setting("PERMISSION") + template = get_template(self.page_tree_row_template) + is_popup = IS_POPUP_VAR in request.POST or IS_POPUP_VAR in request.GET + languages = get_language_list(site.pk) + user_can_add = page_permissions.user_can_add_subpage + user_can_change = page_permissions.user_can_change_page + user_can_change_advanced = page_permissions.user_can_change_page_advanced_settings + user_can_change_permissions = page_permissions.user_can_change_page_permissions + + def render_page_row(page): + page.admin_content_cache = AdminCacheDict( + (trans.language, trans) for trans in page.filtered_translations + ) + has_move_page_permission = page_permissions.user_can_move_page(request.user, page, site=site) + + if permissions_on and not has_move_page_permission: + # TODO: check if this is really needed + metadata = '{"valid_children": False, "draggable": False}' + else: + metadata = "" + + page_content = page.get_admin_content(language) + context = { + "admin": self, + "opts": self.opts, + "site": site, + "page": page, + "page_content": page_content, + "ancestors": [page for page in page.get_cached_ancestors()], + "descendants": [page for page in page.get_cached_descendants()], + "request": request, + "lang": language, + "metadata": metadata, + "page_languages": page.get_languages(), + "preview_language": language, + "follow_descendants": follow_descendants, + "site_languages": languages, + "is_popup": is_popup, + "has_add_page_permission": user_can_add(request.user, target=page), + "has_change_permission": user_can_change(request.user, page, site), + "has_change_advanced_settings_permission": ( + user_can_change_advanced(request.user, page, site) + or user_can_change_permissions(request.user, page, site) + ), + "has_move_page_permission": has_move_page_permission, + "can_change": page_content.is_editable(request), + } + context["is_concrete"] = context["page_content"].language == language + return template.render(context) + + if follow_descendants: + root_pages = (page for page in pages if page.depth == depth) + else: + # When the tree is filtered, it's displayed as a flat structure + root_pages = pages + + if depth == 1: + for page in root_pages: + page._set_hierarchy(list(pages)) + yield render_page_row(page) + else: + for page in root_pages: + yield render_page_row(page) + + # Indicators in the page tree + @property + def indicator_descriptions(self): + return { + "public": _("Public content"), + "empty": _("Empty"), + } + + @classmethod + def get_indicator_menu(cls, request, page_content): + menu_template = "admin/cms/page/tree/indicator_menu.html" + if not page_content: + return menu_template, [ + ( + _("Create Content"), # Entry + "cms-icon-edit-new", # Optional icon + admin_reverse("cms_pagecontent_add") + + f"?cms_page={page_content.page.pk}&language={page_content.language}", # url + None, # Optional add classes for + ), + ] + return "", [] diff --git a/cms/admin/permissionadmin.py b/cms/admin/permissionadmin.py new file mode 100644 index 00000000..cbe7f098 --- /dev/null +++ b/cms/admin/permissionadmin.py @@ -0,0 +1,232 @@ +from copy import deepcopy + +from django.contrib import admin +from django.contrib.admin import site +from django.contrib.auth import get_user_model +from django.contrib.auth.admin import UserAdmin +from django.contrib.sites.models import Site +from django.db import OperationalError, ProgrammingError +from django.utils.translation import gettext_lazy as _ + +from cms.admin.forms import ( + GlobalPagePermissionAdminForm, + PagePermissionInlineAdminForm, + ViewRestrictionInlineAdminForm, +) +from cms.exceptions import NoPermissionsException +from cms.models import GlobalPagePermission, PagePermission +from cms.utils import page_permissions, permissions +from cms.utils.conf import get_cms_setting +from cms.utils.helpers import classproperty + +PERMISSION_ADMIN_INLINES = [] + +user_model = get_user_model() +admin_class = UserAdmin +for model, admin_instance in site._registry.items(): + if model == user_model: + admin_class = admin_instance.__class__ + + +class TabularInline(admin.TabularInline): + pass + + +class PagePermissionInlineAdmin(TabularInline): + model = PagePermission + # use special form, so we can override of user and group field + form = PagePermissionInlineAdminForm + extra = 0 # edit page load time boost + show_with_view_permissions = False + + def has_change_permission(self, request, obj=None): + if not obj: + return False + return page_permissions.user_can_change_page_permissions( + request.user, + page=obj, + site=obj.site, + ) + + def has_add_permission(self, request, obj=None): + return self.has_change_permission(request, obj) + + @classproperty + def raw_id_fields(cls): + # Dynamically set raw_id_fields based on settings + threshold = get_cms_setting('RAW_ID_USERS') + + # Given a fresh django-cms install and a django settings with the + # CMS_RAW_ID_USERS = CMS_PERMISSION = True + # django throws an OperationalError (sqlite) or ProgrammingError + # (postgres) when running ./manage migrate because the user table + # doesn't exist yet. + try: + threshold = threshold and get_user_model().objects.count() > threshold + except (OperationalError, ProgrammingError): + threshold = False + + return ['user'] if threshold else [] + + def get_queryset(self, request): + """ + Queryset change, so user with global change permissions can see + all permissions. Otherwise user can see only permissions for + peoples which are under him (he can't see his permissions, because + this will lead to violation, when he can add more power to himself) + """ + site = Site.objects.get_current(request) + + try: + # can see only permissions for users which are under him in tree + qs = self.model.objects.subordinate_to_user(request.user, site) + except NoPermissionsException: + return self.model.objects.none() + return qs.filter(can_view=self.show_with_view_permissions) + + def get_formset(self, request, obj=None, **kwargs): + """ + Some fields may be excluded here. User can change only + permissions which are available for him. E.g. if user does not haves + can_change flag, he can't change assign can_change permissions. + """ + exclude = self.exclude or [] + if obj: + user = request.user + if not obj.has_add_permission(user): + exclude.append('can_add') + if not obj.has_delete_permission(user): + exclude.append('can_delete') + if not obj.has_publish_permission(user): + exclude.append('can_publish') + if not obj.has_advanced_settings_permission(user): + exclude.append('can_change_advanced_settings') + if not obj.has_move_page_permission(user): + exclude.append('can_move_page') + + kwargs['exclude'] = exclude + self.form._page = obj + formset_cls = super().get_formset(request, obj=obj, **kwargs) + qs = self.get_queryset(request) + if obj is not None: + qs = qs.filter(page=obj) + formset_cls._queryset = qs + return formset_cls + + +class ViewRestrictionInlineAdmin(PagePermissionInlineAdmin): + extra = 0 # edit page load time boost + form = ViewRestrictionInlineAdminForm + verbose_name = _("View restriction") + verbose_name_plural = _("View restrictions") + show_with_view_permissions = True + + +class GlobalPagePermissionAdmin(admin.ModelAdmin): + list_display = ['user', 'group', 'can_change', 'can_delete', 'can_publish', 'can_change_permissions'] + list_filter = ['user', 'group', 'can_change', 'can_delete', 'can_publish', 'can_change_permissions'] + + form = GlobalPagePermissionAdminForm + search_fields = [] + for field in admin_class.search_fields: + search_fields.append("user__%s" % field) + search_fields.append('group__name') + + list_display.append('can_change_advanced_settings') + list_filter.append('can_change_advanced_settings') + + def get_list_filter(self, request): + threshold = get_cms_setting('RAW_ID_USERS') + try: + threshold = threshold and get_user_model().objects.count() > threshold + except (OperationalError, ProgrammingError): + threshold = False + filter_copy = deepcopy(self.list_filter) + if threshold: + filter_copy.remove('user') + return filter_copy + + def get_exclude(self, request, obj=None): + """Offer only the ``can_*`` flags the acting user may hand out. + + Mirrors ``PagePermissionInlineAdmin.get_formset``: a manager must not be + able to grant -- to themselves or anyone else -- a right they do not hold + (CWE-269). Excluding the field keeps it out of the rendered form *and* + out of a crafted POST. Whether a flag the manager holds on some site may + be granted for the sites actually picked is settled in the form's + ``clean()``, once ``sites`` is known. + """ + exclude = list(super().get_exclude(request, obj) or []) + grantable = permissions.get_grantable_global_permissions(request.user) + exclude.extend( + field for field in GlobalPagePermission.get_all_permissions() + if field not in grantable and field not in exclude + ) + return exclude + + def get_form(self, request, obj=None, **kwargs): + form_class = super().get_form(request, obj, **kwargs) + # The form caps each granted flag to the sites the manager holds it on, + # so it needs to know who is acting. ``modelform_factory`` returns a + # fresh subclass per call, so this is per-request state rather than + # shared mutation of the declared form class. + form_class._current_user = request.user + return form_class + + def has_add_permission(self, request): + site = Site.objects.get_current(request) + return permissions.user_can_add_global_permissions(request.user, site) + + def has_change_permission(self, request, obj=None): + site = Site.objects.get_current(request) + return ( + permissions.user_can_change_global_permissions(request.user, site) + and self._can_manage_grant(request, obj) + ) + + def has_delete_permission(self, request, obj=None): + site = Site.objects.get_current(request) + return ( + permissions.user_can_delete_global_permissions(request.user, site) + and self._can_manage_grant(request, obj) + ) + + def _can_manage_grant(self, request, obj): + """Only let a manager edit or delete a grant they could have created. + + A grant for a site the manager may not manage permissions on, or holding + flags they may not hand out on its sites, is out of reach: its ``user``, + ``group`` and ``sites`` would otherwise let them move those flags to + themselves or to other sites (CWE-269). + """ + if obj is None: + return True + held = {flag for flag in GlobalPagePermission.get_all_permissions() if getattr(obj, flag)} + site_ids = list(obj.sites.values_list("pk", flat=True)) + grantable = permissions.get_grantable_global_permissions(request.user, site_ids) + return "can_change_permissions" in grantable and held <= grantable + + @classproperty + def raw_id_fields(cls): + # Dynamically set raw_id_fields based on settings + threshold = get_cms_setting('RAW_ID_USERS') + + # Given a fresh django-cms install and a django settings with the + # CMS_RAW_ID_USERS = CMS_PERMISSION = True + # django throws an OperationalError (sqlite) or ProgrammingError + # (postgres) when running ./manage migrate because the user table + # doesn't exist yet. + try: + threshold = threshold and get_user_model().objects.count() > threshold + except (OperationalError, ProgrammingError): + threshold = False + + return ['user'] if threshold else [] + + +if get_cms_setting('PERMISSION'): + admin.site.register(GlobalPagePermission, GlobalPagePermissionAdmin) + PERMISSION_ADMIN_INLINES.extend([ + ViewRestrictionInlineAdmin, + PagePermissionInlineAdmin, + ]) diff --git a/cms/admin/placeholderadmin.py b/cms/admin/placeholderadmin.py new file mode 100644 index 00000000..3f259b43 --- /dev/null +++ b/cms/admin/placeholderadmin.py @@ -0,0 +1,1355 @@ +import json +import uuid +import warnings +from urllib.parse import parse_qsl, urlparse + +from django.contrib import admin +from django.contrib.admin.helpers import AdminForm +from django.contrib.admin.options import IS_POPUP_VAR +from django.contrib.admin.utils import flatten_fieldsets, get_deleted_objects +from django.core.exceptions import PermissionDenied +from django.db import models, transaction +from django.http import ( + HttpResponse, + HttpResponseBadRequest, + HttpResponseForbidden, + HttpResponseNotAllowed, + HttpResponseNotFound, +) +from django.shortcuts import get_list_or_404, get_object_or_404 +from django.template.response import TemplateResponse +from django.urls import include, re_path +from django.utils.datastructures import MultiValueDict +from django.utils.decorators import method_decorator +from django.utils.encoding import force_str +from django.utils.html import conditional_escape +from django.utils.translation import get_language_from_path, gettext as _ +from django.views.decorators.clickjacking import xframe_options_sameorigin +from django.views.decorators.http import require_POST + +from cms import operations +from cms.admin.forms import PluginAddValidationForm +from cms.constants import SLUG_REGEXP +from cms.exceptions import PluginLimitReached +from cms.models.placeholdermodel import Placeholder +from cms.models.placeholderpluginmodel import PlaceholderReference +from cms.models.pluginmodel import CMSPlugin +from cms.plugin_base import CMSPluginBase +from cms.plugin_pool import plugin_pool +from cms.signals import post_placeholder_operation, pre_placeholder_operation +from cms.toolbar.utils import ( + create_child_plugin_references, + get_plugin_content, + get_plugin_tree, + get_toolbar_from_request, +) +from cms.utils import get_current_site +from cms.utils.conf import get_cms_setting +from cms.utils.i18n import get_language_code, get_language_list +from cms.utils.plugins import ( + copy_plugins_to_placeholder, + downcast_plugins, + get_plugin_disallowed_in_slot, + has_reached_plugin_limit, +) +from cms.views import ( + render_object_edit, + render_object_preview, + render_object_structure, +) + +_no_default = object() + + +def get_int(int_str, default=_no_default): + """ + For convenience a get-like method for taking the int() of a string. + :param int_str: the string to convert to integer + :param default: an optional value to return if ValueError is raised. + :return: the int() of «int_str» or «default» on exception. + """ + if default == _no_default: + return int(int_str) + else: + try: + return int(int_str) + except ValueError: + return default + + +def _instance_overrides_method(base, instance, method_name): + """ + Returns True if instance overrides a method (method_name) + inherited from base. + """ + bound_method = getattr(instance.__class__, method_name) + unbound_method = getattr(base, method_name) + return unbound_method != bound_method + + +class BaseEditableAdminMixin: + """ + Base class for FrontendEditableAdminMixin to be reused by + PlaceholderAdmin + """ + @xframe_options_sameorigin + def edit_field(self, request, object_id, language): + """Endpoint which manages frontend-editable fields""" + obj = self._get_object_for_single_field(object_id, language) + opts = obj.__class__._meta + saved_successfully = False + cancel_clicked = request.POST.get("_cancel", False) + raw_fields = request.GET.get("edit_fields", "") + admin_obj, change_permission = self._get_model_admin_and_permission(request, obj) + allowed_fields = getattr(admin_obj, "frontend_editable_fields", []) + fields = [field for field in raw_fields.split(",") if field in allowed_fields] + if not fields: + context = { + 'opts': opts, + 'message': _("Field %s not found") % raw_fields + } + return TemplateResponse(request, 'admin/cms/page/plugin/error_form.html', context) + if not change_permission: + context = { + 'opts': opts, + 'message': _("You do not have permission to edit this item") + } + return TemplateResponse(request, 'admin/cms/page/plugin/error_form.html', context) + # Dynamically creates the form class with only `field_name` field + # enabled + form_class = admin_obj.get_form(request, obj, fields=fields) + if not cancel_clicked and request.method == 'POST': + form = form_class(instance=obj, data=request.POST) + if form.is_valid(): + new_object = form.save(commit=False) + admin_obj.save_model(request, new_object, form, change=True) # Call save model like the admin does + saved_successfully = True + else: + form = form_class(instance=obj) + admin_form = AdminForm(form, fieldsets=[(None, {'fields': fields})], prepopulated_fields={}, + model_admin=self) + media = admin_obj.media + admin_form.media + context = { + 'CMS_MEDIA_URL': get_cms_setting('MEDIA_URL'), + 'title': opts.verbose_name, + 'plugin': None, + 'plugin_id': None, + 'adminform': admin_form, + 'add': False, + 'is_popup': True, + 'media': media, + 'opts': opts, + 'change': True, + 'save_as': False, + 'has_add_permission': False, + 'window_close_timeout': 10, + } + if cancel_clicked: + # cancel button was clicked + context["cancel"] = True + return TemplateResponse(request, 'admin/cms/page/plugin/confirm_form.html', context) + if not cancel_clicked and request.method == 'POST' and saved_successfully and isinstance(admin_obj, CMSPluginBase): + # Update the structure board by populating the data bridge + return admin_obj.render_close_frame(request, obj, action="change") + return TemplateResponse(request, 'admin/cms/page/plugin/change_form.html', context) + + +class FrontendEditableAdminMixin(BaseEditableAdminMixin): + """ + Adding ``FrontendEditableAdminMixin`` to models admin class allows to open that admin + in the frontend by double-clicking on fields rendered with the ``render_model`` template + tag. + """ + def get_urls(self) -> list[str]: + """ + Register the url for the edit field view + """ + info = f"{self.model._meta.app_label}_{self.model._meta.model_name}" + + def pat(regex, fn): + return re_path(regex, self.admin_site.admin_view(fn), name=f"{info}_{fn.__name__}") + url_patterns = [ + pat(r'edit-field/(%s)/([a-z\-]+)/$' % SLUG_REGEXP, self.edit_field), + ] + return url_patterns + super().get_urls() + + def _get_model_admin_and_permission(self, request, obj: models.Model) -> tuple[admin.ModelAdmin, bool]: + # FrontendEditableAdminMixin needs to be added to the model's model admin class. + # Hence, the relevant admin is the model admin itself. + change_permission = request.user.has_perm(f"{obj._meta.app_label}.change_{obj._meta.model_name}", obj=obj) + return self, change_permission + + def _get_object_for_single_field(self, object_id: int, language: str) -> models.Model: + # Quick and dirty way to retrieve objects for django-hvad + # Cleaner implementation will extend this method in a child mixin + try: + # First see if the model uses the admin manager pattern from cms.models.manager.ContentAdminManager + manager = self.model.admin_manager + except AttributeError: + # If not, use the default manager + manager = self.model.objects + try: + return manager.language(language).get(pk=object_id) + except AttributeError: + return manager.get(pk=object_id) + + +@admin.register(Placeholder) +class PlaceholderAdmin(BaseEditableAdminMixin, admin.ModelAdmin): + """Placeholder admin manages placeholders and their plugins, as well as the preview, edit, and + structure endpoints.""" + + def has_add_permission(self, request): + # Placeholders are created by the system + return False + + def has_change_permission(self, request, obj=None): + # Placeholders are not editable in the admin + return False + + def has_delete_permission(self, request, obj=None): + # Placeholders are deleted by cascading the deletion of their source object + # so we don't need to check for delete permissions here. + return True + + def has_module_permission(self, request): + # Do not show in admin + return False + + def delete_view(self, request, object_id, extra_context=None): + # Placeholder are deleted by cascading the deletion of their source object + # but the admin's delete view is not available for placeholders. + raise PermissionDenied + + def get_urls(self) -> list[str]: + """ + Register the plugin specific urls (add/edit/copy/remove/move) + """ + info = f"{self.model._meta.app_label}_{self.model._meta.model_name}" + + def pat(regex, fn): + return re_path(regex, self.admin_site.admin_view(fn), name=f"{info}_{fn.__name__}") + url_patterns = [ + re_path(r'^cms_wizard/', include('cms.wizards.urls')), + pat(r'^copy-plugins/$', self.copy_plugins), + pat(r'^add-plugin/$', self.add_plugin), + pat(r'^edit-plugin/([0-9]+)/$', self.edit_plugin), + pat(r'^edit-field/([0-9]+)/([a-z\-]+)/$', self.edit_field), + pat(r'^delete-plugin/([0-9]+)/$', self.delete_plugin), + pat(r'^clear-placeholder/([0-9]+)/$', self.clear_placeholder), + pat(r'^move-plugin/$', self.move_plugin), + # Register object edit/structure/preview endpoints. + pat(r'^object/([0-9]+)/edit/([0-9]+)/$', render_object_edit), + pat(r'^object/([0-9]+)/structure/([0-9]+)/$', render_object_structure), + pat(r'^object/([0-9]+)/preview/([0-9]+)/$', render_object_preview), + ] + return url_patterns + + def _get_object_for_single_field(self, object_id: int, language: str) -> CMSPlugin: + # For BaseEditableAdminMixin: This (private) method retrieves the corresponding CMSPlugin and + # downcasts it to the appropriate plugin model. language is ignored. This provides the plugin for + # edit_field""" + plugin = get_object_or_404(CMSPlugin, pk=object_id) # Returns a CMSPlugin instance + return plugin.get_bound_plugin() # Returns the plugin model instance of the appropriate type + + def _get_model_admin_and_permission(self, request, obj: CMSPlugin) -> tuple[admin.ModelAdmin, bool]: + # For BaseEditableAdminMixin: This (private) method retrieves the model admin for the plugin model + # which is the plugin instance itself, and checks change permissions including check_source + placeholder = obj.placeholder + has_permission = ( + placeholder.has_change_plugin_permission(request.user, obj) + and placeholder.check_source(request.user) + ) + return obj.get_plugin_class_instance(admin=self.admin_site), has_permission + + def _get_operation_language(self, request): + # Unfortunately the ?language GET query + # has a special meaning on the CMS. + # It allows users to see another language while maintaining + # the same url. This complicates language detection. + site = get_current_site(request) + parsed_url = urlparse(request.GET['cms_path']) + queries = dict(parse_qsl(parsed_url.query)) + language = queries.get('language') + + if not language: + language = get_language_from_path(parsed_url.path) + return get_language_code(language, site_id=site.pk) + + def _get_operation_origin(self, request): + return urlparse(request.GET['cms_path']).path + + def _send_pre_placeholder_operation(self, request, operation, **kwargs): + token = str(uuid.uuid4()) + + if not request.GET.get('cms_path'): + warnings.warn('All custom placeholder admin endpoints require ' + 'a "cms_path" GET query which points to the path ' + 'where the request originates from.' + 'This backwards compatible shim will be removed on 3.5 ' + 'and an HttpBadRequest response will be returned instead.', + UserWarning) + return token + + pre_placeholder_operation.send( + sender=self.__class__, + operation=operation, + request=request, + language=self._get_operation_language(request), + token=token, + origin=self._get_operation_origin(request), + **kwargs + ) + return token + + def _send_post_placeholder_operation(self, request, operation, token, **kwargs): + if not request.GET.get('cms_path'): + # No need to re-raise the warning + return + + post_placeholder_operation.send( + sender=self.__class__, + operation=operation, + request=request, + language=self._get_operation_language(request), + token=token, + origin=self._get_operation_origin(request), + **kwargs + ) + + def _get_plugin_from_id(self, plugin_id): + queryset = CMSPlugin.objects.values_list('plugin_type', flat=True) + plugin_type = get_list_or_404(queryset, pk=plugin_id)[0] + # CMSPluginBase subclass + plugin_class = plugin_pool.get_plugin(plugin_type) + real_queryset = plugin_class.get_render_queryset().select_related('parent', 'placeholder') + return get_object_or_404(real_queryset, pk=plugin_id) + + def has_add_plugin_permission(self, request, placeholder, plugin_type): + return placeholder.has_add_plugin_permission(request.user, plugin_type) + + def has_change_plugin_permission(self, request, plugin): + placeholder = plugin.placeholder + return placeholder.has_change_plugin_permission(request.user, plugin) + + def has_delete_plugin_permission(self, request, plugin): + placeholder = plugin.placeholder + return placeholder.has_delete_plugin_permission(request.user, plugin) + + def has_copy_plugins_permission(self, request, plugins): + # Plugins can only be copied to the clipboard + placeholder = get_toolbar_from_request(request).clipboard + if placeholder is None: + # No toolbar, no clipboard to copy into. + return False + return placeholder.has_add_plugins_permission(request.user, plugins) + + def has_copy_from_clipboard_permission(self, request, placeholder, plugins): + return placeholder.has_add_plugins_permission(request.user, plugins) + + def has_paste_from_source_permission(self, request, source_placeholder, plugins): + # Pasting reads the plugins from the placeholder they are pasted from, + # so a user without access to that placeholder must not be able to + # exfiltrate its content into a placeholder they do control. + clipboard = get_toolbar_from_request(request).clipboard + + if clipboard and source_placeholder.pk == clipboard.pk: + # Pasting from the user's own clipboard, which is what this + # operation is for. A user may always read their own clipboard. + return True + + # Deliberately no ``source_placeholder.check_source()`` here: that is an + # editability gate (see ``placeholder_is_immutable``), and pasting only + # reads the source. Editors must be able to paste out of content they + # may not edit, such as a published version or a draft another user has + # locked. Read access is covered by the permission check below. + return source_placeholder.has_add_plugins_permission(request.user, plugins) + + def has_copy_from_placeholder_permission(self, request, source_placeholder, target_placeholder, plugins): + if not source_placeholder.has_add_plugins_permission(request.user, plugins): + return False + return target_placeholder.has_add_plugins_permission(request.user, plugins) + + def has_move_plugin_permission(self, request, plugin, target_placeholder): + placeholder = plugin.placeholder + return placeholder.has_move_plugin_permission(request.user, plugin, target_placeholder) + + def has_clear_placeholder_permission(self, request, placeholder, language=None): + if language: + languages = [language] + else: + # fetch all languages this placeholder contains + # based on it's plugins + languages = ( + placeholder + .cmsplugin_set + .values_list('language', flat=True) + .distinct() + .order_by() + ) + return placeholder.has_clear_permission(request.user, languages) + + def get_placeholder_template(self, request, placeholder): + pass + + @xframe_options_sameorigin + @transaction.atomic + def add_plugin(self, request): + """ + Shows the add plugin form and saves it on POST. + + Requires the following GET parameters: + - cms_path + - placeholder_id + - plugin_type + - plugin_language + - plugin_position + - plugin_parent (optional) + """ + form = PluginAddValidationForm(request.GET) + form._request = request + + if not form.is_valid(): + # list() is necessary for python 3 compatibility. + # errors is s dict mapping fields to a list of errors + # for that field. + error = list(form.errors.values())[0][0] + return HttpResponseBadRequest(conditional_escape(force_str(error))) + + plugin_data = form.cleaned_data + placeholder = plugin_data['placeholder_id'] + plugin_type = plugin_data['plugin_type'] + + if not self.has_add_plugin_permission(request, placeholder, plugin_type): + message = _('You do not have permission to add a plugin') + return HttpResponseForbidden(message) + + if not placeholder.check_source(request.user): + message = _('You do not have permission to add a plugin') + return HttpResponseForbidden(message) + + plugin_class = plugin_pool.get_plugin(plugin_type) + plugin_instance = plugin_class(plugin_class.model, self.admin_site) + + # Setting attributes on the form class is perfectly fine. + # The form class is created by modelform factory every time + # this get_form() method is called. + plugin_instance._cms_initial_attributes = { + 'language': plugin_data['plugin_language'], + 'placeholder': plugin_data['placeholder_id'], + 'parent': plugin_data.get('plugin_parent', None), + 'plugin_type': plugin_data['plugin_type'], + 'position': plugin_data['plugin_position'], + } + + if request.method == 'POST' and not plugin_class.show_add_form: + # If the plugin has show_add_form set to False, + # the post data is missing the initial values of the plugin form + # Get the fields, the form and the initial values from the plugin instance + # Replace the POST parameters by those initial values plus any concrete changes + # the form. + # TODO: Make this work with Text plugins which use ghost plugins and have to + # have show_add_form=True + fieldsets = plugin_instance.get_fieldsets(request, obj=None) + fields = flatten_fieldsets(fieldsets) + # Instantiate the add form for all fields + initial_form = plugin_instance.get_form(request, None, change=False, fields=fields)() + # Turn the initial values in a multi-value dict. In a multi-value dict each value is a list. + # Hence, if the initial value is not a list, it is turned into a list. + query_dict = MultiValueDict({ + name: field.initial if isinstance(field.initial, (tuple, list)) else [field.initial] + for name, field in initial_form.fields.items() + if getattr(field, "initial", None) is not None and name not in request.POST + }) + # Add the actual post parameters + query_dict.update(request.POST) + # Use the QueryDict as the POST data + request.POST = query_dict + + response = plugin_instance.add_view(request) + plugin = getattr(plugin_instance, 'saved_object', None) + + if plugin_instance._operation_token: + tree_order = plugin.placeholder.get_plugin_tree_order( + plugin.language, + plugin.parent_id, + ) + self._send_post_placeholder_operation( + request, + operation=operations.ADD_PLUGIN, + token=plugin_instance._operation_token, + plugin=plugin, + placeholder=plugin.placeholder, + tree_order=tree_order, + ) + return response + + @method_decorator(require_POST) + @xframe_options_sameorigin + @transaction.atomic + def copy_plugins(self, request): + """ + POST request should have the following data: + + - cms_path + - source_language + - source_placeholder_id + - source_plugin_id (optional) + - target_language + - target_placeholder_id + """ + source_placeholder_id = request.POST['source_placeholder_id'] + target_language = request.POST['target_language'] + target_placeholder_id = request.POST['target_placeholder_id'] + source_placeholder = get_object_or_404(Placeholder, pk=source_placeholder_id) + target_placeholder = get_object_or_404(Placeholder, pk=target_placeholder_id) + + if not target_language or target_language not in get_language_list(site_id=get_current_site(request).pk): + return HttpResponseBadRequest(_("Language must be set to a supported language!")) + + clipboard = get_toolbar_from_request(request).clipboard + copy_to_clipboard = clipboard is not None and target_placeholder.pk == clipboard.pk + source_plugin_id = request.POST.get('source_plugin_id', None) + + if copy_to_clipboard and source_plugin_id: + new_plugin = self._copy_plugin_to_clipboard( + request, + target_placeholder, + ) + new_plugins = [new_plugin] + elif copy_to_clipboard: + new_plugin = self._copy_placeholder_to_clipboard( + request, + source_placeholder, + target_placeholder, + ) + new_plugins = [new_plugin] + else: + source_language = request.POST['source_language'] + source_plugins = source_placeholder.get_plugins_list(language=source_language) + disallowed = get_plugin_disallowed_in_slot( + (plugin.plugin_type for plugin in source_plugins), + target_placeholder.slot, + ) + if disallowed: + return HttpResponseBadRequest( + f"Plugin {disallowed} is not allowed in placeholder '{target_placeholder.slot}'." + ) + new_plugins = self._add_plugins_from_placeholder( + request, + source_placeholder, + target_placeholder, + ) + data = get_plugin_tree(request, new_plugins) + return HttpResponse(json.dumps(data), content_type='application/json') + + def _copy_plugin_to_clipboard(self, request, target_placeholder): + source_language = request.POST['source_language'] + source_plugin_id = request.POST.get('source_plugin_id') + target_language = request.POST['target_language'] + + source_plugin = get_object_or_404( + CMSPlugin, + pk=source_plugin_id, + language=source_language, + ) + old_plugins = [source_plugin] + list(source_plugin.get_descendants()) + source_placeholder = source_plugin.placeholder + + if not self.has_copy_plugins_permission(request, old_plugins): + message = _('You do not have permission to copy these plugins.') + raise PermissionDenied(message) + + # Check source-side permission as well: copying reads the source + # plugins, so a user without access to the source placeholder must not + # be able to exfiltrate its content into their clipboard. + if not source_placeholder.has_add_plugins_permission(request.user, old_plugins): + message = _('You do not have permission to copy these plugins.') + raise PermissionDenied(message) + + # Deliberately no ``source_placeholder.check_source()`` here: that is an + # editability gate (see ``placeholder_is_immutable``), and copying only + # reads the source. Editors must be able to copy out of content they may + # not edit, such as a published version or a draft another user has + # locked. Read access is covered by the permission check above. + if not target_placeholder.check_source(request.user): + message = _('You do not have permission to copy these plugins.') + raise PermissionDenied(message) + + # Empty the clipboard + target_placeholder.clear() + + copied_plugins = copy_plugins_to_placeholder( + old_plugins, + placeholder=target_placeholder, + language=target_language, + ) + return copied_plugins[0] + + def _copy_placeholder_to_clipboard(self, request, source_placeholder, target_placeholder): + source_language = request.POST['source_language'] + target_language = request.POST['target_language'] + + # User is copying the whole placeholder to the clipboard. + old_plugins = source_placeholder.get_plugins_list(language=source_language) + + if not self.has_copy_plugins_permission(request, old_plugins): + message = _('You do not have permission to copy this placeholder.') + raise PermissionDenied(message) + + # Check source-side permission as well: copying reads the source + # plugins, so a user without access to the source placeholder must not + # be able to exfiltrate its content into their clipboard. + if not source_placeholder.has_add_plugins_permission(request.user, old_plugins): + message = _('You do not have permission to copy this placeholder.') + raise PermissionDenied(message) + + # Deliberately no ``source_placeholder.check_source()`` here: that is an + # editability gate (see ``placeholder_is_immutable``), and copying only + # reads the source. Editors must be able to copy out of content they may + # not edit, such as a published version or a draft another user has + # locked. Read access is covered by the permission check above. + if not target_placeholder.check_source(request.user): + message = _('You do not have permission to copy this placeholder.') + raise PermissionDenied(message) + + # Empty the clipboard + target_placeholder.clear() + + # Create a PlaceholderReference plugin which in turn + # creates a blank placeholder called "clipboard" + # the real clipboard has the reference placeholder inside but the plugins + # are inside of the newly created blank clipboard. + # This allows us to wrap all plugins in the clipboard under one plugin + reference = PlaceholderReference.objects.create( + name=source_placeholder.get_label(), + plugin_type='PlaceholderPlugin', + language=target_language, + placeholder=target_placeholder, + ) + copy_plugins_to_placeholder( + old_plugins, + placeholder=reference.placeholder_ref, + language=target_language, + ) + return reference + + def _add_plugins_from_placeholder(self, request, source_placeholder, target_placeholder): + # Plugins are being copied from a placeholder in another language + # using the "Copy from language" placeholder operation. + source_language = request.POST['source_language'] + target_language = request.POST['target_language'] + + old_plugins = source_placeholder.get_plugins_list(language=source_language) + + # Check if the user can copy plugins from source placeholder to + # target placeholder. + has_permissions = self.has_copy_from_placeholder_permission( + request, + source_placeholder, + target_placeholder, + old_plugins, + ) + + if not has_permissions: + message = _('You do not have permission to copy these plugins.') + raise PermissionDenied(message) + + if not target_placeholder.check_source(request.user): + message = _('You do not have permission to copy these plugins.') + raise PermissionDenied(message) + + target_tree_order = target_placeholder.get_plugin_tree_order( + language=target_language, + parent_id=None, + ) + + operation_token = self._send_pre_placeholder_operation( + request, + operation=operations.ADD_PLUGINS_FROM_PLACEHOLDER, + plugins=old_plugins, + source_language=source_language, + source_placeholder=source_placeholder, + target_language=target_language, + target_placeholder=target_placeholder, + target_order=target_tree_order, + ) + + copied_plugins = copy_plugins_to_placeholder(old_plugins, target_placeholder, language=target_language) + new_plugin_ids = (new.pk for new in copied_plugins) + + target_placeholder.clear_cache(target_language) + + new_plugins = CMSPlugin.objects.filter(pk__in=new_plugin_ids) + new_plugins = list(new_plugins) + target_tree_order = target_placeholder.get_plugin_tree_order( + language=target_language, + parent_id=None, + ) + + self._send_post_placeholder_operation( + request, + operation=operations.ADD_PLUGINS_FROM_PLACEHOLDER, + token=operation_token, + plugins=new_plugins, + source_language=source_language, + source_placeholder=source_placeholder, + target_language=target_language, + target_placeholder=target_placeholder, + target_order=target_tree_order, + ) + return new_plugins + + @xframe_options_sameorigin + @transaction.atomic + def edit_plugin(self, request, plugin_id): + try: + plugin_id = int(plugin_id) + except ValueError: + return HttpResponseNotFound(_("Plugin not found")) + + obj = self._get_plugin_from_id(plugin_id) + + # CMSPluginBase subclass instance + plugin_instance = obj.get_plugin_class_instance(admin=self.admin_site) + + if not self.has_change_plugin_permission(request, obj): + return HttpResponseForbidden(_("You do not have permission to edit this plugin")) + + if not obj.placeholder.check_source(request.user): + message = _("You do not have permission to edit this plugin") + return HttpResponseForbidden(message) + + response = plugin_instance.change_view(request, str(plugin_id)) + + plugin = getattr(plugin_instance, 'saved_object', None) + + if plugin: + plugin.placeholder.clear_cache(plugin.language) + + if plugin_instance._operation_token: + self._send_post_placeholder_operation( + request, + operation=operations.CHANGE_PLUGIN, + token=plugin_instance._operation_token, + old_plugin=obj, + new_plugin=plugin, + placeholder=plugin.placeholder, + ) + return response + + @method_decorator(require_POST) + @xframe_options_sameorigin + @transaction.atomic + def move_plugin(self, request): + """ + Performs a move or a "paste" operation (when «move_a_copy» is set) + + POST request with following parameters: + - plugin_id + - placeholder_id + - target_position (optional) + - plugin_language (optional) + - plugin_parent (optional) + - plugin_order (array, optional) + - move_a_copy (Boolean, optional) (anything supplied here except a case- + insensitive "false" is True) + NOTE: If move_a_copy is set, the plugin_order should contain an item + '__COPY__' with the desired destination of the copied plugin. + """ + # plugin_id and placeholder_id are required, so, if nothing is supplied, + # an ValueError exception will be raised by get_int(). + try: + plugin_id = get_int(request.POST.get('plugin_id')) + except TypeError: + raise RuntimeError("'plugin_id' is a required parameter.") + + plugin = self._get_plugin_from_id(plugin_id) + + if request.POST.get('placeholder_id'): + placeholder_id = get_int(request.POST.get('placeholder_id')) + placeholder = Placeholder.objects.get(pk=placeholder_id) + assert plugin.placeholder_id != placeholder_id + else: + placeholder = None + + # The rest are optional + target_position = int(request.POST.get('target_position', "0")) + parent_id = get_int(request.POST.get('plugin_parent', ""), None) + target_language = request.POST['target_language'] + move_a_copy = request.POST.get('move_a_copy') + move_a_copy = ( + move_a_copy and move_a_copy != "0" and move_a_copy.lower() != "false" + ) + clipboard = get_toolbar_from_request(request).clipboard + # Both may be None, which must not be read as "moving to the clipboard". + move_to_clipboard = clipboard is not None and placeholder == clipboard + source_placeholder = plugin.placeholder + + if placeholder and placeholder != source_placeholder: + if not move_to_clipboard: + # The whole subtree moves with the plugin, so every descendant must + # also be allowed in the target slot, not just the moved plugin itself. + moved_types = [plugin.plugin_type, *plugin.get_descendants().values_list("plugin_type", flat=True)] + disallowed = get_plugin_disallowed_in_slot(moved_types, placeholder.slot) + if disallowed: + return HttpResponseBadRequest( + f"Plugin {disallowed} is not allowed in placeholder '{placeholder.slot}'." + ) + try: + template = self.get_placeholder_template(request, placeholder) + has_reached_plugin_limit(placeholder, plugin.plugin_type, + target_language, template=template) + except PluginLimitReached as er: + return HttpResponseBadRequest(er) + + if parent_id and plugin.parent_id != parent_id: + target_pl = placeholder or plugin.placeholder + + # The new parent must live in the placeholder (and language) the + # plugin ends up in. This holds for pastes and cuts just as much as + # for moves: ``plugin_parent`` is client supplied, so an unscoped + # lookup would let a user name a plugin in a placeholder they have + # no permission for. That both parents the new plugin outside its + # own placeholder and returns the foreign parent's rendered subtree + # in the response. + target_parent = get_object_or_404( + CMSPlugin, + pk=parent_id, + language=target_language, + placeholder=target_pl, + ) + elif parent_id and placeholder is None: + # ``plugin_parent`` names the plugin's current parent. Keeping it + # only makes sense while the plugin stays in its placeholder; the + # parent does not travel to another one. It is still looked up + # within the plugin's own placeholder and language: a relation + # pointing elsewhere (e.g., created before the lookup above was + # scoped) must not be trusted, or its subtree ends up in the + # response. + target_parent = get_object_or_404( + CMSPlugin, + pk=parent_id, + language=plugin.language, + placeholder=plugin.placeholder_id, + ) + else: + target_parent = None + + # Reparenting an existing plugin under itself or one of its own + # descendants would create a cycle in the plugin tree. The recursive + # descendant/ancestor queries would then loop indefinitely, stalling + # request handling (denial of service). Reject such moves. + # (Copies and cut-to-clipboard create new plugins, so they are safe.) + if ( + target_parent + and not move_a_copy + and not move_to_clipboard + and ( + target_parent.pk == plugin.pk + or target_parent.pk in plugin._get_descendants_ids() + ) + ): + return HttpResponseBadRequest( + "A plugin cannot be moved inside itself or one of its descendants." + ) + + old_parent = None + fetch_tree = True + + if move_a_copy and plugin.plugin_type == "PlaceholderPlugin": + fetch_tree = False + new_plugin = None + new_plugins = self._paste_placeholder( + request, + plugin=plugin, + target_language=target_language, + target_placeholder=placeholder, + target_position=target_position, + ) + elif move_a_copy: + new_plugin = self._paste_plugin( + request, + plugin=plugin, + target_parent=target_parent, + target_language=target_language, + target_placeholder=placeholder, + target_position=target_position, + ) + elif move_to_clipboard: + old_parent = plugin.parent # Previous parent needs content update, too + new_plugin = self._cut_plugin( + request, + plugin=plugin, + target_language=target_language, + target_placeholder=placeholder, + ) + new_plugins = [plugin] + else: + old_parent = plugin.parent # Previous parent needs content update, too + new_plugin = self._move_plugin( + request, + plugin=plugin, + target_parent=target_parent, + target_position=target_position, + target_placeholder=placeholder, + ) + + if new_plugin and fetch_tree: + root = (new_plugin.parent or new_plugin) + new_plugins = [root] + list(root.get_descendants()) + data = get_plugin_tree(request, new_plugins, target_plugin=new_plugins[0]) + if old_parent and old_parent not in new_plugins and "content" in data: + # Update previous parent and its children + old_parent_plugins = list(downcast_plugins([old_parent] + list(old_parent.get_descendants()), select_placeholder=True)) + create_child_plugin_references(old_parent_plugins) + data["content"] += get_plugin_content(request, old_parent_plugins[0]) + # Pass the target_position + if "content" in data and len(data["content"]) > 0: + data["content"][0]["insert"] = new_plugins[0].pk == plugin.pk # Insert the content (old_parent is always only updated) + if move_to_clipboard: + data["content"].pop(0) + data["source_placeholder_id"] = source_placeholder.pk + return HttpResponse(json.dumps(data), content_type='application/json') + + def _paste_plugin(self, request, plugin, target_language, + target_placeholder, target_position, target_parent=None): + plugins = [plugin] + list(plugin.get_descendants()) + + # Check the source side as well: the plugin is identified by a + # client-supplied id, so it is not necessarily one the user is allowed + # to read. + if not self.has_paste_from_source_permission(request, plugin.placeholder, plugins): + message = _("You have no permission to paste this plugin") + raise PermissionDenied(message) + + if not self.has_copy_from_clipboard_permission(request, target_placeholder, plugins): + message = _("You have no permission to paste this plugin") + raise PermissionDenied(message) + + if not target_placeholder.check_source(request.user): + message = _("You have no permission to paste this plugin") + raise PermissionDenied(message) + + if target_parent: + target_parent_id = target_parent.pk + else: + target_parent_id = None + + action_token = self._send_pre_placeholder_operation( + request, + operation=operations.PASTE_PLUGIN, + plugin=plugin, + target_language=target_language, + target_placeholder=target_placeholder, + target_parent_id=target_parent_id, + ) + + target_last_plugin = target_placeholder.get_last_plugin(target_language) + + if target_last_plugin: + target_offset = target_last_plugin.position + len(plugins) + target_placeholder._shift_plugin_positions( + target_language, + start=target_position, + offset=target_offset, + ) + + new_plugins = copy_plugins_to_placeholder( + plugins, + placeholder=target_placeholder, + language=target_language, + root_plugin=target_parent, + start_positions={target_language: target_position}, + ) + root_plugin = new_plugins[0] + target_placeholder.clear_cache(target_language) + + # Fetch from db to update position and other tree values + root_plugin.refresh_from_db() + + self._send_post_placeholder_operation( + request, + operation=operations.PASTE_PLUGIN, + plugin=root_plugin.get_bound_plugin(), + token=action_token, + target_language=target_language, + target_placeholder=target_placeholder, + target_parent_id=target_parent_id, + ) + return root_plugin + + def _paste_placeholder(self, request, plugin, target_language, + target_placeholder, target_position): + plugins = plugin.placeholder_ref.get_plugins_list() + + # Check the source side as well: the plugin is identified by a + # client-supplied id, so it is not necessarily one the user is allowed + # to read. The plugins live in the reference placeholder, but that one + # is only reachable through the placeholder holding the reference + # plugin itself (normally the user's own clipboard). + if not self.has_paste_from_source_permission(request, plugin.placeholder, plugins): + message = _("You have no permission to paste this placeholder") + raise PermissionDenied(message) + + if not self.has_copy_from_clipboard_permission(request, target_placeholder, plugins): + message = _("You have no permission to paste this placeholder") + raise PermissionDenied(message) + + if not target_placeholder.check_source(request.user): + message = _("You have no permission to paste this placeholder") + raise PermissionDenied(message) + + action_token = self._send_pre_placeholder_operation( + request, + operation=operations.PASTE_PLACEHOLDER, + plugins=plugins, + target_language=target_language, + target_placeholder=target_placeholder, + ) + + target_last_plugin = target_placeholder.get_last_plugin(target_language) + + if target_last_plugin: + target_offset = target_last_plugin.position + len(plugins) + target_placeholder._shift_plugin_positions( + target_language, + start=target_position, + offset=target_offset, + ) + + new_plugins = copy_plugins_to_placeholder( + plugins, + placeholder=target_placeholder, + language=target_language, + start_positions={target_language: target_position}, + ) + new_plugin_ids = (new.pk for new in new_plugins) + target_placeholder.clear_cache(target_language) + + new_plugins = ( + CMSPlugin + .objects + .filter(pk__in=new_plugin_ids) + .select_related('placeholder') + ) + new_plugins = list(new_plugins) + + self._send_post_placeholder_operation( + request, + operation=operations.PASTE_PLACEHOLDER, + token=action_token, + plugins=new_plugins, + target_language=target_language, + target_placeholder=target_placeholder, + ) + return new_plugins + + def _move_plugin(self, request, plugin, target_position, target_placeholder=None, target_parent=None): + language = plugin.language + source_placeholder = plugin.placeholder + source_language = plugin.language + source_parent_id = plugin.parent_id + + if not self.has_move_plugin_permission(request, plugin, source_placeholder): + message = _("You have no permission to move this plugin") + raise PermissionDenied(message) + + if target_placeholder and not self.has_move_plugin_permission(request, plugin, target_placeholder): + message = _("You have no permission to move this plugin") + raise PermissionDenied(message) + + if not source_placeholder.check_source(request.user): + message = _("You have no permission to move this plugin") + raise PermissionDenied(message) + + if target_placeholder and not target_placeholder.check_source(request.user): + message = _("You have no permission to move this plugin") + raise PermissionDenied(message) + + if target_parent: + target_parent_id = target_parent.pk + else: + target_parent_id = None + + action_token = self._send_pre_placeholder_operation( + request, + operation=operations.MOVE_PLUGIN, + plugin=plugin, + source_language=source_language, + source_placeholder=source_placeholder, + source_parent_id=source_parent_id, + target_language=language, + target_placeholder=(target_placeholder or source_placeholder), + target_parent_id=target_parent_id, + ) + + source_placeholder.move_plugin( + plugin=plugin, + target_position=target_position, + target_placeholder=target_placeholder, + target_plugin=target_parent, + ) + + # Refresh plugin to get new position values + updated_plugin = plugin.reload() + if target_placeholder: + target_placeholder.clear_cache(language) + source_placeholder.clear_cache(language) + + self._send_post_placeholder_operation( + request, + operation=operations.MOVE_PLUGIN, + plugin=updated_plugin.get_bound_plugin(), + token=action_token, + source_language=source_language, + source_placeholder=source_placeholder, + source_parent_id=source_parent_id, + target_language=language, + target_placeholder=(target_placeholder or source_placeholder), + target_parent_id=target_parent_id, + ) + return updated_plugin + + def _cut_plugin(self, request, plugin, target_language, target_placeholder): + source_placeholder = plugin.placeholder + source_language = plugin.language + source_parent_id = plugin.parent_id + + if not self.has_move_plugin_permission(request, plugin, source_placeholder): + message = _("You have no permission to cut this plugin") + raise PermissionDenied(message) + + if not source_placeholder.check_source(request.user): + message = _("You have no permission to cut this plugin") + raise PermissionDenied(message) + + source_order = source_placeholder.get_plugin_tree_order( + source_language, + source_parent_id, + ) + + action_token = self._send_pre_placeholder_operation( + request, + operation=operations.CUT_PLUGIN, + plugin=plugin, + clipboard=target_placeholder, + clipboard_language=target_language, + source_language=source_language, + source_placeholder=source_placeholder, + source_parent_id=source_parent_id, + source_order=source_order, + ) + + # Empty the clipboard + target_placeholder.clear() + source_placeholder.move_plugin( + plugin, + target_position=1, + target_placeholder=target_placeholder, + target_plugin=None, + ) + source_placeholder.clear_cache(plugin.language) + updated_plugin = plugin.reload() + source_order = source_placeholder.get_plugin_tree_order( + source_language, + source_parent_id, + ) + + self._send_post_placeholder_operation( + request, + operation=operations.CUT_PLUGIN, + token=action_token, + plugin=updated_plugin.get_bound_plugin(), + clipboard=target_placeholder, + clipboard_language=target_language, + source_language=source_language, + source_placeholder=source_placeholder, + source_parent_id=source_parent_id, + source_order=source_order, + ) + return updated_plugin + + @xframe_options_sameorigin + def delete_plugin(self, request, plugin_id): + plugin = self._get_plugin_from_id(plugin_id) + + if not self.has_delete_plugin_permission(request, plugin): + message = _("You do not have permission to delete this plugin") + return HttpResponseForbidden(message) + + if not plugin.placeholder.check_source(request.user): + message = _("You do not have permission to delete this plugin") + raise PermissionDenied(message) + + opts = plugin._meta + get_deleted_objects_additional_kwargs = {'request': request} + deleted_objects, __, perms_needed, protected = get_deleted_objects( + [plugin], admin_site=self.admin_site, + **get_deleted_objects_additional_kwargs + ) + + if request.POST: # The user has already confirmed the deletion. + if perms_needed: + raise PermissionDenied(_("You do not have permission to delete this plugin")) + obj_display = force_str(plugin) + placeholder = plugin.placeholder + plugin_class_instance = plugin.get_plugin_class_instance() + plugin_parent = plugin.parent + plugin_tree_order = placeholder.get_plugin_tree_order(language=plugin.language) + + operation_token = self._send_pre_placeholder_operation( + request, + operation=operations.DELETE_PLUGIN, + plugin=plugin, + placeholder=placeholder, + tree_order=plugin_tree_order, + ) + placeholder.delete_plugin(plugin) + placeholder.clear_cache(plugin.language) + plugin_tree_order = placeholder.get_plugin_tree_order(language=plugin.language) + + self.message_user(request, _('The %(name)s plugin "%(obj)s" was deleted successfully.') % { + 'name': force_str(opts.verbose_name), 'obj': force_str(obj_display)}) + + self._send_post_placeholder_operation( + request, + operation=operations.DELETE_PLUGIN, + token=operation_token, + plugin=plugin, + placeholder=placeholder, + tree_order=plugin_tree_order, + ) + return plugin_class_instance.render_close_frame( + request, + plugin_parent, + action="delete", + extra_data=dict(deleted=True, plugin_id=plugin.pk)) + + plugin_name = force_str(plugin.get_plugin_class().name) + + if perms_needed or protected: + title = _("Cannot delete %(name)s") % {"name": plugin_name} + else: + title = _("Are you sure?") + context = { + "title": title, + "object_name": plugin_name, + "object": plugin, + "deleted_objects": deleted_objects, + "perms_lacking": perms_needed, + "protected": protected, + "opts": opts, + "app_label": opts.app_label, + "delete_confirmation_max_display": getattr(self, "delete_confirmation_max_display", None), + # This view is only ever shown inside the CMS modal: render it without the + # admin chrome, like the other frontend editing views do. + "is_popup": True, + "is_popup_var": IS_POPUP_VAR, + } + request.current_app = self.admin_site.name + return TemplateResponse( + request, "admin/cms/page/plugin/delete_confirmation.html", context + ) + + @xframe_options_sameorigin + def clear_placeholder(self, request, placeholder_id): + placeholder = get_object_or_404(Placeholder, pk=placeholder_id) + language = request.GET.get('language') + + clipboard = get_toolbar_from_request(request).clipboard + + if clipboard is not None and placeholder.pk == clipboard.pk: + # User is clearing the clipboard, no need for permission + # checks here as the clipboard is unique per user. + # There could be a case where a plugin has relationship to + # an object the user does not have permission to delete. + # The clipboard is cleared immediately (the other branch + # renders a confirmation page first), so require POST to keep + # this state-changing operation off CSRF-exempt GET requests. + if request.method != "POST": + return HttpResponseNotAllowed(["POST"]) + placeholder.clear(language) + return TemplateResponse(request, "admin/cms/page/plugin/confirm_form.html", { + "data_bridge": { + "action": "clear_placeholder", + "deleted": True, + "placeholder_id": placeholder.pk, + } + }) + + if not self.has_clear_placeholder_permission(request, placeholder, language): + message = _("You do not have permission to clear this placeholder") + return HttpResponseForbidden(message) + + if not placeholder.check_source(request.user): + message = _("You do not have permission to clear this placeholder") + raise PermissionDenied(message) + + opts = Placeholder._meta + plugins = placeholder.get_plugins_list(language) + + get_deleted_objects_additional_kwargs = {'request': request} + deleted_objects, __, perms_needed, protected = get_deleted_objects( + plugins, admin_site=self.admin_site, + **get_deleted_objects_additional_kwargs + ) + + obj_display = force_str(placeholder) + + if request.POST: + # The user has already confirmed the deletion. + if perms_needed: + message = _("You do not have permission to clear this placeholder") + return HttpResponseForbidden(message) + + operation_token = self._send_pre_placeholder_operation( + request, + operation=operations.CLEAR_PLACEHOLDER, + plugins=plugins, + placeholder=placeholder, + ) + + placeholder.clear(language) + placeholder.clear_cache(language, site_id=get_current_site(request).pk) + + self.message_user(request, _('The placeholder "%(obj)s" was cleared successfully.') % { + 'obj': obj_display}) + + self._send_post_placeholder_operation( + request, + operation=operations.CLEAR_PLACEHOLDER, + token=operation_token, + plugins=plugins, + placeholder=placeholder, + ) + return TemplateResponse(request, "admin/cms/page/plugin/confirm_form.html", { + "data_bridge": { + "action": "clear_placeholder", + "deleted": True, + "placeholder_id": placeholder.pk, + } + }) + + if perms_needed or protected: + title = _("Cannot delete %(name)s") % {"name": obj_display} + else: + title = _("Are you sure?") + + context = { + "title": title, + "object_name": _("placeholder"), + "object": placeholder, + "deleted_objects": deleted_objects, + "perms_lacking": perms_needed, + "protected": protected, + "opts": opts, + "app_label": opts.app_label, + "delete_confirmation_max_display": getattr(self, "delete_confirmation_max_display", None), + # This view is only ever shown inside the CMS modal: render it without the + # admin chrome, like the other frontend editing views do. + "is_popup": True, + "is_popup_var": IS_POPUP_VAR, + } + request.current_app = self.admin_site.name + return TemplateResponse(request, "admin/cms/page/plugin/delete_confirmation.html", context) diff --git a/cms/admin/settingsadmin.py b/cms/admin/settingsadmin.py new file mode 100644 index 00000000..af639c62 --- /dev/null +++ b/cms/admin/settingsadmin.py @@ -0,0 +1,156 @@ +import copy +import json +from functools import update_wrapper +from urllib.parse import urlparse + +from django.contrib import admin +from django.db import transaction +from django.http import ( + HttpResponse, + HttpResponseBadRequest, + HttpResponseRedirect, +) +from django.http.request import QueryDict +from django.urls import Resolver404, path, re_path, resolve +from django.utils.decorators import method_decorator +from django.utils.html import conditional_escape +from django.utils.translation import override +from django.views.decorators.csrf import csrf_protect + +from cms.admin.forms import RequestToolbarForm +from cms.models import UserSettings +from cms.models.contentmodels import PageContent +from cms.utils.page import get_page_from_request +from cms.utils.page_permissions import user_can_view_page +from cms.utils.permissions import user_can_view_placeholder_source +from cms.utils.urlutils import admin_reverse + + +@admin.register(UserSettings) +class SettingsAdmin(admin.ModelAdmin): + + def get_urls(self): + def wrap(view): + def wrapper(*args, **kwargs): + return self.admin_site.admin_view(view)(*args, **kwargs) + + return update_wrapper(wrapper, view) + + info = self.model._meta.app_label, self.model._meta.model_name + + return [ + path('session_store/', self.session_store, name='%s_%s_session_store' % info), + path('cms-toolbar/', wrap(self.get_toolbar), name='%s_%s_get_toolbar' % info), + path('', wrap(self.change_view), name='%s_%s_change' % info), + re_path(r'^(.+)/$', wrap(self.change_view), name='%s_%s_change' % info), + ] + + @method_decorator(csrf_protect) + @transaction.atomic + def change_view(self, request, id=None): + model = self.model + try: + obj = model.objects.get(user=request.user) + except model.DoesNotExist: + return self.add_view(request) + return super().change_view(request, str(obj.pk)) + + def session_store(self, request): + """ + either POST or GET + POST should have a settings parameter + """ + if not request.user.is_staff: + return HttpResponse(json.dumps(""), + content_type="application/json") + if request.method == "POST": + request.session['cms_settings'] = conditional_escape(request.POST['settings']) + request.session.save() + return HttpResponse( + json.dumps(request.session.get('cms_settings', '')), + content_type="application/json" + ) + + def get_toolbar(self, request): + from cms.toolbar.toolbar import CMSToolbar + + form = RequestToolbarForm(request.GET or None) + + if not form.is_valid(): + return HttpResponseBadRequest('Invalid parameters') + + form_data = form.cleaned_data + cms_path = form_data.get('cms_path') or request.path_info + origin_url = urlparse(cms_path) + attached_obj = form_data.get('attached_obj') + if isinstance(attached_obj, PageContent): + current_page = attached_obj.page + else: + current_page = get_page_from_request(request, use_path=origin_url.path, clean_path=True) + + # The object id/type come straight from the client, so enforce an + # object-level view check before rendering a toolbar for it. Without + # this, any staff user could read the title/breadcrumb/edit URLs of + # pages on other sites or of view-restricted pages they cannot access. + # Deny with the same generic response as an unknown object so this does + # not become an existence oracle. + if isinstance(attached_obj, PageContent): + if not user_can_view_page(request.user, current_page): + return HttpResponseBadRequest('Invalid parameters') + elif attached_obj is not None: + if not user_can_view_placeholder_source(request.user, attached_obj): + return HttpResponseBadRequest('Invalid parameters') + elif current_page is not None and not user_can_view_page(request.user, current_page): + return HttpResponseBadRequest('Invalid parameters') + + data = QueryDict(query_string=origin_url.query, mutable=True) + placeholders = request.GET.getlist("placeholders[]") + + if placeholders: + data.setlist('placeholders[]', placeholders) + + request = copy.copy(request) + request.GET = data + request.current_page = current_page + try: + request.resolver_match = resolve(origin_url.path) + except Resolver404: + pass + request.toolbar = CMSToolbar(request, request_path=origin_url.path, _async=True) + request.toolbar.set_object(attached_obj or current_page) + return HttpResponse(request.toolbar.render()) + + def save_model(self, request, obj, form, change): + obj.user = request.user + obj.save() + + def response_post_save_change(self, request, obj): + # + # When the user changes his language setting, we need to do two things: + # 1. Change the language-prefix for the sideframed admin view + # 2. Reload the whole window so that the new language affects the + # toolbar, etc. + # + # To do this, we first redirect the sideframe to the correct new, URL, + # but we pass a GET param 'reload_window', which instructs JS on that + # page to strip (to avoid infinite redirection loops) that param then + # reload the whole window again. + # + with override(obj.language): + post_url = admin_reverse( + 'cms_usersettings_change', + args=[obj.id, ], + current_app=self.admin_site.name + ) + return HttpResponseRedirect(f"{post_url}?reload_window") + + def has_change_permission(self, request, obj=None): + if obj and obj.user == request.user: + return True + return False + + def get_model_perms(self, request): + """ + Return empty perms dict thus hiding the model from admin index. + """ + return {} diff --git a/cms/admin/useradmin.py b/cms/admin/useradmin.py new file mode 100644 index 00000000..bf2ce4c9 --- /dev/null +++ b/cms/admin/useradmin.py @@ -0,0 +1,171 @@ +from copy import deepcopy + +from django.contrib import admin +from django.contrib.admin import ModelAdmin, site +from django.contrib.admin.utils import unquote +from django.contrib.auth import get_user_model +from django.contrib.sites.models import Site +from django.core.exceptions import PermissionDenied +from django.utils.translation import gettext + +from cms.admin.forms import PageUserChangeForm, PageUserGroupForm +from cms.exceptions import NoPermissionsException +from cms.models import Page, PagePermission, PageUser, PageUserGroup +from cms.utils.compat.forms import UserAdmin +from cms.utils.conf import get_cms_setting +from cms.utils.permissions import ( + get_model_permission_codename, + get_subordinate_groups, + get_subordinate_users, + get_user_permission_level, +) + +user_model = get_user_model() +admin_class: type[ModelAdmin] = UserAdmin +for model, admin_instance in site._registry.items(): + if model == user_model: + admin_class = admin_instance.__class__ + + +class GenericCmsPermissionAdmin: + + def get_subordinates(self, user, site): + raise NotImplementedError + + def _has_change_permissions_permission(self, request): + """ + User is able to add/change objects only if he haves can change + permission on some page. + """ + site = Site.objects.get_current(request) + + try: + get_user_permission_level(request.user, site) + except NoPermissionsException: + return False + return True + + def get_form(self, request, obj=None, **kwargs): + form_class = super().get_form(request, obj, **kwargs) + form_class._current_user = request.user + return form_class + + def get_queryset(self, request): + queryset = super().get_queryset(request) + site = Site.objects.get_current(request) + user_ids = self.get_subordinates(request.user, site).values_list('pk', flat=True) + return queryset.filter(pk__in=user_ids) + + def has_add_permission(self, request): + has_model_perm = super().has_add_permission(request) + + if not has_model_perm: + return False + return self._has_change_permissions_permission(request) + + def has_change_permission(self, request, obj=None): + has_model_perm = super().has_change_permission(request, obj) + + if not has_model_perm: + return False + return self._has_change_permissions_permission(request) + + def has_delete_permission(self, request, obj=None): + has_model_perm = super().has_delete_permission(request, obj) + + if not has_model_perm: + return False + return self._has_change_permissions_permission(request) + + def has_view_permission(self, request, obj=None): + # For django 2.1 + # Default is to return True if user got `change` perm, but we have to + # get in consideration also cms permission system + return self.has_change_permission(request, obj) + + +class PageUserAdmin(GenericCmsPermissionAdmin, admin_class): + form = PageUserChangeForm + model = PageUser + + def get_subordinates(self, user, site): + return get_subordinate_users(user, site).values_list('pk', flat=True) + + def get_readonly_fields(self, request, obj=None): + fields = super().get_readonly_fields(request, obj) + + if not request.user.is_superuser: + # Non superusers can't set superuser status on + # their subordinates. + fields = list(fields) + ['is_superuser'] + return fields + + def has_change_permission(self, request, obj=None): + if obj is not None and obj.is_superuser and not request.user.is_superuser: + # Superusers are nobody's subordinate. get_queryset() already hides + # them, this guards the views that resolve an object by other means. + return False + return super().has_change_permission(request, obj) + + def has_delete_permission(self, request, obj=None): + if obj is not None and obj.is_superuser and not request.user.is_superuser: + return False + return super().has_delete_permission(request, obj) + + def user_change_password(self, request, id, form_url=''): + # Django's password view only checks has_change_permission(), so a + # subordinate check has to happen before anything else. + user = self.get_object(request, unquote(id)) + + if user is not None and user.is_superuser and not request.user.is_superuser: + raise PermissionDenied + return super().user_change_password(request, id, form_url) + + def save_model(self, request, obj, form, change): + if not change: + # By default set the staff flag to True + # when a PageUser is first created + obj.is_staff = True + # Set the created_by field to the current user + obj.created_by = request.user + super().save_model(request, obj, form, change) + + +class PageUserGroupAdmin(GenericCmsPermissionAdmin, admin.ModelAdmin): + form = PageUserGroupForm + list_display = ('name', 'created_by') + + fieldsets = [ + (None, {'fields': ('name',)}), + ] + + def get_fieldsets(self, request, obj=None): + """ + Nobody can grant more than he haves, so check for user permissions + to Page and User model and render fieldset depending on them. + """ + fieldsets = deepcopy(self.fieldsets) + perm_models = ( + (Page, gettext('Page permissions')), + (PageUser, gettext('User & Group permissions')), + (PagePermission, gettext('Page permissions management')), + ) + for i, perm_model in enumerate(perm_models): + fields = [] + model, title = perm_model + name = model.__name__.lower() + for key in ('add', 'change', 'delete'): + perm_code = get_model_permission_codename(model, action=key) + if request.user.has_perm(perm_code): + fields.append(f'can_{key}_{name}') + if fields: + fieldsets.insert(2 + i, (title, {'fields': (fields,)})) + return fieldsets + + def get_subordinates(self, user, site): + return get_subordinate_groups(user, site).values_list('pk', flat=True) + + +if get_cms_setting('PERMISSION'): + admin.site.register(PageUser, PageUserAdmin) + admin.site.register(PageUserGroup, PageUserGroupAdmin) diff --git a/cms/admin/utils.py b/cms/admin/utils.py new file mode 100644 index 00000000..3b5b8f60 --- /dev/null +++ b/cms/admin/utils.py @@ -0,0 +1,1192 @@ +import re +import typing +from copy import copy +from functools import partial +from urllib.parse import parse_qsl + +from django import forms +from django.contrib.admin import ModelAdmin +from django.contrib.admin.checks import ModelAdminChecks +from django.contrib.admin.utils import label_for_field +from django.contrib.admin.views.main import ChangeList +from django.contrib.auth import get_permission_codename +from django.contrib.sites.models import Site +from django.core import checks +from django.core.exceptions import ImproperlyConfigured, ValidationError +from django.db import models +from django.db.models import DateField, OuterRef, Subquery, functions +from django.db.models.functions import Cast +from django.forms import modelform_factory, modelformset_factory +from django.http import HttpRequest, HttpResponse +from django.shortcuts import get_object_or_404, redirect +from django.template.loader import render_to_string +from django.urls import NoReverseMatch, path +from django.utils.decorators import method_decorator +from django.utils.html import format_html, format_html_join +from django.utils.http import urlencode +from django.utils.safestring import mark_safe +from django.utils.translation import get_language, gettext_lazy as _ +from django.views.decorators.http import require_GET + +from cms.models.managers import ContentAdminManager +from cms.toolbar.utils import get_object_edit_url +from cms.utils import get_current_site, get_language_from_request +from cms.utils.helpers import is_editable_model +from cms.utils.i18n import get_language_dict, get_language_list, get_language_tuple +from cms.utils.urlutils import admin_reverse, static_with_version + + +class ChangeListActionsMixin(metaclass=forms.widgets.MediaDefiningClass): + """ChangeListActionsMixin is a mixin for the ModelAdmin class. It adds the ability to have + action buttons and a burger menu in the admin's change list view. Unlike actions that affect + multiple listed items the list action buttons only affect one item at a time. + + Use :meth:`~cms.admin.utils.ChangeListActionsMixin.get_action_list` to register actions and + :meth:`~cms.admin.utils.ChangeListActionsMixin.admin_action_button` to define the button + behavior. + + To activate the actions make sure ``"admin_list_actions"`` is in the admin classes + :attr:`~django.contrib.admin.ModelAdmin.list_display` property. + """ + + class Media: + js = ( + "admin/js/jquery.init.js", + "cms/js/admin/actions.js", + ) + css = {"all": (static_with_version("cms/css/cms.admin.css"),)} + + EMPTY_ACTION = mark_safe('') + + def get_actions_list( + self, + ) -> list[typing.Callable[[models.Model, HttpRequest], str]]: + """Collect list actions from implemented methods and return as list. Make sure to call + it's ``super()`` instance when overwriting:: + + class MyModelAdmin(admin.ModelAdmin): + ... + + def get_actions_list(self): + return super().get_actions_list() + [ + self.my_first_action, + self.my_second_action, + ] + """ + return [] + + def get_admin_list_actions(self, request: HttpRequest) -> typing.Callable[[models.Model], str]: + """Method to register the admin action menu with the admin's list display + + Usage (in your model admin):: + + class MyModelAdmin(AdminActionsMixin, admin.ModelAdmin): + ... + list_display = ("name", ..., "admin_list_actions") + + """ + + def list_actions(obj: models.Model) -> str: + """The name of this inner function must not change. css styling and js depends on it.""" + return format_html_join( + "", + "{}", + ((action(obj, request),) for action in self.get_actions_list()), + ) + + list_actions.short_description = _("Actions") + return list_actions + + def admin_list_actions(self, obj: models.Model) -> None: + raise ValueError( + 'ModelAdmin.display_list contains "admin_list_actions" as a placeholder for list action icons. ' + 'ChangeListActionsMixin is not loaded, however. If you implement "get_list_display" make ' + "sure it calls super().get_list_display." + ) # pragma: no cover + + def get_list_display(self, request: HttpRequest) -> tuple[str | typing.Callable[[models.Model], str], ...]: + list_display = super().get_list_display(request) + return tuple( + self.get_admin_list_actions(request) if item == "admin_list_actions" else item for item in list_display + ) + + @staticmethod + def admin_action_button( + url: str, + icon: str, + title: str, + burger_menu: bool = False, + action: str = "get", + disabled: bool = False, + keepsideframe: bool = True, + name: str = "", + ) -> str: + """Returns a generic button supported by the ChangeListActionsMixin. + + :param str url: Url of the action as string, typically generated by :func:`~cms.utils.urlutils.admin_reverse`_ + :param str icon: Name of the icon shown in the button or before the title in the burger menu. + :param str title: Human-readable string describing the action. + :param bool burger_menu: If ``True`` the action item will be part of a burger menu right og all buttons. + :param str action: Either ``"get"`` or ``"post"`` defining the html method used for the url. Some urls + require a post method. + :param bool disabled: If ``True`` the item is grayed out and cannot be selected. + :param bool keepsideframe: If ``False`` the side frame (if open) will be closed before executing the action. + :param str name: A string that will be added to the class list of the button/menu item: + ``cms-action-{{ name }}`` + + To add an action button to the change list use the following pattern in your admin class:: + + def my_custom_button(self, obj, request, disabled=False): + # do preparations, e.g., check permissions, get url, ... + url = admin_reverse("...", args=[obj.pk]) + if permissions_ok: + return self.admin_action_button( + url, "info", _("View usage"), disabled=disabled + ) + return "" # No button + + """ + return render_to_string( + "admin/cms/icons/base.html", + { + "url": url or "", + "icon": icon, + "method": action, + "disabled": disabled, + "keepsideframe": keepsideframe, + "title": title, + "burger_menu": burger_menu, + "name": name, + }, + ) + + +#: Prefix for content model fields to be added to the grouper admin and to the change form. +CONTENT_PREFIX = "content__" + + +class GrouperChangeListBase(ChangeList): + """Subclass ChangeList to disregard grouping fields get parameter as filter""" + + current_language: str | None = None + available_languages: tuple[tuple[str, str], ...] = () + _extra_grouping_fields: list[str] = [] + _content_pk_url_param: str | None = None + + def get_filters_params(self, params: dict | None = None): + lookup_params = super().get_filters_params(params) + # The content pk parameter selects a content object in the change view. It is preserved + # across the change form's submission and can therefore reach the changelist, where it is + # meaningless (the changelist always lists the latest content) - and would be rejected as + # an unknown filter. + for field in (*self._extra_grouping_fields, self._content_pk_url_param): + if field in lookup_params: + del lookup_params[field] + return lookup_params + + +class GrouperModelAdminChecks(ModelAdminChecks): + def _check_list_editable_item(self, obj, field_name, label): + """Check content model fields against the content model.""" + if field_name.startswith(CONTENT_PREFIX) and obj.content_model: + content_field_name = field_name[len(CONTENT_PREFIX) :] + if content_field_name == obj.grouper_field_name or content_field_name in obj.extra_grouping_fields: + return [ + checks.Error( + f"The value of '{label}' refers to '{field_name}', which cannot be edited " + "from the changelist.", + obj=obj.__class__, + id="admin.E125", + ) + ] + content_obj = copy(obj) + content_obj.model = obj.content_model + content_obj.list_display = tuple( + item[len(CONTENT_PREFIX) :] if isinstance(item, str) and item.startswith(CONTENT_PREFIX) else item + for item in obj.list_display + ) + if obj.list_display_links: + content_obj.list_display_links = tuple( + item[len(CONTENT_PREFIX) :] + if isinstance(item, str) and item.startswith(CONTENT_PREFIX) + else item + for item in obj.list_display_links + ) + return super()._check_list_editable_item(content_obj, content_field_name, label) + return super()._check_list_editable_item(obj, field_name, label) + + def _check_prepopulated_fields_value_item(self, obj, field_name, label): + """For `prepopulated_fields` equal to {"slug": ("content__title",)}, + `field_name` is "content__title".""" + + if field_name.startswith(CONTENT_PREFIX) and obj.content_model: + field_name = field_name[len(CONTENT_PREFIX) :] + obj = copy(obj) + obj.model = obj.content_model + return super()._check_prepopulated_fields_value_item(obj, field_name, label) + + 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. + """ + + if field_name.startswith(CONTENT_PREFIX) and obj.content_model: + field_name = field_name[len(CONTENT_PREFIX) :] + obj = copy(obj) + obj.model = obj.content_model + return super()._check_prepopulated_fields_key(obj, field_name, label) + + +class GrouperModelAdmin(ChangeListActionsMixin, ModelAdmin): + """Easy-to-use ModelAdmin for grouper models. Usage example:: + + class MyGrouperAdmin(GrouperModelAdmin): + # Add language tabs to change and add views + extra_grouping_fields = ("language",) + # Add grouper and content fields to change list view + # Add preview and settings action to change list view + list_display = ("field_in_grouper_model", "content__field_in_content_model", "admin_list_actions") + + # Automatically add content fields to change form (either the standard form or any form given + form = MyChangeForm + + ... + + Using ``GrouperModelAdmin`` instead of :class:`~django.contrib.admin.ModelAdmin` adds a view standard functions + to your admin class to make it more easily and more consistently customizable. + + 1. By adding ``"admin_list_actions"`` to the admin's :attr:`~django.contrib.admin.ModelAdmin.list_display` + attribute the change list view gets an action column as described by + :class:`~cms.admin.utils.ChangeListActionsMixin`. + 2. The admin class automatically creates a method for each field of the content model form (default: all fields) + named ``content__{content_model_field_name}``. Those fields can be used in + :attr:`~django.contrib.admin.ModelAdmin.list_display` just as grouper model fields. + Currently, they are not sortable, however. + 3. The change form is amended with exactly those content fields also named ``content__{content_model_field_name}``. + As a result, the change form can (but does not have to) contain both grouper model fields and content model + fields. The admin takes care of creating the necessary model instances. + """ + + #: The name of the ``ForeignKey`` in the content model that points to the grouper instance. If not given + #: it is assumed to be the snake case name of the grouper model class, e.g. ``"blog_post"`` for the + #: ``"BlogPost"`` model. + grouper_field_name: str | None = None + #: Indicates additional grouping fields such as ``"language"`` for example. Additional grouping fields create + #: tabs in the change form and a dropdown menu in the change list view. + #: + #: .. note:: + #: + #: All fields serving as extra grouping fields must be part of the admin's + #: :attr:`~django.contrib.admin.ModelAdmin.fieldsets` setting for ``GrouperModelAdmin`` to work properly. + #: In the change form the fields will be invisible. + extra_grouping_fields: tuple[str, ...] = () + #: The content model class to be used. Defaults to the model class named like the grouper model class + #: plus ``"Content"`` at the end from the same app as the grouper model class, e.g., ``BlogPostContent`` if + #: the grouper is ``BlogPost``. + content_model: type[models.Model] | None = None + #: Name of the inverse relation field giving the set of content models belonging to a grouper model. Defaults to + #: the first field found as an inverse relation. If you have more than one inverse relation please make sure + #: to specify this field. An example would be if the blog post content model contained a many-to-many + #: relationship to the grouper model for, say, related blog posts. + content_related_field: str | None = None + + change_list_template = "admin/cms/grouper/change_list.html" + change_form_template = "admin/cms/grouper/change_form.html" + checks_class = GrouperModelAdminChecks + + class Media: + js = ( + "admin/js/jquery.init.js", + "cms/js/admin/language-selector.js", + ) + + EMPTY_CONTENT_VALUE = _("Empty content") + LC_SORTED_FIELDS = (models.CharField,) + CONTENT_OBJ_PK_ANNOTATION = "_content_obj_pk" + + _content_content_type = None + + #: Name of the GET parameter that selects a specific content object (by primary key) to be shown + #: in the change view instead of the latest content. See :meth:`get_urls`. + content_pk_url_param = "cms_content" + #: Holds the specific content object requested via :attr:`content_pk_url_param` for the current request. + _requested_content_obj: models.Model | None = None + + def __init__(self, model, admin_site): + self._content_subquery_fields = [] + + super().__init__(model, admin_site) + + # Identify content model + if self.content_model is None: # Did the Admin class specify a content model? + # If not, try identifying using the naming convention {GrouperName}Content + from django.apps import apps + + self.content_model = apps.get_model(f"{self.opts.app_label}.{self.model.__name__}Content") + + # Add an admin manager if the content model does not have one. + if not hasattr(self.content_model, "admin_manager"): + self.content_model.add_to_class("admin_manager", ContentAdminManager()) + + # Find name of related field + if not self.content_related_field: + for related_object in model._meta.related_objects: + if related_object.related_model is self.content_model: + self.content_related_field = related_object.get_accessor_name() + break + else: + raise ImproperlyConfigured(f"Related field for grouper model {model.__name__} not found") + + # Set grouper field name to snake case grouper model name if not given explicitly + if not self.grouper_field_name: + self.grouper_field_name = re.sub("(?!^)([A-Z]+)", r"_\1", self.model.__name__).lower() # To snake case + # Auto-generate ModelForm for Grouper if not specified (using GrouperAdminFormMixin) + if not issubclass(self.form, _GrouperAdminFormMixin): + self.form = type( + "AutoGeneratedGrouperAdminForm", + (GrouperAdminFormMixin(self.content_model), self.form), + dict(), + ) + + # Generate accessor functions for content model fields + content_field_names = modelform_factory(self.content_model, fields="__all__").base_fields.keys() + for content_field in content_field_names: + if ( + not hasattr(self, CONTENT_PREFIX + content_field) + and content_field != self.grouper_field_name + and content_field not in self.extra_grouping_fields + ): + if CONTENT_PREFIX + content_field in self.list_display: + # Identify content fields in list_display to annotate to queryset + self._content_subquery_fields.append(content_field) + setattr( + self, + CONTENT_PREFIX + content_field, + self._getter_factory(content_field), + ) + + def _getter_factory(self, field: str) -> typing.Callable[[models.Model], typing.Any]: + """Creates a getter function with ``short_description``, ``admin_order_field``, and ``boolean`` + properties suitable for the :attr:`~django.contrib.admin.ModelAdmin.list_display` field.""" + + def getter(obj): + return self.get_content_field(obj, field) + + getter.short_description = label_for_field(field, self.content_model) + if field in self._content_subquery_fields: + getter.admin_order_field = CONTENT_PREFIX + field + if isinstance(self.content_model._meta.get_field(field), self.LC_SORTED_FIELDS): + getter.admin_order_field += "__lc" + getter.boolean = isinstance(self.content_model._meta.get_field(field), models.BooleanField) + if not getter.boolean: + # First non-boolean field will show empty content value by default. + for display in getattr(self, "list_display", ()): + if display == CONTENT_PREFIX + field: + getter.empty_value_display = self.EMPTY_CONTENT_VALUE + if display.startswith(CONTENT_PREFIX): + break + return getter + + def get_content_field( + self, + obj: models.Model, + field_name: str, + request: HttpRequest | None = None, + ) -> typing.Any: + """Retrieves the content of a field stored in the content model. If request is given extra + grouping fields are processed before.""" + if hasattr(obj, CONTENT_PREFIX + field_name): + # Annotated? + return getattr(obj, CONTENT_PREFIX + field_name) + if request: + self.get_grouping_from_request(request) + content_obj = self.get_content_obj(obj) + return getattr(content_obj, field_name) if content_obj else None + + def _get_annotation(self): + contents = self.content_model.admin_manager.latest_content( + **{self.grouper_field_name: OuterRef("pk"), **self.current_content_filters} + ) + annotation = { + self.CONTENT_OBJ_PK_ANNOTATION: Subquery(contents.values("pk")[:1]), + } + for field_name in self._content_subquery_fields: + annotation[CONTENT_PREFIX + field_name] = Subquery(contents.values(field_name)[:1]) + field = self.content_model._meta.get_field(field_name) + if isinstance(field, DateField): + # MySql needs an explicit cast, or it will return a string and not a date object + annotation[CONTENT_PREFIX + field_name] = Cast( + annotation[CONTENT_PREFIX + field_name], field.__class__() + ) + if isinstance(field, self.LC_SORTED_FIELDS): + # Sort CharFields independently of case + annotation[CONTENT_PREFIX + field_name + "__lc"] = functions.Lower( + Subquery(contents.values(field_name)[:1]) + ) + return annotation + + def can_change_content(self, request, content_obj): + return self.get_content_readonly_message(request, content_obj) is None + + def get_content_readonly_message(self, request, content_obj): + """Return ``None`` if the content can be changed, otherwise a human-readable + message explaining why it is read-only. + + Permissions are owned by django CMS; editability (and its explanation) is + owned by the content object's ``is_editable`` method. That method may return + either a plain ``bool`` or a "rich bool" (e.g. from djangocms-versioning) that + is falsy but also carries the reason(s) the editability checks failed via + ``str()``. Plain bools carry no reason, so a generic message is used. + """ + opts = self.content_model._meta + perm = f"{opts.app_label}.{get_permission_codename('change' if content_obj else 'add', opts)}" + if not request.user.has_perm(perm, content_obj): + return _("You do not have permission to change this content.") + editable = getattr(content_obj, "is_editable", lambda *_: True)(request) + if editable: + return None + # ``editable`` is falsy: a plain bool offers no explanation, while a rich bool + # exposes the reason(s) the checks failed via ``str()``. + return " " if isinstance(editable, bool) else str(editable) # " " is empty but truthy + + def get_queryset(self, request: HttpRequest) -> models.QuerySet: + """Annotates content fields with the name "content__{field_name}" to the grouper queryset if + for all content fields that appear in the""" + qs = super().get_queryset(request).annotate(**self._get_annotation()) + prefetch = models.Prefetch( + self.content_related_field, + queryset=self.content_model.admin_manager.latest_content(), + to_attr="_admin_prefetch_cache", + ) + return qs.prefetch_related(prefetch) + + def get_language_from_request(self, request: HttpRequest) -> str: + """Hook for get_language_from_request which by default uses the cms utility""" + return get_language_from_request(request) + + def get_grouping_from_request(self, request: HttpRequest) -> None: + """Retrieves the current grouping selectors from the request""" + for field in self.extra_grouping_fields: + if hasattr(self, f"get_{field}_from_request"): + value = getattr(self, f"get_{field}_from_request")(request) + else: + raise ImproperlyConfigured( + f"{self.__class__.__name__} lacks method 'get_{field}_from_request(request)' to work with " + f"extra_grouping_fields={self.extra_grouping_fields}" + ) + if value != getattr(self, field, None): + setattr(self, field, value) + + # A specific content object may be requested by its primary key. If so, show exactly that + # content object (which may not be the latest one) and align the grouping fields with it so + # that the form, its hidden fields, and the edit URLs stay consistent. + self._requested_content_obj = self.get_requested_content_obj(request) + if self._requested_content_obj is not None: + for field in self.extra_grouping_fields: + setattr(self, field, getattr(self._requested_content_obj, field)) + + def get_requested_content_obj(self, request: HttpRequest) -> models.Model | None: + """Returns the content object requested by primary key via :attr:`content_pk_url_param`, or + ``None`` if no (valid) content object was requested. Uses the ``admin_manager`` so that + non-current content objects (e.g. older versions) can be shown.""" + content_pk = request.GET.get(self.content_pk_url_param) + if not content_pk: + return None + try: + return self.content_model.admin_manager.filter(pk=content_pk).first() + except (ValueError, TypeError, ValidationError): + # Invalid primary key for the content model: ignore and fall back to the latest content. + return None + + @property + def current_content_filters(self) -> dict[str, typing.Any]: + """Filters needed to get the correct content model instance""" + return { + field: getattr(self, field, self.get_extra_grouping_field(field)) for field in self.extra_grouping_fields + } + + def get_language(self) -> str: + """Hook on how to get the current language. By default, if it is set as a + property, use the property, otherwise let Django provide it.""" + return getattr(self, "language", get_language()) + + def get_language_tuple(self, site: Site | None = None) -> tuple[tuple[str, str], ...]: + """Hook on how to get all available languages for the language selector.""" + return get_language_tuple(site_id=site.pk if site else None) + + def get_extra_grouping_field(self, field): + """Retrieves the current value for grouping fields - by default by calling self.get_, e.g., + self.get_language(). If those are not implemented, this method will fail.""" + if callable(getattr(self, f"get_{field}", None)): + return getattr(self, f"get_{field}")() + raise ValueError("Cannot get extra grouping field") + + def get_changelist(self, request: HttpRequest, **kwargs) -> type: + """Allow for extra grouping fields as a non-filter parameter""" + return type( + GrouperChangeListBase.__name__, + (GrouperChangeListBase,), + dict( + _extra_grouping_fields=self.extra_grouping_fields, + _content_pk_url_param=self.content_pk_url_param, + ), + ) + + def get_urls(self) -> list: + """Adds a change URL for the content model that redirects to the grouper change view showing + the requested content object. + + This gives every content object a stable admin change URL (``admin:__change``) + that resolves through the unified grouper change form - without having to register a separate + admin for the content model. If the content model already has its own admin (and hence already + provides that URL name), the declaration is skipped so the existing admin keeps precedence. + """ + urls = super().get_urls() + if not self.admin_site.is_registered(self.content_model): + opts = self.content_model._meta + urls = [ + path( + "content//change/", + self.admin_site.admin_view(self.content_change_redirect_view), + name=f"{opts.app_label}_{opts.model_name}_change", + ), + ] + urls + return urls + + @method_decorator(require_GET) + def content_change_redirect_view(self, request: HttpRequest, object_id: str) -> HttpResponse: + """Redirects from a content object's change URL to the grouper change view, selecting exactly + that content object via the :attr:`content_pk_url_param` GET parameter. + + Limited to ``GET``: this is a navigation entry point only. The editable form lives at the + grouper change view (which is where it is submitted), so a non-GET request here would + otherwise be silently turned into a ``GET`` by the redirect and its payload discarded. + """ + content_obj = get_object_or_404(self.content_model.admin_manager.all(), pk=object_id) + grouper = getattr(content_obj, self.grouper_field_name) + opts = grouper._meta + url = admin_reverse(f"{opts.app_label}_{opts.model_name}_change", args=(grouper.pk,)) + params = {field: getattr(content_obj, field) for field in self.extra_grouping_fields} + params[self.content_pk_url_param] = content_obj.pk + return redirect(f"{url}?{urlencode(params)}") + + def get_changelist_instance(self, request: HttpRequest) -> GrouperChangeListBase: + """Update grouping field properties and get changelist instance""" + self.get_grouping_from_request(request) + cl = super().get_changelist_instance(request) + cl.current_language = self.get_language() + if "language" in self.extra_grouping_fields: + cl.available_languages = self.get_language_tuple(site=get_current_site(request)) + return cl + + def changeform_view( + self, + request: HttpRequest, + object_id: str | None = None, + form_url: str = "", + extra_context: dict = None, + ) -> HttpResponse: + """Update grouping field properties for both add and change views""" + self.get_grouping_from_request(request) + return super().changeform_view( + request, + object_id, + form_url, + { + **(extra_context or {}), + **self.get_extra_context(request, object_id=object_id), + }, + ) + + def delete_view( + self, + request: HttpRequest, + object_id: str, + extra_context: dict | None = None, + ) -> HttpResponse: + """Update grouping field properties for delete view""" + self.get_grouping_from_request(request) + return super().delete_view(request, object_id, extra_context) + + def history_view( + self, + request: HttpRequest, + object_id: str, + extra_context: dict | None = None, + ) -> HttpResponse: + """Update grouping field properties for history view""" + self.get_grouping_from_request(request) + return super().history_view(request, object_id, extra_context) + + def response_change(self, request: HttpRequest, obj: models.Model) -> HttpResponse: + """Drop the content selection unless the user stays in the change form: only "save and + continue editing" returns to the very content object that was just edited. Every other + target (the changelist, the add view) shows or creates the latest content, so the + parameter would only stick to their urls.""" + if "_continue" not in request.POST: + self._requested_content_obj = None + return super().response_change(request, obj) + + def get_preserved_filters(self, request: HttpRequest) -> str: + """Always preserve grouping get parameters! Also, add them to changelist filters: + * Save and continue will keep the grouping parameters + * Save and returning to changelist will keep the grouping parameters + """ + preserved_filters = dict(parse_qsl(super().get_preserved_filters(request))) + # Extra grouping fields from property + grouping_filters = {} + for field in self.extra_grouping_fields: + value = getattr(self, field, None) + if "field" not in preserved_filters: + grouping_filters[field] = value + preserved_filters.update(grouping_filters) + if "_changelist_filters" not in preserved_filters: + preserved_filters["_changelist_filters"] = urlencode(grouping_filters) + # Keep a specifically requested content object selected: the change form is submitted to the + # url built from the preserved filters, and "save and continue editing" returns to it. Without + # the parameter both would silently fall back to the latest content object - and saving would + # write the form's data to a different content object than the one being edited. + # It is deliberately not part of "_changelist_filters": the changelist always lists the + # latest content. + if self._requested_content_obj is not None: + preserved_filters[self.content_pk_url_param] = self._requested_content_obj.pk + return urlencode(preserved_filters) + + def get_extra_context(self, request: HttpRequest, object_id: str | None = None) -> dict[str, typing.Any]: + """Provide the grouping fields to the change view.""" + if object_id: + # Instance provided? Get corresponding postconent + obj = get_object_or_404(self.model, pk=object_id) + content_instance = self.get_content_obj(obj) + title = _("%(object_name)s Properties") % dict(object_name=obj._meta.verbose_name.capitalize()) + else: + obj = None + content_instance = None + title = _("Add new %(object_name)s") % dict(object_name=self.model._meta.verbose_name) + + if content_instance: + subtitle = str(content_instance) + else: + subtitle = _("Add content") + + # Whether the content object may be changed is independent of the grouping fields: + # it has to be in the context for every grouper admin, or the change form cannot + # tell an editable content object from a read-only one. Gate on ``can_change_content``, + # the same predicate ``get_readonly_fields`` uses, so the note and the actually + # read-only fields cannot disagree; the message only explains a denial. + can_change_content = self.can_change_content(request, content_instance) + readonly_message = None if can_change_content else self.get_content_readonly_message(request, content_instance) + + extra_context = { + "changed_message": _( + 'Content for the current language has been changed. Click "Cancel" to ' + 'return to the form and save changes. Click "OK" to discard changes.' + ), + "title": title, + "content_instance": content_instance, + "subtitle": subtitle, + "content_readonly_message": readonly_message, + "can_change_content_obj": can_change_content, + } + + """Provide the grouping fields to edit""" + if "language" in self.extra_grouping_fields: + language = self.language + if obj: + filled_languages = self.get_content_objects(obj).values_list("language", flat=True).distinct() + else: + filled_languages = [] + + site = get_current_site(request) + if self.is_latest_content_obj(content_instance, obj): + # Only offer the language selector for the latest content. Switching the + # language always navigates to the latest content of the target language, + # so for an older content object switching languages back and forth would + # silently bring up a different (the latest) content object - confusing UX. + extra_context["language_tabs"] = self.get_language_tuple(site=site) + extra_context["language"] = language + extra_context["filled_languages"] = filled_languages + if content_instance is None: + subtitle = _("Add %(language)s content") % dict( + language=get_language_dict(site_id=site.pk).get(self.language) + ) + extra_context["subtitle"] = subtitle + + # TODO: Add context for other grouping fields to be shown as a dropdown + return extra_context + + def get_form(self, request: HttpRequest, obj: models.Model | None = None, **kwargs) -> type: + """Adds the language from the request to the form class""" + self.get_grouping_from_request(request) # direct entry point from django admin + form_class = super().get_form(request, obj, **kwargs) + form_class = type(form_class)( + form_class.__name__, + (form_class,), + {"_admin": self, "_request": request}, + ) + + for field in self.extra_grouping_fields: + form_class.base_fields[CONTENT_PREFIX + field].widget = forms.HiddenInput() + + if (getattr(form_class._meta, "fields", None) or "__all__") != "__all__": + for field in self.extra_grouping_fields: + if CONTENT_PREFIX + field not in form_class._meta.fields: + raise ImproperlyConfigured( + f"{self.__class__.__name__} needs to include all " + f"extra_grouping_fields={self.extra_grouping_fields} in its admin. {field} is missing." + ) + return form_class + + def get_changelist_form(self, request: HttpRequest, **kwargs) -> type: + """Return a grouper form capable of editing grouper and content fields.""" + self.get_grouping_from_request(request) + content_id_field = forms.ModelChoiceField( + queryset=self.content_model.admin_manager.all(), + required=False, + widget=forms.HiddenInput(), + ) + editable_content_fields = { + field for field in self.list_editable if field.startswith(CONTENT_PREFIX) + } + form_attributes = { + "_admin": self, + "_request": request, + "_content_object_id": content_id_field, + } + form_attributes.update( + { + CONTENT_PREFIX + field: None + for field in self.form._content_fields + if CONTENT_PREFIX + field not in editable_content_fields + } + ) + form_class = type(self.form)( + self.form.__name__, + (self.form,), + form_attributes, + ) + return super().get_changelist_form(request, form=form_class, **kwargs) + + def get_changelist_formset(self, request: HttpRequest, **kwargs) -> type: + """Include the hidden content identity in the changelist formset.""" + defaults = { + "formfield_callback": partial(self.formfield_for_dbfield, request=request), + **kwargs, + } + return modelformset_factory( + self.model, + self.get_changelist_form(request), + extra=0, + fields=(*self.list_editable, "_content_object_id"), + **defaults, + ) + + # Admin list actions defined below: + # * View button that takes the user to the preview endpoint of the content model + # * Settings button that lets the user change the grouper AND the content model + # using one form + def _get_view_action(self, obj: models.Model, request: HttpRequest) -> str: + if not is_editable_model(self.content_model): + return "" + + view_url = self.view_on_site(obj) + if view_url: + return self.admin_action_button( + url=view_url, + icon="view", + title=_("Preview"), + disabled=not view_url, + keepsideframe=False, + name="view", + ) + return "" + + def _has_content(self, obj: models.Model) -> bool: + if self._is_content_obj(obj): + return True # pragma: no cover + if hasattr(obj, self.CONTENT_OBJ_PK_ANNOTATION): + return getattr(obj, self.CONTENT_OBJ_PK_ANNOTATION) is not None + return self.get_content_obj(obj) is not None # pragma: no cover + + def _get_settings_action(self, obj: models.Model, request: HttpRequest) -> str: + edit_url = admin_reverse(f"{obj._meta.app_label}_{obj._meta.model_name}_change", args=(obj.pk,)) + edit_url += f"?{urlencode(self.current_content_filters)}" + has_content = self._has_content(obj) + return self.admin_action_button( + url=edit_url, + icon="settings" if has_content else "plus", + title=_("Settings") if has_content else _("Add content"), + disabled=not edit_url, + name="settings", + ) + + def get_actions_list(self) -> list: + return [self._get_view_action, self._get_settings_action] + + def endpoint_url(self, admin: str, obj: models.Model) -> str: + if self._is_content_obj(obj): + cls = obj.__class__ + pk = obj.pk + else: + content = self.get_content_obj(obj) + cls = content.__class__ + pk = content.pk + + if self._content_content_type is None: + from django.contrib.contenttypes.models import ContentType + + self._content_content_type = ContentType.objects.get_for_model(cls).pk + try: + return admin_reverse(admin, args=[self._content_content_type, pk]) + except NoReverseMatch: + return "" + + def _is_content_obj(self, obj: models.Model) -> bool: + return isinstance(obj, self.content_model) + + def _get_content_queryset(self, obj: models.Model) -> models.QuerySet: + return getattr(obj, self.content_related_field)(manager="admin_manager").latest_content() + + def get_content_obj(self, obj: models.Model | None) -> models.Model | None: + if obj is None or self._is_content_obj(obj): + return obj + + # A specific content object was requested by primary key? Show exactly that object as long + # as it belongs to the grouper being edited (instead of the latest content). + requested = self._requested_content_obj + if requested is not None and getattr(requested, f"{self.grouper_field_name}_id", None) == obj.pk: + return requested + + if not hasattr(obj, "_grouper_admin_content_obj_cache"): + # Check prefetch cache + if hasattr(obj, "_admin_prefetch_cache"): + for content_obj in obj._admin_prefetch_cache: + if all( + getattr(content_obj, key, None) == value for key, value in self.current_content_filters.items() + ): + obj._grouper_admin_content_obj_cache = content_obj + return content_obj + obj._grouper_admin_content_obj_cache = None # no hit + return None + obj._grouper_admin_content_obj_cache = ( + self._get_content_queryset(obj).filter(**self.current_content_filters).first() + ) + return obj._grouper_admin_content_obj_cache + + def get_content_objects(self, obj: models.Model | None) -> models.QuerySet: + if obj is None: + return None + if self._is_content_obj(obj): + # Already content object? First get grouper and then all content objects + return self.get_content_objects(self.get_grouper_obj(obj)) + return self._get_content_queryset(obj) + + def is_latest_content_obj(self, content_obj: models.Model | None, obj: models.Model | None = None) -> bool: + """Hook to decide whether ``content_obj`` is the latest content for its grouper and the + current grouping fields (e.g. language). + + By default :meth:`get_content_obj` returns the latest content, so this is always ``True``. + Versioning packages, however, may show an older content object in the change form. In that + case switching grouping fields (such as the language) navigates to the latest content of the + target value, so switching back and forth would not return to the same content object. The + change form therefore hides the grouping selectors when an older content object is shown. + """ + if content_obj is None: + # The add view always edits the (still non-existing) latest content. + return True + latest = self.get_content_objects(obj or content_obj).filter(**self.current_content_filters).first() + return latest is None or latest.pk == content_obj.pk + + def clear_content_cache(self) -> None: + # Content objects are now stored in the object, no cache clear for admin class necessary + pass + + def get_grouper_obj(self, obj: models.Model) -> models.Model: + """Get the admin object. If obj is a content object assume that the admin object + resides in the field named after the admin model. The admin model name must be + the same as the content model name minus "Content" at the end.""" + if self._is_content_obj(obj): + field_name = obj.__class__.__name__[-7:].lower() + return getattr(obj, field_name) + return obj + + def view_on_site(self, obj: models.Model) -> str | None: + # Adds the View on Site button to the admin + content_obj = self.get_content_obj(obj) + if content_obj is not None and is_editable_model(content_obj.__class__): + # Try getting the language from the content object + return get_object_edit_url(content_obj, language=getattr(content_obj, "language", None)) + return None + + def get_readonly_fields(self, request: HttpRequest, obj: models.Model | None = None): + """Allow access to content fields to be controlled by a method "can_change_content": + This allows versioned content to be protected if needed""" + # First, get read-only fields for grouper + fields = super().get_readonly_fields(request, obj) + content_obj = self.get_content_obj(obj) + if not self.can_change_content(request, content_obj): + # Only allow content object fields to be edited if user can change them + fields = [ + *fields, + *( + CONTENT_PREFIX + field + for field in self.form._content_fields + if field != self.grouper_field_name and field not in self.extra_grouping_fields + ), + ] + return fields + + def get_prepopulated_fields(self, request: HttpRequest, obj: models.Model | None = None) -> dict: + """Drop prepopulated entries whose key is read-only. + + ``AdminForm`` looks up every prepopulated key in the rendered form, so an entry + keyed on a field that ``get_readonly_fields`` returns would raise ``KeyError``. + Filter dynamically against the class attribute so subclasses can keep declaring + ``prepopulated_fields`` the normal way. + """ + prepopulated_fields = super().get_prepopulated_fields(request, obj) + if not prepopulated_fields: + return prepopulated_fields + readonly = set(self.get_readonly_fields(request, obj)) + return {key: value for key, value in prepopulated_fields.items() if key not in readonly} + + def save_model(self, request: HttpRequest, obj: models.Model, form: forms.Form, change: bool) -> None: + """Save/create both grouper and content object""" + super().save_model(request, obj or form.instance, form, change) + if not hasattr(form, "_content_fields"): + return + content_dict = { + field: form.cleaned_data[CONTENT_PREFIX + field] + for field in form._content_fields + if CONTENT_PREFIX + field in form.cleaned_data + } + if not content_dict: + return + if form._content_instance is None or form._content_instance.pk is None: + content_dict[self.grouper_field_name] = form.instance + content_dict.update(self.current_content_filters) + if hasattr(form._content_model.objects, "with_user"): + # Create new using with_user syntax if available ... + form._content_model.objects.with_user(request.user).create(**content_dict) + else: # pragma: no cover + # ... without otherwise + form._content_model.objects.create(**content_dict) + elif self.can_change_content(request, form._content_instance): + # Update content instance (only if can_change_content allows it) + for key, value in content_dict.items(): + setattr(form._content_instance, key, value) + # Finally force grouper field to point to grouper + setattr(form._content_instance, self.grouper_field_name, obj) + form._content_instance.save() + + def get_search_fields(self, request): + """Return search fields for either grouper model or content model""" + content_search_fields = [] + grouper_search_fields = [] + for field_name in self.search_fields: + if field_name.startswith(CONTENT_PREFIX): + content_search_fields.append(field_name[len(CONTENT_PREFIX) :]) + else: + grouper_search_fields.append(field_name) + + if getattr(request, "_content_fields", False): + return content_search_fields + + return grouper_search_fields + + def get_search_results(self, request, queryset, search_term): + grouper_search_result, may_have_duplicate_grouper = super().get_search_results(request, queryset, search_term) + + search_result_from_content, may_have_duplicate_content = self._get_content_search_result( + request, queryset, search_term + ) + + return grouper_search_result | search_result_from_content, ( + may_have_duplicate_grouper & may_have_duplicate_content + ) + + def _get_content_search_result(self, request, queryset, search_term): + """Get search results from content model""" + try: + # Set flag on request object to get the content search fields. `get_search_results` will call + # `get_search_fields` to get the content search fields. + request._content_fields = True + content_queryset = self.content_model.admin_manager.all() + if self.get_search_fields(request): + content_search_result, __ = super().get_search_results(request, content_queryset, search_term) + else: + content_search_result = self.content_model.admin_manager.none() + search_result_from_content = queryset.filter( + id__in=content_search_result.values_list(f"{self.grouper_field_name}_id", flat=True) + ) + finally: + request._content_fields = False + return search_result_from_content, False + + +class _ContentIdentityWidget(forms.Widget): + """Render a content field together with its changelist content identity.""" + + def __init__(self, widget, content_field_name): + super().__init__(attrs=widget.attrs) + self.widget = widget + self.content_field_name = content_field_name + self.content_object_id = None + + @property + def media(self): + return self.widget.media + + def id_for_label(self, id_): + return self.widget.id_for_label(id_) + + def value_from_datadict(self, data, files, name): + return self.widget.value_from_datadict(data, files, name) + + def value_omitted_from_data(self, data, files, name): + return self.widget.value_omitted_from_data(data, files, name) + + def render(self, name, value, attrs=None, renderer=None): + field = self.widget.render(name, value, attrs=attrs, renderer=renderer) + prefix = name[: -len(self.content_field_name)] + identity = forms.HiddenInput().render( + f"{prefix}_content_object_id", + self.content_object_id, + renderer=renderer, + ) + return format_html("{}{}", field, identity) + + +class _GrouperAdminFormMixin: + _content_fields: list = [] + + def __init__(self, *args, **kwargs): + if not hasattr(self, "_admin"): + raise ValueError( + "GrouperModelFormMixin forms can only be instantiated if the class attribute '_admin' " + "has been set and points to the instantiating admin instance." + ) + + if "instance" in kwargs and kwargs["instance"]: + # Instance provided? Initialize fields from content model + instance = kwargs["instance"] + self._content_instance = self._admin.get_content_obj(instance) + if self._content_instance: + kwargs["initial"] = { + **{ + CONTENT_PREFIX + field: getattr(self._content_instance, field) + for field in self._content_fields + if CONTENT_PREFIX + field in self.base_fields + }, + **kwargs.get("initial", {}), + } + if "_content_object_id" in self.base_fields: + kwargs["initial"]["_content_object_id"] = self._content_instance + else: + self._content_instance = None + + # set values for grouping fields + kwargs["initial"] = { + **{CONTENT_PREFIX + key: value for key, value in self._admin.current_content_filters.items()}, + **kwargs.get("initial", {}), + } + + # The actual init + super().__init__(*args, **kwargs) + + editable_content_fields = [ + field for field in self.fields if field.startswith(CONTENT_PREFIX) + ] + if "_content_object_id" in self.fields and editable_content_fields: + field_name = editable_content_fields[0] + widget = _ContentIdentityWidget(self.fields[field_name].widget, field_name) + widget.content_object_id = self._content_instance.pk if self._content_instance else None + self.fields[field_name].widget = widget + + # Hide grouper foreign key + grouper_field_name = CONTENT_PREFIX + self._admin.grouper_field_name + if grouper_field_name in self.fields: + self.fields[grouper_field_name].widget = forms.HiddenInput() + # Will be set on admin model save + self.fields[grouper_field_name].required = False + self.update_labels(self._content_fields) + + def update_labels(self, fields: list[str]) -> None: + """Adds a language indicator to field labels""" + if "language" in self._admin.extra_grouping_fields: + site = get_current_site(self._request) + language_dict = get_language_dict(site_id=site.pk if site else None) + language_postfix = f" ({language_dict[self._admin.language]})" + for field in fields: + if CONTENT_PREFIX + field in self.fields: + # Fields contained in field list? + self.fields[CONTENT_PREFIX + field].label += language_postfix + else: + # Get default from content model + if self._meta.labels is None: + self._meta.labels = {} + self._meta.labels.setdefault( + CONTENT_PREFIX + field, + label_for_field(field, self._admin.content_model) + language_postfix, + ) + + def clean(self) -> dict: + site = get_current_site(self._request) + if f"{CONTENT_PREFIX}language" in self.cleaned_data and self.cleaned_data[ + f"{CONTENT_PREFIX}language" + ] not in get_language_list(site_id=site.pk): + raise ValidationError( + _("Invalid language %(value)s. This form cannot be processed. Try changing languages."), + params=dict(value=self.cleaned_data.get("language", _(""))), + code="invalid-language", + ) + cleaned_data = super().clean() + if "_content_object_id" in cleaned_data: + content_obj = cleaned_data["_content_object_id"] + if content_obj is not None: + grouper_id = getattr(content_obj, f"{self._admin.grouper_field_name}_id") + grouping_matches = all( + getattr(content_obj, field) == value + for field, value in self._admin.current_content_filters.items() + ) + if grouper_id != self.instance.pk or not grouping_matches: + raise ValidationError(_("The selected content does not match this object and grouping.")) + self._content_instance = content_obj + if any(field.startswith(CONTENT_PREFIX) for field in self.changed_data) and not self._admin.can_change_content( + self._request, content_obj + ): + raise ValidationError(_("You do not have permission to change this content.")) + return cleaned_data + + +class GrouperAdminFormMixin: + """Actually a factory class that creates the GrouperAdminFormMixin. Pass the Model or ModelForm as a + parameter:: + + class MyGrouperModelForm(GrouperModelFormMixin(ContentModel), forms.ModelForm): + model = GrouperModel + ... + + .. info:: + + For most cases you will not need to use this mixin. :class:`~cms.admin.utils.GrouperModelAdmin` automatically + adds the mixin to the form provided to it or the standard :class:`~django.forms.ModelForm`. As a results, you + can just use a subclass of :class:`~django.forms.ModelForm` for :class:`~cms.admin.utils.GrouperModelAdmin`. + + .. warning:: + + This mixin only works when used together with :class:`~cms.admin.utils.GrouperModelAdmin`. + """ + + def __new__(cls, content_model: models.base.ModelBase) -> type: + model_form = modelform_factory(content_model, fields="__all__") + base_fields = {CONTENT_PREFIX + key: value for key, value in model_form.base_fields.items()} + return forms.forms.DeclarativeFieldsMetaclass( + GrouperAdminFormMixin.__name__, + (_GrouperAdminFormMixin,), + { + **base_fields, # inherit the content model form's fields + "_content_model": content_model, # remember the model and + "_content_fields": model_form.base_fields.keys(), # fields that come from the content form + }, + ) diff --git a/cms/api.py b/cms/api.py new file mode 100644 index 00000000..97609f06 --- /dev/null +++ b/cms/api.py @@ -0,0 +1,728 @@ +""" +Python APIs for creating CMS content. This is done in :mod:`cms.api` and not +on the models and managers, because the direct API via models and managers is +slightly counterintuitive for developers. + +The api for both Pages and Plugins has changed significantly since django CMS +Version 4. + +Also, the functions defined in this module do sanity checks on arguments. + +.. warning:: None of the functions in this module does any security or permission + checks. They verify their input values to be sane wherever + possible, however permission checks should be implemented manually + before calling any of these functions. + +.. info:: Due to potential circular dependency issues, it's recommended + to import the api in the functions that uses its function. + + e.g. use: + + :: + + def my_function(): + from cms.api import api_function + + api_function(...) + + instead of: + + :: + + from cms.api import api_function + + + def my_function(): + api_function(...) + +""" + +import warnings +from collections import defaultdict + +from django.contrib.auth import get_user_model +from django.contrib.sites.models import Site +from django.core.exceptions import FieldError, ValidationError +from django.db import IntegrityError, models, transaction +from django.template.defaultfilters import slugify +from django.template.loader import get_template + +from cms import constants +from cms.app_base import CMSApp +from cms.apphook_pool import apphook_pool +from cms.constants import TEMPLATE_INHERITANCE_MAGIC +from cms.models import PageContent +from cms.models.pagemodel import Page +from cms.models.permissionmodels import ( + ACCESS_PAGE_AND_DESCENDANTS, + GlobalPagePermission, + PagePermission, + PageUser, +) +from cms.models.placeholdermodel import Placeholder +from cms.models.pluginmodel import CMSPlugin +from cms.plugin_base import CMSPluginBase +from cms.plugin_pool import plugin_pool +from cms.utils.conf import get_cms_setting +from cms.utils.i18n import get_language_list +from cms.utils.page import get_available_slug, get_clean_username +from cms.utils.permissions import get_current_user, reset_current_user, set_current_user +from cms.utils.plugins import copy_plugins_to_placeholder, downcast_plugins +from .menus.menu_pool import menu_pool + +# =============================================================================== +# Helpers/Internals +# =============================================================================== + + +def _verify_apphook(apphook, namespace): + """ + Verifies the apphook given is valid and returns the normalized form (name) + """ + apphook_pool.discover_apps() + if isinstance(apphook, CMSApp): + try: + assert apphook.__class__ in [app.__class__ for app in apphook_pool.apps.values()] + except AssertionError: + raise + apphook_name = apphook.__class__.__name__ + elif hasattr(apphook, "__module__") and issubclass(apphook, CMSApp): + return apphook.__name__ + elif isinstance(apphook, str): + try: + assert apphook in apphook_pool.apps + except AssertionError: + raise + apphook_name = apphook + else: + raise TypeError("apphook must be string or CMSApp instance") + if apphook_pool.apps[apphook_name].app_name and not namespace: + raise ValidationError("apphook with app_name must define a namespace") + return apphook_name + + +def _get_default_slug(page, title, language): + candidate = slugify(title) + base = page.get_path_for_slug(candidate, language) + # without a reachable path (e.g. unpublished parent) check the bare slug + # for availability instead + return get_available_slug(page.site, base if base is not None else candidate, language) + + +def _validate_path_uniqueness(page, path, language): + if path is None: + # pages without a reachable path (e.g. unpublished parent) cannot + # conflict with any URL + return + from cms.forms.validators import validate_url_uniqueness + + validate_url_uniqueness(page.site, path, language, exclude_page=page) + + +def _verify_plugin_type(plugin_type): + """ + Verifies the given plugin_type is valid and returns a tuple of + (plugin_model, plugin_type) + """ + if hasattr(plugin_type, "__module__") and issubclass(plugin_type, CMSPluginBase): + plugin_model = plugin_type.model + assert plugin_type in plugin_pool.plugins.values() + plugin_type = plugin_type.__name__ + elif isinstance(plugin_type, str): + try: + plugin_model = plugin_pool.get_plugin(plugin_type).model + except KeyError: + raise TypeError("plugin_type must be CMSPluginBase subclass or string") + else: + raise TypeError("plugin_type must be CMSPluginBase subclass or string") + return plugin_model, plugin_type + + +# =============================================================================== +# Public API +# =============================================================================== + + +@transaction.atomic +def create_page( + title, + template, + language, + menu_title=None, + slug=None, + apphook=None, + apphook_namespace=None, + redirect=None, + meta_description=None, + created_by="python-api", + parent=None, + publication_date=None, + publication_end_date=None, + in_navigation=False, + soft_root=False, + reverse_id=None, + navigation_extenders=None, + published=None, + site=None, + login_required=False, + limit_visibility_in_menu=constants.VISIBILITY_ALL, + position="last-child", + overwrite_url=None, + xframe_options=constants.X_FRAME_OPTIONS_INHERIT, + page_title=None, +): + """ + Creates a :class:`cms.models.Page` instance and returns it. Also + creates a :class:`cms.models.PageContent` instance for the specified + language. + + .. warning:: + Since version 4 the parameters published, publication_date, and publication_end_date + do not change the behaviour of this function. If they are supplied a warning is raised. + + :param str title: Title of the page + :param str template: Template to use for this page. Must be in :setting:`CMS_TEMPLATES` + :param str language: Language code for this page. Must be in :setting:`django:LANGUAGES` + :param str menu_title: Menu title for this page + :param str slug: Slug for the page, by default uses a slugified version of *title* + :param apphook: Application to hook on this page, must be a valid apphook + :type apphook: str or :class:`cms.app_base.CMSApp` sub-class + :param str apphook_namespace: Name of the apphook namespace + :param str redirect: URL redirect + :param str meta_description: Description of this page for SEO + :param created_by: User that is creating this page + :type created_by: str of :class:`django.contrib.auth.models.User` instance + :param parent: Parent page of this page + :type parent: :class:`cms.models.Page` instance + :param bool in_navigation: Whether this page should be in the navigation or not + :param bool soft_root: Whether this page is a soft root or not + :param str reverse_id: Reverse ID of this page (for template tags) + :param str navigation_extenders: Menu to attach to this page. Must be a valid menu + :param site: Site to put this page on + :type site: :class:`django.contrib.sites.models.Site` instance + :param bool login_required: Whether users must be logged in or not to view this page + :param limit_visibility_in_menu: Limits visibility of this page in the menu + :type limit_visibility_in_menu: :data:`VISIBILITY_ALL` or :data:`VISIBILITY_USERS` or :data:`VISIBILITY_ANONYMOUS` + :param str position: Where to insert this node if *parent* is given, must be ``'first-child'`` or ``'last-child'`` + :param str overwrite_url: Overwritten path for this page + :param int xframe_options: X Frame Option value for Clickjacking protection + :param str page_title: Overridden page title for HTML title tag + """ + if published is not None or publication_date is not None or publication_end_date is not None: + warnings.warn( + 'This API function no longer accepts a "published", "publication_date", or ' + '"publication_end_date" argument', + UserWarning, + stacklevel=2, + ) + + # validate template + if not template == TEMPLATE_INHERITANCE_MAGIC: + assert template in [tpl[0] for tpl in get_cms_setting("TEMPLATES")] + get_template(template) + + # validate parent + if parent: + assert isinstance(parent, Page) + + # validate site + if not site: + if parent: + site = parent.site + else: + site = Site.objects.get_current() # Get the current site from settings + else: + assert isinstance(site, Site) + if parent: + assert parent.site == site, "Parent page must be on the same site as the new page" + + # validate language: + assert language in get_language_list(site), get_cms_setting("LANGUAGES").get(site.pk) + + if navigation_extenders: + raw_menus = menu_pool.get_menus_by_attribute("cms_enabled", True) + menus = [menu[0] for menu in raw_menus] + assert navigation_extenders in menus + + # validate menu visibility + accepted_limitations = (constants.VISIBILITY_ALL, constants.VISIBILITY_USERS, constants.VISIBILITY_ANONYMOUS) + assert limit_visibility_in_menu in accepted_limitations + + # validate position + assert position in ("last-child", "first-child", "left", "right") + + # validate and normalize apphook + if apphook: + application_urls = _verify_apphook(apphook, apphook_namespace) + else: + application_urls = None + + # ugly permissions hack: expose the creator through the current-user + # context variable for the duration of the creation, then restore the + # previous value. Capturing the token and resetting (instead of blindly + # setting None at the end) avoids clobbering a user set by + # CurrentUserMiddleware and prevents leaking the creator into the next + # operation on the same thread. See cms.utils.permissions.reset_current_user. + if created_by and isinstance(created_by, get_user_model()): + user_token = set_current_user(created_by) + created_by = get_clean_username(created_by) + else: + user_token = set_current_user(None) + + try: + if reverse_id: + if Page.objects.filter(reverse_id=reverse_id, site=site).exists(): + raise FieldError('A page with the reverse_id="%s" already exist.' % reverse_id) + + page = Page( + parent=parent, + created_by=created_by, + changed_by=created_by, + reverse_id=reverse_id, + navigation_extenders=navigation_extenders, + application_urls=application_urls, + application_namespace=apphook_namespace, + login_required=login_required, + site=site, + ) + page.add_to_tree(position=position) + page.save() + + create_page_content( + language=language, + title=title, + menu_title=menu_title, + page_title=page_title, + slug=slug, + created_by=created_by, + redirect=redirect, + meta_description=meta_description, + page=page, + overwrite_url=overwrite_url, + soft_root=soft_root, + in_navigation=in_navigation, + template=template, + limit_visibility_in_menu=limit_visibility_in_menu, + xframe_options=xframe_options, + ) + return page + finally: + reset_current_user(user_token) + + +@transaction.atomic +def create_page_content( + language, + title, + page, + menu_title=None, + slug=None, + redirect=None, + meta_description=None, + parent=None, + overwrite_url=None, + page_title=None, + path=None, + created_by="python-api", + soft_root=False, + in_navigation=False, + template=TEMPLATE_INHERITANCE_MAGIC, + limit_visibility_in_menu=constants.VISIBILITY_ALL, + xframe_options=constants.X_FRAME_OPTIONS_INHERIT, +): + """ + Creates a :class:`cms.models.PageContent` instance and returns it. + + ``parent`` is only used if slug=None. + + :param str language: Language code for this page. Must be in :setting:`django:LANGUAGES` + :param str title: Title of the page + :param page: The page for which to create this title + :type page: :class:`cms.models.Page` instance + :param str menu_title: Menu title for this page + :param str slug: Slug for the page, by default uses a slugified version of *title* + :param str redirect: URL redirect + :param str meta_description: Description of this page for SEO + :param parent: Used for automated slug generation + :type parent: :class:`cms.models.Page` instance + :param str overwrite_url: Overwritten path for this page + :param str page_title: Overridden page title for HTML title tag + + """ + # validate template + if not template == TEMPLATE_INHERITANCE_MAGIC: + assert template in [tpl[0] for tpl in get_cms_setting("TEMPLATES")] + get_template(template) + + # validate page + assert isinstance(page, Page) + + # validate language: + assert language in get_language_list(page.site_id) + + # validate menu visibility + accepted_limitations = (constants.VISIBILITY_ALL, constants.VISIBILITY_USERS, constants.VISIBILITY_ANONYMOUS) + assert limit_visibility_in_menu in accepted_limitations + + # set default slug: + if not slug: + slug = _get_default_slug(page, title, language) + + if overwrite_url or path is None: + path = page.get_url_data(slug, overwrite_url, language)["path"] + + # When called directly (not via create_page) with a user instance, expose + # it through the current-user context variable so signal handlers and + # PageContent.objects.with_user() attribute the creation correctly. Capture + # the token so we can restore the previous value at the end -- otherwise the + # user leaks into the next operation on the same thread when + # CurrentUserMiddleware is not installed (it only resets at the request + # boundary). See cms.utils.permissions.reset_current_user. + user_token = None + if created_by and isinstance(created_by, get_user_model()): + user_token = set_current_user(created_by) + created_by = get_clean_username(created_by) + + try: + try: + _validate_path_uniqueness(page, path, language) + except ValidationError as e: + raise IntegrityError(e) + + # E.g., djangocms-versioning needs an User object to be passed when creating a versioned Object + user = get_current_user() + page_content = PageContent.objects.with_user(user).create( + language=language, + title=title, + menu_title=menu_title, + page_title=page_title, + redirect=redirect, + meta_description=meta_description, + page=page, + created_by=created_by, + changed_by=created_by, + soft_root=soft_root, + in_navigation=in_navigation, + template=template, + limit_visibility_in_menu=limit_visibility_in_menu, + xframe_options=xframe_options, + slug=slug, + overwrite_url=overwrite_url.strip("/") if overwrite_url else None, + ) + page_content.rescan_placeholders() + + if page_content.is_public(): + # The page URL is derived from public content only. With a versioning + # package installed the new content is created as a draft and gets + # its URL on first publish. + page.urls.update_or_create( + page=page, + language=language, + defaults=dict( + slug=slug, + path=path, + managed=not bool(overwrite_url), + site_id=page.site_id, + ), + ) + page._clear_internal_cache() + + return page_content + finally: + if user_token is not None: + reset_current_user(user_token) + + +@transaction.atomic +def add_plugin(placeholder, plugin_type, language, position="last-child", target=None, **data): + """ + Adds a plugin to a placeholder and returns it. + + :param placeholder: Placeholder to add the plugin to + :type placeholder: :class:`cms.models.placeholdermodel.Placeholder` instance + :param plugin_type: What type of plugin to add + :type plugin_type: str or :class:`cms.plugin_base.CMSPluginBase` sub-class, must be a valid plugin + :param str language: Language code for this plugin, must be in :setting:`django:LANGUAGES` + :param str position: Position to add this plugin to the placeholder. Allowed positions are ``"last-child"`` + (default), ``"first-child"``, ``"left"``, ``"right"``. + :param target: Parent plugin. Must be plugin instance + :param data: Data for the plugin type instance + """ + # validate placeholder + assert isinstance(placeholder, Placeholder) + + # validate and normalize plugin type + plugin_model, plugin_type = _verify_plugin_type(plugin_type) + + if target: + if position == "last-child": + new_pos = placeholder.get_next_plugin_position(language, parent=target, insert_order="last") + parent_id = target.pk + elif position == "first-child": + new_pos = placeholder.get_next_plugin_position(language, parent=target, insert_order="first") + parent_id = target.pk + elif position == "left": + new_pos = target.position + parent_id = target.parent_id + elif position == "right": + new_pos = target.position + 1 + target._get_descendants_count() + parent_id = target.parent_id + else: + raise Exception("position not supported: %s" % position) + else: + assert position in ("first-child", "last-child") + if position == "last-child": + new_pos = placeholder.get_next_plugin_position(language, insert_order="last") + else: + new_pos = 1 + parent_id = None + + plugin_base = CMSPlugin( + plugin_type=plugin_type, + placeholder=placeholder, + position=new_pos, + language=language, + parent_id=parent_id, + ) + plugin_base = placeholder.add_plugin(plugin_base) + plugin = plugin_model(**data) + plugin_base.set_base_attr(plugin) + plugin.save() + return plugin + + +def create_page_user( + created_by, + user, + can_add_page=True, + can_view_page=True, + can_change_page=True, + can_delete_page=True, + can_publish_page=True, + can_add_pageuser=True, + can_change_pageuser=True, + can_delete_pageuser=True, + can_add_pagepermission=True, + can_change_pagepermission=True, + can_delete_pagepermission=True, + grant_all=False, +): + """ + Creates a page user for the user provided and returns that page user. + + :param created_by: The user that creates the page user + :type created_by: :class:`django.contrib.auth.models.User` instance + :param user: The user to create the page user from + :type user: :class:`django.contrib.auth.models.User` instance + :param bool can_*: Permissions to give the user + :param bool grant_all: Grant all permissions to the user + """ + from cms.admin.forms import save_permissions + + if grant_all: + # just be lazy + return create_page_user(created_by, user, True, True, True, True, True, True, True, True, True, True, True) + + # validate created_by + assert isinstance(created_by, get_user_model()) + + data = { + "can_add_page": can_add_page, + "can_view_page": can_view_page, + "can_change_page": can_change_page, + "can_delete_page": can_delete_page, + "can_publish_page": can_publish_page, + "can_add_pageuser": can_add_pageuser, + "can_change_pageuser": can_change_pageuser, + "can_delete_pageuser": can_delete_pageuser, + "can_add_pagepermission": can_add_pagepermission, + "can_change_pagepermission": can_change_pagepermission, + "can_delete_pagepermission": can_delete_pagepermission, + } + user.is_staff = True + user.is_active = True + page_user = PageUser(created_by=created_by) + for field in [f.name for f in get_user_model()._meta.local_fields]: + setattr(page_user, field, getattr(user, field)) + user.save() + page_user.save() + save_permissions(data, page_user) + return user + + +def assign_user_to_page( + page, + user, + grant_on=ACCESS_PAGE_AND_DESCENDANTS, + can_add=False, + can_change=False, + can_delete=False, + can_change_advanced_settings=False, + can_publish=None, + can_change_permissions=False, + can_move_page=False, + can_recover_page=True, + can_view=False, + grant_all=False, + global_permission=False, +): + """ + Assigns a user to a page and gives them some permissions. Returns the + :class:`cms.models.PagePermission` object that gets + created. + + :param page: The page to assign the user to + :type page: :class:`cms.models.Page` instance + :param user: The user to assign to the page + :type user: :class:`django.contrib.auth.models.User` instance + :param grant_on: Controls which pages are affected + :type grant_on: :data:`cms.models.ACCESS_PAGE`, :data:`cms.models.ACCESS_CHILDREN`, + :data:`cms.models.ACCESS_DESCENDANTS` or :data:`cms.models.ACCESS_PAGE_AND_DESCENDANTS` + :param can_*: Permissions to grant + :param bool grant_all: Grant all permissions to the user + """ + + grant_all = grant_all and not global_permission + data = { + "can_add": can_add or grant_all, + "can_change": can_change or grant_all, + "can_delete": can_delete or grant_all, + "can_publish": can_publish or grant_all, + "can_change_advanced_settings": can_change_advanced_settings or grant_all, + "can_change_permissions": can_change_permissions or grant_all, + "can_move_page": can_move_page or grant_all, + "can_view": can_view or grant_all, + } + + page_permission = PagePermission(page=page, user=user, grant_on=grant_on, **data) + page_permission.save() + if global_permission: + page_permission = GlobalPagePermission(user=user, can_recover_page=can_recover_page, **data) + page_permission.save() + page_permission.sites.add(page.site) + return page_permission + + +def publish_page(page, user, language): + """ + .. warning:: + + Publishing pages has been removed from django CMS core in version 4 onward. + + For publishing functionality see `djangocms-versioning: `_ + """ + warnings.warn( + "This API function has been removed. For publishing functionality use a package that adds " + "publishing, such as: djangocms-versioning.", + UserWarning, + stacklevel=2, + ) + + +def publish_pages(include_unpublished=False, language=None, site=None): + """ + .. warning:: + + Publishing pages has been removed from django CMS core in version 4 onward. + + For publishing functionality see `djangocms-versioning: `_ + """ + warnings.warn( + "This API function has been removed. For publishing functionality use a package that adds " + "publishing, such as: djangocms-versioning.", + UserWarning, + stacklevel=2, + ) + + +def get_page_draft(page): + """ + .. warning:: + + The concept of draft pages has been removed from django CMS core in version 4 onward. + + For draft functionality see `djangocms-versioning: `_ + """ + warnings.warn( + "This API function has been removed. For publishing functionality use a package that adds " + "publishing, such as: djangocms-versioning.", + UserWarning, + stacklevel=2, + ) + + +def copy_plugins_to_language(page, source_language, target_language, only_empty=True): + """ + Copy the plugins to another language in the same page for all the page + placeholders. + + By default, plugins are copied only if placeholder has no plugin for the + target language; use ``only_empty=False`` to change this. + + .. warning: This function skips permissions checks + + :param page: the page to copy + :type page: :class:`cms.models.pagemodel.Page` instance + :param string source_language: The source language code, + must be in :setting:`django:LANGUAGES` + :param string target_language: The source language code, + must be in :setting:`django:LANGUAGES` + :param bool only_empty: if False, plugin are copied even if + plugins exists in the target language (on a placeholder basis). + :return int: number of copied plugins + """ + source_placeholders = list(page.get_placeholders(source_language)) + placeholder_ids = [placeholder.pk for placeholder in source_placeholders] + source_plugins = downcast_plugins( + CMSPlugin.objects.filter( + placeholder_id__in=placeholder_ids, + language=source_language, + ).order_by("position") + ) + target_plugin_counts = dict( + CMSPlugin.objects.filter( + placeholder_id__in=placeholder_ids, + language=target_language, + ) + .values("placeholder_id") + .annotate(count=models.Count("pk")) + .values_list("placeholder_id", "count") + ) + plugins_by_placeholder = defaultdict(list) + for plugin in source_plugins: + plugins_by_placeholder[plugin.placeholder_id].append(plugin) + + copied = 0 + for placeholder in source_placeholders: + if not only_empty or not target_plugin_counts.get(placeholder.pk): + copied_plugins = copy_plugins_to_placeholder( + plugins_by_placeholder[placeholder.pk], + placeholder, + language=target_language, + plugins_are_downcast=True, + ) + copied += len(copied_plugins) + return copied + + +def can_change_page(request): + """ + Check whether a user has the permission to change the page. + + This will work across all permission-related setting, with a unified interface + to permission checking. + + :param request: The request object from which the user will be taken. + :type request: :class:`HttpRequest` instance + + """ + from cms.utils import page_permissions + + user = request.user + current_page = request.current_page + + if current_page: + return page_permissions.user_can_change_page(user, current_page) + + site = Site.objects.get_current(request) + return page_permissions.user_can_change_all_pages(user, site) diff --git a/cms/app_base.py b/cms/app_base.py new file mode 100644 index 00000000..044a09ff --- /dev/null +++ b/cms/app_base.py @@ -0,0 +1,259 @@ +from abc import ABCMeta, abstractmethod + + +class CMSApp: + """Base class for creating apphooks. Apphooks live in a file called ``cms_apps.py``. + To create an AppHook subclass ``CMSApp`` in ``cms_apps.py`` + :: + class MyAppHook(CMSApp): + name = "Problem solver" + """ + #: list of urlconfs: example: ``_urls = ["myapp.urls"]`` + _urls = [] + #: list of menu classes: example: ``_menus = [MyAppMenu]`` + _menus = [] + #: Human-readable name of the apphook (required). This name will be displayed + #: on the admin site. + name = None + #: Gives the system a unique way to refer to the apphook. This enables Django + #: namespaces support (optional) + app_name = None + #: configuration model (optional) + app_config = None + #: if set to true, apphook inherits permissions from the current page + permissions = True + #: list of application names to exclude from inheriting CMS permissions + exclude_permissions = [] + + def __new__(cls): + """ + We want to bind the CMSapp class to a specific AppHookConfig, but only one at a time + Checking for the runtime attribute should be a sane fix + """ + if cls.app_config: + if getattr(cls.app_config, 'cmsapp', None) and cls.app_config.cmsapp != cls: + raise RuntimeError( + 'Only one AppHook per AppHookConfiguration must exists.\n' + 'AppHook %s already defined for %s AppHookConfig' % ( + cls.app_config.cmsapp.__name__, cls.app_config.__name__ + ) + ) + cls.app_config.cmsapp = cls + return super().__new__(cls) + + def get_configs(self): + """ + Returns all the apphook configuration instances. + + To be implemented by apphook subclass. + """ + raise NotImplementedError('Configurable AppHooks must implement this method') + + def get_config(self, namespace): + """ + Returns the apphook configuration instance linked to the given namespace + + To be implemented by apphook subclass. + """ + raise NotImplementedError('Configurable AppHooks must implement this method') + + def get_config_add_url(self): + """ + Returns the url to add a new apphook configuration instance + (usually the model admin add view) + + To be implemented by apphook subclass. + """ + raise NotImplementedError('Configurable AppHooks must implement this method') + + def get_menus(self, page=None, language=None, **kwargs): + """ + Returns the menus for the apphook instance, eventually selected according + to the given arguments. + + By default, it returns the menus assigned to :py:attr:`CMSApp._menus`. + + The method accepts page, language and generic keyword arguments: + you can customize this function to return different list of menu classes + according to the given arguments. + + If no menus are returned, then the user will need to attach menus to pages + manually in the admin. + + If no page and language are provided, this method **must** return **all the + menus used by this apphook**. Example:: + + if page and page.reverse_id == 'page1': + return [Menu1] + elif page and page.reverse_id == 'page2': + return [Menu2] + else: + return [Menu1, Menu2] + + :param page: page the apphook is attached to + :param language: current site language + :return: list of menu classes + """ + return self._menus + + def get_urls(self, page=None, language=None, **kwargs): + """ + Returns the urlconfs for the apphook instance, eventually selected + according to the given arguments. + + By default, it returns the urls assigned to :py:attr:`CMSApp._urls` + + The method accepts page, language and generic keyword arguments: + you can customize this function to return different urlconfs + according to the given arguments. + + This method **must** return a non-empty list of urlconfs, + even if no argument is passed. + + :param page: page the apphook is attached to + :param language: current site language + :return: list of urlconfs strings + """ + return self._urls + + def get_root_template(self, page=None, language=None, **kwargs): + """ + .. versionadded:: 5.1 + + Returns the template name used by the apphook's root view. + + Best-effort: walks the urlconfs from :meth:`get_urls` to locate the + pattern matching the empty path and returns ``template_name`` from its + view class (CBVs) or callback (FBVs that expose it). Returns ``None`` + for views that compute the template dynamically — override this method + to return the template name in that case. + + :return: template name or None + """ + from django.urls import URLPattern, URLResolver, get_resolver + + def find_root(patterns): + for p in patterns: + if p.pattern.match('') is None: + continue + if isinstance(p, URLResolver): + inner = find_root(p.url_patterns) + if inner is not None: + return inner + elif isinstance(p, URLPattern): + return p + return None + + for urlconf in self.get_urls(page=page, language=language, **kwargs): + try: + resolver = get_resolver(urlconf) + pattern = find_root(resolver.url_patterns) + except Exception: + continue + if pattern is None: + continue + callback = pattern.callback + view_class = getattr(callback, 'view_class', None) + view_initkwargs = getattr(callback, 'view_initkwargs', None) or {} + return ( + view_initkwargs.get('template_name') + or getattr(view_class, 'template_name', None) + or getattr(callback, 'template_name', None) + ) + + return None + + +class CMSAppConfig: + """ + .. versionadded:: 4.0 + + Base class that all cms app configurations should inherit from. + + CMSAppConfig live in a file called ``cms_config.py``. + + Apps subclassing ``CMSAppConfig`` can set ``cms_enabled = True`` for their app config to + use django CMS' wizard functionality. Additional wizzwards are listed in the app config's + ``cms_wizzards`` property. + + The second functionality that django CMS offers is attaching Model objects to the toolbar. To use + this functionality, set list the Model classes in ``cms_toolbar_enabled_models`` and have + ``cms_enabled = True`` + """ + + def __init__(self, django_app_config): + self.app_config = django_app_config + + @staticmethod + def get_contract(contract_name: str) -> type: + """ + Retrieve a contract implementation from registered CMS extension apps. + + Searches through all registered CMS extension applications for a contract + that matches the given contract name. A contract is a named interface that + allows apps to provide functionality that other apps can use. + + This method enables an architecture where apps can query for + specific contracts and use the implementation provided by any registered + extension app that exports that contract. + + :param contract_name: The name identifier of the contract to retrieve + :type contract_name: str + :return: The contract class if found, or None if no matching contract exists + :rtype: type or None + :raises: None + + Example:: + + # Get a versioning contract implementation + versioning_contract = CMSAppConfig.get_contract('versioning') + if versioning_contract: + # Use the versioning functionality + version = versioning_contract.create_version(obj) + """ + from cms.app_registration import get_cms_extension_apps + + for app in get_cms_extension_apps(): + name, cls = getattr(app.cms_extension, "contract", (None, None)) + if name == contract_name: + return cls + return None + + +class CMSAppExtension(metaclass=ABCMeta): + """ + .. versionadded:: 4.0 + + Base class that all cms app extensions should inherit from. App extensions allow + apps to offer their functionality to other apps, e.g., as done by djangocms-versioning. + + CMSAppExtensions live in a file called ``cms_config.py``. + """ + + @abstractmethod + def configure_app(self, cms_config): + """ + Implement this method if the app provides functionality that + other apps can use and configure. + + This method will be run once for every app that defines an + attribute like ``_enabled`` as ``True`` on its cms app + config class. + + So for example, if app A with label "app_a" implements this + method and app B and app C define ``app_a_enabled = True`` on their + cms config classes, the method app A has defined will run twice, + once for app B and once for app C. + + :param cms_config: the cms config class of the app registering for additional functionality + :type cms_config: :class:`CMSAppConfig` subclass + """ + pass + + def ready(self): + """Override this method to run code after all CMS extensions + have been configured. + + This method will be run once, even if no cms app config sets + its ``_enabled`` attribute to ``True``""" + pass diff --git a/cms/app_registration.py b/cms/app_registration.py new file mode 100644 index 00000000..4885d487 --- /dev/null +++ b/cms/app_registration.py @@ -0,0 +1,203 @@ +import inspect +from functools import cache +from importlib import import_module + +from django.apps import apps +from django.core.exceptions import ImproperlyConfigured +from django.utils.module_loading import module_has_submodule + +from cms.app_base import CMSAppConfig, CMSAppExtension +from cms.constants import CMS_CONFIG_NAME + + +def _find_subclasses(module, klass): + """ + Helper function. + + Returns a list of classes in module which inherit from klass. + """ + classes = [] + # Find all classes that inherit from klass + for name, obj in inspect.getmembers(module): + is_subclass = ( + # Ignore the import of klass itself + inspect.isclass(obj) and issubclass(obj, klass) and obj != klass + ) + if is_subclass: + classes.append(obj) + return classes + + +def _find_config(cms_module): + """ + Helper function. + + Returns the class inheriting from CMSAppConfig in the given module. + If no such class exists in the module, returns None. + If multiple classes inherit from CMSAppConfig, raises + ImproperlyConfigured exception. + """ + cms_config_classes = _find_subclasses(cms_module, CMSAppConfig) + if len(cms_config_classes) == 1: + return cms_config_classes[0] + elif len(cms_config_classes) > 1: + raise ImproperlyConfigured( + "cms_config.py files can't define more than one " + "class which inherits from CMSAppConfig") + + +def _find_extension(cms_module): + """ + Helper function. + + Returns the class inheriting from CMSAppExtension in the given module. + If no such class exists in the module, returns None. + If multiple classes inherit from CMSAppExtension, raises + ImproperlyConfigured exception. + """ + cms_extension_classes = _find_subclasses(cms_module, CMSAppExtension) + if len(cms_extension_classes) == 1: + return cms_extension_classes[0] + elif len(cms_extension_classes) > 1: + raise ImproperlyConfigured( + "cms_config.py files can't define more than one " + "class which inherits from CMSAppExtension") + + +def autodiscover_cms_configs(): + """ + Find and import all cms_config.py files. Add a cms_app attribute + to django's app config with an instance of the cms config. + + This runs in two passes: all CMSAppExtension instances are attached + first, then the CMSAppConfig objects are instantiated. A config's + ``__init__`` may query registered extensions via + ``CMSAppConfig.get_contract()`` (which caches the result of + ``get_cms_extension_apps()``), so every extension must be registered + before any config is instantiated. Otherwise the order of apps in + INSTALLED_APPS could cause a config to cache an incomplete extension + list (e.g. djangocms_alias not finding djangocms_versioning). + """ + discovered = [] + # First pass: import every cms_config module and attach the extensions. + for app_config in apps.get_app_configs(): + try: + cms_module = import_module( + f'{app_config.name}.{CMS_CONFIG_NAME}') + except: # NOQA + # If something in cms_config.py raises an exception let that + # exception bubble up. Only catch the exception if + # cms_config.py doesn't exist + if module_has_submodule(app_config.module, CMS_CONFIG_NAME): + raise + else: + config = _find_config(cms_module) + extension = _find_extension(cms_module) + if not config and not extension: + raise ImproperlyConfigured( + f"The cms_config.py file of the '{app_config.label}' app " + "must define at least one class which inherits from " + "CMSAppConfig or CMSAppExtension") + # We are adding these attributes here rather than in + # django's app config definition because there are + # all kinds of limitations as to what can be imported + # in django's apps.py and leaving it to devs to define this + # there could cause issues + if extension: + app_config.cms_extension = extension() + discovered.append((app_config, config)) + + # All extensions are now attached; drop any extension lookup that was + # cached before every extension was registered, so the configs below + # see the complete list. + get_cms_extension_apps.cache_clear() + + # Second pass: instantiate the configs, which may now safely look up + # any registered extension via get_contract(). + for app_config, config in discovered: + if config: + app_config.cms_config = config(app_config) + + +@cache +def get_cms_extension_apps(): + """ + Returns django app configs of apps with a cms extension + """ + # NOTE: The cms_extension attr is added by the autodiscover_cms_configs + # function if a cms_config.py file with a suitable class is found. + cms_apps = [app_config for app_config in apps.get_app_configs() + if hasattr(app_config, 'cms_extension')] + return cms_apps + + +@cache +def get_cms_config_apps(): + """ + Returns django app configs of apps with a cms config + """ + # NOTE: The cms_config attr is added by the autodiscover_cms_configs + # function if a cms_config.py file with a suitable class is found. + cms_apps = [app_config for app_config in apps.get_app_configs() + if hasattr(app_config, 'cms_config')] + return cms_apps + + +def configure_cms_apps(apps_with_features): + """ + Check installed apps for apps that are configured to use cms addons + and run code to register them with their config + """ + for app_with_feature in apps_with_features: + contract = getattr(app_with_feature.cms_extension, "contract", None) + if contract is None: + contract_label = app_with_feature.label # default contract name + elif isinstance(contract, (tuple, list)) and len(contract) == 2: + contract_label = contract[0] + else: + raise ImproperlyConfigured("CMSExtension contract property needs to be a 2-tuple consisting of the form (contract_name, contract_object)") + enabled_property = f"{contract_label}_enabled" + configure_app = app_with_feature.cms_extension.configure_app + + for app_config in get_cms_config_apps(): + if getattr(app_config.cms_config, enabled_property, False): + # Feature enabled for this app so configure + configure_app(app_config.cms_config) + + +def ready_cms_apps(apps_with_features): + """Run ready() methods on every registered cms extension, + so that final checks can happen after all apps have been configured + """ + for app_with_feature in apps_with_features: + app_with_feature.cms_extension.ready() + + +# TODO: Remove this function once backwards compatibility is deprecated +def backwards_compatibility_config(): + """ + Ensure that old ways of configuring and setting up things (plugin + pools etc.) still work. + + NOTE: The autodiscover code has been copied over from + django.utils.module_loading.autodiscover_modules + This is because django's autodiscover function imports + django.apps.apps from within the body of the function, which + interferes with backwards compatibility testing. The testing is + non-trivial and requires the patching of django.apps.apps (which + is impossible when imports are done inside of functions). + """ + # The old pools defined various discover methods that looked for + # specific files and ran the register code in them. Listing the + # names of the files here. + modules_to_autodiscover = ['cms_wizards'] + for module in modules_to_autodiscover: + for app_config in apps.get_app_configs(): + try: + import_module(f'{app_config.name}.{module}') + except Exception: # NOQA + # Decide whether to bubble up this error. If the app just + # doesn't have the module in question, we can ignore the error + # attempting to import it, otherwise we want it to bubble up. + if module_has_submodule(app_config.module, module): + raise diff --git a/cms/apphook_pool.py b/cms/apphook_pool.py new file mode 100644 index 00000000..fc732f74 --- /dev/null +++ b/cms/apphook_pool.py @@ -0,0 +1,102 @@ +import warnings + +from django.core.exceptions import ImproperlyConfigured +from django.utils.module_loading import autodiscover_modules, import_string +from django.utils.translation import gettext as _ + +from cms.app_base import CMSApp +from cms.exceptions import AppAlreadyRegistered +from cms.utils.conf import get_cms_setting + + +class ApphookPool: + + def __init__(self): + self.apphooks = [] + self.apps = {} + self.discovered = False + + def clear(self): + # TODO: remove this method, it's Python, we don't need it. + self.apphooks = [] + self.apps = {} + self.discovered = False + + def register(self, app=None, discovering_apps=False): + # allow use as a decorator + if app is None: + return lambda app: self.register(app, discovering_apps) + + if self.apphooks and not discovering_apps: + return app + + if app.__name__ in self.apps: + raise AppAlreadyRegistered( + 'A CMS application %r is already registered' % app.__name__ + ) + + if not issubclass(app, CMSApp): + raise ImproperlyConfigured( + 'CMS application must inherit from cms.app_base.CMSApp, but %r does not' % app.__name__ + ) + + if not hasattr(app, 'menus') and hasattr(app, 'menu'): + warnings.warn( + "You define a 'menu' attribute on CMS application %r, but the 'menus' attribute is empty, " + "did you make a typo?" % app.__name__ + ) + + self.apps[app.__name__] = app() + return app + + def discover_apps(self): + self.apphooks = get_cms_setting('APPHOOKS') + + if self.apphooks: + for path in self.apphooks: + cls = import_string(path) + try: + self.register(cls, discovering_apps=True) + except AppAlreadyRegistered: + pass + + else: + autodiscover_modules('cms_apps') + + self.discovered = True + + def get_apphooks(self): + hooks = [] + + if not self.discovered: + self.discover_apps() + + for app_name in self.apps: + app = self.apps[app_name] + if app.get_urls(): + hooks.append((app_name, app.name or app_name)) + + # Unfortunately, we lose the ordering since we now have a list of + # tuples. Let's reorder by app_name: + hooks = sorted(hooks, key=lambda hook: hook[1]) + + return hooks + + def get_apphook(self, app_name): + if not self.discovered: + self.discover_apps() + + try: + return self.apps[app_name] + except KeyError: + # deprecated: return apphooks registered in db with urlconf name + # instead of apphook class name + for app in self.apps.values(): + if app_name in app.get_urls(): + return app + + warnings.warn(_('No registered apphook "%r" found') % app_name) + return None + + +apphook_pool = ApphookPool() diff --git a/cms/appresolver.py b/cms/appresolver.py new file mode 100644 index 00000000..ad325938 --- /dev/null +++ b/cms/appresolver.py @@ -0,0 +1,295 @@ +from collections import OrderedDict +from importlib import import_module + +from django.contrib.sites.models import Site +from django.core.exceptions import ImproperlyConfigured +from django.db import OperationalError, ProgrammingError +from django.urls import NoReverseMatch, Resolver404, URLResolver, reverse +from django.urls.resolvers import RegexPattern, URLPattern +from django.utils.translation import get_language, override + +from cms.apphook_pool import apphook_pool +from cms.models.pagemodel import Page +from cms.utils import get_current_site +from cms.utils.i18n import get_language_list + +APP_RESOLVERS = [] + + +def clear_app_resolvers(): + global APP_RESOLVERS + APP_RESOLVERS = [] + + +def applications_page_check(request): + """Tries to find if given path was resolved over application. + Applications have higher priority than other cms pages. + """ + # We should get in this branch only if an apphook is active on / + # This removes the non-CMS part of the URL. + try: + path = request.path_info.replace(reverse('pages-root'), '', 1) + except NoReverseMatch: + path = request.path_info + + # check if application resolver can resolve this + site = get_current_site(request) + for lang in get_language_list(site_id=site.pk): + if path.startswith(lang + "/"): + path = path[len(lang + "/"):] + + for resolver in APP_RESOLVERS: + try: + page_id = resolver.resolve_page_id(path) + return Page.objects.get(id=page_id) + except Resolver404: + # Raised if the page is not managed by an apphook + pass + except Page.DoesNotExist: + pass + return None + + +class AppRegexURLResolver(URLResolver): + def __init__(self, *args, **kwargs): + self.page_id = None + self.url_patterns_dict = {} + super().__init__(*args, **kwargs) + + @property + def urlconf_module(self): + # It is valid for urlconf_module to be a list of patterns. So we just + # return the list here. + # + # See https://github.com/django/django/blob/2.2.4/django/urls/resolvers.py#L578 + # + return self.url_patterns_dict.get(get_language(), []) + + # On URLResolver the url_patterns property is cached and thus calls made after + # language changes (different return values for get_language()) would not return the + # right value. Overriding here prevents caching. + @property + def url_patterns(self): + return self.urlconf_module + + def resolve_page_id(self, path): + """Resolves requested path similar way how resolve does, but instead + of return callback,.. returns page_id to which was application + assigned. + """ + tried = [] + pattern = getattr(self, 'pattern', self) + match = pattern.regex.search(path) + if match: + new_path = path[match.end():] + for pattern in self.url_patterns: + if isinstance(pattern, AppRegexURLResolver): + try: + return pattern.resolve_page_id(new_path) + except Resolver404: + pass + else: + try: + sub_match = pattern.resolve(new_path) + except Resolver404 as e: + tried_match = e.args[0].get('tried') + if tried_match is not None: + tried.extend([[pattern] + t for t in tried_match]) + else: + tried.extend([pattern]) + else: + if sub_match: + return getattr(pattern, 'page_id', None) + pattern = getattr(pattern, 'pattern', pattern) + tried.append(pattern.regex.pattern) + raise Resolver404({'tried': tried, 'path': new_path}) + + +def recurse_patterns(path, pattern_list, page_id, default_args=None, + nested=False): + """ + Recurse over a list of to-be-hooked patterns for a given path prefix + """ + newpatterns = [] + for pattern in pattern_list: + app_pat = getattr(pattern, 'pattern', pattern).regex.pattern + # make sure we don't get patterns that start with more than one '^'! + app_pat = app_pat.lstrip('^') + path = path.lstrip('^') + regex = rf'^{path}{app_pat}' if not nested else r'^%s' % (app_pat) + if isinstance(pattern, URLResolver): + # include default_args + args = pattern.default_kwargs + if default_args: + args.update(default_args) + # see lines 243 and 236 of urlresolvers.py to understand the next line + urlconf_module = recurse_patterns(regex, pattern.url_patterns, page_id, args, nested=True) + # this is an 'include', recurse! + regex_pattern = regex + regex_pattern = RegexPattern(regex) + resolver = URLResolver(regex_pattern, urlconf_module, + pattern.default_kwargs, pattern.app_name, + pattern.namespace) + else: + # Re-do the URLPattern with the new regular expression + args = pattern.default_args + if default_args: + args.update(default_args) + + regex_pattern = RegexPattern(regex, name=pattern.name, is_endpoint=True) + resolver = URLPattern(regex_pattern, pattern.callback, args, + pattern.name) + resolver.page_id = page_id + newpatterns.append(resolver) + return newpatterns + + +def _set_permissions(patterns, exclude_permissions): + for pattern in patterns: + if isinstance(pattern, URLResolver): + if pattern.namespace in exclude_permissions: + continue + _set_permissions(pattern.url_patterns, exclude_permissions) + else: + from cms.utils.decorators import cms_perms + pattern.callback = cms_perms(pattern.callback) + + +def _set_site_filter(patterns, site_id): + for pattern in patterns: + if isinstance(pattern, URLResolver): + _set_site_filter(pattern.url_patterns, site_id) + else: + from cms.utils.decorators import cms_site_filter + pattern.callback = cms_site_filter(site_id)(pattern.callback) + + +def get_app_urls(urls): + for urlconf in urls: + if isinstance(urlconf, str): + mod = import_module(urlconf) + if not hasattr(mod, 'urlpatterns'): + raise ImproperlyConfigured( + "URLConf `%s` has no urlpatterns attribute" % urlconf) + yield mod.urlpatterns + elif isinstance(urlconf, (list, tuple)): + yield urlconf + else: + yield [urlconf] + + +def get_patterns_for_page_url(page_url): + """ + Resolve the urlconf module for a path+title combination + Returns a list of url objects. + """ + path = page_url.path + + if path and not path.endswith('/'): + path += '/' + + app = apphook_pool.get_apphook(page_url.page.application_urls) + + url_patterns = [] + for pattern_list in get_app_urls(app.get_urls(page_url.page, page_url.language)): + url_patterns += recurse_patterns(path, pattern_list, page_url.page_id) + return url_patterns + + +def get_app_patterns(): + try: + try: + site = Site.objects.get_current() + return _get_app_patterns(site) + except ImproperlyConfigured: + # Site framework not configured with SITE_ID, fallback to + # request-based site resolution (not possible here), so just + # add the apphook patterns with a site filter. + return _get_app_patterns(None) # site-independent mode + except (OperationalError, ProgrammingError,): + # ignore if DB is not ready + # Starting with Django 1.9 this code gets called even when creating + # or running migrations. So in many cases the DB will not be ready yet. + return [] + + +def _get_app_patterns(site: Site | None) -> list[URLPattern]: + """ + Get a list of patterns for all hooked apps. + + How this works: + + By looking through all titles with an app hook (application_urls) we find + all urlconf modules we have to hook into titles. + + If we use the ML URL Middleware, we namespace those patterns with the title + language. + + All 'normal' patterns from the urlconf get re-written by prefixing them with + the title path and then included into the cms url patterns. + + If the app is still configured, but is no longer installed/available, then + this method returns a degenerate patterns object: patterns('') + """ + from cms.models.pagemodel import PageUrl + + included = [] + hooked_applications = OrderedDict() + + # we don't have a request here so get_page_queryset() can't be used, + # so use public() queryset. + # This can be done because url patterns are used just in frontend + page_urls = PageUrl.objects.get_for_site(site) if site else PageUrl.objects.all() + + # Loop over all titles with an application hooked to them + page_urls = ( + page_urls + .exclude(path__isnull=True) + .exclude(page__application_urls=None) + .exclude(page__application_urls='') + # Page types are blueprints for new pages, not content. Their apphook + # would otherwise be dispatched before the catch-all ``cms.views.details`` + # route, serving the page type on the public site. + .exclude(page__is_page_type=True) + .order_by('-page__path') + .select_related('page') + ) + + for page_url in page_urls: + mix_id = "{}:{}:{}".format( + page_url.path + "/", + page_url.page.application_urls, + page_url.language, + ) + + if mix_id in included: + # don't add the same thing twice + continue + app = apphook_pool.get_apphook(page_url.page.application_urls) + if not app: + continue + if page_url.page not in hooked_applications: + hooked_applications[page_url.page] = {} + app_ns = app.app_name, page_url.page.application_namespace + with override(page_url.language): + hooked_applications[page_url.page][page_url.language] = ( + app_ns, get_patterns_for_page_url(page_url), app) + included.append(mix_id) + # Build the app patterns to be included in the cms urlconfs + app_patterns = [] + for page, languages in hooked_applications.items(): + resolver = None + for lang, ((app_ns, inst_ns), current_patterns, app) in languages.items(): + if not resolver: + regex_pattern = RegexPattern(r'') + resolver = AppRegexURLResolver( + regex_pattern, 'app_resolver', app_name=app_ns, namespace=inst_ns) + resolver.page_id = page.pk + if app.permissions: + _set_permissions(current_patterns, app.exclude_permissions) + if site is None: + _set_site_filter(current_patterns, page.site_id) + resolver.url_patterns_dict[lang] = current_patterns + app_patterns.append(resolver) + APP_RESOLVERS.append(resolver) + return app_patterns diff --git a/cms/apps.py b/cms/apps.py new file mode 100644 index 00000000..1746d3e4 --- /dev/null +++ b/cms/apps.py @@ -0,0 +1,14 @@ +from django.apps import AppConfig +from django.utils.translation import gettext_lazy as _ + + +class CMSConfig(AppConfig): + name = 'cms' + verbose_name = _("django CMS") + default_auto_field = 'django.db.models.AutoField' + + def ready(self): + from cms.utils.setup import setup, setup_cms_apps + + setup() + setup_cms_apps() diff --git a/cms/cache/__init__.py b/cms/cache/__init__.py new file mode 100644 index 00000000..0f7f332e --- /dev/null +++ b/cms/cache/__init__.py @@ -0,0 +1,87 @@ +import re + +from cms.utils.conf import get_cms_setting + +CMS_PAGE_CACHE_VERSION_KEY = get_cms_setting("CACHE_PREFIX") + '_PAGE_CACHE_VERSION' + + +def _get_cache_version(): + """ + Returns the current page cache version, explicitly setting one if not + defined. + """ + from django.core.cache import cache + + version = cache.get(CMS_PAGE_CACHE_VERSION_KEY) + + if version: + return version + else: + _set_cache_version(1) + return 1 + + +def _set_cache_version(version): + """ + Set the cache version to the specified value. + """ + from django.core.cache import cache + + cache.set( + CMS_PAGE_CACHE_VERSION_KEY, + version, + get_cms_setting('CACHE_DURATIONS')['content'] + ) + + +def invalidate_cms_page_cache(): + """ + Invalidates the CMS PAGE CACHE. + """ + + # + # NOTE: We're using a cache versioning strategy for invalidating the page + # cache when necessary. Instead of wiping all the old entries, we simply + # increment the version number rendering all previous entries + # inaccessible and left to expire naturally. + # + # ALSO NOTE: According to the Django documentation, a timeout value of + # `None' (in version 1.6+) is supposed to mean "cache forever", however, + # this is actually only implemented as only slightly less than 30 days in + # some backends (memcached, in particular). In older Djangos, `None' means + # "use default value". To avoid issues arising from different Django + # versions and cache backend implementations, we will explicitly set the + # lifespan of the CMS_PAGE_CACHE_VERSION entry to whatever is set in + # settings.CACHE_DURATIONS['content']. This allows users to adjust as + # necessary for their backend. + # + # To prevent writing cache entries that will live longer than our version + # key, we will always re-write the current version number into the cache + # just after we write any new cache entries, thus ensuring that the + # version number will always outlive any entries written against that + # version. This is a cheap operation. + # + # If there are no new cache writes before the version key expires, its + # perfectly OK, since any previous entries cached against that version + # will have also expired, so, it'd be pointless to try to access them + # anyway. + # + version = _get_cache_version() + _set_cache_version(version + 1) + + +CLEAN_KEY_PATTERN = re.compile(r'[^a-zA-Z0-9_-]') + + +def _clean_key(key): + return CLEAN_KEY_PATTERN.sub('-', key) + + +def _get_cache_key(name, page_lookup, lang, site_id): + from cms.models import Page + if isinstance(page_lookup, Page): + page_key = str(page_lookup.pk) + else: + page_key = str(page_lookup) + page_key = _clean_key(page_key) + return f'{get_cms_setting("CACHE_PREFIX")}{name}__page_lookup:{page_key}_site:{str(site_id)}_lang:{str(lang)}' diff --git a/cms/cache/choices.py b/cms/cache/choices.py new file mode 100644 index 00000000..d9fdf1b4 --- /dev/null +++ b/cms/cache/choices.py @@ -0,0 +1,30 @@ +from django.conf import settings + +from cms.utils.conf import get_cms_setting + + +def _site_cache_key(lang): + return "{}-{}".format(get_cms_setting('SITE_CHOICES_CACHE_KEY'), lang) + + +def _page_cache_key(lang): + return "{}-{}".format(get_cms_setting('PAGE_CHOICES_CACHE_KEY'), lang) + + +def _clean_many(prefix): + from django.core.cache import cache + keys = [] + if settings.USE_I18N: + for lang in [language[0] for language in settings.LANGUAGES]: + keys.append(f"{prefix}-{lang}") + else: + keys = [f"{prefix}-{settings.LANGUAGE_CODE}"] + cache.delete_many(keys) + + +def clean_site_choices_cache(sender, **kwargs): + _clean_many(get_cms_setting('SITE_CHOICES_CACHE_KEY')) + + +def clean_page_choices_cache(sender, **kwargs): + _clean_many(get_cms_setting('PAGE_CHOICES_CACHE_KEY')) diff --git a/cms/cache/page.py b/cms/cache/page.py new file mode 100644 index 00000000..9d06cac5 --- /dev/null +++ b/cms/cache/page.py @@ -0,0 +1,272 @@ +from __future__ import annotations + +import datetime +import hashlib +from collections.abc import Mapping +from datetime import timedelta +from typing import TYPE_CHECKING, Any + +from django.conf import settings +from django.utils.cache import ( + add_never_cache_headers, + patch_response_headers, + patch_vary_headers, +) +from django.utils.encoding import iri_to_uri +from django.utils.timezone import now + +from cms.cache import _get_cache_key, _get_cache_version, _set_cache_version +from cms.constants import EXPIRE_NOW, MAX_EXPIRATION_TTL +from cms.toolbar.utils import get_toolbar_from_request +from cms.utils import get_current_site +from cms.utils.compat.response import get_response_headers +from cms.utils.conf import get_cms_setting +from cms.utils.helpers import get_timezone_name +from cms.utils.i18n import get_default_language_for_site + +if TYPE_CHECKING: + from collections.abc import Iterable + + from django.http import HttpRequest, HttpResponse + + from cms.models import Page + + +def _page_cache_key(request: HttpRequest, vary_on: Iterable[str] | None = None) -> str: + """ + Generate a cache key based on the request path and language. + The language is determined following django-cms's language resolution order. + + ``vary_on`` is an optional iterable of header names declared by plugins via + ``get_vary_cache_on()``. The request's values for those headers are always + folded into the key so that responses varying on those headers are cached + separately per value (instead of the first variant being served to + everyone). A missing (``None``) or empty ``vary_on`` hashes to a constant. + """ + site = get_current_site(request) + if hasattr(request, "LANGUAGE_CODE"): + language = request.LANGUAGE_CODE + else: + language = get_default_language_for_site(site.pk) + + cache_key = "%s:%d:%s:%s" % ( + get_cms_setting("CACHE_PREFIX"), + site.pk, + language, + hashlib.sha1(iri_to_uri(request.get_full_path()).encode("utf-8")).hexdigest(), + ) + if settings.USE_TZ: + cache_key += ".%s" % get_timezone_name() + cache_key += ".%s" % _vary_on_hash(request, vary_on or []) + return cache_key + + +def _vary_on_hash(request: HttpRequest, vary_on: Iterable[str]) -> str: + """Hash of the request's values for the given (plugin-declared) headers.""" + ctx = hashlib.sha1() + for header in sorted(header.lower() for header in vary_on): + # Mirror Django's translation of header names to ``request.META`` keys. + meta_key = "HTTP_" + header.upper().replace("-", "_") + value = request.META.get(meta_key, "") + ctx.update(("%s=%s&" % (header, iri_to_uri(value))).encode("utf-8")) + return ctx.hexdigest() + + +def _page_vary_headers_cache_key(request: HttpRequest) -> str: + """Key under which the list of plugin-declared vary headers is stored. + + The list cannot be known on a cache read until the page is rendered, so it + is persisted on write and looked up first on read (mirroring Django's + ``learn_cache_key`` / ``get_cache_key`` two-step approach). + """ + return _page_cache_key(request) + ".vary-on" + + +def set_page_cache(response: HttpResponse) -> HttpResponse: + """Store a rendered page response in the CMS page cache. + + The response is only cached for anonymous requests when the page cache is + enabled and the toolbar has not disabled caching. The cache timeout is the + smallest of the configured ``content`` duration and every cache-able + placeholder's TTL (as returned by ``get_cache_expiration()``); if any + placeholder requests ``EXPIRE_NOW`` the response is not cached at all. + + When the response is cacheable, expiration and ``Vary`` headers are patched + onto it and two entries are written: the list of plugin-declared vary + headers (see :func:`_page_vary_headers_cache_key`) and the response payload + (content, headers and absolute expiry timestamp) under the header-aware + content key. Otherwise ``never cache`` headers are added. + + Returns the (possibly header-patched) ``response``. + """ + from django.core.cache import cache + + request = response._request + toolbar = get_toolbar_from_request(request) + is_authenticated = request.user.is_authenticated + + if is_authenticated or toolbar._cache_disabled or not get_cms_setting("PAGE_CACHE"): + add_never_cache_headers(response) + return response + + # This *must* be TZ-aware + timestamp = now() + + placeholders = toolbar.content_renderer.get_rendered_placeholders() + # Checks if there's a plugin using the legacy "cache = False" + placeholder_ttl_list = [] + vary_cache_on_set = set() + for ph in placeholders: + # get_cache_expiration() always returns: + # EXPIRE_NOW <= int <= MAX_EXPIRATION_IN_SECONDS + ttl = ph.get_cache_expiration(request, timestamp) + vary_cache_on = ph.get_vary_cache_on(request) + + placeholder_ttl_list.append(ttl) + if ttl and vary_cache_on: + # We're only interested in vary headers if they come from + # a cache-able placeholder. + vary_cache_on_set |= set(vary_cache_on) + + if EXPIRE_NOW not in placeholder_ttl_list: + if placeholder_ttl_list: + min_placeholder_ttl = min(x for x in placeholder_ttl_list) + else: + # Should only happen when there are no placeholders at all + min_placeholder_ttl = MAX_EXPIRATION_TTL + ttl = min(get_cms_setting("CACHE_DURATIONS")["content"], min_placeholder_ttl) + + if ttl > 0: + # Adds expiration, etc. to headers + vary_on = sorted(vary_cache_on_set) + patch_response_headers(response, cache_timeout=ttl) + patch_vary_headers(response, vary_on) + + version = _get_cache_version() + # We also store the absolute expiration timestamp to avoid + # recomputing it on cache-reads. + expires_datetime = timestamp + timedelta(seconds=ttl) + response_headers = get_response_headers(response) + # Persist whether this page opted out of Django's clickjacking + # middleware. Only "Allow" pages (no X-Frame-Options header) set + # xframe_options_exempt; "Inherit" pages leave it unset so the + # middleware adds the site default. The read path must replay this + # decision -- unconditionally exempting a cached response would drop + # X-Frame-Options from every inherit-default page (clickjacking). + xframe_options_exempt = getattr(response, "xframe_options_exempt", False) + # Persist the list of plugin-declared vary headers so the read path + # can rebuild the same (header-value aware) content key. + cache.set( + _page_vary_headers_cache_key(request), + vary_on, + ttl, + version=version, + ) + cache.set( + _page_cache_key(request, vary_on), + ( + response.content, + response_headers, + expires_datetime, + xframe_options_exempt, + ), + ttl, + version=version, + ) + # See note in invalidate_cms_page_cache() + _set_cache_version(version) + return response + + +def get_page_cache(request: HttpRequest) -> tuple[bytes, Mapping[str, str], datetime] | None: + """Return the cached page response for ``request`` or ``None``. + + Mirrors Django's two-step ``get_cache_key`` lookup: first the list of + plugin-declared vary headers is read, then the request's values for those + headers are folded into the content key so the matching variant is + returned. The cached value is the ``(content, headers, expires_datetime)`` + tuple stored by :func:`set_page_cache`, or ``None`` on a cache miss. + """ + from django.core.cache import cache + + version = _get_cache_version() + # First resolve which headers (if any) the cached page varies on, then + # build the content key from this request's values for those headers. + vary_on = cache.get(_page_vary_headers_cache_key(request), version=version) + return cache.get(_page_cache_key(request, vary_on), version=version) + + +def get_xframe_cache(page: Page) -> int | None: + """Return the cached ``X-Frame-Options`` value for ``page`` or ``None``.""" + from django.core.cache import cache + + return cache.get("cms:xframe_options:%s" % page.pk) + + +def set_xframe_cache(page: Page, xframe_options: int) -> None: + """Cache the resolved ``X-Frame-Options`` value for ``page``. + + The cache version is re-written afterwards so the version key always + outlives the entries written against it (see + :func:`cms.cache.invalidate_cms_page_cache`). + """ + from django.core.cache import cache + + cache.set("cms:xframe_options:%s" % page.pk, xframe_options, version=_get_cache_version()) + _set_cache_version(_get_cache_version()) + + +def _page_url_key( + page_lookup: Any, + lang: str, + site_id: int, + extra_key: str | None, +) -> str: + """Build the cache key for a page's absolute URL. + + ``page_lookup`` is the untyped page reference accepted by the ``page_url`` + template tag (a :class:`~cms.models.Page`, pk, reverse id, ...). When + ``extra_key`` is a string it is folded into the key so callers can cache + distinct URLs (e.g. per query string) for the same page. + """ + return "".join([ + _get_cache_key("page_url", page_lookup, lang, site_id), + f"_key:{extra_key}" if isinstance(extra_key, str) else "", + "_type:absolute_url", + ]) + + +def set_page_url_cache( + page_lookup: Any, + lang: str, + site_id: int, + url: str, + extra_key: str | None = None, +) -> None: + """Cache the absolute ``url`` of a page for the ``content`` duration. + + The cache version is re-written afterwards so the version key always + outlives the entries written against it (see + :func:`cms.cache.invalidate_cms_page_cache`). + """ + from django.core.cache import cache + + cache.set( + _page_url_key(page_lookup, lang, site_id, extra_key), + url, + get_cms_setting("CACHE_DURATIONS")["content"], + version=_get_cache_version(), + ) + _set_cache_version(_get_cache_version()) + + +def get_page_url_cache( + page_lookup: Any, + lang: str, + site_id: int, + extra_key: str | None = None, +) -> str | None: + """Return the cached absolute URL for a page lookup, or ``None`` on a miss.""" + from django.core.cache import cache + + return cache.get(_page_url_key(page_lookup, lang, site_id, extra_key), version=_get_cache_version()) diff --git a/cms/cache/permissions.py b/cms/cache/permissions.py new file mode 100644 index 00000000..06d1749c --- /dev/null +++ b/cms/cache/permissions.py @@ -0,0 +1,76 @@ +from cms.utils.conf import get_cms_setting + +PERMISSION_KEYS = [ + 'add_page', 'change_page', 'change_page_advanced_settings', + 'change_page_permissions', 'delete_page', 'move_page', + 'publish_page', 'view_page', +] + + +def get_cache_key(user, site, key): + """Cache key for ``user``'s page permissions of ``key`` on ``site``. + + The page permissions behind a key are computed per site, so the site has to + be part of the key: without it the value warmed for one site is served for + every other one, granting access to sites the user has no rights on. + """ + return "%s:permission:%d:%d:%s" % ( + get_cms_setting('CACHE_PREFIX'), user.pk or 0, site.pk, key) + + +def get_cache_permission_version_key(): + return "{}:permission:version".format(get_cms_setting('CACHE_PREFIX')) + + +def get_cache_permission_version(): + from django.core.cache import cache + try: + version = int(cache.get(get_cache_permission_version_key())) + except Exception: + version = 1 + return int(version) + + +def get_permission_cache(user, site, key): + """ + Helper for reading values from cache + """ + from django.core.cache import cache + return cache.get(get_cache_key(user, site, key), version=get_cache_permission_version()) + + +def set_permission_cache(user, site, key, value): + """ + Helper method for storing values in cache. Stores used keys so + all of them can be cleaned when clean_permission_cache gets called. + """ + from django.core.cache import cache + + # store this key, so we can clean it when required + cache_key = get_cache_key(user, site, key) + cache.set(cache_key, value, + get_cms_setting('CACHE_DURATIONS')['permissions'], + version=get_cache_permission_version()) + + +def clear_user_permission_cache(user): + """ + Cleans permission cache for given user, on every site. + """ + from django.contrib.sites.models import Site + from django.core.cache import cache + + cache.delete_many( + [get_cache_key(user, site, key) for site in Site.objects.all() for key in PERMISSION_KEYS], + version=get_cache_permission_version(), + ) + + +def clear_permission_cache(): + from django.core.cache import cache + version = get_cache_permission_version() + if version > 1: + cache.incr(get_cache_permission_version_key()) + else: + cache.set(get_cache_permission_version_key(), 2, + get_cms_setting('CACHE_DURATIONS')['permissions']) diff --git a/cms/cache/placeholder.py b/cms/cache/placeholder.py new file mode 100644 index 00000000..01974ff9 --- /dev/null +++ b/cms/cache/placeholder.py @@ -0,0 +1,171 @@ +""" +This module manages placeholder caching. We use a cache-versioning strategy +in which each (placeholder x lang x site_id) manages its own version. The +actual cache includes additional keys appropriate for the placeholders +get_vary_cache_on(). + +Invalidation of a placeholder's cache simply increments the version number for +the (placeholder x lang) pair, which renders any cache entries for that +placeholder under that version inaccessible. Those cache entries will simply +expire and will be purged according to the policy of the cache backend in-use. + +The cache entries themselves may include additional sub-keys, according to the +list of VARY header-names as returned by placeholder.get_vary_cache_on() and +the current HTTPRequest object. + +The vary-on header-names are also stored with the version. This enables us to +check for cache hits without re-computing placeholder.get_vary_cache_on(). +""" +import hashlib +import time + +from django.utils.timezone import now + +from cms.utils.conf import get_cms_setting +from cms.utils.helpers import get_header_name, get_timezone_name + + +def _get_placeholder_cache_version_key(placeholder, lang, site_id): + """ + Returns the version key for the given «placeholder», «lang» and «site_id». + + Invalidating this (via clear_placeholder_cache by replacing the stored + value with a new value) will effectively make all "sub-caches" relating to + this (placeholder x lang) inaccessible. Sub-caches include caches per TZ + and per VARY header. + """ + prefix = get_cms_setting("CACHE_PREFIX") + key = f"{prefix}|placeholder_cache_version|id:{placeholder.pk}|lang:{str(lang)}|site:{site_id}" + # django itself adds "version" add the end of cache-keys, e.g. ":1". + # -> If `cache.set()` is for example called with `version=""`, it still adds + # `:` at the end. So if we check the length for `> 250`, a length of 249 + # or even 250 ends up in an InvalidCacheKey-exception. + # In order to avoid these errors, we hash the keys at a lower length to also + # have a little buffer. + if len(key) > 200: + key = "{prefix}|{hash}".format( + prefix=prefix, + hash=hashlib.sha1(key.encode("utf-8")).hexdigest(), + ) + return key + + +def _get_placeholder_cache_version(placeholder, lang, site_id): + """ + Gets the (placeholder x lang)'s current version and vary-on header-names + list, if present, otherwise resets to («timestamp», []). + """ + from django.core.cache import cache + + key = _get_placeholder_cache_version_key(placeholder, lang, site_id) + cached = cache.get(key) + if cached: + version, vary_on_list = cached + else: + version = int(time.time() * 1000000) + vary_on_list = [] + _set_placeholder_cache_version(placeholder, lang, site_id, version, vary_on_list) + return version, vary_on_list + + +def _set_placeholder_cache_version(placeholder, lang, site_id, version, vary_on_list=None, duration=None): + """ + Sets the (placeholder x lang)'s version and vary-on header-names list. + """ + from django.core.cache import cache + + key = _get_placeholder_cache_version_key(placeholder, lang, site_id) + + if not version or version < 1: + version = int(time.time() * 1000000) + + if vary_on_list is None: + vary_on_list = [] + + cache.set(key, (version, vary_on_list), duration) + + +def _get_placeholder_cache_key(placeholder, lang, site_id, request, soft=False): + """ + Returns the fully-addressed cache key for the given placeholder and + the request. + + The kwarg «soft» should be set to True if getting the cache key to then + read from the cache. If instead the key retrieval is to support a cache + write, let «soft» be False. + """ + prefix = get_cms_setting("CACHE_PREFIX") + version, vary_on_list = _get_placeholder_cache_version(placeholder, lang, site_id) + tz = get_timezone_name() + main_key = f"{prefix}|render_placeholder|id:{placeholder.pk}|lang:{lang}|site:{site_id}|tz:{tz}|v:{version}" + + if not soft: + # We are about to write to the cache, so we want to get the latest + # vary_cache_on headers and the correct cache expiration, ignoring any + # we already have. If the placeholder has already been rendered, this + # will be very efficient (zero-additional queries) due to the caching + # of all its plugins during the rendering process anyway. + vary_on_list = placeholder.get_vary_cache_on(request) + duration = placeholder.get_cache_expiration(request, now()) + # Update the main placeholder cache version + _set_placeholder_cache_version(placeholder, lang, site_id, version, vary_on_list, duration) + + sub_key_list = [] + for key in vary_on_list: + value = request.META.get(get_header_name(key)) or "_" + sub_key_list.append(key + ":" + value) + + cache_key = main_key + if sub_key_list: + cache_key += "|" + "|".join(sub_key_list) + + # django itself adds "version" add the end of cache-keys, e.g. ":1". + # -> If `cache.set()` is for example called with `version=""`, it still adds + # `:` at the end. So if we check the length for `> 250`, a length of 249 + # or even 250 ends up in an InvalidCacheKey-exception. + # In order to avoid these errors, we hash the keys at a lower length to also + # have a little buffer. + if len(cache_key) > 200: + cache_key = "{prefix}|{hash}".format( + prefix=prefix, + hash=hashlib.sha1(cache_key.encode("utf-8")).hexdigest(), + ) + + return cache_key + + +def set_placeholder_cache(placeholder, lang, site_id, content, request): + """ + Sets the (correct) placeholder cache with the rendered placeholder. + """ + from django.core.cache import cache + + key = _get_placeholder_cache_key(placeholder, lang, site_id, request) + + duration = min(get_cms_setting("CACHE_DURATIONS")["content"], placeholder.get_cache_expiration(request, now())) + cache.set(key, content, duration) + # "touch" the cache-version, so that it stays as fresh as this content. + version, vary_on_list = _get_placeholder_cache_version(placeholder, lang, site_id) + _set_placeholder_cache_version(placeholder, lang, site_id, version, vary_on_list, duration=duration) + + +def get_placeholder_cache(placeholder, lang, site_id, request): + """ + Returns the placeholder from cache respecting the placeholder's + VARY headers. + """ + from django.core.cache import cache + + key = _get_placeholder_cache_key(placeholder, lang, site_id, request, soft=True) + content = cache.get(key) + return content + + +def clear_placeholder_cache(placeholder, lang, site_id): + """ + Invalidates all existing cache entries for (placeholder x lang x site_id). + We don't need to re-store the vary_on_list, because the cache is now + effectively empty. + """ + version = int(time.time() * 1000000) + _set_placeholder_cache_version(placeholder, lang, site_id, version, []) diff --git a/cms/cms_config.py b/cms/cms_config.py new file mode 100644 index 00000000..c9c01441 --- /dev/null +++ b/cms/cms_config.py @@ -0,0 +1,87 @@ +from collections.abc import Iterable +from functools import cached_property +from logging import getLogger + +from django.core.exceptions import ImproperlyConfigured + +from cms.app_base import CMSAppConfig, CMSAppExtension +from cms.cms_wizards import cms_page_wizard, cms_subpage_wizard +from cms.models import PageContent +from cms.page_rendering import render_pagecontent +from cms.wizards.wizard_base import Wizard + +logger = getLogger(__name__) + + +class CMSCoreConfig(CMSAppConfig): + cms_enabled = True + cms_wizards = [cms_page_wizard, cms_subpage_wizard] + cms_toolbar_enabled_models = [(PageContent, render_pagecontent, "page")] + + +class CMSCoreExtensions(CMSAppExtension): + def __init__(self): + self.lazy_wizards = [] + self.toolbar_enabled_models = {} + self.model_groupers = {} + self.toolbar_mixins = [] + + def configure_wizards(self, cms_config): + """ + Adds all registered wizards from apps that define them to the + wizards dictionary on this class + """ + if not isinstance(cms_config.cms_wizards, Iterable): + raise ImproperlyConfigured("cms_wizards must be iterable") + + self.lazy_wizards.append(cms_config.cms_wizards) + + @cached_property + def wizards(self) -> dict[str, Wizard]: + """ + Returns a dictionary of wizard instances keyed by their unique IDs. + Iterates over all iterables in `self.lazy_wizards`, filters out objects that are instances + of the `Wizard` class, and constructs a dictionary where each key is the wizard's `id` + and the value is the corresponding `Wizard` instance. + Returns: + dict: A dictionary mapping wizard IDs to `Wizard` instances. + """ + + wizards = {} + for iterable in self.lazy_wizards: + new_wizards = {wizard.id: wizard for wizard in iterable} + if wizard := next((wizard for wizard in new_wizards.values() if not isinstance(wizard, Wizard)), None): + # If any wizard in the iterable is not an instance of Wizard, raise an exception + raise ImproperlyConfigured( + f"cms_wizards must be iterable of Wizard instances, got {type(wizard)}" + ) + wizards |= new_wizards + return wizards + + def configure_toolbar_enabled_models(self, cms_config): + if not isinstance(cms_config.cms_toolbar_enabled_models, Iterable): + raise ImproperlyConfigured("cms_toolbar_enabled_models must be iterable") + for model, render_func, *grouper in cms_config.cms_toolbar_enabled_models: + if model in self.toolbar_enabled_models: + logger.warning( + f"Model {model} already registered for frontend rendering", + ) + else: + self.toolbar_enabled_models[model] = render_func + if grouper: + self.model_groupers[model] = grouper[0] + + def configure_toolbar_mixin(self, cms_config): + if not issubclass(cms_config.cms_toolbar_mixin, object): + raise ImproperlyConfigured("cms_toolbar_mixin must be class") + self.toolbar_mixins.append(cms_config.cms_toolbar_mixin) + + def configure_app(self, cms_config): + # The cms_wizards settings is optional. If it's not here + # just move on. + if hasattr(cms_config, 'cms_wizards'): + self.configure_wizards(cms_config) + if hasattr(cms_config, 'cms_toolbar_enabled_models'): + self.configure_toolbar_enabled_models(cms_config) + if hasattr(cms_config, 'cms_toolbar_mixin'): + self.configure_toolbar_mixin(cms_config) diff --git a/cms/cms_menus.py b/cms/cms_menus.py new file mode 100644 index 00000000..4e4bc258 --- /dev/null +++ b/cms/cms_menus.py @@ -0,0 +1,526 @@ +import re +from collections import defaultdict +from collections.abc import Generator, Iterable + +from django.utils.functional import SimpleLazyObject + +from cms import constants +from cms.apphook_pool import apphook_pool +from cms.models import Page, PageContent, PagePermission, PageUrl +from cms.toolbar.utils import get_object_edit_url, get_object_preview_url, get_toolbar_from_request +from cms.utils.conf import get_cms_setting +from cms.utils.i18n import ( + get_fallback_languages, + get_public_languages, + hide_untranslated, + is_valid_site_language, +) +from cms.utils.page_permissions import user_can_view_all_pages +from menus.base import Menu, Modifier, NavigationNode +from menus.menu_pool import menu_pool + +# Shortcut for visibility markers +VISIBLE_FOR_AUTHENTICATED = constants.VISIBILITY_ALL, constants.VISIBILITY_USERS +VISIBLE_FOR_ANONYMOUS = constants.VISIBILITY_ALL, constants.VISIBILITY_ANONYMOUS + + +def get_visible_page_contents(request, page_contents: Iterable[PageContent], site) -> Iterable[PageContent]: + """ + This code is a many-pages-at-once version of cms.utils.page_permissions.user_can_view_page. + `pages` contains all published pages. + """ + public_for = get_cms_setting("PUBLIC_FOR") + can_see_unrestricted = public_for == "all" or (public_for == "staff" and request.user.is_staff) + + if not request.user.is_authenticated and not can_see_unrestricted: + # User is not authenticated and can't see unrestricted pages, + # no need to check for page restrictions because if there's some, + # user is anon and if there is not any, user can't see unrestricted. + return [] + + if user_can_view_all_pages(request.user, site): + return page_contents + + if not get_cms_setting("PERMISSION"): + # If there's no restrictions, let the user see all pages + # only if he can see unrestricted, otherwise return no pages. + return page_contents if can_see_unrestricted else [] + + restrictions = PagePermission.objects.filter( + page_id__in={page_content.page.pk for page_content in page_contents}, + can_view=True, + ) + restriction_map = {perm.page_id: perm for perm in restrictions} + + user_id = request.user.pk + user_groups = SimpleLazyObject(lambda: frozenset(request.user.groups.values_list("pk", flat=True))) + is_auth_user = request.user.is_authenticated + + def user_can_see_page(page: Page) -> bool: + if page.pk in restriction_map: + # set internal fk cache to our page with loaded ancestors and descendants + PagePermission.page.field.set_cached_value(restriction_map[page.pk], page) + + restricted = False + for perm in restrictions: + if perm.get_page_permission_tuple().contains(page.path): + if not is_auth_user: + return False + if perm.user_id == user_id or perm.group_id in user_groups: + return True + restricted = True + + # Page has no view restrictions, fallback to the project's + # CMS_PUBLIC_FOR setting. + return can_see_unrestricted and not restricted + + return list(page_content for page_content in page_contents if user_can_see_page(page_content.page)) + + +class CMSNavigationNode(NavigationNode): + """ + Represents a CMS Navigation Node for a Page object in the page tree. + + Attributes: + path: The path of the node. + language: The language used for the node (optional). + """ + + def __init__(self, *args, language: str | None = None, **kwargs): + """ + Initializes a CMSNavigationNode instance. + + :param *args: Positional arguments. + :param language: The language used for the node. Optional. + :param **kwargs: Keyword arguments. + """ + # language is only used when we're dealing with a fallback + self.language = language + super().__init__(*args, **kwargs) + + def is_selected(self, request) -> bool: + try: + return request.current_page.pk == self.id + except AttributeError: + return False + + +class CMSMenu(Menu): + """Subclass of :class:`menus.base.Menu`. Its :meth:`~menus.base.Menu.get_nodes()` creates a list of NavigationNodes + based on a site's :class:`cms.models.pagemodel.Page` objects. + """ + + def __init__(self, renderer): + """ + Initializes a CMSMenu instance. + + :param renderer: The renderer object. + """ + super().__init__(renderer) + + lang = renderer.request_language + site_pk = renderer.site.pk + if is_valid_site_language(lang, site_id=site_pk): + _valid_language = True + _hide_untranslated = hide_untranslated(lang, site_pk) + else: + _valid_language = False + _hide_untranslated = False + + if _valid_language: + # The request language has been explicitly configured + # for the current site. + if _hide_untranslated: + fallbacks = [] + else: + fallbacks = get_fallback_languages(lang, site_id=site_pk) + self.languages = [lang] + [_lang for _lang in fallbacks if _lang != lang] + else: + # The request language is not configured for the current site. + # Fallback to all configured public languages for the current site. + self.languages = get_public_languages(site_pk) + + def select_lang(self, page_contents: Iterable[PageContent]) -> Generator[PageContent, None, None]: + """Generator that returns only those page content objects passed that contain the first language + present in the languages list.""" + lang_index = len(self.languages) + translation = None + page = None + + for page_content in page_contents: + if translation and page != page_content.page: + yield translation + lang_index = self.languages.index(page_content.language) + translation = page_content + page = page_content.page + elif self.languages.index(page_content.language) < lang_index: + lang_index = self.languages.index(page_content.language) + translation = page_content + page = page_content.page + if translation: + yield translation + + def get_menu_node_for_page_content( + self, + page_content: PageContent, + view_url: str | None = None, + cut: bool = False, + ) -> CMSNavigationNode: + """ + Transform a CMS page content object into a navigation node. + + :param page: The page to transform. + :param languages: The list of the current language plus fallbacks used to render the menu. + :param view_url: If given, serves as a "pattern" for a view url with the assumption that "/0/" is replaced + by the actual page content pk. Default is None. + :param cut: If True the parent_id is set to None. Default is False. + :returns: A CMSNavigationNode instance. + """ + page = page_content.page + + # These are simple to port over, since they are not calculated. + # Other attributes will be added conditionally later. + visibility = page_content.limit_visibility_in_menu + attr = { + "is_page": True, + "soft_root": page_content.soft_root, + "redirect_url": page_content.redirect, + "auth_required": page.login_required, + "reverse_id": page.reverse_id, + "is_home": page.is_home, + "visible_for_authenticated": visibility in VISIBLE_FOR_AUTHENTICATED, + "visible_for_anonymous": visibility in VISIBLE_FOR_ANONYMOUS, + } + + extenders = [] + if page.navigation_extenders: + if page.navigation_extenders in self.renderer.menus: + extenders.append(page.navigation_extenders) + elif f"{page.navigation_extenders}:{page.pk}" in self.renderer.menus: + extenders.append(f"{page.navigation_extenders}:{page.pk}") + # Is this page an apphook? If so, we need to handle the apphooks's nodes + # Only run this if we have a translation in the requested language for this + # object. The page content cache should have been prepopulated in CMSMenu.get_nodes + # but otherwise, just request the title normally + if page.application_urls and page_content.language == self.languages[0]: + # it means it is an apphook + app = apphook_pool.get_apphook(page.application_urls) + if app: + extenders.extend(app.get_menus(page, self.languages[0])) + # CMSAattachMenus are treated a bit differently to allow them to be + # able to be attached to multiple points in the navigation. + attr["navigation_extenders"] = [ + f"{ext.__name__}:{page.pk}" if hasattr(ext, "get_instances") else getattr(ext, "__name__", ext) + for ext in extenders + ] + + # Now finally, build the NavigationNode object and return it. + # The parent_id is manually set by the menu get_nodes method. + if view_url: + # Build view url by replacing "/0/" in the url template by the actual pk of the page content object + # Hacky, but faster than calling `admin_reverse` for each page content object + url = re.sub("(/0/)", f"/{page_content.pk}/", view_url) + else: + url = page.get_absolute_url(language=page_content.language) + + return CMSNavigationNode( + title=page_content.menu_title or page_content.title, + url=url, + id=page.pk, + parent_id=None if cut else page_content.page.parent_id, + attr=attr, + visible=page_content.in_navigation, + language=(page_content.language if page_content.language != self.languages[0] else None), + ) + + def get_nodes(self, request) -> list[NavigationNode]: + """ + Returns a list of NavigationNode objects representing the navigation nodes to be displayed in the menu. + This method is performance-critical since the number of page content objects can be + large. + + :param self: The instance of the class. + :param request: The HTTP request object. + :return: A list of NavigationNode objects representing the navigation nodes. + :rtype: list[NavigationNode] + + .. note:: + + * The method retrieves the necessary data from the database to build the navigation nodes for the menu. + * The behavior of the method depends on whether the edit mode or preview mode is active in the toolbar. + * If either edit mode or preview mode is active, the method retrieves all current page content objects + visible in the admin for the current page. + * If neither edit mode nor preview mode is active, the method retrieves only public page content objects. + * The retrieved page contents are filtered based on the specified languages, sorted by page path, + and filtered by site. + * Only specific fields of the page content objects are selected to optimize performance. + * If either edit mode or preview mode is active, a preview URL is constructed for a "virtual" non-existing + page content with id=0 to avoid too many calls to ``revert`` the admin URL. + * The method includes a nested function for prefetching URLs and filling the URL cache. + * The visibility of the page contents is further filtered based on authentication and permissions. + * The homepage is determined based on the page contents and marked for cutting if necessary. + * The menu node for each page content is created using the get_menu_node_for_page_content method of the + instance. + * The prefetch_urls function is called for each page content to fill the URL cache and provide necessary + data for creating the menu node. + * The select_lang method is used to filter the page contents based on the specified language preferences. + """ + site = self.renderer.site + toolbar = get_toolbar_from_request(request) + + if toolbar.edit_mode_active or toolbar.preview_mode_active: + # Get all translations visible in the admin for the current page + translations_qs = PageContent.admin_manager.current_content() + else: + # Only get public translations + translations_qs = PageContent.objects + + page_contents = ( + translations_qs.filter(language__in=self.languages) + .order_by("page__path") + .filter(page__site=site) + .select_related("page") + .only( + "page_id", + "language", + "menu_title", + "title", + "limit_visibility_in_menu", + "soft_root", + "in_navigation", + "redirect", + "page__site_id", + "page__parent_id", + "page__path", # needed by the view-restriction check in get_visible_page_contents + "page__is_home", + "page__login_required", + "page__reverse_id", + "page__navigation_extenders", + "page__application_urls", + ) + ) + if toolbar.edit_mode_active or toolbar.preview_mode_active: + # Edit URL for a "virtual" non-existing page content with id=0. This is used to quickly build many + # edit urls by replacing "/0/" by the page content pk in the edit url + view_url = get_object_edit_url(PageContent(id=0)) if toolbar.edit_mode_active else get_object_preview_url(PageContent(id=0)) + + def prefetch_urls(page_content: PageContent) -> PageContent: + return page_content + else: + view_url = None # No short-cut here + prefetched_urls = PageUrl.objects.filter( + language__in=(page_content.language for page_content in page_contents), + page_id__in=(page_content.page.pk for page_content in page_contents), + ) # Fetch the PageUrl objects + # Prepare for filling urls_cache + filtered_urls = defaultdict(dict) + for page_url in prefetched_urls: + filtered_urls[page_url.page_id][page_url.language] = page_url + + def prefetch_urls(page_content: PageContent) -> PageContent: + # Fill url cache for existing urls and page contents into the cache + # Access the cache directly to not lead to a db hit when accessing + # non-existing languages + page_content.page.urls_cache = filtered_urls.get(page_content.page_id) + return page_content + + page_contents = get_visible_page_contents(request, page_contents, site) + home = next((page_content for page_content in page_contents if page_content.page.is_home), None) + + # Find homepage + cut_homepage = home and not home.in_navigation + homepage_pk = home.page.pk if home else None + + return [ + self.get_menu_node_for_page_content( + prefetch_urls(page_content), + view_url=view_url, + cut=page_content.page.parent_id == homepage_pk and cut_homepage, + ) + for page_content in self.select_lang(page_contents) + ] + + +menu_pool.register_menu(CMSMenu) + + +class NavExtender(Modifier): + def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb): + if post_cut: + return nodes + # rearrange the parent relations + # Find home + home = next((n for n in nodes if n.attr.get("is_home", False)), None) + # Find nodes with NavExtenders + exts = [] + for node in nodes: + extenders = node.attr.get("navigation_extenders", None) + if extenders: + for ext in extenders: + if ext not in exts: + exts.append(ext) + # Link the nodes + for extnode in nodes: + if extnode.namespace == ext and not extnode.parent_id: + # if home has nav extenders but home is not visible + if node == home and not node.visible: + # extnode.parent_id = None + extnode.parent_namespace = None + extnode.parent = None + else: + extnode.parent_id = node.id + extnode.parent_namespace = node.namespace + extnode.parent = node + node.children.append(extnode) + removed = [] + + # find all not assigned nodes + for menu in self.renderer.menus.items(): + if hasattr(menu[1], "cms_enabled") and menu[1].cms_enabled and menu[0] not in exts: + for node in nodes: + if node.namespace == menu[0]: + removed.append(node) + if breadcrumb: + # if breadcrumb and home not in navigation add node + if breadcrumb and home and not home.visible: + home.visible = True + if request.path_info == home.get_absolute_url(): + home.selected = True + else: + home.selected = False + # remove all nodes that are nav_extenders and not assigned + for node in removed: + nodes.remove(node) + return nodes + + +menu_pool.register_modifier(NavExtender) + + +class SoftRootCutter(Modifier): + """ + A soft root is a page that acts as the root for a menu navigation tree. + + Typically, this will be a page that is the root of a significant new + section on your site. + + When the soft root feature is enabled, the navigation menu for any page + will start at the nearest soft root, rather than at the real root of + the site’s page hierarchy. + + This feature is useful when your site has deep page hierarchies (and + therefore multiple levels in its navigation trees). In such a case, you + usually don’t want to present site visitors with deep menus of nested + items. + + For example, you’re on the page -Introduction to Bleeding-?, so the menu + might look like this: + + * School of Medicine + * Medical Education + * Departments + * Department of Lorem Ipsum + * Department of Donec Imperdiet + * Department of Cras Eros + * Department of Mediaeval Surgery + * Theory + * Cures + * Bleeding + * Introduction to Bleeding + * Bleeding - the scientific evidence + * Cleaning up the mess + * Cupping + * Leaches + * Maggots + * Techniques + * Instruments + * Department of Curabitur a Purus + * Department of Sed Accumsan + * Department of Etiam + * Research + * Administration + * Contact us + * Impressum + + which is frankly overwhelming. + + By making "Department of Mediaeval Surgery" a soft root, the menu + becomes much more manageable: + + * Department of Mediaeval Surgery + * Theory + * Cures + * Bleeding + * Introduction to Bleeding + * Bleeding - the scientific evidence + * Cleaning up the mess + * Cupping + * Leaches + * Maggots + * Techniques + * Instruments + """ + + def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb): + # only apply this modifier if we're pre-cut (since what we do is cut) + # or if no id argument is provided, indicating {% show_menu_below_id %} + if post_cut or root_id: + return nodes + selected = None + root_nodes = [] + # find the selected node as well as all the root nodes + for node in nodes: + if node.selected: + selected = node + if not node.parent: + root_nodes.append(node) + + # if we found a selected ... + if selected: + # and the selected is a softroot + if selected.attr.get("soft_root", False): + # get it's descendants + nodes = selected.get_descendants() + # remove the link to parent + selected.parent = None + # make the selected page the root in the menu + nodes = [selected] + nodes + else: + # if it's not a soft root, walk ancestors (upwards!) + nodes = self.find_ancestors_and_remove_children(selected, nodes) + return nodes + + def find_and_remove_children(self, node, nodes): + for child in node.children: + if child.attr.get("soft_root", False): + self.remove_children(child, nodes) + return nodes + + def remove_children(self, node, nodes): + for child in node.children: + nodes.remove(child) + self.remove_children(child, nodes) + node.children = [] + + def find_ancestors_and_remove_children(self, node, nodes): + """ + Check ancestors of node for soft roots + """ + if node.parent: + if node.parent.attr.get("soft_root", False): + nodes = node.parent.get_descendants() + node.parent.parent = None + nodes = [node.parent] + nodes + else: + nodes = self.find_ancestors_and_remove_children(node.parent, nodes) + else: + for newnode in nodes: + if newnode != node and not newnode.parent: + self.find_and_remove_children(newnode, nodes) + for child in node.children: + if child != node: + self.find_and_remove_children(child, nodes) + return nodes + + +menu_pool.register_modifier(SoftRootCutter) diff --git a/cms/cms_plugins.py b/cms/cms_plugins.py new file mode 100644 index 00000000..b72a7a8d --- /dev/null +++ b/cms/cms_plugins.py @@ -0,0 +1,19 @@ +from django.utils.translation import gettext_lazy as _ + +from cms.models.placeholderpluginmodel import PlaceholderReference +from cms.plugin_base import CMSPluginBase +from cms.plugin_pool import plugin_pool + + +class PlaceholderPlugin(CMSPluginBase): + name = _("Placeholder") + parent_classes = ['0'] # so you will not be able to add it something + # require_parent = True + render_plugin = False + admin_preview = False + system = True + + model = PlaceholderReference + + +plugin_pool.register_plugin(PlaceholderPlugin) diff --git a/cms/cms_toolbars.py b/cms/cms_toolbars.py new file mode 100644 index 00000000..3131b41d --- /dev/null +++ b/cms/cms_toolbars.py @@ -0,0 +1,730 @@ +from django.conf import settings +from django.contrib import admin +from django.contrib.auth import get_permission_codename, get_user_model +from django.contrib.auth.models import AnonymousUser +from django.contrib.sites.models import Site +from django.urls import NoReverseMatch, Resolver404, resolve, reverse +from django.utils.translation import ( + gettext_lazy as _, + override as force_language, +) + +from cms.api import can_change_page +from cms.constants import TEMPLATE_INHERITANCE_MAGIC +from cms.models import Page, PageContent, PageType, Placeholder +from cms.toolbar.items import REFRESH_PAGE, ButtonList, SubMenu, TemplateItem +from cms.toolbar.utils import ( + get_object_edit_url, + get_object_preview_url, + get_object_structure_url, +) +from cms.toolbar_base import CMSToolbar +from cms.toolbar_pool import toolbar_pool +from cms.utils import get_language_from_request, page_permissions +from cms.utils.conf import get_cms_setting +from cms.utils.i18n import get_language_dict, get_language_tuple +from cms.utils.page_permissions import ( + user_can_change_page, + user_can_delete_page, + user_can_view_page, +) +from cms.utils.permissions import user_can_view_placeholder_source +from cms.utils.urlutils import add_url_parameters, admin_reverse +from menus.utils import DefaultLanguageChanger + +# Identifiers for search +ADMIN_MENU_IDENTIFIER = "admin-menu" +""" +The *Site* menu (that usually shows the project's domain name, *example.com* by default). +``ADMIN_MENU_IDENTIFIER`` allows you to get hold of this object easily using +:meth:`cms.toolbar.toolbar.CMSToolbar.get_menu`. +""" +LANGUAGE_MENU_IDENTIFIER = "language-menu" +""" +The *Language* menu. ``LANGUAGE_MENU_IDENTIFIER`` allows you to get hold of this object +easily using :meth:`cms.toolbar.toolbar.CMSToolbar.get_menu`. +""" +HELP_MENU_IDENTIFIER = "help-menu" +""" +The *Help* menu. ``HELP_MENU_IDENTIFIER`` allows you to get hold of this object easily +using :meth:`cms.toolbar.toolbar.CMSToolbar.get_menu`. +""" +HELP_MENU_BREAK = "Help Menu Break" +TEMPLATE_MENU_BREAK = "Template Menu Break" +PAGE_MENU_IDENTIFIER = "page" +""" +The *Page* menu. ``PAGE_MENU_IDENTIFIER`` allows you to get hold of this object +easily using :meth:`cms.toolbar.toolbar.CMSToolbar.get_menu`. +""" +PAGE_MENU_ADD_IDENTIFIER = "add_page" +PAGE_MENU_FIRST_BREAK = "Page Menu First Break" +PAGE_MENU_SECOND_BREAK = "Page Menu Second Break" +PAGE_MENU_THIRD_BREAK = "Page Menu Third Break" +PAGE_MENU_FOURTH_BREAK = "Page Menu Fourth Break" +PAGE_MENU_LAST_BREAK = "Page Menu Last Break" +HISTORY_MENU_BREAK = "History Menu Break" +MANAGE_PAGES_BREAK = "Manage Pages Break" +ADMIN_SITES_BREAK = "Admin Sites Break" +ADMINISTRATION_BREAK = "Administration Break" +CLIPBOARD_BREAK = "Clipboard Break" +USER_SETTINGS_BREAK = "User Settings Break" +ADD_PAGE_LANGUAGE_BREAK = "Add page language Break" +REMOVE_PAGE_LANGUAGE_BREAK = "Remove page language Break" +COPY_PAGE_LANGUAGE_BREAK = "Copy page language Break" +TOOLBAR_DISABLE_BREAK = "Toolbar disable Break" +SHORTCUTS_BREAK = "Shortcuts Break" + +DEFAULT_HELP_MENU_ITEMS = ( + (_("Documentation"), "https://docs.django-cms.org/en/stable/"), + (_("User guide"), "https://user-guide.django-cms.org"), + (_("Discord community"), "https://www.django-cms.org/discord"), + (_("What's new"), "https://www.django-cms.org/en/blog/"), +) + + +@toolbar_pool.register +class PlaceholderToolbar(CMSToolbar): + """ + Adds placeholder edit buttons if placeholders or static placeholders are detected in the template + """ + + def populate(self): + self.page = self.request.current_page + + def post_template_populate(self): + super().post_template_populate() + self.add_wizard_button() + self.render_object_editable_buttons() + + def add_wizard_button(self): + from cms.wizards.wizard_pool import entry_choices + + title = _("Create") + + user = self.request.user + page_pk = self.page.pk if self.page else "" + disabled = not list(entry_choices(user, self.page, site=self.current_site)) + + url = "{url}?page={page}&language={lang}&edit".format( + url=admin_reverse("cms_wizard_create"), + page=page_pk, + lang=self.toolbar.site_language, + ) + self.toolbar.add_modal_button(title, url, side=self.toolbar.RIGHT, disabled=disabled, on_close=REFRESH_PAGE) + + def render_object_editable_buttons(self): + self.init_placeholders() + + if not self.toolbar.obj: + return + + # Edit button + if self.toolbar.content_mode_active and self._can_add_button(): + self.add_edit_button() + # Preview button + if not self.toolbar.preview_mode_active and get_cms_setting("TEMPLATES") and self._can_add_button(): + # Only add preview button if there are templates available for previewing + self.add_preview_button() + # Structure mode + if self._can_add_structure_mode(): + self.add_structure_mode() + + def init_placeholders(self): + request = self.request + toolbar = self.toolbar + + if toolbar._async and "placeholders[]" in request.GET: + # AJAX request to reload page structure. + placeholder_ids = request.GET.getlist("placeholders[]") + self.placeholders = Placeholder.objects.filter(pk__in=placeholder_ids) + else: + if toolbar.structure_mode_active and not toolbar.uses_legacy_structure_mode: + # User has explicitly requested structure mode. + # and the object (page, blog, etc..) allows for the non-legacy structure mode. + renderer = toolbar.structure_renderer + else: + renderer = toolbar.get_content_renderer() + + self.placeholders = renderer.get_rendered_placeholders() + + # Helpers to check whether buttons can be rendered + def _has_page_change_perm(self): + if self.page and user_can_change_page(self.request.user, page=self.page): + return True + return False + + def _has_placeholder_change_perm(self): + if not self.placeholders: + return False + return any(ph for ph in self.placeholders if ph.has_change_permission(self.request.user)) + + def _has_page_view_perm(self): + if self.page and user_can_view_page(self.request.user, self.page): + return True + return False + + def _has_placeholder_view_perm(self): + obj = self.toolbar.obj + if obj is None: + return False + return user_can_view_placeholder_source(self.request.user, obj) + + def _can_add_button(self): + if self._has_page_change_perm(): + return True + elif self._has_placeholder_change_perm(): + return True + return False + + def _can_add_structure_mode(self): + # Viewing the structure board only requires view permission: editing + # the plugins stays gated by change permission at the plugin endpoints. + # This lets headless reviewers (and view-only staff) inspect content + # structure without edit rights. + if not self.request.user.has_perm("cms.use_structure"): + return False + + if self.page and not self.page.application_urls and self._has_page_view_perm(): + return True + elif self._has_placeholder_view_perm(): + return True + return False + + # Buttons + def add_edit_button(self): + url = get_object_edit_url(self.toolbar.obj, language=self.toolbar.request_language, params=self.request.GET) + item = ButtonList(side=self.toolbar.RIGHT) + item.add_button( + _("Edit"), + url=url, + disabled=False, + extra_classes=["cms-btn", "cms-btn-action", "cms-btn-switch-edit"], + ) + self.toolbar.add_item(item) + + def add_preview_button(self): + url = get_object_preview_url(self.toolbar.obj, language=self.toolbar.request_language, params=self.request.GET) + if url: + item = ButtonList(side=self.toolbar.RIGHT) + item.add_button( + _("Preview"), + url=url, + disabled=False, + extra_classes=["cms-btn", "cms-btn-switch-save"], + ) + self.toolbar.add_item(item) + + def add_structure_mode(self, extra_classes=("cms-toolbar-item-cms-mode-switcher",)): + structure_active = self.toolbar.structure_mode_active + edit_mode_active = not structure_active and self.toolbar.edit_mode_active + build_url = get_object_structure_url( + self.toolbar.obj, language=self.toolbar.request_language, params=self.request.GET + ) + edit_url = get_object_edit_url( + self.toolbar.obj, language=self.toolbar.request_language, params=self.request.GET + ) + switcher = self.toolbar.add_button_list( + "Mode Switcher", + side=self.toolbar.RIGHT, + extra_classes=extra_classes, + ) + switcher.add_button( + _("Structure"), + build_url, + active=structure_active, + disabled=False, + extra_classes="cms-structure-btn", + ) + switcher.add_button( + _("Content"), + edit_url, + active=edit_mode_active, + disabled=False, + extra_classes="cms-content-btn", + ) + + +@toolbar_pool.register +class AppearanceToolbar(CMSToolbar): + """ + Adds appearance switches, esp. for dark and light mode + """ + + color_scheme_toggle = get_cms_setting("COLOR_SCHEME_TOGGLE") + + def populate(self): + if self.color_scheme_toggle: + dark_mode_toggle = TemplateItem( + template="cms/toolbar/items/dark_mode_toggle.html", + side=self.toolbar.RIGHT, + ) + self.toolbar.add_item(dark_mode_toggle) + + +@toolbar_pool.register +class HelpToolbar(CMSToolbar): + """ + Adds a help menu to the toolbar + """ + + def populate(self): + if not get_cms_setting("ENABLE_HELP"): + return + help_menu = self._get_or_create_help_menu() + self._add_default_menu_items(help_menu) + self._add_extra_menu_items(help_menu) + + def _get_or_create_help_menu(self) -> SubMenu: + help_menu = self.toolbar.get_or_create_menu(HELP_MENU_IDENTIFIER, _("Help"), position=-1) + help_menu.items = [] # reset the items so we don't duplicate + return help_menu + + def _add_default_menu_items(self, help_menu: SubMenu): + for label, url in DEFAULT_HELP_MENU_ITEMS: + help_menu.add_link_item(label, url=url) + + def _add_extra_menu_items(self, help_menu: SubMenu): + if extra_menu_items := get_cms_setting("EXTRA_HELP_MENU_ITEMS"): + help_menu.add_break(HELP_MENU_BREAK) + for label, url in extra_menu_items: + help_menu.add_link_item(label, url=url) + + +@toolbar_pool.register +class BasicToolbar(CMSToolbar): + """ + Basic Toolbar for site and languages menu + """ + + page = None + _language_menu = None + _admin_menu = None + + def init_from_request(self): + self.page = self.request.current_page + + def populate(self): + if not self.page: + self.init_from_request() + self.clipboard = self.request.toolbar.user_settings.clipboard + self.add_admin_menu() + self.add_language_menu() + + def add_admin_menu(self): + if not self._admin_menu: + self._admin_menu = self.toolbar.get_or_create_menu(ADMIN_MENU_IDENTIFIER, self.current_site.name) + # Users button + self.add_users_button(self._admin_menu) + + # sites menu + sites_queryset = Site.objects.order_by("name") + + if len(sites_queryset) > 1: + sites_menu = self._admin_menu.get_or_create_menu("sites", _("Sites")) + sites_menu.add_sideframe_item(_("Admin Sites"), url=admin_reverse("sites_site_changelist")) + sites_menu.add_break(ADMIN_SITES_BREAK) + for site in sites_queryset: + sites_menu.add_link_item( + site.name, url="//%s" % site.domain, active=site.pk == self.current_site.pk + ) + + # admin + self._admin_menu.add_sideframe_item(_("Administration"), url=admin_reverse("index")) + self._admin_menu.add_break(ADMINISTRATION_BREAK) + + # cms users settings + self._admin_menu.add_sideframe_item(_("User settings"), url=admin_reverse("cms_usersettings_change")) + self._admin_menu.add_break(USER_SETTINGS_BREAK) + + # clipboard + if self.toolbar.edit_mode_active: + # True if the clipboard exists and there's plugins in it. + clipboard_is_bound = self.toolbar.clipboard_plugin + + self._admin_menu.add_link_item( + _("Clipboard..."), + url="#", + extra_classes=["cms-clipboard-trigger"], + disabled=not clipboard_is_bound, + ) + self._admin_menu.add_link_item( + _("Clear clipboard"), + url="#", + extra_classes=["cms-clipboard-empty"], + disabled=not clipboard_is_bound, + ) + self._admin_menu.add_break(CLIPBOARD_BREAK) + + # Disable toolbar + self._admin_menu.add_link_item( + _("Disable toolbar"), url="?%s" % get_cms_setting("CMS_TOOLBAR_URL__DISABLE") + ) + self._admin_menu.add_break(TOOLBAR_DISABLE_BREAK) + self._admin_menu.add_link_item(_("Shortcuts..."), url="#", extra_classes=("cms-show-shortcuts",)) + self._admin_menu.add_break(SHORTCUTS_BREAK) + + # logout + self.add_logout_button(self._admin_menu) + + def add_users_button(self, parent): + User = get_user_model() + + if User in admin.site._registry: + opts = User._meta + + if self.request.user.has_perm("{}.{}".format(opts.app_label, get_permission_codename("change", opts))): + user_changelist_url = admin_reverse(f"{opts.app_label}_{opts.model_name}_changelist") + parent.add_sideframe_item(_("Users"), url=user_changelist_url) + + def add_logout_button(self, parent): + if self.page and not self.page.login_required: + anon_can_access = page_permissions.user_can_view_page( + user=AnonymousUser(), + page=self.page, + site=self.current_site, + ) + else: + anon_can_access = False + + on_success = self.toolbar.REFRESH_PAGE if anon_can_access else "/" + + # We'll show "Logout Joe Bloggs" if the name fields in auth.User are completed, else "Logout jbloggs". If + # anything goes wrong, it'll just be "Logout". + + user_name = self.get_username() + logout_menu_text = _("Logout %s") % user_name if user_name else _("Logout") + + parent.add_ajax_item( + logout_menu_text, + action=admin_reverse("logout"), + active=True, + on_success=on_success, + method="POST", + ) + + def add_language_menu(self): + if settings.USE_I18N and not self._language_menu: + languages = get_language_tuple(self.current_site.pk) + if len(languages) > 1: + # Menu only meaningful if more than one language is installed + self._language_menu = self.toolbar.get_or_create_menu( + LANGUAGE_MENU_IDENTIFIER, _("Language"), position=-1 + ) + language_changer = getattr(self.request, "_language_changer", DefaultLanguageChanger(self.request)) + for code, name in languages: + try: + url = language_changer(code) + except NoReverseMatch: + url = DefaultLanguageChanger(self.request)(code) + if url: + self._language_menu.add_link_item(name, url=url, active=self.current_lang == code) + else: + # We do not have to check every time the toolbar is created + self._language_menu = True # Pretend the language menu is already there + + def get_username(self, user=None, default=""): + user = user or self.request.user + try: + name = user.get_full_name() + if name: + return name + else: + return user.get_username() + except (AttributeError, NotImplementedError): + return default + + +@toolbar_pool.register +class PageToolbar(CMSToolbar): + _changed_admin_menu = None + watch_models = [Page, PageType] + + def get_page_content(self): + if not getattr(self, "page", None): + # No page, no page content + return None + if hasattr(self, "obj") and isinstance(self.obj, PageContent): + # Toolbar object already set (e.g., in edit or preview mode) + return self.obj + # Get from db + page_content = self.page.get_admin_content(language=self.current_lang, fallback=False) + return page_content or None + + def has_page_change_permission(self): + if not hasattr(self, "page_change_permission"): + self.page_change_permission = can_change_page(self.request) and self.toolbar.object_is_editable() + return self.page_change_permission + + def in_apphook(self): + with force_language(self.toolbar.request_language): + try: + resolver = resolve(self.toolbar.request_path) + except Resolver404: + return False + else: + cms_views = ("render_object_edit", "render_object_preview", "render_object_structure", "details") + return resolver.func.__name__ not in cms_views + + def in_apphook_root(self): + """ + Returns True if the request is for a page handled by an apphook, but + is also the page it is attached to. + :return: Boolean + """ + page = getattr(self.request, "current_page", False) + if page: + language = get_language_from_request(self.request) + return self.toolbar.request_path == page.get_absolute_url(language=language) + return False + + def get_on_delete_redirect_url(self): + language = self.current_lang + parent_page = self.page.parent if self.page else None + + # if the current page has a parent in the request's current language redirect to it + if parent_page and language in parent_page.get_languages(): + return get_object_preview_url( + parent_page.pagecontent_set(manager="admin_manager").latest_content(language=language).first() + ) + + # else redirect to root, do not redirect to Page.objects.get_home() because user could have deleted the last + # page, if DEBUG == False this could cause a 404 + try: + return reverse("pages-root") + except NoReverseMatch: + return admin_reverse("cms_pagecontent_changelist") + + # Populate + def populate(self): + self.page = self.request.current_page + self.page_content = self.get_page_content() + self.permissions_activated = get_cms_setting("PERMISSION") + self.change_admin_menu() + self.add_page_menu() + self.change_language_menu() + + # Menus + def change_language_menu(self): + if self.toolbar.edit_mode_active and self.page: + can_change = page_permissions.user_can_change_page( + user=self.request.user, + page=self.page, + site=self.current_site, + ) + else: + can_change = False + if can_change: + language_menu = self.toolbar.get_menu(LANGUAGE_MENU_IDENTIFIER) + if not language_menu: + return None + + languages = get_language_dict(self.current_site.pk) + + remove = [(code, languages.get(code, code)) for code in self.page.get_languages() if code in languages] + add = [lang for lang in languages.items() if lang not in remove] + copy = [ + (code, name) + for code, name in languages.items() + if code != self.current_lang and (code, name) in remove + ] + + if add or remove or copy: + language_menu.add_break(ADD_PAGE_LANGUAGE_BREAK) + + if add: + add_plugins_menu = language_menu.get_or_create_menu( + f"{LANGUAGE_MENU_IDENTIFIER}-add", _("Add Translation") + ) + + page_add_url = admin_reverse("cms_pagecontent_add") + + for code, name in add: + url = add_url_parameters( + page_add_url, cms_page=self.page.pk, parent_page=self.page.id, language=code + ) + add_plugins_menu.add_modal_item(name, url=url) + + if remove: + remove_plugins_menu = language_menu.get_or_create_menu( + f"{LANGUAGE_MENU_IDENTIFIER}-del", _("Delete Translation") + ) + disabled = len(remove) == 1 + for code, name in remove: + pagecontent = self.page.get_content_obj(code) + if pagecontent: + translation_delete_url = admin_reverse("cms_pagecontent_delete", args=(pagecontent.pk,)) + url = add_url_parameters(translation_delete_url, language=code) + remove_plugins_menu.add_modal_item(name, url=url, disabled=disabled) + + if copy: + copy_plugins_menu = language_menu.get_or_create_menu( + f"{LANGUAGE_MENU_IDENTIFIER}-copy", _("Copy all plugins") + ) + title = _("from %s") + question = _("Are you sure you want to copy all plugins from %s?") + + for code, name in copy: + pagecontent = self.page.get_content_obj(code) + page_copy_url = admin_reverse("cms_pagecontent_copy_language", args=(pagecontent.pk,)) + copy_plugins_menu.add_ajax_item( + title % name, + action=page_copy_url, + data={"source_language": code, "target_language": self.current_lang}, + question=question % name, + on_success=self.toolbar.REFRESH_PAGE, + ) + + def change_admin_menu(self): + can_change_page = self.has_page_change_permission() + + if not can_change_page: + # Check if the user has permissions to change at least one page + can_change_page = page_permissions.user_can_change_at_least_one_page( + user=self.request.user, + site=self.current_site, + ) + + if not self._changed_admin_menu and can_change_page: + admin_menu = self.toolbar.get_or_create_menu(ADMIN_MENU_IDENTIFIER) + url = admin_reverse("cms_pagecontent_changelist") # cms page admin + params = {"language": self.toolbar.request_language} + if self.page: + params["page_id"] = self.page.pk + url = add_url_parameters(url, params) + admin_menu.add_sideframe_item(_("Pages"), url=url, position=0) + # Used to prevent duplicates + self._changed_admin_menu = True + + def add_page_menu(self): + if self.page and self.page_content: + edit_mode = self.toolbar.edit_mode_active + refresh = self.toolbar.REFRESH_PAGE + can_change = user_can_change_page( + user=self.request.user, + page=self.page, + site=self.current_site, + ) + + # menu for current page + # NOTE: disabled if the current path is "deeper" into the + # application's url patterns than its root. This is because + # when the Content Manager is at the root of the app-hook, + # some of the page options still make sense. + current_page_menu = self.toolbar.get_or_create_menu( + PAGE_MENU_IDENTIFIER, _("Page"), position=1, disabled=self.in_apphook() and not self.in_apphook_root() + ) + + new_page_params = {"edit": 1, "site": self.page.site_id} + new_sub_page_params = {"edit": 1, "parent_page": self.page.id} + + add_page_url = admin_reverse("cms_pagecontent_add") + advanced_url = admin_reverse("cms_page_advanced", args=(self.page.pk,)) + page_settings_url = admin_reverse("cms_pagecontent_change", args=(self.page_content.pk,)) + duplicate_page_url = admin_reverse("cms_pagecontent_duplicate", args=[self.page_content.pk]) + + can_add_root_page = page_permissions.user_can_add_page( + user=self.request.user, + site=self.current_site, + ) + + if self.page.parent: + new_page_params["parent_page"] = self.page.parent.id + can_add_sibling_page = page_permissions.user_can_add_subpage( + user=self.request.user, + target=self.page.parent, + ) + else: + can_add_sibling_page = can_add_root_page + + can_add_sub_page = page_permissions.user_can_add_subpage( + user=self.request.user, + target=self.page, + ) + + # page operations menu + add_page_menu = current_page_menu.get_or_create_menu( + PAGE_MENU_ADD_IDENTIFIER, + _("Create Page"), + ) + + add_page_menu_modal_items = ( + (_("New Page"), new_page_params, can_add_sibling_page), + (_("New Sub Page"), new_sub_page_params, can_add_sub_page), + ) + + for title, params, has_perm in add_page_menu_modal_items: + params.update(language=self.toolbar.request_language) + add_page_menu.add_modal_item( + title, + url=add_url_parameters(add_page_url, params), + disabled=not has_perm, + ) + + add_page_menu.add_modal_item( + _("Duplicate this Page"), + url=add_url_parameters(duplicate_page_url, {"language": self.toolbar.request_language}), + disabled=not can_add_sibling_page, + ) + + # first break + current_page_menu.add_break(PAGE_MENU_FIRST_BREAK) + + # page settings + page_settings_url = add_url_parameters(page_settings_url, language=self.toolbar.request_language) + settings_disabled = not can_change + current_page_menu.add_modal_item( + _("Page settings"), url=page_settings_url, disabled=settings_disabled, on_close=refresh + ) + + # advanced settings + advanced_url = add_url_parameters(advanced_url, language=self.toolbar.request_language) + can_change_advanced = self.page.has_advanced_settings_permission(self.request.user) + can_change_permissions = get_cms_setting("PERMISSION") and self.page.has_change_permissions_permission( + self.request.user + ) + advanced_disabled = not can_change_advanced and not can_change_permissions + current_page_menu.add_modal_item(_("Advanced settings"), url=advanced_url, disabled=advanced_disabled) + + # templates menu + if edit_mode: + action = admin_reverse("cms_pagecontent_change_template", args=(self.page_content.pk,)) + + if get_cms_setting("TEMPLATES"): + options = self.page_content.template_choices + template_menu = _("Templates") + else: + options = [(placeholders[0], placeholders[2]) for placeholders in get_cms_setting("PLACEHOLDERS")] + template_menu = _("Placeholders") + if options: + templates_menu = current_page_menu.get_or_create_menu( + "templates", + template_menu, + disabled=not can_change, + ) + + for path, name in options: + active = self.page_content.template == path + if path == TEMPLATE_INHERITANCE_MAGIC: + templates_menu.add_break(TEMPLATE_MENU_BREAK) + templates_menu.add_ajax_item( + name, action=action, data={"template": path}, active=active, on_success=refresh + ) + + # navigation toggle + in_navigation = self.page_content.in_navigation + nav_title = _("Hide in navigation") if in_navigation else _("Display in navigation") + nav_action = admin_reverse("cms_pagecontent_change_innavigation", args=(self.page_content.pk,)) + current_page_menu.add_ajax_item( + nav_title, + action=nav_action, + disabled=(not edit_mode or not can_change), + on_success=refresh, + ) + + # delete + delete_url = admin_reverse("cms_page_delete", args=(self.page.pk,)) + delete_disabled = not edit_mode or not user_can_delete_page(self.request.user, page=self.page) + on_delete_redirect_url = self.get_on_delete_redirect_url() if not delete_disabled else None + current_page_menu.add_modal_item( + _("Delete page"), url=delete_url, on_close=on_delete_redirect_url, disabled=delete_disabled + ) diff --git a/cms/cms_wizards.py b/cms/cms_wizards.py new file mode 100755 index 00000000..9a02a8a7 --- /dev/null +++ b/cms/cms_wizards.py @@ -0,0 +1,56 @@ +from django.utils.translation import gettext_lazy as _ + +from cms.models import Page +from cms.utils.page_permissions import user_can_add_page, user_can_add_subpage + +from .forms.wizards import CreateCMSPageForm, CreateCMSSubPageForm +from .wizards.wizard_base import Wizard + + +class CMSPageWizard(Wizard): + + def user_has_add_permission(self, user, page=None, **kwargs): + site = kwargs.get("site") + parent_page = page.parent if page else None + if page and parent_page: + # User is adding a page which will be a right + # sibling to the current page. + return user_can_add_subpage(user, target=parent_page, site=site or parent_page.site) + elif page: + return user_can_add_page(user, site=site or page.site) + return user_can_add_page(user, site=site) + + def get_success_url(self, obj, **kwargs): + page_content = obj.pagecontent_set(manager="admin_manager").first() + return super().get_success_url(page_content, **kwargs) + + +class CMSSubPageWizard(Wizard): + + def user_has_add_permission(self, user, page=None, **kwargs): + if not page or page.application_urls: + # We can't really add a sub-page to a non-existent page. Or to an + # app-hooked page. + return False + return user_can_add_subpage(user, target=page) + + def get_success_url(self, obj, **kwargs): + page_content = obj.pagecontent_set(manager="admin_manager").first() + return super().get_success_url(page_content, **kwargs) + + +cms_page_wizard = CMSPageWizard( + title=_("New page"), + weight=100, + form=CreateCMSPageForm, + model=Page, + description=_("Create a new page next to the current page.") +) + +cms_subpage_wizard = CMSSubPageWizard( + title=_("New sub page"), + weight=110, + form=CreateCMSSubPageForm, + model=Page, + description=_("Create a page below the current page.") +) diff --git a/cms/constants.py b/cms/constants.py new file mode 100644 index 00000000..2cfabdfa --- /dev/null +++ b/cms/constants.py @@ -0,0 +1,90 @@ +""" +Collection of important constants used throughout django CMS. +""" + + +#: The token used to identify when a user selects "inherit" as template for a page. +TEMPLATE_INHERITANCE_MAGIC = 'INHERIT' + +REFRESH_PAGE = 'REFRESH_PAGE' +""" +Supplied to ``on_close`` arguments to refresh the current page when the frame is closed, for +example: + +.. code-block:: python + + from cms.constants import REFRESH_PAGE + + self.toolbar.add_modal_item( + 'Modal item', + url=modal_url, + on_close=REFRESH_PAGE + ) +""" + +FOLLOW_REDIRECT = 'FOLLOW_REDIRECT' +URL_CHANGE = 'URL_CHANGE' + +#: Used as a position indicator in the toolbar: On the right side. +RIGHT = object() # this is a trick so "foo is RIGHT" will only ever work for this, same goes for LEFT. + +#: Used as a position indicator in the toolbar: On the left side. +LEFT = object() + +PAGE_TYPES_ID = "page_types" +PAGE_TREE_POSITIONS = ('last-child', 'first-child', 'left', 'right') + +#: Used for the ``limit_visibility_in_menu`` keyword argument to +#: :func: `create_page`.Does not limit menu visibility. +VISIBILITY_ALL = None + +#: Used for the ``limit_visibility_in_menu`` keyword argument to :func: `create_page`. +#: Limits menu visibility to authenticated users. +VISIBILITY_USERS = 1 + +#: Used for the ``limit_visibility_in_menu`` keyword argument to :func: `create_page`. +#: Limits menu visibility to anonymous(not authenticated) users. +VISIBILITY_ANONYMOUS = 2 + +X_FRAME_OPTIONS_INHERIT = 0 +X_FRAME_OPTIONS_DENY = 1 +X_FRAME_OPTIONS_SAMEORIGIN = 2 +X_FRAME_OPTIONS_ALLOW = 3 + +PAGE_USERNAME_MAX_LENGTH = 255 + +SLUG_REGEXP = '[0-9A-Za-z-_.//]+' + +#: Used for cache control headers: 0 seconds, i.e. now. +EXPIRE_NOW = 0 + +#: Used for cache control headers: 365 * 24 * 3600 seconds, i.e. one year. HTTP specification says +#: max caching should only be up to one year. +MAX_EXPIRATION_TTL = 365 * 24 * 3600 + + +def _get_toolbar_js(plugin_type: str) -> str: + return f'' + + +PLUGIN_TOOLBAR_JS = _get_toolbar_js("plugin") +PLACEHOLDER_TOOLBAR_JS = _get_toolbar_js("placeholder") + +# In the permissions system we use user levels to determine +# the depth in which the user has permissions. +# This constant represents a user that can see pages at all depths. +ROOT_USER_LEVEL = -1 + +GRANT_ALL_PERMISSIONS = 'All' + +PUBLISH_COMMENT = "Publish" + +SCRIPT_USERNAME = 'script' + +CMS_CONFIG_NAME = 'cms_config' + +MODAL_HTML_REDIRECT = 'Redirecting...' + +#: Default chunk_size for QuerySet.iterator() calls on plugin querysets. +#: Required since Django 5.0 when prefetch_related is applied. +PLUGIN_ITERATOR_CHUNK_SIZE = 2000 diff --git a/cms/context_processors.py b/cms/context_processors.py new file mode 100644 index 00000000..c682ee05 --- /dev/null +++ b/cms/context_processors.py @@ -0,0 +1,31 @@ +from functools import cache + +from django.utils.functional import lazy + +from cms.utils.conf import get_cms_setting +from cms.utils.page import get_page_template_from_request + + +def cms_settings(request): + """ + Adds cms-related variables to the context. + """ + from menus.menu_pool import MenuRenderer + + @cache + def _get_menu_renderer(): + # We use lru_cache to avoid getting the manager + # every time this function is called. + from menus.menu_pool import menu_pool + return menu_pool.get_renderer(request) + + # Now use lazy() to avoid getting the menu renderer + # up until the point is needed. + # lazy() does not memoize results, is why lru_cache is needed. + _get_menu_renderer = lazy(_get_menu_renderer, MenuRenderer) + + return { + 'cms_menu_renderer': _get_menu_renderer(), + 'CMS_MEDIA_URL': get_cms_setting('MEDIA_URL'), + 'CMS_TEMPLATE': lambda: get_page_template_from_request(request), + } diff --git a/cms/exceptions.py b/cms/exceptions.py new file mode 100644 index 00000000..8bd90ec4 --- /dev/null +++ b/cms/exceptions.py @@ -0,0 +1,85 @@ +class PluginAlreadyRegistered(Exception): + pass + + +class PluginNotRegistered(Exception): + pass + + +class PluginLimitReached(Exception): + """Gets triggered when a placeholder has reached its plugin limit.""" + + pass + + +class AppAlreadyRegistered(Exception): + pass + + +class ToolbarAlreadyRegistered(Exception): + pass + + +class ToolbarNotRegistered(Exception): + pass + + +class NotImplemented(Exception): + pass + + +class SubClassNeededError(Exception): + pass + + +class MissingFormError(Exception): + pass + + +class NoHomeFound(Exception): + pass + + +class PermissionsException(Exception): + """Base permission exception""" + + +class NoPermissionsException(PermissionsException): + """Can be fired when some violate action is performed on permission system.""" + + +class PublicIsUnmodifiable(Exception): + """A method was invoked on the public copy, but is only valid for the + draft version""" + + pass + + +class PublicVersionNeeded(Exception): + """A Public version of this page is needed""" + + pass + + +class Deprecated(Exception): + pass + + +class DuplicatePlaceholderWarning(Warning): + pass + + +class DontUsePageAttributeWarning(Warning): + pass + + +class LanguageError(Exception): + pass + + +class PluginConsistencyError(Exception): + pass + + +class PlaceholderNotFound(Exception): + pass diff --git a/cms/extensions/__init__.py b/cms/extensions/__init__.py new file mode 100644 index 00000000..e535ffe4 --- /dev/null +++ b/cms/extensions/__init__.py @@ -0,0 +1,11 @@ +from .admin import PageContentExtensionAdmin, PageExtensionAdmin +from .extension_pool import extension_pool +from .models import PageContentExtension, PageExtension + +__all__ = [ + 'extension_pool', + 'PageContentExtension', + 'PageContentExtensionAdmin', + 'PageExtension', + 'PageExtensionAdmin' +] diff --git a/cms/extensions/admin.py b/cms/extensions/admin.py new file mode 100644 index 00000000..91733002 --- /dev/null +++ b/cms/extensions/admin.py @@ -0,0 +1,109 @@ +from django.contrib import admin +from django.contrib.admin.options import csrf_protect_m +from django.core.exceptions import PermissionDenied +from django.http import HttpResponseRedirect +from django.urls import reverse + +from cms.models import Page, PageContent +from cms.utils.page_permissions import user_can_change_page +from cms.utils.urlutils import static_with_version + + +class ExtensionAdmin(admin.ModelAdmin): + change_form_template = "admin/cms/extensions/change_form.html" + add_form_template = "admin/cms/extensions/change_form.html" + + class Media: + css = {"all": (static_with_version("cms/css/cms.admin.css"),)} + + +class PageExtensionAdmin(ExtensionAdmin): + + def save_model(self, request, obj, form, change): + if not change and 'extended_object' in request.GET: + obj.extended_object = Page.objects.get(pk=request.GET['extended_object']) + page = Page.objects.get(pk=request.GET['extended_object']) + else: + page = obj.extended_object + if not user_can_change_page(request.user, page): + raise PermissionDenied() + super().save_model(request, obj, form, change) + + def delete_model(self, request, obj): + if not obj.extended_object.has_change_permission(request.user): + raise PermissionDenied() + obj.delete() + + def get_model_perms(self, request): + """ + Return empty perms dict thus hiding the model from admin index. + """ + return {} + + @csrf_protect_m + def add_view(self, request, form_url='', extra_context=None): + """ + Check if the page already has an extension object. If so, redirect to edit view instead. + """ + extended_object_id = request.GET.get('extended_object', False) + if extended_object_id: + try: + page = Page.objects.get(pk=extended_object_id) + extension = self.model.objects.get(extended_object=page) + opts = self.model._meta + change_url = reverse( + f'admin:{opts.app_label}_{opts.model_name}_change', + args=(extension.pk,), + current_app=self.admin_site.name + ) + return HttpResponseRedirect(change_url) + except self.model.DoesNotExist: + pass + return super().add_view(request, form_url, extra_context) + + +class PageContentExtensionAdmin(ExtensionAdmin): + + def save_model(self, request, obj, form, change): + if not change and 'extended_object' in request.GET: + obj.extended_object = PageContent.admin_manager.get(pk=request.GET['extended_object']) + content = PageContent.admin_manager.get(pk=request.GET['extended_object']) + else: + content = obj.extended_object + if not user_can_change_page(request.user, page=content.page): + raise PermissionDenied() + super().save_model(request, obj, form, change) + + def delete_model(self, request, obj): + page = obj.extended_object.page + + if not user_can_change_page(request.user, page): + raise PermissionDenied() + obj.delete() + + def get_model_perms(self, request): + """ + Return empty perms dict thus hiding the model from admin index. + """ + return {} + + @csrf_protect_m + def add_view(self, request, form_url='', extra_context=None): + """ + Check if the page already has an extension object. If so, redirect to edit view instead. + """ + extended_object_id = request.GET.get('extended_object', False) + if extended_object_id: + try: + content = PageContent.admin_manager.get(pk=extended_object_id) + extension = self.model.objects.get(extended_object=content) + opts = self.model._meta + change_url = reverse( + f'admin:{opts.app_label}_{opts.model_name}_change', + args=(extension.pk,), + current_app=self.admin_site.name + ) + return HttpResponseRedirect(change_url) + except self.model.DoesNotExist: + pass + return super().add_view(request, form_url, extra_context) diff --git a/cms/extensions/extension_pool.py b/cms/extensions/extension_pool.py new file mode 100644 index 00000000..544dfc1c --- /dev/null +++ b/cms/extensions/extension_pool.py @@ -0,0 +1,94 @@ +from cms.exceptions import SubClassNeededError + +from .models import PageContentExtension, PageExtension + + +class ExtensionPool: + def __init__(self): + self.page_extensions = set() + self.page_content_extensions = set() + + def register(self, extension): + """ + Registers the given extension. + + Example:: + + class MyExtension(PageExtension): + pass + + extension_pool.register(MyExtension) + + or as decorator:: + + @extension_pool.register + class MyExtension(PageExtension): + pass + + """ + + if issubclass(extension, PageExtension): + self.page_extensions.add(extension) + elif issubclass(extension, PageContentExtension): + self.page_content_extensions.add(extension) + else: + raise SubClassNeededError( + f'Extension has to subclass either {PageExtension} or {PageContentExtension}. {extension} does not!' + ) + return extension + + def unregister(self, extension): + """ + Unregisters the given extension. No error is thrown if given extension isn't an extension or wasn't + registered yet. + """ + + try: + if issubclass(extension, PageExtension): + self.page_extensions.remove(extension) + elif issubclass(extension, PageContentExtension): + self.page_content_extensions.remove(extension) + except KeyError: + pass + + def _copy_page_extensions(self, source_page, target_page, language): + for extension in self.page_extensions: + for instance in extension.objects.filter(extended_object=source_page): + instance.copy(target_page, language) + + def _copy_content_extensions(self, source_page, target_page, language): + source_content = source_page.pagecontent_set(manager="admin_manager").current_content(language=language).get() + target_content = target_page.pagecontent_set(manager="admin_manager").current_content(language=language).get() + for extension in self.page_content_extensions: + for instance in extension.objects.filter(extended_object=source_content): + instance.copy(target_content, language) + + def copy_extensions(self, source_page, target_page, languages=None): + if not languages: + languages = target_page.get_languages() + if self.page_extensions: + self._copy_page_extensions(source_page, target_page, None) + for language in languages: + if self.page_content_extensions: + self._copy_content_extensions(source_page, target_page, language) + + def get_page_extensions(self, page=None): + extensions = [] + for extension in self.page_extensions: + if page: + extensions.extend(list(extension.objects.filter(extended_object=page))) + else: + extensions.extend(list(extension.objects.all())) + return extensions + + def get_page_content_extensions(self, page_content=None): + extensions = [] + for extension in self.page_content_extensions: + if page_content: + extensions.extend(list(extension.objects.filter(extended_object=page_content))) + else: + extensions.extend(list(extension.objects.all())) + return extensions + + +extension_pool = ExtensionPool() diff --git a/cms/extensions/models.py b/cms/extensions/models.py new file mode 100644 index 00000000..7c10889e --- /dev/null +++ b/cms/extensions/models.py @@ -0,0 +1,69 @@ +from django.db import models +from django.db.models import ManyToManyField + +from cms.models import Page, PageContent + + +class BaseExtension(models.Model): + extended_object = None + + class Meta: + abstract = True + + def get_page(self): # pragma: no cover + raise NotImplementedError('Function must be overwritten in subclasses and return the extended page object.') + + def copy_relations(self, oldinstance, language): + """ + Copy relations like many to many or foreign key relations to the public version. + Similar to the same named cms plugin function. + + :param oldinstance: the draft version of the extension + """ + pass + + @classmethod + def _get_related_objects(cls): + fields = cls._meta._get_fields( + forward=False, reverse=True, + include_parents=True, + include_hidden=False, + ) + return list(obj for obj in fields if not isinstance(obj.field, ManyToManyField)) + + def copy(self, target, language): + """ + This method copies this extension to an unrelated-target. + """ + clone = self.__class__.objects.get(pk=self.pk) # get a copy of this instance + clone.pk = None + clone.extended_object = target # set the new public object + + # Nullify all concrete parent primary keys. See issue #5494 + for parent, field in clone._meta.parents.items(): + if field: + setattr(clone, parent._meta.pk.attname, None) + + clone.save() + clone.copy_relations(self, language) + return clone + + +class PageExtension(BaseExtension): + extended_object = models.OneToOneField(Page, on_delete=models.CASCADE, editable=False) + + class Meta: + abstract = True + + def get_page(self): + return self.extended_object + + +class PageContentExtension(BaseExtension): + extended_object = models.OneToOneField(PageContent, on_delete=models.CASCADE, editable=False) + + class Meta: + abstract = True + + def get_page(self): + return self.extended_object.page diff --git a/cms/extensions/toolbar.py b/cms/extensions/toolbar.py new file mode 100644 index 00000000..138f1b6f --- /dev/null +++ b/cms/extensions/toolbar.py @@ -0,0 +1,101 @@ +from django.urls import NoReverseMatch + +from cms.models import PageContent +from cms.toolbar_base import CMSToolbar +from cms.utils.page_permissions import user_can_change_page +from cms.utils.urlutils import admin_reverse + + +class ExtensionToolbar(CMSToolbar): + """Offers simplified API for providing the user access to the admin of page extensions and + page content extensions through the toolbar.""" + model = None + page = None + page_content = None + + def _setup_extension_toolbar(self): + """ + Does all the sanity check for the current environment: + + * that a page exists + * permissions check on the current page + + It returns the page menu or None if the above conditions are not met + """ + page = self._get_page() + + if page and user_can_change_page(self.request.user, page=page): + return self.toolbar.get_or_create_menu("page") + return + + def _get_page(self): + if not self.page: + obj = self.toolbar.get_object() # Try getting the PageContent object from the toolbar + if isinstance(obj, PageContent): + self.page = obj.page + self.page_content = obj + else: + self.page = self.request.current_page # Otherwise get Page object from the request + if self.page: + self.page_content = self.page.get_content_obj(self.current_lang) + return self.page + + def get_page_extension_admin(self): + """ + Get the admin url for the page extension menu item, depending on whether a PageExtension instance exists + for the current page or not. + + Return a tuple of the current extension and the url; the extension is None if no instance exists, + the url is None is no admin is registered for the extension. + """ + page = self._get_page() + # Page extension + try: + page_extension = self.model.objects.get(extended_object_id=page.pk) + except self.model.DoesNotExist: + page_extension = None + try: + app_label, model_name = self.model._meta.app_label, self.model.__name__.lower() + if page_extension: + admin_url = admin_reverse(f"{app_label}_{model_name}_change", args=(page_extension.pk,)) + else: + admin_url = "{}?extended_object={}".format( + admin_reverse(f"{app_label}_{model_name}_add"), self.page.pk + ) + except NoReverseMatch: # pragma: no cover + admin_url = None + return page_extension, admin_url + + def get_page_content_extension_admin(self, page_content_obj=None): + """ + Get the admin url for the page content extensions menu item, depending on whether a + :class:`~cms.extensions.models.PageContentExtension` instance exists for the + :class:`~cms.models.contentmodels.PageContent` displayed. + + Return a tuple of the page content extension and the url; the extension is None + if no instance exists, the url is None is no admin is registered for the extension. + """ + self._get_page() + page_content = page_content_obj or self.page_content + try: + pagecontent_extension = self.model.objects.get(extended_object_id=page_content.pk) + except self.model.DoesNotExist: + pagecontent_extension = None + try: + app_label, model_name = self.model._meta.app_label, self.model.__name__.lower() + if pagecontent_extension: + admin_url = admin_reverse(f"{app_label}_{model_name}_change", args=(pagecontent_extension.pk,)) + else: + admin_url = "{}?extended_object={}".format( + admin_reverse(f"{app_label}_{model_name}_add"), page_content.pk + ) + except NoReverseMatch: # pragma: no cover + admin_url = None + return pagecontent_extension, admin_url + + def _get_sub_menu(self, current_menu, key, label, position=None): + """ + Utility function to get a submenu of the current menu + """ + extension_menu = current_menu.get_or_create_menu(key, label, position=position) + return extension_menu diff --git a/cms/forms/__init__.py b/cms/forms/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cms/forms/fields.py b/cms/forms/fields.py new file mode 100644 index 00000000..19e40f89 --- /dev/null +++ b/cms/forms/fields.py @@ -0,0 +1,116 @@ +from django import forms +from django.contrib.admin.widgets import RelatedFieldWidgetWrapper +from django.core.validators import EMPTY_VALUES +from django.forms import ChoiceField +from django.utils.translation import gettext_lazy as _ + +from cms.forms.utils import get_page_choices, get_site_choices +from cms.forms.validators import validate_url +from cms.forms.widgets import PageSelectWidget, PageSmartLinkWidget +from cms.models.pagemodel import Page + + +class PageSelectFormField(forms.MultiValueField): + """ + Behaves like a :class:`django.forms.ModelChoiceField` field for the + :class:`cms.models.pagemodel.Page` model, but displays itself as a split + field with a select drop-down for the site and one for the page. It also + indents the page names based on what level they're on, so that the page + select drop-down is easier to use. This takes the same arguments as + :class:`django.forms.ModelChoiceField`. + """ + widget = PageSelectWidget + default_error_messages = { + 'invalid_site': _('Select a valid site'), + 'invalid_page': _('Select a valid page'), + } + + def __init__(self, queryset=None, empty_label="---------", cache_choices=False, + required=True, widget=None, to_field_name=None, limit_choices_to=None, *args, **kwargs): + errors = self.default_error_messages.copy() + if 'error_messages' in kwargs: + errors.update(kwargs['error_messages']) + self.limit_choices_to = limit_choices_to + kwargs['required'] = required + fields = ( + ChoiceField(choices=get_site_choices, required=False, error_messages={'invalid': errors['invalid_site']}), + ChoiceField(choices=get_page_choices, required=False, error_messages={'invalid': errors['invalid_page']}), + ) + + # Remove the unexpected blank kwarg if it's supplied, + # causes an error where the MultiValueField doesn't expect it + # https://github.com/django/django/commit/da79ee472d803963dc3ea81ee67767dc06068aac + if 'blank' in kwargs: + del kwargs['blank'] + + super().__init__(fields, *args, **kwargs) + + def compress(self, data_list): + if data_list: + page_id = data_list[1] + + if page_id in EMPTY_VALUES: + if not self.required: + return None + raise forms.ValidationError(self.error_messages['invalid_page']) + return Page.objects.get(pk=page_id) + return None + + def has_changed(self, initial, data): + is_empty = data and (len(data) >= 2 and data[1] in [None, '']) + + if isinstance(self.widget, RelatedFieldWidgetWrapper): + self.widget.decompress = self.widget.widget.decompress + + if is_empty and initial is None: + # when empty data will have [u'1', u'', u''] as value + # this will cause django to always return True because of the '1' + # so we simply follow django's default behavior when initial is None and data is "empty" + data = ['' for x in range(0, len(data))] + return super().has_changed(initial, data) + + def _has_changed(self, initial, data): + return self.has_changed(initial, data) + + +class PageSmartLinkField(forms.CharField): + """ + A field making use of ``cms.forms.widgets.PageSmartLinkWidget``. + This field will offer you a list of matching internal pages as you type. + You can either pick one or enter an arbitrary URL to create a non-existing entry. + Takes a `placeholder_text` argument to define the text displayed inside the + input before you type. + + The widget uses an ajax request to try to find pages match. It will try to find + case-insensitive matches amongst public and published pages on the `title`, `path`, + `page_title`, `menu_title` fields. + + .. note:: + + ``PageSmartLinkField`` stores its value as a plain URL string, so links + do not follow pages that are later moved or renamed. For dynamically + linking to pages, other CMS content, or external URLs, the preferred + approach is the ``LinkField`` provided by + `djangocms-link `_, which + keeps references stable across moves and supports a configurable set of + link targets. + """ + widget = PageSmartLinkWidget + default_validators = [validate_url] + + def __init__(self, max_length=None, min_length=None, placeholder_text=None, + ajax_view=None, *args, **kwargs): + self.placeholder_text = placeholder_text + widget = self.widget(ajax_view=ajax_view) + super().__init__( + max_length=max_length, min_length=min_length, widget=widget, *args, **kwargs + ) + + def widget_attrs(self, widget): + attrs = super().widget_attrs(widget) + attrs.update({'placeholder_text': self.placeholder_text}) + return attrs + + def clean(self, value): + value = self.to_python(value).strip() + return super().clean(value) diff --git a/cms/forms/login.py b/cms/forms/login.py new file mode 100644 index 00000000..2cacedda --- /dev/null +++ b/cms/forms/login.py @@ -0,0 +1,15 @@ +from django import forms +from django.contrib.auth.forms import AuthenticationForm + + +class CMSToolbarLoginForm(AuthenticationForm): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + kwargs['prefix'] = kwargs.get('prefix', 'cms') + self.fields['username'].widget = forms.TextInput( + attrs={'required': 'required'} + ) + self.fields['password'].widget = forms.PasswordInput( + attrs={'required': 'required'} + ) diff --git a/cms/forms/utils.py b/cms/forms/utils.py new file mode 100644 index 00000000..3dcff52c --- /dev/null +++ b/cms/forms/utils.py @@ -0,0 +1,107 @@ +from django.contrib.sites.models import Site +from django.db.models import Prefetch +from django.db.models.signals import post_delete, post_save +from django.utils.html import escape +from django.utils.safestring import mark_safe + +from cms.cache.choices import ( + _page_cache_key, + _site_cache_key, + clean_page_choices_cache, + clean_site_choices_cache, +) +from cms.models import Page +from cms.utils import i18n + + +def get_sites(): + sites = ( + Site + .objects + .filter(djangocms_pages__isnull=False) + .order_by('name') + .distinct() + ) + return sites + + +def get_page_choices_for_site(site, language): + from cms.models import PageContent + + fallbacks = i18n.get_fallback_languages(language, site_id=site.pk) + languages = [language] + fallbacks + translation_lookup = Prefetch( + 'pagecontent_set', + to_attr='filtered_translations', + queryset=PageContent.objects.filter(language__in=languages).only('pk', 'page', 'language', 'title') + ) + pages = ( + Page + .objects + .on_site(site) + .prefetch_related(translation_lookup) + .order_by('path') + .only('pk') + ) + + for page in pages: + translations = page.filtered_translations + pagecontent_by_language = {trans.language: trans.title for trans in translations} + + for lang in languages: + # EmptyPageContent is used to prevent the cms from trying + # to find a translation in the database + if lang in pagecontent_by_language: + title = pagecontent_by_language[lang] + indent = "  " * (page.depth - 1) + label = mark_safe(f"{indent}{escape(title)}") + yield (page.pk, label) + break + + +def update_site_and_page_choices(language=None): + if language is None: + language = i18n.get_current_language() + + site_choices = [] + page_choices = [('', '----')] + site_choices_key = _site_cache_key(language) + page_choices_key = _page_cache_key(language) + + for site in get_sites(): + _page_choices = list(get_page_choices_for_site(site, language)) + site_choices.append((site.pk, site.name)) + page_choices.append((site.name, _page_choices)) + + from django.core.cache import cache + + # We set it to 1 day here because we actively invalidate this cache. + cache.set(site_choices_key, site_choices, 86400) + cache.set(page_choices_key, page_choices, 86400) + return site_choices, page_choices + + +def get_site_choices(lang=None): + from django.core.cache import cache + + lang = lang or i18n.get_current_language() + site_choices = cache.get(_site_cache_key(lang)) + if site_choices is None: + site_choices, _ = update_site_and_page_choices(lang) + return site_choices + + +def get_page_choices(lang=None): + from django.core.cache import cache + + lang = lang or i18n.get_current_language() + page_choices = cache.get(_page_cache_key(lang)) + if page_choices is None: + _, page_choices = update_site_and_page_choices(lang) + return page_choices + + +post_save.connect(clean_page_choices_cache, sender=Page) +post_save.connect(clean_site_choices_cache, sender=Site) +post_delete.connect(clean_page_choices_cache, sender=Page) +post_delete.connect(clean_site_choices_cache, sender=Site) diff --git a/cms/forms/validators.py b/cms/forms/validators.py new file mode 100644 index 00000000..fb6e3644 --- /dev/null +++ b/cms/forms/validators.py @@ -0,0 +1,117 @@ +from typing import TYPE_CHECKING, Optional +from urllib.parse import urlsplit + +from django.core.exceptions import ValidationError +from django.core.validators import RegexValidator, URLValidator +from django.utils.html import escape +from django.utils.safestring import mark_safe +from django.utils.translation import gettext + +from cms.utils.urlutils import admin_reverse, path_segment_regex, relative_url_regex + +if TYPE_CHECKING: + # Only needed for type hinting - avoid circular import + from cms.models.pagemodel import Page + + +def validate_relative_url(value): + RegexValidator(regex=relative_url_regex)(value) + + +def validate_url(value): + if "<" in value or ">" in value: + # ``relative_url_regex`` excludes angle brackets, but the absolute fallback below + # is Django's ``URLValidator``, whose path pattern accepts them as long as the + # value carries no space (``https://example.com/``). + # Reject them before either branch runs, so markup cannot enter through a scheme. + raise ValidationError( + gettext("Enter a valid relative or absolute URL."), + code="invalid", + ) + + try: + # Validate relative urls first + validate_relative_url(value) + except ValidationError: + # Fallback to absolute urls + URLValidator()(value) + else: + # ``relative_url_regex`` only constrains the *characters* of a relative + # path, not the part before the first slash. Values such as + # ``javascript:alert(1)/x``, ``data:text/html,...`` or ``vbscript:.../x`` + # therefore match the relative branch while still carrying a scheme that + # executes script when the value is later rendered into an ``href`` + # (CWE-79). A genuine relative URL has no scheme, so reject any value + # that does. (Off-site targets such as ``https://example.com`` or + # ``//example.com`` are intentionally permitted -- this field allows + # absolute redirects -- and navigate rather than execute script.) + if urlsplit(value).scheme: + raise ValidationError( + gettext("Enter a valid relative or absolute URL."), + code="invalid", + ) + + +def validate_path_segment(value): + """Validate a single path segment, i.e. a path that contains no "/".""" + RegexValidator( + regex=path_segment_regex, + message=gettext("Enter a valid relative or absolute URL."), + code="invalid", + )(value) + + +def validate_path(value): + """Validate a page path. + + Unlike :func:`validate_url` this also accepts a single path segment such as ``contact``, + which ``relative_url_regex`` -- and therefore :func:`validate_url` -- never matches. + """ + if "/" in value: + validate_url(value) + else: + validate_path_segment(value) + + +def validate_url_uniqueness( + site, path: str, language: str, user_language: str | None = None, exclude_page: Optional["Page"] = None +): + """Checks for conflicting urls""" + from cms.models.pagemodel import PageUrl + + # Single-segment paths used to skip validation entirely, so an "Overwrite URL" without a + # "/" could hold arbitrary characters. + validate_path(path) + + path = path.strip("/") + page_urls = PageUrl.objects.get_for_site(site, language=language).filter(path=path) + + if exclude_page: + page_urls = page_urls.exclude(page=exclude_page.pk) + + try: + conflict_page = page_urls[0].page + except IndexError: + return True + + conflict_translation = conflict_page.get_content_obj(language, fallback=False) + + if conflict_translation: # No empty page content + change_url = admin_reverse("cms_pagecontent_change", args=[conflict_translation.pk]) + else: + change_url = "" # Empty page has no slug + if user_language: + change_url += f"?language={user_language}" + + conflict_url = f'{escape(str(conflict_translation.title))}' + + if exclude_page: + message = gettext("Page %(conflict_page)s has the same url '%(url)s' as current page \"%(instance)s\".") + else: + message = gettext("Page %(conflict_page)s has the same url '%(url)s' as current page.") + message = message % { + "conflict_page": conflict_url, + "url": escape(path), + "instance": escape(exclude_page.get_title(language)) if exclude_page else "", + } + raise ValidationError(mark_safe(message)) diff --git a/cms/forms/widgets.py b/cms/forms/widgets.py new file mode 100644 index 00000000..364c6d73 --- /dev/null +++ b/cms/forms/widgets.py @@ -0,0 +1,249 @@ +from django.contrib.auth import get_permission_codename +from django.contrib.sites.models import Site +from django.forms.widgets import MultiWidget, Select, TextInput +from django.templatetags.static import static +from django.urls import NoReverseMatch, reverse_lazy +from django.utils.encoding import force_str +from django.utils.html import escape, format_html +from django.utils.safestring import mark_safe +from django.utils.translation import gettext as _ + +from cms.forms.utils import get_page_choices, get_site_choices +from cms.models import Page, PageUser +from cms.utils.urlutils import admin_reverse, static_with_version + + +class PageSelectWidget(MultiWidget): + """A widget that allows selecting a page by first selecting a site and then + a page on that site in a two-step process. + """ + template_name = 'cms/widgets/pageselectwidget.html' + + class Media: + js = ( + static_with_version('cms/js/dist/bundle.forms.pageselectwidget.min.js'), + ) + + def __init__(self, site_choices=None, page_choices=None, attrs=None): + if attrs is not None: + self.attrs = attrs.copy() + else: + self.attrs = {} + self.choices = [] + super().__init__((Select, Select, Select), attrs) + + def decompress(self, value): + """ + receives a page_id in value and returns the site_id and page_id + of that page or the current site_id and None if no page_id is given. + """ + if value: + page = Page.objects.get(pk=value) + return [page.site_id, page.pk, page.pk] + site = Site.objects.first() + return [site.pk, None, None] + + def _has_changed(self, initial, data): + # THIS IS A COPY OF django.forms.widgets.Widget._has_changed() + # (except for the first if statement) + + """ + Return True if data differs from initial. + """ + # For purposes of seeing whether something has changed, None is + # the same as an empty string, if the data or initial value we get + # is None, replace it w/ ''. + if data is None or (len(data) >= 2 and data[1] in [None, '']): + data_value = '' + else: + data_value = data + if initial is None: + initial_value = '' + else: + initial_value = initial + if force_str(initial_value) != force_str(data_value): + return True + return False + + def _build_widgets(self): + site_choices = get_site_choices() + page_choices = get_page_choices() + self.site_choices = site_choices + self.choices = page_choices + self.widgets = ( + Select(choices=site_choices), + Select(choices=[('', '----')]), + Select(choices=self.choices, attrs={'style': "display:none;"}), + ) + + def get_context(self, name, value, attrs): + self._build_widgets() + context = super().get_context(name, value, attrs) + context['widget']['script_data'] = {"name": name} + return context + + def format_output(self, rendered_widgets): + return ' '.join(rendered_widgets) + + +class PageSmartLinkWidget(TextInput): + """Presents the user with a Select2 widget to select a page and returns the link to this page as a string.""" + template_name = 'cms/widgets/pagesmartlinkwidget.html' + + class Media: + css = { + 'screen': ( + 'admin/css/vendor/select2/select2.css', + 'admin/css/autocomplete.css', + ), + } + js = ( + 'admin/js/vendor/jquery/jquery.js', + 'admin/js/vendor/select2/select2.full.js', + 'admin/js/jquery.init.js', + static_with_version('cms/js/dist/bundle.forms.pagesmartlinkwidget.min.js'), + ) + + def __init__(self, attrs=None, ajax_view=None): + super().__init__(attrs) + self.ajax_url = self.get_ajax_url(ajax_view=ajax_view) + + def get_ajax_url(self, ajax_view): + try: + return reverse_lazy(ajax_view) + except NoReverseMatch: + raise Exception( + 'You should provide an ajax_view argument that can be reversed to the PageSmartLinkWidget' + ) + + def _build_script_data(self, name, value, attrs): + return { + "id": attrs.get('id', ''), + "text": str(attrs.get('placeholder_text', '')), + "lang": self.language, + "url": force_str(self.ajax_url), + } + + def get_context(self, name, value, attrs): + context = super().get_context(name, value, attrs) + context['widget']['script_data'] = self._build_script_data(name, value, context['widget']['attrs']) + return context + + +class UserSelectAdminWidget(Select): + """Special widget used in page permission inlines, because we have to render + an add user (plus) icon, but point it somewhere else - to special user creation + view, which is accessible only if user haves "add user" permissions. + + Current user should be assigned to widget in form constructor as an user + attribute. + """ + def render(self, name, value, attrs=None, choices=(), renderer=None): + output = [super().render(name, value, attrs, renderer=renderer)] + if hasattr(self, 'user') and ( + self.user.is_superuser or self.user.has_perm( + PageUser._meta.app_label + '.' + get_permission_codename('add', PageUser._meta)) + ): + # append + icon + add_url = admin_reverse('cms_pageuser_add') + output.append(format_html( + '' + '{}', + add_url, + name, + _('Add another'), + static('admin/img/icon-addlink.svg'), + _('Add'), + )) + return mark_safe(''.join(output)) + + +class AppHookSelect(Select): + + """Special widget used for the App Hook selector in the Advanced Settings + of the Page Admin. It adds support for a data attribute per option and + includes supporting JS into the page. + """ + + class Media: + js = ( + static_with_version('cms/js/dist/bundle.forms.apphookselect.min.js'), + ) + + def __init__(self, attrs=None, choices=(), app_namespaces={}): + self.app_namespaces = app_namespaces + super().__init__(attrs, choices) + + def create_option(self, name, value, label, selected, index, subindex=None, attrs=None): + option = super().create_option(name, value, label, selected, index, subindex, attrs) + if value in self.app_namespaces: + option['attrs']['data-namespace'] = escape(self.app_namespaces[value]) + return option + + def _build_option(self, selected_choices, option_value, option_label): + if option_value is None: + option_value = '' + option_value = force_str(option_value) + if option_value in selected_choices: + selected_html = mark_safe(' selected="selected"') + if not self.allow_multiple_selected: + # Only allow for a single selection. + selected_choices.remove(option_value) + else: + selected_html = '' + + if option_value in self.app_namespaces: + data_html = mark_safe(' data-namespace="%s"' % escape(self.app_namespaces[option_value])) + else: + data_html = '' + return option_value, selected_html, data_html, force_str(option_label) + + def render_option(self, selected_choices, option_value, option_label): + option_data = self._build_option(selected_choices, option_value, option_label) + return '' % option_data + + +class ApplicationConfigSelect(Select): + """ + Special widget -populate by javascript- that shows application configurations + depending on selected Apphooks. + + Required data are injected in the page as JSON data that forms.apphookselect.js + uses to create the appropriate data structure. + + A stub 'addlink' link is created and filled in with the correct URL by the same + javascript. + """ + template_name = 'cms/widgets/applicationconfigselect.html' + + class Media: + js = ( + static_with_version('cms/js/dist/bundle.forms.apphookselect.min.js'), + ) + + def __init__(self, attrs=None, choices=(), app_configs={}): + self.app_configs = app_configs + super().__init__(attrs, choices) + + def _build_script_data(self, name, value, attrs): + configs = { + str(application): [[str(config.pk), str(config)] for config in cms_app.get_configs()] + for application, cms_app in self.app_configs.items() + } + urls = { + str(application): cms_app.get_config_add_url() + for application, cms_app in self.app_configs.items() + } + + return { + "apphooks_configuration": configs, + "apphooks_configuration_url": urls, + "apphooks_configuration_value": str(value) if value is not None else "", + # apphook_configuration_value needs to correspond to correspond to str(config.pk) + } + + def get_context(self, name, value, attrs): + context = super().get_context(name, value, attrs) + context['widget']['script_data'] = self._build_script_data(name, value, context['widget']['attrs']) + return context diff --git a/cms/forms/wizards.py b/cms/forms/wizards.py new file mode 100644 index 00000000..ea22e401 --- /dev/null +++ b/cms/forms/wizards.py @@ -0,0 +1,176 @@ +from django import forms +from django.core.exceptions import ValidationError +from django.db import transaction +from django.utils.html import strip_tags +from django.utils.text import slugify +from django.utils.translation import gettext, gettext_lazy as _ + +from cms.admin.forms import AddPageForm +from cms.plugin_pool import plugin_pool +from cms.utils import permissions +from cms.utils.conf import get_cms_setting +from cms.utils.page import get_available_slug +from cms.utils.page_permissions import user_can_add_page, user_can_add_subpage + +try: + # djangocms_text is not guaranteed to be available + from djangocms_text.widgets import TextEditorWidget + text_widget = TextEditorWidget +except ImportError: + text_widget = forms.Textarea + + +class CreateCMSPageForm(AddPageForm): + sub_page_form = False + + # Field overrides + menu_title = None + page_title = None + meta_description = None + + content = forms.CharField( + label=_('Content'), widget=text_widget, required=False, + help_text=_("Optional. If supplied, will be automatically added " + "within a new text plugin.") + ) + + class Media: + js = ( + # This simply adds some JS for + # hiding/showing the content field based on the selection of this select. + 'cms/js/widgets/wizard.pagetypeselect.js', + ) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields['title'].help_text = _("Provide a title for the new page.") + self.fields['slug'].required = False + self.fields['slug'].help_text = _("Leave empty for automatic slug, or override as required.") + + def get_placeholder(self, page_content, slot=None): + """ + Returns the named placeholder or, if no «slot» provided, the first + editable, non-static placeholder or None. + """ + placeholders = page_content.get_placeholders() + + if slot: + placeholders = placeholders.filter(slot=slot) + + for ph in placeholders: + if not ph.is_static and ph.is_editable: + return ph + return None + + @property + def _language(self): + return self.language_code + + def clean(self): + """ + Validates that either the slug is provided, or that slugification from + `title` produces a valid slug. + :return: + """ + data = self.cleaned_data + + if self._errors: + return data + + slug = slugify(data.get('slug')) or slugify(data['title']) + if not slug: + data["slug"] = "" + forms.ValidationError({ + "slug": [_("Cannot automatically create slug. Please provide one manually.")], + }) + + parent_page = data.get('parent_page') + + if parent_page: + base = parent_page.get_path(self._language) + path = f'{base}/{slug}' if base else slug + else: + base = '' + path = slug + + data['slug'] = get_available_slug(self._site, path, self._language, suffix=None) + data['path'] = '{}/{}'.format(base, data['slug']) if base else data['slug'] + + if not data['slug']: + raise forms.ValidationError(_("Please provide a valid slug.")) + return data + + def clean_content(self): + # A rich-text editor submits an empty value as an empty paragraph + # (e.g. ``

`` or ``

 

``) rather than an empty string. + # Treat any value without visible text as empty so the wizard does not + # create a blank text plugin on the new page. + content = self.cleaned_data.get("content") + if content and not strip_tags(content).replace("\xa0", "").replace(" ", "").strip(): + return "" + return content + + def clean_parent_page(self): + # Check to see if this user has permissions to make this page. We've + # already checked this when producing a list of wizard entries, but this + # is to prevent people from possible form-hacking. + if self._page and self.sub_page_form: + # User is adding a page which will be a direct + # child of the current page. + parent_page = self._page + elif self._page and self._page.parent: + # User is adding a page which will be a right + # sibling to the current page. + parent_page = self._page.parent + else: + parent_page = None + + if parent_page: + if parent_page.site_id != self._site.pk: + raise ValidationError("Site doesn't match the parent's page site") + has_perm = user_can_add_subpage(self._user, target=parent_page, site=self._site) + else: + has_perm = user_can_add_page(self._user, site=self._site) + + if not has_perm: + message = gettext('You don\'t have the permissions required to add a page.') + raise ValidationError(message) + return parent_page if parent_page else None + + def get_template(self): + return get_cms_setting('PAGE_WIZARD_DEFAULT_TEMPLATE') + + @transaction.atomic + def save(self, **kwargs): + from cms.api import add_plugin + + new_translation = super().save(**kwargs) + new_page = new_translation.page + + if self.cleaned_data.get("page_type"): + return new_page + + # If the user provided content, then use that instead. + content = self.cleaned_data.get('content') + plugin_type = get_cms_setting('PAGE_WIZARD_CONTENT_PLUGIN') + plugin_body = get_cms_setting('PAGE_WIZARD_CONTENT_PLUGIN_BODY') + slot = get_cms_setting('PAGE_WIZARD_CONTENT_PLACEHOLDER') + + if plugin_type in plugin_pool.plugins and plugin_body: + if content and permissions.has_plugin_permission( + self._user, plugin_type, "add"): + placeholder = self.get_placeholder(new_translation, slot=slot) + if placeholder: + opts = { + 'placeholder': placeholder, + 'plugin_type': plugin_type, + 'language': self.language_code, + plugin_body: content, + } + add_plugin(**opts) + return new_page + + +class CreateCMSSubPageForm(CreateCMSPageForm): + + sub_page_form = True diff --git a/cms/locale/af/LC_MESSAGES/django.po b/cms/locale/af/LC_MESSAGES/django.po new file mode 100644 index 00000000..40db79b8 --- /dev/null +++ b/cms/locale/af/LC_MESSAGES/django.po @@ -0,0 +1,2264 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Afrikaans (https://app.transifex.com/divio/teams/58664/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" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/af/LC_MESSAGES/djangojs.po b/cms/locale/af/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..2ef165dc --- /dev/null +++ b/cms/locale/af/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Afrikaans (http://app.transifex.com/divio/django-cms/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" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/ar/LC_MESSAGES/django.po b/cms/locale/ar/LC_MESSAGES/django.po new file mode 100644 index 00000000..b945dca5 --- /dev/null +++ b/cms/locale/ar/LC_MESSAGES/django.po @@ -0,0 +1,1741 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Ali Khalel , 2025 +# SHENKAR , 2025 +# Mohammad Alsakhawy, 2026 +# Bashar Al-Abdulhadi, 2026 +# Fabian Braun , 2026 +# Bashar Ghadanfar <10.tens@gmail.com>, 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Bashar Ghadanfar <10.tens@gmail.com>, 2026\n" +"Language-Team: Arabic (https://app.transifex.com/divio/teams/58664/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" + +msgid "All" +msgstr "الجميع" + +msgid "Copy permissions" +msgstr "نسخ التصاريح" + +msgid "Slug" +msgstr "الصيغة" + +msgid "The part of the title that is used in the URL" +msgstr "الجزء من العنوان الذي يستخدم في الرابط" + +msgid "Page type" +msgstr "نوع الصفحة" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "أنواع الصفحة" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "الكتابة على عنوان الـ URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "اترك هذا الحقل فارغ اذا أردت استخدام العنوان الإفتراضي" + +msgid "Start typing..." +msgstr "إبدأ بالكتابة..." + +msgid "menu visibility" +msgstr "عرض القائمة" + +msgid "limit when this page is visible in the menu" +msgstr "الحدود عندما تكون هذه الصفحة مرئية فى القائمة" + +msgid "X Frame Options" +msgstr "خيارات X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "ما إذا كان يمكن تضمين هذه الصفحة في صفحات أو مواقع أخرى." + +msgid "URL options" +msgstr "خيارات الرابط" + +msgid "Menu options" +msgstr "خيارات القائمة" + +msgid "Headers" +msgstr "الترويسات" + +msgid "Application" +msgstr "التطبيق" + +msgid "Hook application to this page." +msgstr "اربط تطبيق بهذه الصفحة" + +msgid "Application configurations" +msgstr "إعدادات التطبيق" + +msgid "A page with this reverse URL id exists already." +msgstr "توجد صفحة سابقة بنفس عنوان المعرّف العكسي لـ هذا URL" + +msgid "Invalid application config value" +msgstr "قيمة إعدادات التطبيق غير صحيحة" + +msgid "An application instance using this configuration already exists." +msgstr "كيان تطبيق بهذا الإعداد موجود سلفا." + +msgid "An application instance with this name already exists." +msgstr "كيان تطبيق بهذا الإسم موجود سلفا." + +msgid "You can't move the home page inside another page" +msgstr "لا يمكنك تحريك الصفحة الرئيسية داخل صفحة أخرى" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"لا يمكن أن يكون لديك صفحتان لهما نفس الصيغة في نفس مستوى الصفحة. يرجى تغيير " +"صيغة إحدى الصفحتين قبل محاولة النقل مرة أخرى." + +msgid "Yes" +msgstr "نعم" + +msgid "No" +msgstr "لا" + +msgid "user" +msgstr "مستخدم" + +msgid "can_view" +msgstr "يستطيع_المشاهدة" + +msgid "Add" +msgstr "أضف" + +msgid "Change" +msgstr "تعديل" + +msgid "Delete" +msgstr "حذف" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"لا يستطيع المستخدمون إنشاء صفحة بدون صلاحيات تسمح بتعديل الصفحة المنشأة. " +"المطلوب تعديل الصلاحيات." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"لا يستطيع المستخدمون حذف صفحة بدون صلاحيات تسمح بتعديل الصفحة. المطلوب تعديل" +" الصلاحيات." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"لا يستطيع المستخدمون تعيين صلاحيات للصفحة بدون صلاحيات تسمح بتعديل الصفحة. " +"المطلوب تعديل الصلاحيات." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"لا يستطيع المستخدمون حذف صلاحيات الصفحة بدون صلاحيات تسمح بتعديل الصفحة. " +"المطلوب تعديل الصلاحيات." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"لا يستطيع المستخدمون إنشاء صلاحيات للصفحة بدون صلاحيات تسمح بتعديل " +"الصلاحيات. المطلوب تعديل الصلاحيات." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"لا يستطيع المستخدمون حذف صلاحيات الصفحة بدون صلاحيات تسمح بتعديل الصلاحيات. " +"المطلوب تعديل الصلاحيات." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "ملحق ذو نوع '%s' غير صالح" + +msgid "Language must be set to a supported language!" +msgstr "يجب تحديد لغة مدعومة!" + +msgid "Parent plugin language must be same as language!" +msgstr "يجب أن تكون اللغة الرئيسية للملحق نفس اللغة!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "موضع الملحق الأصل يجب أن يكون نفس الموضع!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "مكان الملحق يجب أن يكون أكبر من %(position)d" + +msgid "Translations" +msgstr "الترجمات" + +msgid "Advanced Settings" +msgstr "خيارات متقدمة" + +msgid "The page is not eligible to be home." +msgstr "هذه الصفحة غير مؤهله لتكون صفحة رئيسية." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "الـ Object %(name)s بالعنوان المفتاحي %(key)r غير موجود." + +msgid "error" +msgstr "خطأ" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "خطأ! ليس لديك الصلاحية لنقل هذه الصفحة. من فضلك أعد تحميل الصفحة" + +msgid "Error! You don't have permissions to copy this page." +msgstr "ليس لديك صلاحية لنسخ هذه الصفحة." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"خطأ! الصفحة التي تحاول لصقها غير مترجمة لأي من اللغات المعرّفة الأخرى بموقع " +"الوجهة." + +msgid "You do not have permission to edit this page" +msgstr "ليس لديك الصلاحية لتعديل هذه الصفحة" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "(لتغييره، قم أولاً بإلغاء نشر النسخة المنشورة حالياً من هذه الصفحة)" + +msgid "Add Translation" +msgstr "إضافة ترجمة" + +msgid "Add Page Copy" +msgstr "إضافة نسخة للصفحة" + +msgid "New sub page" +msgstr "صفحة فرعية جديدة" + +msgid "New page" +msgstr "صفحة جديدة" + +msgid "Database error" +msgstr "خطأ في قاعدة البيانات" + +msgid "Template not valid" +msgstr "قالب غير صحيح" + +msgid "Placeholder selection not valid" +msgstr "تحديد الموضع غير صالح" + +msgid "The template was successfully changed" +msgstr "تم تغيير القالب بنجاح" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "الموضع '%s' غير موجود في اللغة الهدف" + +msgid "You do not have permission to copy these plugins." +msgstr "ليس لديك الصلاحية لنسخ هذه الملحقات." + +msgid "You do not have permission to delete this page" +msgstr "ليس لديك الصلاحية لحذف هذه الصفحة" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "تم حذف العنوان وملحقات اللغة %(language)s." + +msgid "Public content" +msgstr "محتوى منشور" + +msgid "Empty" +msgstr "فارغ" + +msgid "Create Content" +msgstr "إنشاء محتوى" + +msgid "View restriction" +msgstr "قيد المشاهدة" + +msgid "View restrictions" +msgstr "قيود المشاهدة" + +#, python-format +msgid "Field %s not found" +msgstr "الحقل %s غير موجود" + +msgid "You do not have permission to edit this item" +msgstr "لا يتوفر لديك تصريح لتعديل هذا العنصر" + +msgid "You do not have permission to add a plugin" +msgstr "ليس لديك الصلاحية لإضافة ملحق" + +msgid "You do not have permission to copy this placeholder." +msgstr "ليس لديك صلاحية لنسخ هذا الموضع." + +msgid "Plugin not found" +msgstr "الملحق غير موجود" + +msgid "You do not have permission to edit this plugin" +msgstr "ليس لديك الصلاحية لتعديل هذا الملحق" + +msgid "You have no permission to paste this plugin" +msgstr "ليس لديك الصلاحية للصق هذا الملحق" + +msgid "You have no permission to paste this placeholder" +msgstr "ليس لديك الصلاحية للصق هذا الموضع" + +msgid "You have no permission to move this plugin" +msgstr "ليس لديك الصلاحية لنقل هذا الملحق" + +msgid "You have no permission to cut this plugin" +msgstr "ليس لديك الصلاحية لقص هذا الملحق" + +msgid "You do not have permission to delete this plugin" +msgstr "ليس لديك الصلاحية لحذف هذا الملحق" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "تم حذف الملحق %(name)s من \"%(obj)s\" بنجاح." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "لا يمكن حذف %(name)s" + +msgid "Are you sure?" +msgstr "هل أنت متأكد؟" + +msgid "You do not have permission to clear this placeholder" +msgstr "ليس لديك الصلاحية لتفريغ هذا الموضع" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "تم إخلاء الموضع \"%(obj)s\" بنجاح." + +msgid "placeholder" +msgstr "موضع" + +msgid "Page permissions" +msgstr "حقوق الصفخة" + +msgid "User & Group permissions" +msgstr "حقوق المستخدمين والمجموعات" + +msgid "Page permissions management" +msgstr "إدارة حقوق الصفحة" + +msgid "Actions" +msgstr "الإجراءات" + +msgid "Empty content" +msgstr "محتوى فارغ" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "خصائص %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "إضافة %(object_name)s جديدة" + +msgid "Add content" +msgstr "إضافة محتوى" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"لقد تم تغيير المحتوى الخاص باللغة الحالية. إضغط \"إلغاء\" للرجوع إلى النموذج" +" وحفظ التغييرات. إضغط \"حسناً\" لتجاهل التغييرات." + +#, python-format +msgid "Add %(language)s content" +msgstr "إضافة محتوى بـ%(language)s" + +msgid "Preview" +msgstr "عرض" + +msgid "Settings" +msgstr "إعدادات" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"لغة غير صحيحة %(value)s. لا يمكن معالجة هذا النموذج. حاول تغيير اللغات." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "لم يعثر على معلّق تطبيق باسم \"%r\"" + +msgid "django CMS" +msgstr "نظام إدارة المحتوى جانغو" + +msgid "Placeholder" +msgstr "موضع" + +msgid "Create" +msgstr "إنشاء" + +msgid "Edit" +msgstr "تعديل" + +msgid "Structure" +msgstr "الهيكل" + +msgid "Content" +msgstr "المحتوى" + +msgid "Sites" +msgstr "المواقع" + +msgid "Admin Sites" +msgstr "مواقع المشرف" + +msgid "Administration" +msgstr "إدارة الموقع" + +msgid "User settings" +msgstr "إعدادات المستخدم" + +msgid "Clipboard..." +msgstr "الحافظة..." + +msgid "Clear clipboard" +msgstr "إفراغ الحافظة" + +msgid "Disable toolbar" +msgstr "تعطيل شريط الأدوات" + +msgid "Shortcuts..." +msgstr "الإختصارات" + +msgid "Users" +msgstr "المستخدمون" + +#, python-format +msgid "Logout %s" +msgstr "تسجيل الخروج %s" + +msgid "Logout" +msgstr "تسجيل خروج" + +msgid "Language" +msgstr "اللغة" + +msgid "Delete Translation" +msgstr "حذف ترجمة" + +msgid "Copy all plugins" +msgstr "نسخ جميع الملحقات" + +#, python-format +msgid "from %s" +msgstr "من %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "هل أنت متأكد أنك تريد نسخ جميع الملحقات من %s؟" + +msgid "Pages" +msgstr "الصفحات" + +msgid "Page" +msgstr "الصفحة" + +msgid "Create Page" +msgstr "إنشاء صفحة" + +msgid "New Page" +msgstr "صفحة جديدة" + +msgid "New Sub Page" +msgstr "صفحة فرعية جديدة" + +msgid "Duplicate this Page" +msgstr "تكرار هذه الصفحة" + +msgid "Page settings" +msgstr "إعدادات الصفحة" + +msgid "Advanced settings" +msgstr "خيارات متقدمة" + +msgid "Templates" +msgstr "القالب" + +msgid "Placeholders" +msgstr "المواضع" + +msgid "Hide in navigation" +msgstr "إخفاء أزرار التنقل" + +msgid "Display in navigation" +msgstr "عرض في قائمة التصفح" + +msgid "Delete page" +msgstr "احذف الصفحة" + +msgid "Create a new page next to the current page." +msgstr "إنشاء صفحة جديدة إلى جانب الصفحة الحالية." + +msgid "Create a page below the current page." +msgstr "إنشاء صفحة تحت الصفحة الحالية." + +msgid "Select a valid site" +msgstr "حدد موقع صحيح" + +msgid "Select a valid page" +msgstr "حدد صفحة صحيحة" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"الصفحة %(conflict_page)s تمتلك نفس رابط '%(url)s' صفحة حالية " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "الصفحة %(conflict_page)s تمتلك نفس رابط '%(url)s' صفحة حالية." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "اختياري. وفي حال زُوّد سيضاف تلقائياً داخل ملحق نصي جديد." + +msgid "Provide a title for the new page." +msgstr "زوّد الصفحة الجديدة بعنوان." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "لعنوان تفرع تلقائي يُترك فارغاً ، أو تعاد صياغته حسب الطلب." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "لا يمكن إنشاء الصيغة تلقائياً. يرجى تزويدها يدوياً." + +msgid "Please provide a valid slug." +msgstr "يرجى تزويد صيغة صحيحة" + +msgid "You don't have the permissions required to add a page." +msgstr "ليس لديك الصلاحية لإضافة صفحة." + +msgid "ID" +msgstr "المعرّف" + +msgid "position" +msgstr "الموضع" + +msgid "language" +msgstr "اللغة" + +msgid "plugin_name" +msgstr "اسم الملحق" + +msgid "creation date" +msgstr "تاريخ الإنشاء" + +msgid "can edit" +msgstr "يستطيع التعديل" + +msgid "can add" +msgstr "يستطيع الإضافة" + +msgid "can delete" +msgstr "يستطيع الحذف" + +msgid "can change advanced settings" +msgstr "يستطيع تغيير الخيارات المتقدمة" + +msgid "can publish" +msgstr "يستطيع النشر" + +msgid "can change permissions" +msgstr "يستطيع تغيير الصلاحيات" + +msgid "can move" +msgstr "يستطيع التحريك" + +msgid "view restricted" +msgstr "مشاهدة المحتوى المحظور" + +msgid "can recover pages" +msgstr "يستطيع إسترجاع الصفحات" + +msgid "group" +msgstr "مجموعات" + +msgid "sites" +msgstr "المواقع" + +msgid "created by" +msgstr "منشأ من قبل" + +msgid "changed by" +msgstr "مغير من قبل" + +msgid "publication date" +msgstr "تاريخ النشر" + +msgid "publication end date" +msgstr "تاريخ نهاية النشر" + +msgid "in navigation" +msgstr "التصفح" + +msgid "soft root" +msgstr "سوفتـروت" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "القائمة المرفقة" + +msgid "template" +msgstr "القالب" + +msgid "login required" +msgstr "يتطلب تسجيل الدخول" + +msgid "application" +msgstr "التطبيق" + +msgid "application instance name" +msgstr "اسم مثيل التطبيق" + +msgid "site" +msgstr "الموقع" + +msgid "Grant on" +msgstr "السماح عند" + +msgid "page" +msgstr "صفحة" + +msgid "no limit set" +msgstr "بدون حدود" + +msgid "for logged in users only" +msgstr "للمستخدمين المسجلين فقط" + +msgid "for anonymous users only" +msgstr "للمستخدمين الغير مسجلين فقط" + +msgid "Inherit from parent page" +msgstr "قم بالوراثة من الصفحة الأب" + +msgid "Deny" +msgstr "رفض" + +msgid "Only this website" +msgstr "هذا الموقع فقط" + +msgid "Allow" +msgstr "سماح" + +msgid "title" +msgstr "العنوان" + +msgid "The default title" +msgstr "العنوان الافتراضي" + +msgid "Page Title" +msgstr "عنوان الصفحة" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"سيتم الكتابة على ما يتم عرضه في أعلى المتصفح الخاص بك أو في العلامات " +"المرجعية" + +msgid "Menu Title" +msgstr "عنوان القائمة" + +msgid "Overwrite what is displayed in the menu" +msgstr "الكتابة على ما يتم عرضه في القائمة" + +msgid "Description meta tag" +msgstr "علامة الوصف التعريفية" + +msgid "A description of the page used by search engines." +msgstr "شرح عن الصفحة تستخدمه محركات البحث." + +msgid "redirect" +msgstr "إعادة توجيه" + +msgid "Redirects to this URL." +msgstr "أعد التوجيه الى عنوان الـ URL هذا" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "لن يتم عرض الآباء في التصفح" + +msgid "The template used to render the content." +msgstr "القالب المستعمل لعرض المحتوى." + +msgid "page content" +msgstr "محتوى الصفحة" + +msgid "page contents" +msgstr "محتويات الصفحة" + +msgid "default" +msgstr "الإفتراضي" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "معرف فريد الذي تم استخدامه مع templatetag page_url للربط لهذه الصفحة" + +msgid "Mark this page as a page type" +msgstr "تعيين هذه الصفحة كنوع صفحة" + +msgid "pages" +msgstr "الصفحات" + +msgid "No available title" +msgstr "لا يوجد عنوان متاح" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "المكان" + +msgid "Current page" +msgstr "الصفحة الحالية" + +msgid "Page children (immediate)" +msgstr "أولاد الصفحة (مباشرة)" + +msgid "Page and children (immediate)" +msgstr "الصفحة وأولادها (مباشرة)" + +msgid "Page descendants" +msgstr "تفرعات الصفحة" + +msgid "Page and descendants" +msgstr "الصفحة وتفرعاتها" + +msgid "on page level" +msgstr "على مستوى الصفحة" + +msgid "frontend view restriction" +msgstr "قيود مشاهدة الواجهة" + +msgid "Please select user or group." +msgstr "يرجى اختيار مستخدم أو مجموعة." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"لا يستطيع المستخدمون نشر صفحةٍ بدون صلاحيات تسمح بتعديل الصفحة. المطلوب " +"تعديل الصلاحيات." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"لا يستطيع المستخدمون تغيير الإعدادات المتقدمة لصفحةٍ بدون صلاحيات تسمح " +"بتعديل الصفحة. المطلوب تعديل الصلاحيات." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"لا يستطيع المستخدمون تغيير صلاحيات صفحةٍ بدون صلاحيات تسمح بتعديل الصفحة. " +"المطلوب تعديل الصلاحيات." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"لا يستطيع المستخدمون نقل صفحةٍ بدون صلاحيات تسمح بتعديل الصفحة. المطلوب " +"تعديل الصلاحيات." + +msgid "can recover any deleted page" +msgstr "يستطيع إسترجاع أي صفحة محذوفة" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "عند عدم التحديد، سيتم إعطاء المستخدم الصلاحيات لكافة المواقع." + +msgid "Page global permission" +msgstr "صلاحية الصفحة العامة" + +msgid "Pages global permissions" +msgstr "صلاحيات الصفحة العامة" + +msgid "Page permission" +msgstr "صلاحيات الصفحة" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"تصريح إضافة الصفحة مطلوب أيضا للولوج للصفحات الفرعية، و إلا لا يمكن تعديل " +"الصفحة من قبل المنشئ" + +msgid "User (page)" +msgstr "المستخدم (الصفحة)" + +msgid "Users (page)" +msgstr "المستخدمين (الصفحة)" + +msgid "User group (page)" +msgstr "مجموعة المستخدم (الصفحة)" + +msgid "User groups (page)" +msgstr "مجموعات المستخدم (الصفحة)" + +msgid "slot" +msgstr "منفذ" + +msgid "width" +msgstr "العرض" + +msgid "Edit object" +msgstr "تعديل الكائن" + +msgid "This is an external placeholder" +msgstr "هذا موضع خارجي" + +msgid "plugin" +msgstr "ملحق" + +msgid "plugins" +msgstr "ملحقات" + +msgid "" +msgstr "<فارغ>" + +msgid "The language for the admin interface and toolbar" +msgstr "اللغة لواجهة الادارة وشريط الأدوات" + +msgid "user setting" +msgstr "إعداد المستخدم" + +msgid "user settings" +msgstr "إعدادات المستخدم" + +msgid "by template" +msgstr "بواسطة القالب" + +msgid "by code" +msgstr "بواسطة الرمز" + +msgid "static placeholder name" +msgstr "اسم الموضع الثابت" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "اسم وصفي لتحديد هذا الموضع الثابت. لا يُعرض للمستخدمين." + +msgid "placeholder code" +msgstr "رموز الموضع" + +msgid "To render the static placeholder in templates." +msgstr "لتَصْيير الموضع الثابت في قوالب." + +msgid "placeholder content" +msgstr "محتوى الموضع" + +msgid "creation_method" +msgstr "طريقة الإنشاء" + +msgid "static placeholder" +msgstr "موضع ثابت" + +msgid "static placeholders" +msgstr "مواضع ثابتة" + +msgid "A static placeholder with the same site and code already exists" +msgstr "إن موضعاً ثابتاً بنفس الموقع والرمز موجود سلفاً" + +msgid "Advanced options" +msgstr "خيارات متقدمة" + +msgid "Generic" +msgstr "عام" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "تم تعديل %(name)s المدعو \"%(obj)s\" بنجاح." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "لا يوجد إعدادات اخرى لهذا الملحق. الرجاء الضغط على حفظ." + +msgid "Moved" +msgstr "حُرِّكَت" + +msgid "Changed" +msgstr "معدل" + +msgid "Deleted" +msgstr "حُذِفَت" + +msgid "Added Page Translation" +msgstr "أُضِيفت ترجمة الصفحة" + +msgid "Changed Page Translation" +msgstr "عُدِلَت ترجمة الصفحة" + +msgid "Deleted Page Translation" +msgstr "حُذِفَت ترجمة الصفحة" + +msgid "Added Plugin" +msgstr "أُضيف الملحق" + +msgid "Changed Plugin" +msgstr "عُدِلَ الملحق" + +msgid "Moved Plugin" +msgstr "حُرِّكَ الملحق" + +msgid "Deleted Plugin" +msgstr "حُذف الملحق" + +msgid "Cut Plugin" +msgstr "قص الملحق" + +msgid "Paste Plugin" +msgstr "لصق الملحق" + +msgid "Paste to Placeholder" +msgstr "لصق إلى الموضع" + +msgid "Added plugins to placeholder from clipboard" +msgstr "تم إضافة الملحقات إلى الموضع من الحافظة" + +msgid "Cleared Placeholder" +msgstr "فُرِّغَت الحافظة" + +msgid "Save" +msgstr "حفظ" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "لا يمكن تغيير بعض الحقول لأنهم محتوى للقراءة فقط." + +#, python-format +msgid "Log in to administration here." +msgstr "سجل الدخول للإدارة من هنا here." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "رابط تسجيل الدخول: %(login_url)s" + +msgid "Username:" +msgstr "اسم المستخدم:" + +msgid "Password:" +msgstr "كلمة المرور:" + +msgid "Add a page" +msgstr "إضافة صفحة" + +msgid "Change a page" +msgstr "غير صفحة" + +msgid "Home" +msgstr "الرئيسية" + +msgid "View on site" +msgstr "اعرض على الموقع" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "لا يوجد أخطاء" +msgstr[1] "من فصلك صحح الخطأ أدناه" +msgstr[2] "من فصلك صحح الأخطاء أدناه" +msgstr[3] "من فصلك صحح الأخطاء أدناه" +msgstr[4] "من فصلك صحح الأخطاء أدناه" +msgstr[5] "من فصلك صحح الأخطاء أدناه" + +msgid "All permissions" +msgstr "جميع الصلاحيات" + +msgid "Loading..." +msgstr "جاري التحميل..." + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "نعم، أنا متأكد" + +msgid "No, take me back" +msgstr "لا، أعدني" + +msgid "Summary" +msgstr "الملخص" + +msgid "User" +msgstr "المستخدم" + +msgid "Group" +msgstr "مجموعة" + +msgid "Can edit" +msgstr "يستطيع التعديل" + +msgid "Can add" +msgstr "يستطيع الإضافة" + +msgid "Can delete" +msgstr "يستطيع الحذف" + +msgid "Can publish" +msgstr "يستطيع النشر" + +msgid "Can change permissions" +msgstr "يستطيع تغيير الصلاحيات" + +msgid "Can move" +msgstr "يستطيع النقل" + +msgid "Can view" +msgstr "يستطيع المشاهدة" + +msgid "(global)" +msgstr "(عام)" + +msgid "(current)" +msgstr "(حالي)" + +msgid "Page doesn't inherit any permissions." +msgstr "لن ترث الصفحة أي صلاحية" + +msgid "Edit model" +msgstr "تعديل النموذج" + +msgid "Save as new" +msgstr "احفظ كجديد" + +msgid "Save and add another" +msgstr "احفظ وأضف جديد" + +msgid "Copy" +msgstr "نسخ" + +msgid "Cut" +msgstr "قص" + +msgid "Paste" +msgstr "لصق" + +msgid "Set as home" +msgstr "ضبط كصفحة رئيسية" + +msgid "is restricted" +msgstr "مقيّدة" + +msgid "last change by" +msgstr "آخر تعديل من قبل" + +msgid "last change on" +msgstr "آخر تعديل بتاريخ" + +msgid "meta" +msgstr "تعريفية" + +msgid "List of pages" +msgstr "قائمة بالصفحات" + +msgid "Search" +msgstr "بحث" + +msgid "Page Tree" +msgstr "شجرة الصفحات" + +msgid "Reset filter" +msgstr "رد حالة الترشيح" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +"استعادة ما حذف من %(name)s" + +msgid "Main Navigation" +msgstr "القائمة الرئيسية" + +msgid "Options" +msgstr "خيارات" + +msgid "Successfully moved" +msgstr "تم النقل بنجاح" + +msgid "Changes within the tree might require a refresh." +msgstr "تغييرات داخل تفرعات الصفحات قد تتطلب التحديث أولا." + +msgid "Error:" +msgstr "خطأ:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"لا يمكن نسخ هذه الصفحة لأن تطبيقاً قد ألحق بها. انظر إعدادات الصفحة المتقدمة" +" من أجل إدارة معلّقات التطبيق." + +msgid "Are you sure you want to § this page?" +msgstr "هل أنت متأكد أنك تريد § هذه الصفحة؟" + +msgid "Reload" +msgstr "إعادة تحميل" + +msgid "New node" +msgstr "عقدة جديدة" + +msgid "nodes" +msgstr "العقد" + +msgid "View" +msgstr "استعراض" + +msgid "Menu" +msgstr "القائمة" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +"لا يوجد %(object)s بعد.\n" +"
\n" +"أضف %(object)s الآن." + +msgid "Copy options" +msgstr "خيارات النسخ" + +msgid "Choose copy options" +msgstr "اختر خيار النسخ" + +msgid "Close" +msgstr "إغلاق" + +msgid "Legend" +msgstr "تفسير" + +msgid "In menu" +msgstr "في القائمة" + +msgid "Not in menu" +msgstr "ليس في القائمة" + +msgid "View page" +msgstr "عرض الصفحة" + +msgid "Softroot" +msgstr "سوفتـروت" + +msgid "Apphook" +msgstr "معلّق التطبيق" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "التطبيق: %(apphook)s" + +msgid "in menu" +msgstr "بالقائمة" + +msgid "not in menu" +msgstr "ليست بالقائمة" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "إعدادات الصفحة (اضغط زر الزيح لإعدادات متقدمة)" + +msgid "Permissions" +msgstr "الصلاحيات" + +msgid "inherited" +msgstr "موروث" + +msgid "This page has no preview!" +msgstr "لا يوجد معاينة لهذه الصفحة!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "يحتمل أن معلّق التطبيق المرفق لا يقوم بتزويد محتوى لصفحته الأساسية." + +msgid "It is being redirected to:" +msgstr "جاري إعادة توجيهها إلى:" + +msgid "Clipboard" +msgstr "الحافظة" + +msgid "Add plugin" +msgstr "أضف ملحقاً" + +msgid "Copy all" +msgstr "نسخ الكل" + +msgid "Copy from" +msgstr "نسخ من" + +msgid "Empty all" +msgstr "تفريغ الكل من المحتوى" + +msgid "Filter plugins..." +msgstr "ترشيح الملحقات..." + +msgid "Expand all" +msgstr "فرد الكل" + +msgid "Collapse all" +msgstr "طي الكل" + +msgid "You cannot add plugins to this plugin." +msgstr "لا يمكنك إضافة ملحقات إلى هذا الملحق" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "لا يمكن نقل أو تعديل هذا الملحق خارج نطاق أصله." + +msgid "Clipboard is empty." +msgstr "الحافظة فارغة." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "الملحق هذا يمنع الملحقات من هذا النوع أن تكون متداخلة." + +msgid "This plugin cannot have nested plugins." +msgstr "لا يمكن لهذا الملحق أن يكون له ملحقات متداخلة." + +msgid "Highlight" +msgstr "تحديد" + +msgid "Available plugins" +msgstr "الملحقات المتوفرة" + +msgid "Toggle structure" +msgstr "تبديل البُنية" + +msgid "Login" +msgstr "تسجيل الدخول" + +msgid "Add plugin to" +msgstr "إضافة ملحق إلى" + +msgid "More" +msgstr "المزيد" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"نسخة تطوير باستخدام ن.إ.م. جانقو %(cms_version)s ، جانقو %(django_version)s " +"، بايثون %(python_version)s" + +msgid "Cancel" +msgstr "إلغاء" + +msgid "The following error occurred:" +msgstr "حدث الخطأ التالي:" + +msgid "Action successful." +msgstr "إجراء ناجح" + +msgid "Are you sure you want to delete this plugin?" +msgstr "هل أنت متأكد من رغبتك بحذف هذا الملحق؟" + +msgid "Are you sure you want to publish this page?" +msgstr "هل انت متأكد إنك ترغب في نشر الصفحة؟" + +msgid "Plugin will be added here" +msgstr "سوف يضاف الملحق هنا" + +msgid "You have unsaved changes." +msgstr "لديك بعض التغييرات غير المحفوظة." + +msgid "Loading" +msgstr "جارِ التحميل..." + +msgid "Are you sure you want to abandon these changes?" +msgstr "أأنت متأكد من رغبتك بالتخلي عن هذه التغييرات؟" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "لم يُتمكن من تحميل النموذج. يرجى التأكد من أن المخدم يعمل بشكل صحيح." + +msgid "Most used" +msgstr "الأكثر استخداما" + +msgid "Shortcuts" +msgstr "اختصارات" + +msgid "The page was changed in the meantime, reloading..." +msgstr "تم تعديل الصفحة في هذه الأثناء، جاري إعادة التحميل..." + +msgid "CMS-wide Shortcuts" +msgstr "إختصارات نطاق نظام إدارة المحتوى." + +msgid "Bring up this help dialog" +msgstr "أحضر مربع حوار المساعدة هذا إلى الأعلى" + +msgid "Close/cancel" +msgstr "إغلاق/إلغاء" + +msgid "Toggle structure mode" +msgstr "إقلاب حالة البنية" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "إقلاب حالة البنية ، وتسليط الضوء على الملحق المؤشَر عليه." + +msgid "Open \"Create\" dialog" +msgstr "فتح صندوق \"الإنشاء\"" + +msgid "Focus on Toolbar" +msgstr "تركيز على شريط الأدوات" + +msgid "Focus on placeholders" +msgstr "تركيز على المواضع" + +msgid "Move to next/previous element" +msgstr "انتقال إلى العنصر التالي/السابق" + +msgid "Focus on plugins of placeholder" +msgstr "تركيز على ملحقات الموضع" + +msgid "Edit plugin" +msgstr "تحرير الملحق" + +msgid "Open actions menu" +msgstr "فتح قائمة الإجراءات" + +msgid "Expand/collapse" +msgstr "فرد/طي" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"فشل الدخول. يرجى التحقق من معلومات الدخول و معاودة المحاولة" +" مرة اخرى" + +msgid "Double-click to edit" +msgstr "أضغط مرتين للتعطيل" + +msgid "Tap to edit" +msgstr "انقر لتحرر" + +msgid "Click to go back" +msgstr "انقر للعودة للخلف" + +msgid "Click to go forward" +msgstr "انقر للمضي للأمام" + +msgid "Minimize" +msgstr "تصغير" + +msgid "Maximize" +msgstr "تكبير" + +msgid "Placeholder not editable" +msgstr "الموضع غير قابل للتعديل" + +msgid "Drop a plugin here" +msgstr "أنزل ملحقاً هنا" + +msgid "Welcome to your new django CMS installation!" +msgstr "مرحباً بك في تثبيتك الجديد لـ ن.إ.م. جانقو!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "النسخة %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "لنبنِ شيئاً رائعاً معاً!" + +msgid "Please log in" +msgstr "يرجى تسجيل الدخول" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" أضف صفحتك الأولى\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

ساعد في التمويل

\n" +"

\n" +" يعود تمويلك بالنفع المباشر على المنتج، بشكل أساسي من خلال\n" +" برنامج زمالة django CMS!\n" +"

\n" +"

\n" +" من الطرق السريعة لك أو لمؤسستك للتبرع عبر\n" +" رُعاة Github.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

انضم إلينا

\n" +"

\n" +" جمعية django CMS هي منظمة غير ربحية تموّل وتوجّه تطوير\n" +" django CMS.\n" +"

\n" +"

\n" +" يمكنك الانضمام سواء كفرد أو\n" +" كمؤسسة.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

ساهم

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "ملاحظات التنصيب" + +msgid "Support" +msgstr "دعم" + +msgid "Documentation" +msgstr "توثيقات" + +msgid "User guide" +msgstr "دليل المستخدم" + +msgid "Give back" +msgstr "رُدّ الجميل" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

في حال لم تر شعار ن.إ.م جانغو في الأعلى، تأكد\n" +" أنك قمت بربط مجلد static/cms مع ملفاتك\n" +"الثابتة.

" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

كونك ترى هذه الرسالة هذا يعني أن لديك\n" +"DEBUG = True داخل ملف إعدادات جانغو الخاص بك\n" +"ولم تقم بإضافة أي صفحات بعد.\n" +"

" + +msgid "Welcome to django CMS" +msgstr "أهلاً بك في نظام إدارة محتوى جانقو" + +msgid "Add Another" +msgstr "إضافة آخر" + +msgid "Back" +msgstr "رجوع" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "لطفاً اختر خياراً أدناه من أجل المتابعة للخطوة التالية" + +msgid "Next" +msgstr "التالي" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "مجهول" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "هذه الصفحة غير موجودة على الموقع %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"لم يتم العثور على صفحات مطابقة لمعطيات البحث `%(page_lookup)s⏎ `باستخدام " +"بطاقات القوالب. رابط هذا الطلب هو: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "عمودان" + +msgid "Three columns" +msgstr "ثلاثة اعمدة" + +msgid "username" +msgstr "اسم المستخدم" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "مطلوب. 300 حرف أو أقل. أحرفاً وأرقاماً ورموزاً @/./+/-/_" + +msgid "Enter a valid username." +msgstr "ادخل اسم مستخدم صحيح." + +msgid "email address" +msgstr "mailto" + +msgid "staff status" +msgstr "وضعية المشرف" + +msgid "Designates whether the user can log into this admin site." +msgstr "يحدد ما إذا كان المستخدم يستطيع الدخول إلى الإدارة لهذا الموقع." + +msgid "active" +msgstr "فعال" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"يحدد ما إذا كان المستخدم سيعامل على أنه نشط. يمكن إلغاء هذا الخيار بدلا من " +"حذف الحسابات." + +msgid "users" +msgstr "المستخدمين" + +msgid "Title Extension" +msgstr "وصلة عنوان" + +msgid "Page Extension" +msgstr "وصلة صفحة" + +msgid "object ID" +msgstr "معرّف الكائن" + +msgid "Example1 App" +msgstr "تطبيق تجريبي1" + +msgid "MultilingualExample1 App" +msgstr "تطبيق تجريبي متعدد اللغات1" + +msgid "Example1" +msgstr "مثال1" + +msgid "Examples" +msgstr "أمثلة" + +msgid "Extra Context" +msgstr "محتوى إضافي" + +msgid "Articles" +msgstr "مقالات" + +msgid "Sample App" +msgstr "عينة تطبيق" + +msgid "Sample App with config" +msgstr "عينة تطبيق مع تهيئة" + +msgid "Sample App with excluded permissions" +msgstr "عينة تطبيق بصلاحيات محجوبة" + +msgid "Sample App 2" +msgstr "عينة تطبيق 2" + +msgid "Sample App 3" +msgstr "عينة تطبيق 2" + +msgid "Sample App Without Landing Page" +msgstr "تطبيق نموذجي بدون صفحة هبوط" + +msgid "Namespaced App" +msgstr "تطبيق ذو نطاق محدد" + +msgid "Parent app" +msgstr "التطبيق الأصل" + +msgid "Child app" +msgstr "التطبيق الفرع" + +msgid "Variable urls-menus App" +msgstr "تطبيق urls-menus متغير" + +msgid "sample root page" +msgstr "عينة صفحة أساسية" + +msgid "sample settings page" +msgstr "عينة صفحة إعدادات" + +msgid "sample account page" +msgstr "عينة صفحة حساب" + +msgid "sample my profile page" +msgstr "عينة صفحة شخصية" + +msgid "Static Menu" +msgstr "قائمة ثابتة" + +msgid "Static Menu2" +msgstr "قائمة ثابتة ٢" + +msgid "Static Menu3" +msgstr "قائمة ثابتة 3" + +msgid "Static Menu4" +msgstr "قائمة ثابتة" + +msgid "Category" +msgstr "تصنيف" + +msgid "Categories" +msgstr "التصنيفات" + +msgid "Add Category" +msgstr "اضف تصنيف" + +msgid "^account/$" +msgstr "^حساب/$" + +msgid "Change Category" +msgstr "حذف تصنيف" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "شكرا لك لقضائك وقت مميز مع الموقع اليوم." + +msgid "Inherit the template of the nearest ancestor" +msgstr "نسخ القالب من أقرب آب" + +msgid "UserSettings" +msgstr "إعدادات المستخدم" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "إضافة ملحق إلى الموضع \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "إضافة ملحق إلى %(plugin_name)s" + +msgid "Single placeholder" +msgstr "موضع واحد" + +msgid "CMS - your user account was created." +msgstr "نظام ادارة المحتوى - تم انشاء المستخدم." + +msgid "CMS - your user account was changed." +msgstr "نظام ادارة المحتوى - تم التغيير على حسابك." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "لدى هذا الموضع مسبقاً العدد الأقصى من الملحقات (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"لدى هذا الموضع مسبقاً العدد الأقصى (%(limit)s) المسموح به للملحقات " +"%(plugin_name)s." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "تعذر العثور على تركيبة CMS_REQUEST_IP_RESOLVER المحددة: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"تعذر العثور على الدالة CMS_REQUEST_IP_RESOLVER المحددة: \"{0}\" في التابع " +"\"{1}\".." + +#, python-format +msgid "Create a new %s instance." +msgstr "إنشاء مثيل %s جديد." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "عُثر على برنامج وِزارد مسجل سلفاً للنموذج: %s" diff --git a/cms/locale/ar/LC_MESSAGES/djangojs.po b/cms/locale/ar/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..82550aa4 --- /dev/null +++ b/cms/locale/ar/LC_MESSAGES/djangojs.po @@ -0,0 +1,27 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Abdelkader Maarouf , 2015 +# Ahmed H , 2013 +# Bashar Al-Abdulhadi, 2017 +# Bashar Al-Abdulhadi, 2017 +# Bashar Ghadanfar <10.tens@gmail.com>, 2017 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Bashar Ghadanfar <10.tens@gmail.com>, 2017\n" +"Language-Team: Arabic (http://app.transifex.com/divio/django-cms/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" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "هل أنت متأكد من الإنتقال الى تبويب أخر دون حفظ الصفحة أولاً؟" diff --git a/cms/locale/ar_SA/LC_MESSAGES/django.po b/cms/locale/ar_SA/LC_MESSAGES/django.po new file mode 100644 index 00000000..239b969e --- /dev/null +++ b/cms/locale/ar_SA/LC_MESSAGES/django.po @@ -0,0 +1,2268 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Arabic (Saudi Arabia) (https://app.transifex.com/divio/teams/58664/ar_SA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ar_SA\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" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/ar_SA/LC_MESSAGES/djangojs.po b/cms/locale/ar_SA/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..ab8df261 --- /dev/null +++ b/cms/locale/ar_SA/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Arabic (Saudi Arabia) (http://app.transifex.com/divio/django-cms/language/ar_SA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ar_SA\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" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/be/LC_MESSAGES/django.po b/cms/locale/be/LC_MESSAGES/django.po new file mode 100644 index 00000000..4c2e7180 --- /dev/null +++ b/cms/locale/be/LC_MESSAGES/django.po @@ -0,0 +1,1632 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Belarusian (https://app.transifex.com/divio/teams/58664/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" + +msgid "All" +msgstr "" + +msgid "Copy permissions" +msgstr "" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "" + +msgid "Page type" +msgstr "" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "" + +msgid "Keep this field empty if standard path should be used." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "" + +msgid "Hook application to this page." +msgstr "" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "" + +msgid "The default title" +msgstr "" + +msgid "Page Title" +msgstr "" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +msgid "Menu Title" +msgstr "" + +msgid "Overwrite what is displayed in the menu" +msgstr "" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/be/LC_MESSAGES/djangojs.po b/cms/locale/be/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..0d3f6c58 --- /dev/null +++ b/cms/locale/be/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Belarusian (http://app.transifex.com/divio/django-cms/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" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/bg/LC_MESSAGES/django.po b/cms/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 00000000..96825a25 --- /dev/null +++ b/cms/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,1763 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Ivaylo Nakov, 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Bulgarian (https://app.transifex.com/divio/teams/58664/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" + +msgid "All" +msgstr "Всички" + +msgid "Copy permissions" +msgstr "Копирай права" + +msgid "Slug" +msgstr "Слъг" + +msgid "The part of the title that is used in the URL" +msgstr "Частта от заглавието, която се използва в URL адреса" + +msgid "Page type" +msgstr "Тип страница" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Типове страници" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Напиши URL адрес" + +msgid "Keep this field empty if standard path should be used." +msgstr "" +"Оставете това поле празно, ако трябва да бъде използван стандартен път." + +msgid "Start typing..." +msgstr "Започни да пишеш..." + +msgid "menu visibility" +msgstr "видимост на менюто" + +msgid "limit when this page is visible in the menu" +msgstr "ограничи, когато тази страница е видима в менюто" + +msgid "X Frame Options" +msgstr "Опции за X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" +"Дали тази страница може да бъде вградена в други страници или уебсайтове." + +msgid "URL options" +msgstr "Опции за URL" + +msgid "Menu options" +msgstr "Опции на менюто" + +msgid "Headers" +msgstr "Заглавки" + +msgid "Application" +msgstr "Приложение" + +msgid "Hook application to this page." +msgstr "Прикачи приложение на тази страница." + +msgid "Application configurations" +msgstr "Конфигурации на приложението" + +msgid "A page with this reverse URL id exists already." +msgstr "Страница с този обратен URL адрес вече съществува." + +msgid "Invalid application config value" +msgstr "Невалидна стойност за конфигурацията на приложението" + +msgid "An application instance using this configuration already exists." +msgstr "" +"Инстанция на приложението използваща тази конфигурация вече съществува" + +msgid "An application instance with this name already exists." +msgstr "Друга инстанция на това приложение с това има вече съществува." + +msgid "You can't move the home page inside another page" +msgstr "Не можете да преместите началната страница в друга страница" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Не може да имате две страници с един и същ слъг на едно и също ниво. Моля, " +"променете слъга на една от страниците, преди да опитате да преместите " +"отново." + +msgid "Yes" +msgstr "Да" + +msgid "No" +msgstr "Не" + +msgid "user" +msgstr "потребител" + +msgid "can_view" +msgstr "може да разглежда" + +msgid "Add" +msgstr "Добави" + +msgid "Change" +msgstr "Промени" + +msgid "Delete" +msgstr "Изтрий" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Потребителите не могат да създадат страница без права за промяна на " +"създадената страница. Нужни са права за \"Промяна\"." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Потребителите не могат да изтрият страница без права за промяна на " +"страницата. Нужни са права за \"Промяна\"." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Потребителите не могат да приложат права за страницата без права за промяна " +"на страницата. Нужни са права за \"Промяна\"." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Потребителите не могат да премахнат правата за страницата без права за " +"промяна на страница. Нужни са права за \"Промяна\"." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Потребителите не могат да създадат правата за страница без права за промяна " +"на създадените права. Нужни са права за \"Промяна\"." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Потребителите не могат да изтриват права на страница без права за промяна на" +" правата. Необходими са права за редактиране." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Невалиден тип плъгин '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Избрания език трябва да бъде един от поддържаните!" + +msgid "Parent plugin language must be same as language!" +msgstr "Езикът на родителския плъгин трябва да бъде същия като език!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" +"Плейсхолдърът на родителския плъгин трябва да е същият като плейсхолдъра!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Позицията на плъгинът трябва да е по-голяма от %(position)d" + +msgid "Translations" +msgstr "Преводи" + +msgid "Advanced Settings" +msgstr "Разширени настройки" + +msgid "The page is not eligible to be home." +msgstr "Тази страница не може да бъде начална." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s обект с основен ключ %(key)r не съществува." + +msgid "error" +msgstr "грешка" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Грешка! Нямате права за да преместите тази страница. Моля презаредете " +"страницата." + +msgid "Error! You don't have permissions to copy this page." +msgstr "Грешка! Нямате права да копирате тази страница." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Грешка! Страницата, която поставяте, не е преведена на никой от езиците, " +"конфигурирани в сайтът." + +msgid "You do not have permission to edit this page" +msgstr "Вие нямате право да редактирате тази страница" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(за да я промените, първо премахнете публикуването на текущо публикуваната " +"версия на тази страница)" + +msgid "Add Translation" +msgstr "Добави превод" + +msgid "Add Page Copy" +msgstr "Добави копие на страница" + +msgid "New sub page" +msgstr "Нова подстраница" + +msgid "New page" +msgstr "Нова страница" + +msgid "Database error" +msgstr "Грешка в базата данни" + +msgid "Template not valid" +msgstr "Невалиден шаблон" + +msgid "Placeholder selection not valid" +msgstr "Невалиден избор на плейсхолдър" + +msgid "The template was successfully changed" +msgstr "Шаблонът е променен успешно" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Плейсхолдърът '%s' не съществува в целевия език" + +msgid "You do not have permission to copy these plugins." +msgstr "Нямате право да копирате тези плъгини." + +msgid "You do not have permission to delete this page" +msgstr "Нямате права да изтриете тази страница" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Заглавието и добавките на %(language)s език бяха изтрити" + +msgid "Public content" +msgstr "Публично съдържание" + +msgid "Empty" +msgstr "Празно" + +msgid "Create Content" +msgstr "Създай съдържание" + +msgid "View restriction" +msgstr "Вижте забраната" + +msgid "View restrictions" +msgstr "Вижте забраните" + +#, python-format +msgid "Field %s not found" +msgstr "Поле %sне е намерено" + +msgid "You do not have permission to edit this item" +msgstr "Нямате право да редактирате този елемент" + +msgid "You do not have permission to add a plugin" +msgstr "Нямате право да слагате добавки." + +msgid "You do not have permission to copy this placeholder." +msgstr "Нямате права да копирате този плейсхолдър." + +msgid "Plugin not found" +msgstr "Плъгинът не е намерен" + +msgid "You do not have permission to edit this plugin" +msgstr "Нямате право да редактирате този плъгин" + +msgid "You have no permission to paste this plugin" +msgstr "Нямате права да поставите този плъгин" + +msgid "You have no permission to paste this placeholder" +msgstr "Нямате права да поставите този плейсхолдър" + +msgid "You have no permission to move this plugin" +msgstr "Нямате право да местите тази добавка." + +msgid "You have no permission to cut this plugin" +msgstr "Нямате права да изрежете този плъгин" + +msgid "You do not have permission to delete this plugin" +msgstr "Нямате право да триете тази добавка." + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "%(name)sплъгинът \"%(obj)s\" беше изтрит успешно." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Не може да изтрие%(name)s" + +msgid "Are you sure?" +msgstr "Сигурни ли сте?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Нямате права да изчистите този плейсхолдър" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Плейсхолдърът \"%(obj)s\" беше изчистен успешно." + +msgid "placeholder" +msgstr "плейсхолдър" + +msgid "Page permissions" +msgstr "Права за страницата" + +msgid "User & Group permissions" +msgstr "Права на потребители и групи" + +msgid "Page permissions management" +msgstr "Управление на правата за страницата" + +msgid "Actions" +msgstr "Действия" + +msgid "Empty content" +msgstr "Празно съдържание" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "%(object_name)sСвойства" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Добави нов %(object_name)s" + +msgid "Add content" +msgstr "Добави съдържание" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Съдържанието за текущия език беше променено. Натиснете \"Отмяна\", за да се " +"върнете към формата и да запазите промените. Натиснете \"ОК\", за да " +"отмените промените." + +#, python-format +msgid "Add %(language)s content" +msgstr "Добави %(language)sсъдържание" + +msgid "Preview" +msgstr "Преглед" + +msgid "Settings" +msgstr "Настройки" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Невалиден език %(value)s. Тази форма не може да бъде обработена. Опитайте да" +" промените езиците." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Не е намерен регистриран apphook \"%r\"" + +msgid "django CMS" +msgstr "Django CMS" + +msgid "Placeholder" +msgstr "Плейсхолдър" + +msgid "Create" +msgstr "Създай" + +msgid "Edit" +msgstr "редактирай" + +msgid "Structure" +msgstr "Структура" + +msgid "Content" +msgstr "Съдържание" + +msgid "Sites" +msgstr "сайтове" + +msgid "Admin Sites" +msgstr "Админски сайтове" + +msgid "Administration" +msgstr "Администрация на сайта" + +msgid "User settings" +msgstr "Настройки на потребителя" + +msgid "Clipboard..." +msgstr "Клипборд..." + +msgid "Clear clipboard" +msgstr "Изчисти клипборда" + +msgid "Disable toolbar" +msgstr "Деактивирайте лентата с инструменти" + +msgid "Shortcuts..." +msgstr "Преки пътища..." + +msgid "Users" +msgstr "Потребители" + +#, python-format +msgid "Logout %s" +msgstr "Излез %s" + +msgid "Logout" +msgstr "Изход" + +msgid "Language" +msgstr "Език" + +msgid "Delete Translation" +msgstr "Изтрий превод" + +msgid "Copy all plugins" +msgstr "Копирай всички плъгини" + +#, python-format +msgid "from %s" +msgstr "от %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Сигурни ли сте, че искате да копирате всички плъгини от %s?" + +msgid "Pages" +msgstr "страници" + +msgid "Page" +msgstr "Страница" + +msgid "Create Page" +msgstr "Създай страница" + +msgid "New Page" +msgstr "Нова страница" + +msgid "New Sub Page" +msgstr "Нова подстраница" + +msgid "Duplicate this Page" +msgstr "Дублирай тази страница" + +msgid "Page settings" +msgstr "Настройки на страницата" + +msgid "Advanced settings" +msgstr "Разширени настройки" + +msgid "Templates" +msgstr "Шаблони" + +msgid "Placeholders" +msgstr "Плейсхолдъри" + +msgid "Hide in navigation" +msgstr "Скрий от навигацията" + +msgid "Display in navigation" +msgstr "в навигацията" + +msgid "Delete page" +msgstr "искане за изтриване" + +msgid "Create a new page next to the current page." +msgstr "Създай нова страница до текущата." + +msgid "Create a page below the current page." +msgstr "Създай страница под текущата." + +msgid "Select a valid site" +msgstr "Изберете валиден сайт" + +msgid "Select a valid page" +msgstr "Изберете валидна страница" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"Страница %(conflict_page)sима същия url '%(url)s' като текущата страница " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"Страница %(conflict_page)sима същия url '%(url)s' като текущата страница." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Незадължително. Ако бъде добавено, ще бъде автоматично добавено към нов " +"текстови плъгин." + +msgid "Provide a title for the new page." +msgstr "Задайте заглавие на новата страница." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "Оставете празно за автоматичен слъг или заместете при необходимост." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "Слъгът не може да бъде създаден автоматично. Моля, въведете го ръчно." + +msgid "Please provide a valid slug." +msgstr "Моля, въведете валиден слъг." + +msgid "You don't have the permissions required to add a page." +msgstr "Нямате нужните права за добавяне на страница." + +msgid "ID" +msgstr "Идентификатор" + +msgid "position" +msgstr "позиция" + +msgid "language" +msgstr "език" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "дата на създаване" + +msgid "can edit" +msgstr "може да се редактира" + +msgid "can add" +msgstr "може да добавя" + +msgid "can delete" +msgstr "може да трие" + +msgid "can change advanced settings" +msgstr "може да променя разширени настройки" + +msgid "can publish" +msgstr "може да публикува" + +msgid "can change permissions" +msgstr "може да променя права" + +msgid "can move" +msgstr "може да премества" + +msgid "view restricted" +msgstr "ограничен преглед" + +msgid "can recover pages" +msgstr "може да възтановява страници" + +msgid "group" +msgstr "група" + +msgid "sites" +msgstr "сайтове" + +msgid "created by" +msgstr "създадена от" + +msgid "changed by" +msgstr "променена от" + +msgid "publication date" +msgstr "дата на публикуване" + +msgid "publication end date" +msgstr "крайна дата на публикацията" + +msgid "in navigation" +msgstr "в навигацията" + +msgid "soft root" +msgstr "мека-основа" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "прикачено меню" + +msgid "template" +msgstr "шаблон" + +msgid "login required" +msgstr "необходимо е вписване" + +msgid "application" +msgstr "приложение" + +msgid "application instance name" +msgstr "име на инстанция на приложение" + +msgid "site" +msgstr "сайт" + +msgid "Grant on" +msgstr "Дай права" + +msgid "page" +msgstr "страница" + +msgid "no limit set" +msgstr "няма зададено ограничение" + +msgid "for logged in users only" +msgstr "достъп само за вписани потребители" + +msgid "for anonymous users only" +msgstr "само за нерегистрирани потребители" + +msgid "Inherit from parent page" +msgstr "Наследи от родителската страница" + +msgid "Deny" +msgstr "Забрани" + +msgid "Only this website" +msgstr "Само този сайт" + +msgid "Allow" +msgstr "Разреши" + +msgid "title" +msgstr "заглавие" + +msgid "The default title" +msgstr "Заглавие по подразбиране" + +msgid "Page Title" +msgstr "Заглавие на страницата" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "Изписва показаното отгоре във Вашия браузър или отметки" + +msgid "Menu Title" +msgstr "Заглавие на менюто" + +msgid "Overwrite what is displayed in the menu" +msgstr "Напишете показаното в менюто" + +msgid "Description meta tag" +msgstr "Мета таг за описание" + +msgid "A description of the page used by search engines." +msgstr "" +"Списък с думи, разделени със запетая, който понякога използват търсачките." + +msgid "redirect" +msgstr "пренасочване" + +msgid "Redirects to this URL." +msgstr "Пренасочва към този URL адрес" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Всички прародители няма да бъдат показвани в навигацията" + +msgid "The template used to render the content." +msgstr "Шаблон използван за показването на съдържанието." + +msgid "page content" +msgstr "съдържание на страница" + +msgid "page contents" +msgstr "съдържания на страница" + +msgid "default" +msgstr "по подразбиране" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Уникален идентификатор, използван с page_url етикета на темплейта за " +"създаване на връзка до тази страница." + +msgid "Mark this page as a page type" +msgstr "Маркирай тази страница като тип страница" + +msgid "pages" +msgstr "страници" + +msgid "No available title" +msgstr "Няма налично заглавие" + +msgid "slug" +msgstr "слъг" + +msgid "Path" +msgstr "Път" + +msgid "Current page" +msgstr "Текуща страница" + +msgid "Page children (immediate)" +msgstr "Подстраници на текущата (непосредствени)" + +msgid "Page and children (immediate)" +msgstr "Страница и подстраници (непосредствени)" + +msgid "Page descendants" +msgstr "Потомци на страницата" + +msgid "Page and descendants" +msgstr "Страница и потомци" + +msgid "on page level" +msgstr "на ниво на страницата" + +msgid "frontend view restriction" +msgstr "ограничение при разглеждане през публичния интерфейс" + +msgid "Please select user or group." +msgstr "Моля, изберете потребител или група." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Потребителите не могат да публикуват страница без права за промяна на " +"страницата. Необходими са права за редактиране." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Потребителите не могат да променят разширените настройки на страницата без " +"права за промяна на страницата. Необходими са права за редактиране." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Потребителите не могат да променят правата на страницата без права за " +"промяна на страницата. Необходими са права за редактиране." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Потребителите не могат да преместват страница без права за промяна на " +"страницата. Необходими са права за редактиране." + +msgid "can recover any deleted page" +msgstr "може да възстановява всяка изтрита страница" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "Ако няма избрани, потребителят има достъп до всички сайтове." + +msgid "Page global permission" +msgstr "Глобални права на страницата" + +msgid "Pages global permissions" +msgstr "Глобални права на страниците" + +msgid "Page permission" +msgstr "Права на страницата" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Правата за създаване на страница изискват достъп и до подстраниците. В " +"противен случай добавената страница не може да бъде променяна от своя автор." + +msgid "User (page)" +msgstr "Потребител (страница)" + +msgid "Users (page)" +msgstr "Потребители (страница)" + +msgid "User group (page)" +msgstr "Потребителска група (страница)" + +msgid "User groups (page)" +msgstr "Потребителски групи (страница)" + +msgid "slot" +msgstr "слот" + +msgid "width" +msgstr "широчина" + +msgid "Edit object" +msgstr "Редактирай обект" + +msgid "This is an external placeholder" +msgstr "Това е външен плейсхолдър" + +msgid "plugin" +msgstr "плъгин" + +msgid "plugins" +msgstr "плъгини" + +msgid "" +msgstr "<Празно>" + +msgid "The language for the admin interface and toolbar" +msgstr "Езикът за административният интерфейс и лентата с инструменти" + +msgid "user setting" +msgstr "настройка на потребителя" + +msgid "user settings" +msgstr "настройки на потребителя" + +msgid "by template" +msgstr "по шаблон" + +msgid "by code" +msgstr "по код" + +msgid "static placeholder name" +msgstr "име на статичен плейсхолдър" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Описателно име за идентифициране на този статичен плейсхолдър. Не се показва" +" на потребителите." + +msgid "placeholder code" +msgstr "код на плейсхолдъра" + +msgid "To render the static placeholder in templates." +msgstr "За изобразяване на статичния плейсхолдър в шаблоните." + +msgid "placeholder content" +msgstr "съдържание на плейсхолдъра" + +msgid "creation_method" +msgstr "creation_method" + +msgid "static placeholder" +msgstr "статичен плейсхолдър" + +msgid "static placeholders" +msgstr "статични плейсхолдъри" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Вече съществува статичен плейсхолдър със същия сайт и код" + +msgid "Advanced options" +msgstr "Разширени опции" + +msgid "Generic" +msgstr "Общ" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" беше успешно променен." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "Няма повече настройки за този плъгин. Моля, натиснете запази." + +msgid "Moved" +msgstr "Преместено" + +msgid "Changed" +msgstr "Променено" + +msgid "Deleted" +msgstr "Изтрито" + +msgid "Added Page Translation" +msgstr "Добавен Превод на Страница" + +msgid "Changed Page Translation" +msgstr "Променен Превод на Страница" + +msgid "Deleted Page Translation" +msgstr "Изтрит Превод на Страница" + +msgid "Added Plugin" +msgstr "Добавен плъгин" + +msgid "Changed Plugin" +msgstr "Променен плъгин" + +msgid "Moved Plugin" +msgstr "Преместен плъгин" + +msgid "Deleted Plugin" +msgstr "Изтрит плъгин" + +msgid "Cut Plugin" +msgstr "Изрежи плъгин" + +msgid "Paste Plugin" +msgstr "Постави плъгин" + +msgid "Paste to Placeholder" +msgstr "Постави в Плейсхолдър" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Добавени са плъгини към плейсхолдъра от клипборда" + +msgid "Cleared Placeholder" +msgstr "Изчистен плейсхолдър" + +msgid "Save" +msgstr "Запази" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" +"Някои от полетата не могат да бъдат променени, защото са с непроменливо " +"съдържание." + +#, python-format +msgid "Log in to administration here." +msgstr "Влезте в администрацията тук." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "URL за вход: %(login_url)s" + +msgid "Username:" +msgstr "Потребител:" + +msgid "Password:" +msgstr "Парола:" + +msgid "Add a page" +msgstr "Добави страница" + +msgid "Change a page" +msgstr "Редактиране на страница" + +msgid "Home" +msgstr "Начало" + +msgid "View on site" +msgstr "Виж на сайта" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Моля, поправете грешката отдолу." +msgstr[1] "Моля, поправете грешките отдолу." + +msgid "All permissions" +msgstr "Всички права" + +msgid "Loading..." +msgstr "Зареждане..." + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "Да, сигурен съм" + +msgid "No, take me back" +msgstr "Не, върни ме обратно" + +msgid "Summary" +msgstr "Обобщение" + +msgid "User" +msgstr "Потребител" + +msgid "Group" +msgstr "Група" + +msgid "Can edit" +msgstr "Може да редактира" + +msgid "Can add" +msgstr "Може да добавя" + +msgid "Can delete" +msgstr "Може да трие" + +msgid "Can publish" +msgstr "Може да публикува" + +msgid "Can change permissions" +msgstr "Може да променя правата" + +msgid "Can move" +msgstr "Може да мести" + +msgid "Can view" +msgstr "Може да разглежда" + +msgid "(global)" +msgstr "(глобално)" + +msgid "(current)" +msgstr "(текущо)" + +msgid "Page doesn't inherit any permissions." +msgstr "Страницата не наследява права." + +msgid "Edit model" +msgstr "Редактирай модел" + +msgid "Save as new" +msgstr "Запази като нов" + +msgid "Save and add another" +msgstr "Запазете и добавете нов" + +msgid "Copy" +msgstr "Копирай" + +msgid "Cut" +msgstr "Отрежи" + +msgid "Paste" +msgstr "Постави" + +msgid "Set as home" +msgstr "Задай като начало" + +msgid "is restricted" +msgstr "е ограничен" + +msgid "last change by" +msgstr "последна промяна от" + +msgid "last change on" +msgstr "последна промяна на" + +msgid "meta" +msgstr "мета" + +msgid "List of pages" +msgstr "Списък със страниците" + +msgid "Search" +msgstr "Търси" + +msgid "Page Tree" +msgstr "Дърво на страница" + +msgid "Reset filter" +msgstr "Изчисти филтъра" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Възстанови изтрит %(name)s\n" +" " + +msgid "Main Navigation" +msgstr "Главна Навигация" + +msgid "Options" +msgstr "Опции" + +msgid "Successfully moved" +msgstr "Успешно преместено" + +msgid "Changes within the tree might require a refresh." +msgstr "Промяна в дървото може да изисква обновяване." + +msgid "Error:" +msgstr "Грешка:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Тази страница не може да бъде копирана, защото апликацията е закачена към " +"нея. Виж допълнителните настройки на страницата, за да менажираш apphooks." + +msgid "Are you sure you want to § this page?" +msgstr "Сигурни ли сте, че искате да § тази страница?" + +msgid "Reload" +msgstr "Презареди" + +msgid "New node" +msgstr "Нов възел" + +msgid "nodes" +msgstr "възли" + +msgid "View" +msgstr "Преглед" + +msgid "Menu" +msgstr "Меню" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Все още няма %(object)s.\n" +"
\n" +" Добави %(object)s сега.\n" +" " + +msgid "Copy options" +msgstr "Опции за копиране" + +msgid "Choose copy options" +msgstr "Изберете опции за копиране" + +msgid "Close" +msgstr "Затвори" + +msgid "Legend" +msgstr "Легенда" + +msgid "In menu" +msgstr "В меню" + +msgid "Not in menu" +msgstr "Не е в меню" + +msgid "View page" +msgstr "Покажи страница" + +msgid "Softroot" +msgstr "Софт корен" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Приложение: %(apphook)s" + +msgid "in menu" +msgstr "в меню" + +msgid "not in menu" +msgstr "не е в меню" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Настройки на страницата (SHIFT клик за разширени настройки)" + +msgid "Permissions" +msgstr "Права" + +msgid "inherited" +msgstr "наследен" + +msgid "This page has no preview!" +msgstr "Тази страница няма преглед!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Възможно е прикаченият apphook да не предоставя съдържание за своя корен." + +msgid "It is being redirected to:" +msgstr "Пренасочва към:" + +msgid "Clipboard" +msgstr "Клипборд" + +msgid "Add plugin" +msgstr "Добави плъгин" + +msgid "Copy all" +msgstr "Копирай всички" + +msgid "Copy from" +msgstr "Копирай от" + +msgid "Empty all" +msgstr "Премахни всички" + +msgid "Filter plugins..." +msgstr "Филтрирай плъгини..." + +msgid "Expand all" +msgstr "Разпъни всички" + +msgid "Collapse all" +msgstr "Свий всички" + +msgid "You cannot add plugins to this plugin." +msgstr "Не можете да добавите плъгини към този плъгин." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"Този плъгин не може да бъде преместен или редактиран извън родителя си" + +msgid "Clipboard is empty." +msgstr "Клипбордът е празен." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Този плъгин не позволява плъгини от този тип като вложени плъгини." + +msgid "This plugin cannot have nested plugins." +msgstr "Този плъгин не може да има вложени плъгини." + +msgid "Highlight" +msgstr "Открояване" + +msgid "Available plugins" +msgstr "Достъпни добавки" + +msgid "Toggle structure" +msgstr "Превключи структурата" + +msgid "Login" +msgstr "Вписване" + +msgid "Add plugin to" +msgstr "Добави плъгин към" + +msgid "More" +msgstr "Повече" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Програмна версия използващо Django CMS %(cms_version)s, " +"Django%(django_version)s, Python%(python_version)s" + +msgid "Cancel" +msgstr "Отказ" + +msgid "The following error occurred:" +msgstr "Грешка:" + +msgid "Action successful." +msgstr "Успех." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Наистина ли искате да изтриете тази добавка?" + +msgid "Are you sure you want to publish this page?" +msgstr "Сигурен ли сте, че искате да публикувате тази страница?" + +msgid "Plugin will be added here" +msgstr "Плъгинът ще бъде добавен тук" + +msgid "You have unsaved changes." +msgstr "Имате незапазени промени." + +msgid "Loading" +msgstr "Зареждане" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Сигурен ли сте, че искате да премахнете тези промени?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"Тази форма не може да бъде заредена. Моля, проверете дали сървърът работи " +"правилно." + +msgid "Most used" +msgstr "Най-използван" + +msgid "Shortcuts" +msgstr "Преки пътища" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Тази страница беше променена, презареждане..." + +msgid "CMS-wide Shortcuts" +msgstr "Преки пътища за целия CMS" + +msgid "Bring up this help dialog" +msgstr "Покажи помощния диалогов прозорец" + +msgid "Close/cancel" +msgstr "Затвори" + +msgid "Toggle structure mode" +msgstr "Превключи режим на структура" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Превключи режим на структура и открои плъгина под курсора" + +msgid "Open \"Create\" dialog" +msgstr "Отвори диалоговия прозорец \"Създай\"" + +msgid "Focus on Toolbar" +msgstr "Фокусирай лентата с инструменти" + +msgid "Focus on placeholders" +msgstr "Фокус върху плейсхолдърите" + +msgid "Move to next/previous element" +msgstr "Навигирай към следващия/предишния елемент" + +msgid "Focus on plugins of placeholder" +msgstr "Фокус върху плъгините на плейсхолдъра" + +msgid "Edit plugin" +msgstr "Редактирай плъгин" + +msgid "Open actions menu" +msgstr "Отворете меню с действия" + +msgid "Expand/collapse" +msgstr "Разпъни/свий" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Неуспешен опит за влизане в системата. Моля, проверете " +"вашите имейл и парола и опитайте отново." + +msgid "Double-click to edit" +msgstr "Двоен клик за редакция" + +msgid "Tap to edit" +msgstr "Цъки за редакция" + +msgid "Click to go back" +msgstr "Клик за навигиране назад" + +msgid "Click to go forward" +msgstr "Клик за навигиране напред" + +msgid "Minimize" +msgstr "Минимизирай" + +msgid "Maximize" +msgstr "Максимизирай" + +msgid "Placeholder not editable" +msgstr "Плейсхолдърът не може да се редактира" + +msgid "Drop a plugin here" +msgstr "Пуснете плъгин тук" + +msgid "Welcome to your new django CMS installation!" +msgstr "Добре дошли в новата ви инсталация на django CMS!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Версия %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Нека създадем нещо страхотно заедно!" + +msgid "Please log in" +msgstr "Моля, влезте в профила си" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Добавете първата си страница\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Помогнете с финансиране

\n" +"

\n" +" Вашето финансиране пряко облагодетелства продукта, основно чрез\n" +" програмата django CMS Fellowship!\n" +"

\n" +"

\n" +" Бърз начин вие или вашата организация да дарите е чрез\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Присъединете се към нас

\n" +"

\n" +" Асоциацията django CMS е организация с нестопанска цел, която финансира и направлява разработката на\n" +" django CMS.\n" +"

\n" +"

\n" +" Можете да се присъедините както като физическо лице, така и като\n" +" организация.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Допринесете

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Инсталационни бележки" + +msgid "Support" +msgstr "Помощ" + +msgid "Documentation" +msgstr "Документация" + +msgid "User guide" +msgstr "Ръководство за потребителя" + +msgid "Give back" +msgstr "Дайте нещо в замяна" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Ако не виждате django CMS логото отгоре, уверете се, че\n" +" сте свързали static/cms папката към вашите\n" +" статични файлове.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Виждате това съобщение, защото\n" +" DEBUG = True във файлът с конфигурации на django и\n" +" все още не сте добавили страници.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Добре дошли в Django CMS" + +msgid "Add Another" +msgstr "Добави друг" + +msgid "Back" +msgstr "Назад" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" +"Моля изберете опция от долу-изброените за да продължите към следващата " +"стъпка." + +msgid "Next" +msgstr "Напред" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Неизвестно" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Страницата не е открита на %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Не може да бъде намерена страница при търсене с `%(page_lookup)s` . URL " +"адресът на заявката е бил: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Две колони" + +msgid "Three columns" +msgstr "Три колони" + +msgid "username" +msgstr "потребителско име" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Задължително. 300 символа или по-малко. Букви, цифри и @/./+/-/_ символи" + +msgid "Enter a valid username." +msgstr "Въведи валидно потребителско име" + +msgid "email address" +msgstr "email адрес" + +msgid "staff status" +msgstr "статус на персонал" + +msgid "Designates whether the user can log into this admin site." +msgstr "Указва дали потребителят може да влиза в този админ сайт." + +msgid "active" +msgstr "активен" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Указва дали този потребител трябва да се третира като активен. Премахнете " +"отметката вместо да изтривате акаунти." + +msgid "users" +msgstr "потребители" + +msgid "Title Extension" +msgstr "Заглавие на разширението" + +msgid "Page Extension" +msgstr "Разширение на страница" + +msgid "object ID" +msgstr "Идентификатор на обект" + +msgid "Example1 App" +msgstr "Примерно1 Приложение" + +msgid "MultilingualExample1 App" +msgstr "Приложение MultilingualExample1" + +msgid "Example1" +msgstr "Пример1" + +msgid "Examples" +msgstr "Примери" + +msgid "Extra Context" +msgstr "Допълнителен контекст" + +msgid "Articles" +msgstr "статии" + +msgid "Sample App" +msgstr "Просто Приложение" + +msgid "Sample App with config" +msgstr "Просто Приложение с настройки" + +msgid "Sample App with excluded permissions" +msgstr "Просто Приложение с премахни права" + +msgid "Sample App 2" +msgstr "Просто Приложение 2" + +msgid "Sample App 3" +msgstr "Просто Приложение 2" + +msgid "Sample App Without Landing Page" +msgstr "Примерно приложение без начална страница" + +msgid "Namespaced App" +msgstr "Приложение с именно пространство" + +msgid "Parent app" +msgstr "Родителско приложение" + +msgid "Child app" +msgstr "Дъщерно приложение" + +msgid "Variable urls-menus App" +msgstr "Приложение с променливи urls-menus" + +msgid "sample root page" +msgstr "примерна коренна страница" + +msgid "sample settings page" +msgstr "проста страница с настройки" + +msgid "sample account page" +msgstr "проста страница с профил" + +msgid "sample my profile page" +msgstr "проста страница моят профил" + +msgid "Static Menu" +msgstr "Статично Меню" + +msgid "Static Menu2" +msgstr "Статично Меню2" + +msgid "Static Menu3" +msgstr "Статично Меню3" + +msgid "Static Menu4" +msgstr "Статично Меню" + +msgid "Category" +msgstr "Категория" + +msgid "Categories" +msgstr "Категории" + +msgid "Add Category" +msgstr "Добави категория" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Промени категория" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Благодаря, че днес си прекарахте хубаво с Уеб-сайтът." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Наследи шаблона от най-близката главна страница" + +msgid "UserSettings" +msgstr "ПотребителскиНастройки" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Добави плъгин към плейсхолдър \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Добави плъгин към %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Единичен плейсхолдър" + +msgid "CMS - your user account was created." +msgstr "CMS — Вашият потребителски профил беше създаден." + +msgid "CMS - your user account was changed." +msgstr "CMS — Вашият потребителски профил беше променен." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Това място вече съдържа максималния брой добавки (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Това място вече съдържа максималния брой (%(limit)s) разрешени добавки " +"%(plugin_name)s." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Не може да бъде намерен указаният модул CMS_REQUEST_IP_RESOLVER: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Не може да бъде намерена указаната функция CMS_REQUEST_IP_RESOLVER: \"{0}\" " +"в модул \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Създайте нова %sинстанция." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Вече е регистриран помощник за модел: %s" diff --git a/cms/locale/bg/LC_MESSAGES/djangojs.po b/cms/locale/bg/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..4fa816c6 --- /dev/null +++ b/cms/locale/bg/LC_MESSAGES/djangojs.po @@ -0,0 +1,27 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Boris Chervenkov , 2012 +# Boyko Amarov , 2013 +# Ivaylo Nakov, 2025 +# Ivaylo Nakov, 2025 +# suleyman , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: suleyman , 2011\n" +"Language-Team: Bulgarian (http://app.transifex.com/divio/django-cms/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" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Наистина ли искате да промените раздели без първо да запазите страницата?" diff --git a/cms/locale/bn/LC_MESSAGES/django.po b/cms/locale/bn/LC_MESSAGES/django.po new file mode 100644 index 00000000..9ca9af4b --- /dev/null +++ b/cms/locale/bn/LC_MESSAGES/django.po @@ -0,0 +1,1753 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Nazir Ahmed Sabbir , 2022 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Bengali (https://app.transifex.com/divio/teams/58664/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" + +msgid "All" +msgstr "সব" + +msgid "Copy permissions" +msgstr "অনুমতিসমূহ কপি করুন" + +msgid "Slug" +msgstr "স্লাগ" + +msgid "The part of the title that is used in the URL" +msgstr "শিরোনামের যে অংশ ইউআরএল-এ ব্যবহৃত হবে" + +msgid "Page type" +msgstr "পৃষ্ঠার ধরন" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "পৃষ্ঠার ধরনসমূহ" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "ইউআরএল ওভাররাইট করুন" + +msgid "Keep this field empty if standard path should be used." +msgstr "স্ট্যান্ডার্ড পাথ ব্যবহার করতে চাইলে এই ঘরটি খালি রাখুন।" + +msgid "Start typing..." +msgstr "টাইপ করা শুরু করুন..." + +msgid "menu visibility" +msgstr "মেনুর দৃশ্যমানতা" + +msgid "limit when this page is visible in the menu" +msgstr "এই পৃষ্ঠাটি মেনুতে কখন দৃশ্যমান হবে তা সীমাবদ্ধ করুন" + +msgid "X Frame Options" +msgstr "X Frame অপশনসমূহ" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "এই পৃষ্ঠাটি অন্যান্য পৃষ্ঠা বা ওয়েবসাইটে এম্বেড করা যাবে কিনা।" + +msgid "URL options" +msgstr "ইউআরএল অপশনসমূহ" + +msgid "Menu options" +msgstr "মেনু অপশনসমূহ" + +msgid "Headers" +msgstr "হেডারসমূহ" + +msgid "Application" +msgstr "এ্যাপ্লিকেশন" + +msgid "Hook application to this page." +msgstr "এই পৃষ্ঠায় এ্যাপ্লিকেশন হুক করুন।" + +msgid "Application configurations" +msgstr "এ্যাপ্লিকেশন কনফিগারেশনসমূহ" + +msgid "A page with this reverse URL id exists already." +msgstr "এই রিভার্স ইউআরএল আইডি সহ একটি পৃষ্ঠা ইতিমধ্যেই বিদ্যমান।" + +msgid "Invalid application config value" +msgstr "অবৈধ এ্যাপ্লিকেশন কনফিগ মান" + +msgid "An application instance using this configuration already exists." +msgstr "" +"এই কনফিগারেশন ব্যবহার করে একটি এ্যাপ্লিকেশন ইনস্ট্যান্স ইতিমধ্যেই বিদ্যমান।" + +msgid "An application instance with this name already exists." +msgstr "এই নামের একটি এ্যাপ্লিকেশন ইনস্ট্যান্স ইতিমধ্যেই বিদ্যমান।" + +msgid "You can't move the home page inside another page" +msgstr "আপনি হোম পৃষ্ঠাটিকে অন্য একটি পৃষ্ঠার ভিতরে সরাতে পারবেন না" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"একই পৃষ্ঠা স্তরে একই স্লাগ সহ দুটি পৃষ্ঠা থাকতে পারে না। আবার সরানোর চেষ্টা " +"করার আগে অনুগ্রহ করে পৃষ্ঠাগুলোর একটির স্লাগ পরিবর্তন করুন।" + +msgid "Yes" +msgstr "হ্যাঁ" + +msgid "No" +msgstr "না" + +msgid "user" +msgstr "ব্যবহারকারী" + +msgid "can_view" +msgstr "দেখতে_পারে" + +msgid "Add" +msgstr "যুক্ত করুন" + +msgid "Change" +msgstr "পরিবর্তন" + +msgid "Delete" +msgstr "মুছে ফেলুন" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"তৈরি করা পৃষ্ঠা পরিবর্তনের অনুমতি ছাড়া ব্যবহারকারীরা পৃষ্ঠা তৈরি করতে " +"পারবেন না। সম্পাদনার অনুমতি প্রয়োজন।" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"পৃষ্ঠা পরিবর্তনের অনুমতি ছাড়া ব্যবহারকারীরা পৃষ্ঠা মুছতে পারবেন না। " +"সম্পাদনার অনুমতি প্রয়োজন।" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"পৃষ্ঠা পরিবর্তনের অনুমতি ছাড়া ব্যবহারকারীরা পৃষ্ঠার অনুমতি নির্ধারণ করতে " +"পারবেন না। সম্পাদনার অনুমতি প্রয়োজন।" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"পৃষ্ঠা পরিবর্তনের অনুমতি ছাড়া ব্যবহারকারীরা পৃষ্ঠার অনুমতি মুছতে পারবেন না।" +" সম্পাদনার অনুমতি প্রয়োজন।" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"তৈরি করা অনুমতি পরিবর্তনের অনুমতি ছাড়া ব্যবহারকারীরা পৃষ্ঠার অনুমতি তৈরি " +"করতে পারবেন না। সম্পাদনার অনুমতি প্রয়োজন।" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"অনুমতি পরিবর্তনের অনুমতি ছাড়া ব্যবহারকারীরা পৃষ্ঠার অনুমতি মুছতে পারবেন না।" +" সম্পাদনার অনুমতি প্রয়োজন।" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "অবৈধ প্লাগ-ইন ধরন '%s'" + +msgid "Language must be set to a supported language!" +msgstr "ভাষা একটি সমর্থিত ভাষায় নির্ধারণ করতে হবে!" + +msgid "Parent plugin language must be same as language!" +msgstr "প্যারেন্ট প্লাগ-ইনের ভাষা অবশ্যই ভাষার সাথে অভিন্ন হতে হবে!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" +"প্যারেন্ট প্লাগ-ইনের প্লেসহোল্ডার অবশ্যই প্লেসহোল্ডারের সাথে অভিন্ন হতে হবে!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "প্লাগ-ইনের অবস্থান অবশ্যই %(position)d-এর চেয়ে বড় হতে হবে" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "উন্নত সেটিংস" + +msgid "The page is not eligible to be home." +msgstr "পৃষ্ঠাটি হোম হওয়ার যোগ্য নয়।" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "প্রাইমারি কী %(key)r সহ %(name)s অবজেক্ট বিদ্যমান নেই।" + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"ত্রুটি! এই পৃষ্ঠাটি সরানোর অনুমতি আপনার নেই। অনুগ্রহ করে পৃষ্ঠাটি পুনরায় " +"লোড করুন" + +msgid "Error! You don't have permissions to copy this page." +msgstr "ত্রুটি! এই পৃষ্ঠাটি কপি করার অনুমতি আপনার নেই।" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"ত্রুটি! আপনি যে পৃষ্ঠাটি পেস্ট করছেন তা টার্গেট সাইটে কনফিগার করা ভাষাগুলোর " +"কোনোটিতেই অনুবাদ করা হয়নি।" + +msgid "You do not have permission to edit this page" +msgstr "এই পৃষ্ঠাটি সম্পাদনার অনুমতি আপনার নেই" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(এটি পরিবর্তন করতে, প্রথমে এই পৃষ্ঠার বর্তমানে প্রকাশিত সংস্করণটি অপ্রকাশিত " +"করুন)" + +msgid "Add Translation" +msgstr "অনুবাদ যুক্ত করুন" + +msgid "Add Page Copy" +msgstr "পৃষ্ঠার কপি যুক্ত করুন" + +msgid "New sub page" +msgstr "নতুন সাব পৃষ্ঠা" + +msgid "New page" +msgstr "নতুন পৃষ্ঠা" + +msgid "Database error" +msgstr "ডাটাবেজ ত্রুটি" + +msgid "Template not valid" +msgstr "টেমপ্লেট বৈধ নয়" + +msgid "Placeholder selection not valid" +msgstr "প্লেসহোল্ডার নির্বাচন বৈধ নয়" + +msgid "The template was successfully changed" +msgstr "টেমপ্লেট সফলভাবে পরিবর্তন করা হয়েছে" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "প্লেসহোল্ডার '%s' লক্ষ্য ভাষায় বিদ্যমান নেই" + +msgid "You do not have permission to copy these plugins." +msgstr "এই প্লাগ-ইনগুলো কপি করার অনুমতি আপনার নেই।" + +msgid "You do not have permission to delete this page" +msgstr "এই পৃষ্ঠাটি মুছে ফেলার অনুমতি আপনার নেই" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "%(language)s ভাষার শিরোনাম এবং প্লাগ-ইনগুলো মুছে ফেলা হয়েছে" + +msgid "Public content" +msgstr "পাবলিক কন্টেন্ট" + +msgid "Empty" +msgstr "খালি" + +msgid "Create Content" +msgstr "কন্টেন্ট তৈরি করুন" + +msgid "View restriction" +msgstr "দেখার সীমাবদ্ধতা" + +msgid "View restrictions" +msgstr "দেখার সীমাবদ্ধতাসমূহ" + +#, python-format +msgid "Field %s not found" +msgstr "ঘর %s পাওয়া যায়নি" + +msgid "You do not have permission to edit this item" +msgstr "এই আইটেমটি সম্পাদনার অনুমতি আপনার নেই" + +msgid "You do not have permission to add a plugin" +msgstr "প্লাগ-ইন যুক্ত করার অনুমতি আপনার নেই" + +msgid "You do not have permission to copy this placeholder." +msgstr "এই প্লেসহোল্ডারটি কপি করার অনুমতি আপনার নেই।" + +msgid "Plugin not found" +msgstr "প্লাগ-ইন পাওয়া যায়নি" + +msgid "You do not have permission to edit this plugin" +msgstr "এই প্লাগ-ইনটি সম্পাদনার অনুমতি আপনার নেই" + +msgid "You have no permission to paste this plugin" +msgstr "এই প্লাগ-ইনটি পেস্ট করার অনুমতি আপনার নেই" + +msgid "You have no permission to paste this placeholder" +msgstr "এই প্লেসহোল্ডারটি পেস্ট করার অনুমতি আপনার নেই" + +msgid "You have no permission to move this plugin" +msgstr "এই প্লাগ-ইনটি সরানোর অনুমতি আপনার নেই" + +msgid "You have no permission to cut this plugin" +msgstr "এই প্লাগ-ইনটি কাট করার অনুমতি আপনার নেই" + +msgid "You do not have permission to delete this plugin" +msgstr "এই প্লাগ-ইনটি মুছে ফেলার অনুমতি আপনার নেই" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "%(name)s প্লাগ-ইন \"%(obj)s\" সফলভাবে মুছে ফেলা হয়েছে।" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "%(name)s মুছে ফেলা যাবে না" + +msgid "Are you sure?" +msgstr "আপনি কি নিশ্চিত?" + +msgid "You do not have permission to clear this placeholder" +msgstr "এই প্লেসহোল্ডারটি খালি করার অনুমতি আপনার নেই" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "প্লেসহোল্ডার \"%(obj)s\" সফলভাবে খালি করা হয়েছে।" + +msgid "placeholder" +msgstr "প্লেসহোল্ডার" + +msgid "Page permissions" +msgstr "পৃষ্ঠার অনুমতিসমূহ" + +msgid "User & Group permissions" +msgstr "ব্যবহারকারী ও গ্রুপের অনুমতিসমূহ" + +msgid "Page permissions management" +msgstr "পৃষ্ঠার অনুমতি ব্যবস্থাপনা" + +msgid "Actions" +msgstr "অ্যাকশনসমূহ" + +msgid "Empty content" +msgstr "খালি কন্টেন্ট" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "%(object_name)s প্রোপার্টিসমূহ" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "নতুন %(object_name)s যুক্ত করুন" + +msgid "Add content" +msgstr "কন্টেন্ট যুক্ত করুন" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"বর্তমান ভাষার কন্টেন্ট পরিবর্তন করা হয়েছে। ফর্মে ফিরে গিয়ে পরিবর্তনগুলো " +"সংরক্ষণ করতে \"Cancel\" ক্লিক করুন। পরিবর্তনগুলো বাতিল করতে \"OK\" ক্লিক " +"করুন।" + +#, python-format +msgid "Add %(language)s content" +msgstr "%(language)s কন্টেন্ট যুক্ত করুন" + +msgid "Preview" +msgstr "প্রিভিউ" + +msgid "Settings" +msgstr "সেটিংস" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"অবৈধ ভাষা %(value)s। এই ফর্মটি প্রক্রিয়া করা যাবে না। ভাষা পরিবর্তন করে " +"দেখুন।" + +msgid "" +msgstr "<অনির্দিষ্ট>" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "নিবন্ধিত কোনো apphook \"%r\" পাওয়া যায়নি" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "প্লেসহোল্ডার" + +msgid "Create" +msgstr "তৈরি করুন" + +msgid "Edit" +msgstr "সম্পাদনা" + +msgid "Structure" +msgstr "স্ট্রাকচার" + +msgid "Content" +msgstr "কন্টেন্ট" + +msgid "Sites" +msgstr "সাইটসমূহ" + +msgid "Admin Sites" +msgstr "অ্যাডমিন সাইটসমূহ" + +msgid "Administration" +msgstr "প্রশাসন" + +msgid "User settings" +msgstr "ব্যবহারকারী সেটিংস" + +msgid "Clipboard..." +msgstr "ক্লিপবোর্ড..." + +msgid "Clear clipboard" +msgstr "ক্লিপবোর্ড খালি করুন" + +msgid "Disable toolbar" +msgstr "টুলবার নিষ্ক্রিয় করুন" + +msgid "Shortcuts..." +msgstr "শর্টকাট..." + +msgid "Users" +msgstr "ব্যবহারকারীগণ" + +#, python-format +msgid "Logout %s" +msgstr "লগআউট %s" + +msgid "Logout" +msgstr "লগআউট" + +msgid "Language" +msgstr "ভাষা" + +msgid "Delete Translation" +msgstr "অনুবাদ মুছে ফেলুন" + +msgid "Copy all plugins" +msgstr "সব প্লাগ-ইন কপি করুন" + +#, python-format +msgid "from %s" +msgstr "%s থেকে" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "আপনি কি নিশ্চিত যে আপনি %s থেকে সব প্লাগ-ইন কপি করতে চান?" + +msgid "Pages" +msgstr "পৃষ্ঠাসমূহ" + +msgid "Page" +msgstr "পৃষ্ঠা" + +msgid "Create Page" +msgstr "পৃষ্ঠা তৈরি করুন" + +msgid "New Page" +msgstr "নতুন পৃষ্ঠা" + +msgid "New Sub Page" +msgstr "নতুন সাব পৃষ্ঠা" + +msgid "Duplicate this Page" +msgstr "এই পৃষ্ঠাটির অনুলিপি তৈরি করুন" + +msgid "Page settings" +msgstr "পৃষ্ঠার সেটিংস" + +msgid "Advanced settings" +msgstr "উন্নত সেটিংস" + +msgid "Templates" +msgstr "টেমপ্লেটসমূহ" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "নেভিগেশনে লুকান" + +msgid "Display in navigation" +msgstr "নেভিগেশনে দেখান" + +msgid "Delete page" +msgstr "পৃষ্ঠা মুছে ফেলুন" + +msgid "Create a new page next to the current page." +msgstr "বর্তমান পৃষ্ঠার পাশে একটি নতুন পৃষ্ঠা তৈরি করুন।" + +msgid "Create a page below the current page." +msgstr "বর্তমান পৃষ্ঠার নিচে একটি পৃষ্ঠা তৈরি করুন।" + +msgid "Select a valid site" +msgstr "একটি বৈধ সাইট নির্বাচন করুন" + +msgid "Select a valid page" +msgstr "একটি বৈধ পৃষ্ঠা নির্বাচন করুন" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"পৃষ্ঠা %(conflict_page)s-এর ইউআরএল '%(url)s' বর্তমান পৃষ্ঠা " +"\"%(instance)s\"-এর সাথে অভিন্ন।" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"পৃষ্ঠা %(conflict_page)s-এর ইউআরএল '%(url)s' বর্তমান পৃষ্ঠার সাথে অভিন্ন।" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"ঐচ্ছিক। প্রদান করা হলে, এটি স্বয়ংক্রিয়ভাবে একটি নতুন টেক্সট প্লাগ-ইনে " +"যুক্ত হবে।" + +msgid "Provide a title for the new page." +msgstr "নতুন পৃষ্ঠার জন্য একটি শিরোনাম প্রদান করুন।" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" +"স্বয়ংক্রিয় স্লাগের জন্য খালি রাখুন, অথবা প্রয়োজন অনুযায়ী ওভাররাইড করুন।" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" +"স্বয়ংক্রিয়ভাবে স্লাগ তৈরি করা যাবে না। অনুগ্রহ করে একটি ম্যানুয়ালি প্রদান" +" করুন।" + +msgid "Please provide a valid slug." +msgstr "অনুগ্রহ করে একটি বৈধ স্লাগ প্রদান করুন।" + +msgid "You don't have the permissions required to add a page." +msgstr "পৃষ্ঠা যুক্ত করার জন্য প্রয়োজনীয় অনুমতি আপনার নেই।" + +msgid "ID" +msgstr "আইডি" + +msgid "position" +msgstr "অবস্থান" + +msgid "language" +msgstr "ভাষা" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "তৈরির তারিখ" + +msgid "can edit" +msgstr "সম্পাদনা করতে পারে" + +msgid "can add" +msgstr "যুক্ত করতে পারে" + +msgid "can delete" +msgstr "মুছতে পারে" + +msgid "can change advanced settings" +msgstr "উন্নত সেটিংস পরিবর্তন করতে পারে" + +msgid "can publish" +msgstr "প্রকাশ করতে পারে" + +msgid "can change permissions" +msgstr "অনুমতি পরিবর্তন করতে পারে" + +msgid "can move" +msgstr "সরাতে পারে" + +msgid "view restricted" +msgstr "দেখা সীমাবদ্ধ" + +msgid "can recover pages" +msgstr "পৃষ্ঠা পুনরুদ্ধার করতে পারে" + +msgid "group" +msgstr "গ্রুপ" + +msgid "sites" +msgstr "সাইটসমূহ" + +msgid "created by" +msgstr "তৈরি করেছেন" + +msgid "changed by" +msgstr "পরিবর্তন করেছেন" + +msgid "publication date" +msgstr "প্রকাশের তারিখ" + +msgid "publication end date" +msgstr "প্রকাশের সমাপ্তির তারিখ" + +msgid "in navigation" +msgstr "নেভিগেশনে" + +msgid "soft root" +msgstr "সফট রুট" + +msgid "id" +msgstr "আইডি" + +msgid "attached menu" +msgstr "সংযুক্ত মেনু" + +msgid "template" +msgstr "টেমপ্লেট" + +msgid "login required" +msgstr "লগইন প্রয়োজন" + +msgid "application" +msgstr "এ্যাপ্লিকেশন" + +msgid "application instance name" +msgstr "এ্যাপ্লিকেশন ইনস্ট্যান্সের নাম" + +msgid "site" +msgstr "সাইট" + +msgid "Grant on" +msgstr "অনুমতি দিন" + +msgid "page" +msgstr "পৃষ্ঠা" + +msgid "no limit set" +msgstr "কোনো সীমা নির্ধারিত নেই" + +msgid "for logged in users only" +msgstr "শুধুমাত্র লগইন করা ব্যবহারকারীদের জন্য" + +msgid "for anonymous users only" +msgstr "শুধুমাত্র বেনামী ব্যবহারকারীদের জন্য" + +msgid "Inherit from parent page" +msgstr "প্যারেন্ট পৃষ্ঠা থেকে উত্তরাধিকার সূত্রে গ্রহণ করুন" + +msgid "Deny" +msgstr "অস্বীকার করুন" + +msgid "Only this website" +msgstr "শুধুমাত্র এই ওয়েবসাইট" + +msgid "Allow" +msgstr "অনুমতি দিন" + +msgid "title" +msgstr "শিরোনাম" + +msgid "The default title" +msgstr "ডিফল্ট শিরোনাম" + +msgid "Page Title" +msgstr "পৃষ্ঠার শিরোনাম" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "আপনার ব্রাউজারের উপরে অথবা বুকমার্কে যা প্রদর্শিত হয় তা ওভাররাইট করে" + +msgid "Menu Title" +msgstr "মেনু শিরোনাম" + +msgid "Overwrite what is displayed in the menu" +msgstr "মেনুতে যা প্রদর্শিত হয় তা ওভাররাইট করুন" + +msgid "Description meta tag" +msgstr "বিবরণ মেটা ট্যাগ" + +msgid "A description of the page used by search engines." +msgstr "সার্চ ইঞ্জিন কর্তৃক ব্যবহৃত পৃষ্ঠার একটি বিবরণ।" + +msgid "redirect" +msgstr "পুনঃনির্দেশ" + +msgid "Redirects to this URL." +msgstr "এই ইউআরএল-এ পুনঃনির্দেশ করে" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "সকল পূর্বপুরুষ নেভিগেশনে প্রদর্শিত হবে না" + +msgid "The template used to render the content." +msgstr "কন্টেন্ট রেন্ডার করতে ব্যবহৃত টেমপ্লেট।" + +msgid "page content" +msgstr "পৃষ্ঠার কন্টেন্ট" + +msgid "page contents" +msgstr "পৃষ্ঠার কন্টেন্টসমূহ" + +msgid "default" +msgstr "ডিফল্ট" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"একটি অনন্য আইডেন্টিফায়ার যা এই পৃষ্ঠার সাথে লিঙ্ক করার জন্য page_url " +"templatetag-এর সাথে ব্যবহৃত হয়" + +msgid "Mark this page as a page type" +msgstr "এই পৃষ্ঠাটিকে একটি পৃষ্ঠার ধরন হিসেবে চিহ্নিত করুন" + +msgid "pages" +msgstr "পৃষ্ঠাসমূহ" + +msgid "No available title" +msgstr "কোনো শিরোনাম উপলব্ধ নেই" + +msgid "slug" +msgstr "স্লাগ" + +msgid "Path" +msgstr "পাথ" + +msgid "Current page" +msgstr "বর্তমান পৃষ্ঠা" + +msgid "Page children (immediate)" +msgstr "পৃষ্ঠার সন্তান (তাৎক্ষণিক)" + +msgid "Page and children (immediate)" +msgstr "পৃষ্ঠা এবং সন্তান (তাৎক্ষণিক)" + +msgid "Page descendants" +msgstr "পৃষ্ঠার বংশধর" + +msgid "Page and descendants" +msgstr "পৃষ্ঠা এবং বংশধর" + +msgid "on page level" +msgstr "পৃষ্ঠা স্তরে" + +msgid "frontend view restriction" +msgstr "ফ্রন্টএন্ড দেখার সীমাবদ্ধতা" + +msgid "Please select user or group." +msgstr "অনুগ্রহ করে ব্যবহারকারী অথবা গ্রুপ নির্বাচন করুন।" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"পৃষ্ঠা পরিবর্তনের অনুমতি ছাড়া ব্যবহারকারীরা পৃষ্ঠা প্রকাশ করতে পারবেন না। " +"সম্পাদনার অনুমতি প্রয়োজন।" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"পৃষ্ঠা পরিবর্তনের অনুমতি ছাড়া ব্যবহারকারীরা পৃষ্ঠার উন্নত সেটিংস পরিবর্তন " +"করতে পারবেন না। সম্পাদনার অনুমতি প্রয়োজন।" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"পৃষ্ঠা পরিবর্তনের অনুমতি ছাড়া ব্যবহারকারীরা পৃষ্ঠার অনুমতি পরিবর্তন করতে " +"পারবেন না। সম্পাদনার অনুমতি প্রয়োজন।" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"পৃষ্ঠা পরিবর্তনের অনুমতি ছাড়া ব্যবহারকারীরা পৃষ্ঠা সরাতে পারবেন না। " +"সম্পাদনার অনুমতি প্রয়োজন।" + +msgid "can recover any deleted page" +msgstr "মুছে ফেলা যেকোনো পৃষ্ঠা পুনরুদ্ধার করতে পারে" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"কোনোটি নির্বাচন না করা হলে, ব্যবহারকারীকে সকল সাইটে অনুমতি প্রদান করা হয়।" + +msgid "Page global permission" +msgstr "পৃষ্ঠার গ্লোবাল অনুমতি" + +msgid "Pages global permissions" +msgstr "পৃষ্ঠাসমূহের গ্লোবাল অনুমতিসমূহ" + +msgid "Page permission" +msgstr "পৃষ্ঠার অনুমতি" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"পৃষ্ঠা যোগের অনুমতির জন্য সন্তান বা বংশধরের অ্যাক্সেসও প্রয়োজন, অন্যথায় " +"যোগ করা পৃষ্ঠা এর প্রস্তুতকারক পরিবর্তন করতে পারবেন না।" + +msgid "User (page)" +msgstr "ব্যবহারকারী (পৃষ্ঠা)" + +msgid "Users (page)" +msgstr "ব্যবহারকারীগণ (পৃষ্ঠা)" + +msgid "User group (page)" +msgstr "ব্যবহারকারী গ্রুপ (পৃষ্ঠা)" + +msgid "User groups (page)" +msgstr "ব্যবহারকারী গ্রুপসমূহ (পৃষ্ঠা)" + +msgid "slot" +msgstr "স্লট" + +msgid "width" +msgstr "প্রস্থ" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "<খালি>" + +msgid "The language for the admin interface and toolbar" +msgstr "অ্যাডমিন ইন্টারফেস এবং টুলবারের জন্য ভাষা" + +msgid "user setting" +msgstr "ব্যবহারকারী সেটিং" + +msgid "user settings" +msgstr "ব্যবহারকারী সেটিংস" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "উন্নত অপশনসমূহ" + +msgid "Generic" +msgstr "জেনেরিক" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" সফলভাবে পরিবর্তন করা হয়েছে।" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "এই প্লাগ-ইনের জন্য আর কোনো সেটিংস নেই। অনুগ্রহ করে সংরক্ষণ চাপুন।" + +msgid "Moved" +msgstr "সরানো হয়েছে" + +msgid "Changed" +msgstr "পরিবর্তন করা হয়েছে" + +msgid "Deleted" +msgstr "মুছে ফেলা হয়েছে" + +msgid "Added Page Translation" +msgstr "পৃষ্ঠার অনুবাদ যুক্ত করা হয়েছে" + +msgid "Changed Page Translation" +msgstr "পৃষ্ঠার অনুবাদ পরিবর্তন করা হয়েছে" + +msgid "Deleted Page Translation" +msgstr "পৃষ্ঠার অনুবাদ মুছে ফেলা হয়েছে" + +msgid "Added Plugin" +msgstr "প্লাগ-ইন যুক্ত করা হয়েছে" + +msgid "Changed Plugin" +msgstr "প্লাগ-ইন পরিবর্তন করা হয়েছে" + +msgid "Moved Plugin" +msgstr "প্লাগ-ইন সরানো হয়েছে" + +msgid "Deleted Plugin" +msgstr "প্লাগ-ইন মুছে ফেলা হয়েছে" + +msgid "Cut Plugin" +msgstr "প্লাগ-ইন কাট করা হয়েছে" + +msgid "Paste Plugin" +msgstr "প্লাগ-ইন পেস্ট করা হয়েছে" + +msgid "Paste to Placeholder" +msgstr "প্লেসহোল্ডারে পেস্ট করুন" + +msgid "Added plugins to placeholder from clipboard" +msgstr "ক্লিপবোর্ড থেকে প্লেসহোল্ডারে প্লাগ-ইন যুক্ত করা হয়েছে" + +msgid "Cleared Placeholder" +msgstr "প্লেসহোল্ডার খালি করা হয়েছে" + +msgid "Save" +msgstr "সংরক্ষণ করুন" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "কিছু ঘর পরিবর্তন করা যাবে না কারণ সেগুলো কেবল-পঠনযোগ্য কন্টেন্ট।" + +#, python-format +msgid "Log in to administration here." +msgstr "প্রশাসনে লগইন করতে এখানে ক্লিক করুন।" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "লগইন ইউআরএল: %(login_url)s" + +msgid "Username:" +msgstr "ব্যবহারকারীর নাম:" + +msgid "Password:" +msgstr "পাসওয়ার্ড:" + +msgid "Add a page" +msgstr "একটি পৃষ্ঠা যুক্ত করুন" + +msgid "Change a page" +msgstr "একটি পৃষ্ঠা পরিবর্তন করুন" + +msgid "Home" +msgstr "হোম" + +msgid "View on site" +msgstr "সাইটে দেখুন" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "অনুগ্রহ করে নিচের ত্রুটিটি সংশোধন করুন।" +msgstr[1] "অনুগ্রহ করে নিচের ত্রুটিগুলো সংশোধন করুন।" + +msgid "All permissions" +msgstr "সকল অনুমতি" + +msgid "Loading..." +msgstr "লোড হচ্ছে..." + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "হ্যাঁ, আমি নিশ্চিত" + +msgid "No, take me back" +msgstr "না, আমাকে ফিরিয়ে নিন" + +msgid "Summary" +msgstr "সারসংক্ষেপ" + +msgid "User" +msgstr "ব্যবহারকারী" + +msgid "Group" +msgstr "গ্রুপ" + +msgid "Can edit" +msgstr "সম্পাদনা করতে পারে" + +msgid "Can add" +msgstr "যুক্ত করতে পারে" + +msgid "Can delete" +msgstr "মুছতে পারে" + +msgid "Can publish" +msgstr "প্রকাশ করতে পারে" + +msgid "Can change permissions" +msgstr "অনুমতি পরিবর্তন করতে পারে" + +msgid "Can move" +msgstr "সরাতে পারে" + +msgid "Can view" +msgstr "দেখতে পারে" + +msgid "(global)" +msgstr "(গ্লোবাল)" + +msgid "(current)" +msgstr "(বর্তমান)" + +msgid "Page doesn't inherit any permissions." +msgstr "পৃষ্ঠাটি কোনো অনুমতি উত্তরাধিকার সূত্রে গ্রহণ করে না।" + +msgid "Edit model" +msgstr "মডেল সম্পাদনা করুন" + +msgid "Save as new" +msgstr "নতুন হিসেবে সংরক্ষণ করুন" + +msgid "Save and add another" +msgstr "সংরক্ষণ করুন এবং আরেকটি যুক্ত করুন" + +msgid "Copy" +msgstr "কপি করুন" + +msgid "Cut" +msgstr "কাট করুন" + +msgid "Paste" +msgstr "পেস্ট করুন" + +msgid "Set as home" +msgstr "হোম হিসেবে নির্ধারণ করুন" + +msgid "is restricted" +msgstr "সীমাবদ্ধ" + +msgid "last change by" +msgstr "সর্বশেষ পরিবর্তন করেছেন" + +msgid "last change on" +msgstr "সর্বশেষ পরিবর্তন হয়েছে" + +msgid "meta" +msgstr "মেটা" + +msgid "List of pages" +msgstr "পৃষ্ঠাসমূহের তালিকা" + +msgid "Search" +msgstr "অনুসন্ধান" + +msgid "Page Tree" +msgstr "পৃষ্ঠা ট্রি" + +msgid "Reset filter" +msgstr "ফিল্টার রিসেট করুন" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" মুছে ফেলা %(name)s পুনরুদ্ধার করুন\n" +" " + +msgid "Main Navigation" +msgstr "প্রধান নেভিগেশন" + +msgid "Options" +msgstr "অপশনসমূহ" + +msgid "Successfully moved" +msgstr "সফলভাবে সরানো হয়েছে" + +msgid "Changes within the tree might require a refresh." +msgstr "ট্রির মধ্যে করা পরিবর্তনের জন্য রিফ্রেশ প্রয়োজন হতে পারে।" + +msgid "Error:" +msgstr "ত্রুটি:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"এই পৃষ্ঠাটি কপি করা যাবে না কারণ এতে একটি এ্যাপ্লিকেশন সংযুক্ত আছে। apphook " +"পরিচালনা করতে পৃষ্ঠার উন্নত সেটিংস দেখুন।" + +msgid "Are you sure you want to § this page?" +msgstr "আপনি কি নিশ্চিত যে আপনি এই পৃষ্ঠাটি § করতে চান?" + +msgid "Reload" +msgstr "পুনরায় লোড করুন" + +msgid "New node" +msgstr "নতুন নোড" + +msgid "nodes" +msgstr "নোডসমূহ" + +msgid "View" +msgstr "দেখুন" + +msgid "Menu" +msgstr "মেনু" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" এখনও কোনো %(object)s নেই।\n" +"
\n" +" এখন %(object)s যুক্ত করুন।\n" +" " + +msgid "Copy options" +msgstr "কপি অপশনসমূহ" + +msgid "Choose copy options" +msgstr "কপি অপশন নির্বাচন করুন" + +msgid "Close" +msgstr "বন্ধ করুন" + +msgid "Legend" +msgstr "লেজেন্ড" + +msgid "In menu" +msgstr "মেনুতে" + +msgid "Not in menu" +msgstr "মেনুতে নেই" + +msgid "View page" +msgstr "পৃষ্ঠা দেখুন" + +msgid "Softroot" +msgstr "সফটরুট" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "এ্যাপ্লিকেশন: %(apphook)s" + +msgid "in menu" +msgstr "মেনুতে" + +msgid "not in menu" +msgstr "মেনুতে নেই" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "পৃষ্ঠার সেটিংস (উন্নত সেটিংসের জন্য SHIFT ক্লিক করুন)" + +msgid "Permissions" +msgstr "অনুমতিসমূহ" + +msgid "inherited" +msgstr "উত্তরাধিকারসূত্রে প্রাপ্ত" + +msgid "This page has no preview!" +msgstr "এই পৃষ্ঠার কোনো প্রিভিউ নেই!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "সম্ভবত সংযুক্ত apphook তার রুটের জন্য কোনো কন্টেন্ট প্রদান করে না।" + +msgid "It is being redirected to:" +msgstr "এটি পুনঃনির্দেশিত হচ্ছে:" + +msgid "Clipboard" +msgstr "ক্লিপবোর্ড" + +msgid "Add plugin" +msgstr "প্লাগ-ইন যুক্ত করুন" + +msgid "Copy all" +msgstr "সব কপি করুন" + +msgid "Copy from" +msgstr "যেখান থেকে কপি করবেন" + +msgid "Empty all" +msgstr "সব খালি করুন" + +msgid "Filter plugins..." +msgstr "প্লাগ-ইন ফিল্টার করুন..." + +msgid "Expand all" +msgstr "সব প্রসারিত করুন" + +msgid "Collapse all" +msgstr "সব সংকুচিত করুন" + +msgid "You cannot add plugins to this plugin." +msgstr "আপনি এই প্লাগ-ইনে প্লাগ-ইন যুক্ত করতে পারবেন না।" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "এই প্লাগ-ইনটি এর প্যারেন্টের বাইরে সরানো বা সম্পাদনা করা যাবে না" + +msgid "Clipboard is empty." +msgstr "ক্লিপবোর্ড খালি।" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" +"এই প্লাগ-ইনটি এই ধরনের প্লাগ-ইনকে নেস্টেড প্লাগ-ইন হিসেবে অনুমতি দেয় না।" + +msgid "This plugin cannot have nested plugins." +msgstr "এই প্লাগ-ইনে নেস্টেড প্লাগ-ইন থাকতে পারে না।" + +msgid "Highlight" +msgstr "হাইলাইট" + +msgid "Available plugins" +msgstr "উপলব্ধ প্লাগ-ইনসমূহ" + +msgid "Toggle structure" +msgstr "স্ট্রাকচার টগল করুন" + +msgid "Login" +msgstr "লগইন" + +msgid "Add plugin to" +msgstr "প্লাগ-ইন যুক্ত করুন এতে" + +msgid "More" +msgstr "আরও" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"django CMS %(cms_version)s, Django %(django_version)s, Python " +"%(python_version)s ব্যবহার করে ডেভেলপমেন্ট সংস্করণ" + +msgid "Cancel" +msgstr "বাতিল করুন" + +msgid "The following error occurred:" +msgstr "নিম্নলিখিত ত্রুটি ঘটেছে:" + +msgid "Action successful." +msgstr "অ্যাকশন সফল।" + +msgid "Are you sure you want to delete this plugin?" +msgstr "আপনি নিশ্চিত যে, আপনি প্লাগ-ইনটি মুছতে চান?" + +msgid "Are you sure you want to publish this page?" +msgstr "আপনি কি নিশ্চিত যে আপনি এই পৃষ্ঠাটি প্রকাশ করতে চান?" + +msgid "Plugin will be added here" +msgstr "এখানে প্লাগ-ইন যুক্ত করা হবে" + +msgid "You have unsaved changes." +msgstr "আপনার অসংরক্ষিত পরিবর্তন রয়েছে।" + +msgid "Loading" +msgstr "লোড হচ্ছে" + +msgid "Are you sure you want to abandon these changes?" +msgstr "আপনি কি নিশ্চিত যে আপনি এই পরিবর্তনগুলো পরিত্যাগ করতে চান?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"ফর্মটি লোড করা যায়নি। অনুগ্রহ করে নিশ্চিত করুন যে সার্ভারটি সঠিকভাবে চলছে।" + +msgid "Most used" +msgstr "সর্বাধিক ব্যবহৃত" + +msgid "Shortcuts" +msgstr "শর্টকাটসমূহ" + +msgid "The page was changed in the meantime, reloading..." +msgstr "ইতিমধ্যে পৃষ্ঠাটি পরিবর্তিত হয়েছে, পুনরায় লোড হচ্ছে..." + +msgid "CMS-wide Shortcuts" +msgstr "CMS-ব্যাপী শর্টকাটসমূহ" + +msgid "Bring up this help dialog" +msgstr "এই সহায়তা ডায়ালগটি দেখান" + +msgid "Close/cancel" +msgstr "বন্ধ করুন/বাতিল করুন" + +msgid "Toggle structure mode" +msgstr "স্ট্রাকচার মোড টগল করুন" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "স্ট্রাকচার মোড টগল করুন এবং হোভার করা প্লাগ-ইন হাইলাইট করুন" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "টুলবারে ফোকাস করুন" + +msgid "Focus on placeholders" +msgstr "প্লেসহোল্ডারে ফোকাস করুন" + +msgid "Move to next/previous element" +msgstr "পরবর্তী/পূর্ববর্তী এলিমেন্টে যান" + +msgid "Focus on plugins of placeholder" +msgstr "প্লেসহোল্ডারের প্লাগ-ইনে ফোকাস করুন" + +msgid "Edit plugin" +msgstr "প্লাগ-ইন সম্পাদনা করুন" + +msgid "Open actions menu" +msgstr "অ্যাকশন মেনু খুলুন" + +msgid "Expand/collapse" +msgstr "প্রসারিত/সংকুচিত করুন" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"লগইন ব্যর্থ হয়েছে। অনুগ্রহ করে আপনার শংসাপত্র যাচাই করে " +"আবার চেষ্টা করুন।" + +msgid "Double-click to edit" +msgstr "সম্পাদনা করতে ডাবল-ক্লিক করুন" + +msgid "Tap to edit" +msgstr "সম্পাদনা করতে ট্যাপ করুন" + +msgid "Click to go back" +msgstr "পেছনে যেতে ক্লিক করুন" + +msgid "Click to go forward" +msgstr "সামনে যেতে ক্লিক করুন" + +msgid "Minimize" +msgstr "মিনিমাইজ করুন" + +msgid "Maximize" +msgstr "ম্যাক্সিমাইজ করুন" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "এখানে একটি প্লাগ-ইন ছেড়ে দিন" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "সংস্করণ %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "চলুন একসাথে দুর্দান্ত কিছু তৈরি করি!" + +msgid "Please log in" +msgstr "অনুগ্রহ করে লগইন করুন" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" আপনার প্রথম পৃষ্ঠা যুক্ত করুন\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

তহবিল সহায়তা করুন

\n" +"

\n" +" আপনার তহবিল সরাসরি পণ্যের উপকার করে, মূলত\n" +" django CMS Fellowship Program-এর মাধ্যমে!\n" +"

\n" +"

\n" +" আপনার নিজের বা আপনার প্রতিষ্ঠানের দান করার একটি দ্রুত উপায় হলো\n" +" Github Sponsors।\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

আমাদের সাথে যোগ দিন

\n" +"

\n" +" django CMS Association একটি অলাভজনক প্রতিষ্ঠান যা django CMS-এর উন্নয়নে তহবিল প্রদান করে এবং পরিচালনা করে।\n" +"

\n" +"

\n" +" আপনি একজন ব্যক্তি হিসেবে অথবা একটি\n" +" প্রতিষ্ঠান হিসেবে যোগ দিতে পারেন।\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

অবদান রাখুন

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "ইনস্টলেশন নোটসমূহ" + +msgid "Support" +msgstr "সহায়তা" + +msgid "Documentation" +msgstr "ডকুমেন্টেশন" + +msgid "User guide" +msgstr "ব্যবহারকারী গাইড" + +msgid "Give back" +msgstr "ফিরিয়ে দিন" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

যদি আপনি উপরে django CMS লোগো না দেখেন, তাহলে নিশ্চিত করুন\n" +" যে আপনি static/cms ফোল্ডারটি আপনার\n" +" স্ট্যাটিক ফাইলের সাথে লিঙ্ক করেছেন।

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

আপনি এই বার্তাটি দেখছেন কারণ আপনার\n" +" django সেটিংস ফাইলে DEBUG = True আছে এবং\n" +" আপনি এখনও কোনো পৃষ্ঠা যুক্ত করেননি।\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "django CMS-এ স্বাগতম" + +msgid "Add Another" +msgstr "আরেকটি যুক্ত করুন" + +msgid "Back" +msgstr "পেছনে" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "পরবর্তী ধাপে এগোতে অনুগ্রহ করে নিচ থেকে একটি অপশন নির্বাচন করুন।" + +msgid "Next" +msgstr "পরবর্তী" + +msgid "Select what you would like to create" +msgstr "আপনি কী তৈরি করতে চান তা নির্বাচন করুন" + +msgid "Unknown" +msgstr "অজানা" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "%(domain)s-এ পৃষ্ঠা পাওয়া যায়নি" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"একটি template tag `%(page_lookup)s\n" +"` লুকআপ আর্গুমেন্ট সহ পৃষ্ঠাটি খুঁজে পায়নি। অনুরোধের ইউআরএল ছিল: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "দুটি কলাম" + +msgid "Three columns" +msgstr "তিনটি কলাম" + +msgid "username" +msgstr "ব্যবহারকারীর নাম" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "আবশ্যক। ৩০০ অক্ষর বা তার কম। অক্ষর, সংখ্যা এবং @/./+/-/_ অক্ষরসমূহ" + +msgid "Enter a valid username." +msgstr "একটি বৈধ ব্যবহারকারীর নাম লিখুন।" + +msgid "email address" +msgstr "ইমেইল ঠিকানা" + +msgid "staff status" +msgstr "স্টাফ স্ট্যাটাস" + +msgid "Designates whether the user can log into this admin site." +msgstr "ব্যবহারকারী এই অ্যাডমিন সাইটে লগইন করতে পারবেন কিনা তা নির্দেশ করে।" + +msgid "active" +msgstr "সক্রিয়" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"এই ব্যবহারকারীকে সক্রিয় হিসেবে গণ্য করা হবে কিনা তা নির্দেশ করে। অ্যাকাউন্ট" +" মুছে ফেলার পরিবর্তে এটি অনির্বাচিত করুন।" + +msgid "users" +msgstr "ব্যবহারকারীগণ" + +msgid "Title Extension" +msgstr "শিরোনাম এক্সটেনশন" + +msgid "Page Extension" +msgstr "পৃষ্ঠা এক্সটেনশন" + +msgid "object ID" +msgstr "অবজেক্ট আইডি" + +msgid "Example1 App" +msgstr "Example1 অ্যাপ" + +msgid "MultilingualExample1 App" +msgstr "MultilingualExample1 অ্যাপ" + +msgid "Example1" +msgstr "Example1" + +msgid "Examples" +msgstr "উদাহরণসমূহ" + +msgid "Extra Context" +msgstr "অতিরিক্ত কনটেক্সট" + +msgid "Articles" +msgstr "নিবন্ধসমূহ" + +msgid "Sample App" +msgstr "নমুনা অ্যাপ" + +msgid "Sample App with config" +msgstr "কনফিগ সহ নমুনা অ্যাপ" + +msgid "Sample App with excluded permissions" +msgstr "বাদ দেওয়া অনুমতি সহ নমুনা অ্যাপ" + +msgid "Sample App 2" +msgstr "নমুনা অ্যাপ ২" + +msgid "Sample App 3" +msgstr "নমুনা অ্যাপ ৩" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "নেমস্পেসড অ্যাপ" + +msgid "Parent app" +msgstr "প্যারেন্ট অ্যাপ" + +msgid "Child app" +msgstr "চাইল্ড অ্যাপ" + +msgid "Variable urls-menus App" +msgstr "Variable urls-menus অ্যাপ" + +msgid "sample root page" +msgstr "নমুনা রুট পৃষ্ঠা" + +msgid "sample settings page" +msgstr "নমুনা সেটিংস পৃষ্ঠা" + +msgid "sample account page" +msgstr "নমুনা অ্যাকাউন্ট পৃষ্ঠা" + +msgid "sample my profile page" +msgstr "নমুনা আমার প্রোফাইল পৃষ্ঠা" + +msgid "Static Menu" +msgstr "স্ট্যাটিক মেনু" + +msgid "Static Menu2" +msgstr "স্ট্যাটিক মেনু২" + +msgid "Static Menu3" +msgstr "স্ট্যাটিক মেনু৩" + +msgid "Static Menu4" +msgstr "স্ট্যাটিক মেনু৪" + +msgid "Category" +msgstr "ক্যাটাগরি" + +msgid "Categories" +msgstr "ক্যাটাগরিসমূহ" + +msgid "Add Category" +msgstr "ক্যাটাগরি যুক্ত করুন" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "ক্যাটাগরি পরিবর্তন করুন" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "আজ ওয়েব সাইটের সাথে কিছু মূল্যবান সময় কাটানোর জন্য ধন্যবাদ।" + +msgid "Inherit the template of the nearest ancestor" +msgstr "নিকটতম পূর্বপুরুষের টেমপ্লেট উত্তরাধিকার সূত্রে গ্রহণ করুন" + +msgid "UserSettings" +msgstr "UserSettings" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "\"%(placeholder_label)s\" প্লেসহোল্ডারে প্লাগ-ইন যুক্ত করুন" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "%(plugin_name)s-এ প্লাগ-ইন যুক্ত করুন" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "CMS - আপনার ব্যবহারকারী অ্যাকাউন্ট তৈরি করা হয়েছে।" + +msgid "CMS - your user account was changed." +msgstr "CMS - আপনার ব্যবহারকারী অ্যাকাউন্ট পরিবর্তন করা হয়েছে।" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "এই প্লেসহোল্ডারে ইতিমধ্যেই সর্বোচ্চ সংখ্যক প্লাগ-ইন (%s) রয়েছে।" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"এই প্লেসহোল্ডারে ইতিমধ্যেই অনুমোদিত %(plugin_name)s প্লাগ-ইনের সর্বোচ্চ " +"সংখ্যা (%(limit)s) রয়েছে।" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "নির্দিষ্ট CMS_REQUEST_IP_RESOLVER মডিউল খুঁজে পাওয়া যায়নি: \"{0}\"।" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"\"{1}\" মডিউলে নির্দিষ্ট CMS_REQUEST_IP_RESOLVER ফাংশন খুঁজে পাওয়া যায়নি: " +"\"{0}\"।" + +#, python-format +msgid "Create a new %s instance." +msgstr "একটি নতুন %s ইনস্ট্যান্স তৈরি করুন।" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "মডেলের জন্য ইতিমধ্যেই একটি উইজার্ড নিবন্ধিত হয়েছে: %s" diff --git a/cms/locale/bn/LC_MESSAGES/djangojs.po b/cms/locale/bn/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..b16d073e --- /dev/null +++ b/cms/locale/bn/LC_MESSAGES/djangojs.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Aniruddha Adhikary , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Aniruddha Adhikary , 2013\n" +"Language-Team: Bengali (http://app.transifex.com/divio/django-cms/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" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "আপনি কি নিশ্চিত যে, আপনি পৃষ্ঠাটি সংরক্ষণ না করেই ট্যাব পরিবর্তন করতে চান?" diff --git a/cms/locale/ca/LC_MESSAGES/django.po b/cms/locale/ca/LC_MESSAGES/django.po new file mode 100644 index 00000000..415369f4 --- /dev/null +++ b/cms/locale/ca/LC_MESSAGES/django.po @@ -0,0 +1,1764 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Roger Pons , 2025 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Catalan (https://app.transifex.com/divio/teams/58664/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" + +msgid "All" +msgstr "Tots" + +msgid "Copy permissions" +msgstr "Copiar permisos" + +msgid "Slug" +msgstr "Slug" + +msgid "The part of the title that is used in the URL" +msgstr "La part del títol que s'utilitza en la direcció URL" + +msgid "Page type" +msgstr "Tipus de Pàgina" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Tipus de Pàgina" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Sobreescriu URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Manté aquest camp buit si s'ha d'usar la ruta per defecte" + +msgid "Start typing..." +msgstr "Comenceu a escriure..." + +msgid "menu visibility" +msgstr "visibilitat del menú" + +msgid "limit when this page is visible in the menu" +msgstr "limitar quan aquesta pàgina és visible al menú" + +msgid "X Frame Options" +msgstr "Opcions d'X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Si aquesta pàgina es pot incrustar en altres pàgines o llocs web." + +msgid "URL options" +msgstr "Opcions d'URL" + +msgid "Menu options" +msgstr "Opcions del menú" + +msgid "Headers" +msgstr "Capçaleres" + +msgid "Application" +msgstr "Aplicació" + +msgid "Hook application to this page." +msgstr "Enllaça l'aplicació a aquesta pàgina." + +msgid "Application configurations" +msgstr "Configuracions d'aplicació" + +msgid "A page with this reverse URL id exists already." +msgstr "Una pàgina amb una URL que correspon amb aquest id ja existeix." + +msgid "Invalid application config value" +msgstr "Valor de configuració d'aplicació invàlid" + +msgid "An application instance using this configuration already exists." +msgstr "Ja existeix una instància d'aplicació amb aquesta configuració." + +msgid "An application instance with this name already exists." +msgstr "Ja existeix una instància d'aplicació amb aquest nom." + +msgid "You can't move the home page inside another page" +msgstr "No es pot moure la pàgina d'inici dins d'una altra pàgina" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"No podeu tenir dues pàgines amb el mateix slug al mateix nivell de pàgina. " +"Modifiqueu el slug d'una de les pàgines abans de tornar a intentar moure-la." + +msgid "Yes" +msgstr "Sí" + +msgid "No" +msgstr "No" + +msgid "user" +msgstr "usuari" + +msgid "can_view" +msgstr "pot_veure" + +msgid "Add" +msgstr "Afegir" + +msgid "Change" +msgstr "Canviar" + +msgid "Delete" +msgstr "Esborrar" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Els usuaris no poden crear una pàgina sense permisos per modificar la pàgina" +" creada. Calen permisos de modificació." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Els usuaris no poden esborrar una pàgina sense permisos per modificar la " +"pàgina. Calen permisos de modificació." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Els usuaris no poden establir permisos de pàgina sense permisos per " +"modificar una pàgina. Calen permisos de modificació." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Els usuaris no poden esborrar permisos de pàgina sense permisos per " +"modificar una pàgina. Calen permisos de modificació." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Els usuaris no poden crear permisos de pàgina sense permisos per modificar " +"el permís creat. Calen permisos de modificació." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Els usuaris no poden esborrar permisos de pàgina sense permisos per " +"modificar permisos. Calen permisos de modificació." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Tipus de plugin '%s' invàlid" + +msgid "Language must be set to a supported language!" +msgstr "L'idioma ha de ser un dels idiomes suportats!" + +msgid "Parent plugin language must be same as language!" +msgstr "L'idioma del plugin ha de ser el mateix que el del plugin pare!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "El marcador del plugin pare ha de ser el mateix marcador!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "La posició del plugin ha de ser més gran que %(position)d" + +msgid "Translations" +msgstr "Traduccions" + +msgid "Advanced Settings" +msgstr "Configuració avançada" + +msgid "The page is not eligible to be home." +msgstr "La pàgina no es pot establir com a inici." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "L'objecte %(name)s amb la clau primària %(key)r no existeix." + +msgid "error" +msgstr "error" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Error! Sense permís per moure aquesta pàgina. Cal recarregar la pàgina" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Error! Sense permís per copiar aquesta pàgina." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Error! La pàgina que esteu enganxant no està traduïda a cap dels idiomes " +"configurats pel lloc de destinació." + +msgid "You do not have permission to edit this page" +msgstr "Sense permís per modificar aquesta pàgina" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(per canviar-ho, primer despubliqueu la versió actualment publicada " +"d'aquesta pàgina)" + +msgid "Add Translation" +msgstr "Afegir Traducció" + +msgid "Add Page Copy" +msgstr "Afegir Còpia de Pàgina" + +msgid "New sub page" +msgstr "Nova subpàgina" + +msgid "New page" +msgstr "Nova pàgina" + +msgid "Database error" +msgstr "Error de la base de dades" + +msgid "Template not valid" +msgstr "Plantilla no vàlida" + +msgid "Placeholder selection not valid" +msgstr "Selecció de marcador de posició no vàlida" + +msgid "The template was successfully changed" +msgstr "La plantilla ha estat modificada amb èxit" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "El marcador de posició '%s' no existeix a l'idioma de destinació" + +msgid "You do not have permission to copy these plugins." +msgstr "Sense premís per copiar aquests plugins." + +msgid "You do not have permission to delete this page" +msgstr "Sense permís per esborrar aquesta pàgina" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "S'han eliminat el títol i els connectors en idioma %(language)s" + +msgid "Public content" +msgstr "Contingut públic" + +msgid "Empty" +msgstr "Buit" + +msgid "Create Content" +msgstr "Crear Contingut" + +msgid "View restriction" +msgstr "Restricció de vista" + +msgid "View restrictions" +msgstr "Restriccions de vista" + +#, python-format +msgid "Field %s not found" +msgstr "No s'ha trobat el camp %s" + +msgid "You do not have permission to edit this item" +msgstr "Sense permís per editar aquest element" + +msgid "You do not have permission to add a plugin" +msgstr "Sense permís per afegir un plugin." + +msgid "You do not have permission to copy this placeholder." +msgstr "Sense permís per copiar aquest marcador de posició." + +msgid "Plugin not found" +msgstr "No s'ha trobat el plugin" + +msgid "You do not have permission to edit this plugin" +msgstr "Sense permís per modificar aquest plugin" + +msgid "You have no permission to paste this plugin" +msgstr "Sense permís per enganxar aquest plugin" + +msgid "You have no permission to paste this placeholder" +msgstr "Sense permís per enganxar aquest marcador de posició" + +msgid "You have no permission to move this plugin" +msgstr "Sense permís per moure aquest plugin" + +msgid "You have no permission to cut this plugin" +msgstr "Sense permís per tallar aquest plugin" + +msgid "You do not have permission to delete this plugin" +msgstr "Sense permís per esborrar aquest plugin" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "El plugin %(name)s \"%(obj)s\" ha estat esborrat." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "No es pot esborrar %(name)s" + +msgid "Are you sure?" +msgstr "Esteu segur?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Sense permís per buidar aquest marcador de posició" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "S'ha buidat el marcador de posició \"%(obj)s\"." + +msgid "placeholder" +msgstr "marcador de posició" + +msgid "Page permissions" +msgstr "Permisos de pàgina" + +msgid "User & Group permissions" +msgstr "Permisos d'Usuaris i Grups" + +msgid "Page permissions management" +msgstr "Gestió de permisos de la Pàgina" + +msgid "Actions" +msgstr "Accions" + +msgid "Empty content" +msgstr "Contingut buit" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Propietats de %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Afegir nou %(object_name)s" + +msgid "Add content" +msgstr "Afegir contingut" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"El contingut de l'idioma actual ha estat modificat. Feu clic a \"Cancel·la\"" +" per tornar al formulari i desar els canvis. Feu clic a \"D'acord\" per " +"descartar els canvis." + +#, python-format +msgid "Add %(language)s content" +msgstr "Afegir contingut en %(language)s" + +msgid "Preview" +msgstr "Visualització prèvia" + +msgid "Settings" +msgstr "Configuració" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Idioma %(value)s invàlid. Aquest formulari no es pot processar. Proveu de " +"canviar d'idioma." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "No s'ha trobat l'apphook \"%r\" registrat" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Marcador de posició" + +msgid "Create" +msgstr "Crear" + +msgid "Edit" +msgstr "Modificar" + +msgid "Structure" +msgstr "Estructura" + +msgid "Content" +msgstr "Contingut" + +msgid "Sites" +msgstr "Llocs" + +msgid "Admin Sites" +msgstr "Administrar Llocs" + +msgid "Administration" +msgstr "Administració" + +msgid "User settings" +msgstr "Configuració de l'usuari" + +msgid "Clipboard..." +msgstr "Portapapers..." + +msgid "Clear clipboard" +msgstr "Netejar portapapers" + +msgid "Disable toolbar" +msgstr "Desactivar barra d'eines" + +msgid "Shortcuts..." +msgstr "Dreceres..." + +msgid "Users" +msgstr "Usuaris" + +#, python-format +msgid "Logout %s" +msgstr "Desconnectar %s" + +msgid "Logout" +msgstr "Sortir" + +msgid "Language" +msgstr "Idioma" + +msgid "Delete Translation" +msgstr "Esborrar Traducció" + +msgid "Copy all plugins" +msgstr "Copiar tots els plugins" + +#, python-format +msgid "from %s" +msgstr "de %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Segur que voleu copiar tots els plugins de %s?" + +msgid "Pages" +msgstr "Pàgines" + +msgid "Page" +msgstr "Pàgina" + +msgid "Create Page" +msgstr "Crear Pàgina" + +msgid "New Page" +msgstr "Nova Pàgina" + +msgid "New Sub Page" +msgstr "Nova Subpàgina" + +msgid "Duplicate this Page" +msgstr "Duplicar aquesta Pàgina" + +msgid "Page settings" +msgstr "Configuració de la pàgina" + +msgid "Advanced settings" +msgstr "Configuració avançada" + +msgid "Templates" +msgstr "Plantilla" + +msgid "Placeholders" +msgstr "Marcadors de posició" + +msgid "Hide in navigation" +msgstr "Amagar a la navegació" + +msgid "Display in navigation" +msgstr "Mostrar a la navegació" + +msgid "Delete page" +msgstr "Eliminar pàgina" + +msgid "Create a new page next to the current page." +msgstr "Crear una nova pàgina a continuació de l'actual." + +msgid "Create a page below the current page." +msgstr "Crear una pàgina per sota de l'actual." + +msgid "Select a valid site" +msgstr "Seleccionar un lloc vàlid" + +msgid "Select a valid page" +msgstr "Seleccionar una pàgina vàlida" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"La pàgina %(conflict_page)s té la mateixa url '%(url)s' que la pàgina actual" +" \"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"La pàgina %(conflict_page)s té la mateixa url '%(url)s' que la pàgina " +"actual." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Opcional. Si s'informa, s'afegirà automàticament dins d'un nou plugin de " +"text." + +msgid "Provide a title for the new page." +msgstr "Introdueix un títol per la nova pàgina." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "Deixar en blanc per slug automàtic, o sobreescriure si s'escau." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "No es pot crear el slug automàticament. Indiqueu-ne un manualment." + +msgid "Please provide a valid slug." +msgstr "Indiqueu un slug vàlid." + +msgid "You don't have the permissions required to add a page." +msgstr "No teniu els permisos necessaris per afegir una pàgina." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "posició" + +msgid "language" +msgstr "idioma" + +msgid "plugin_name" +msgstr "nom_de_plugin" + +msgid "creation date" +msgstr "cata de creació" + +msgid "can edit" +msgstr "pot editar" + +msgid "can add" +msgstr "pot afegir" + +msgid "can delete" +msgstr "pot eliminar" + +msgid "can change advanced settings" +msgstr "Pot canviar la configuració avançada" + +msgid "can publish" +msgstr "pot publicar" + +msgid "can change permissions" +msgstr "pot canviar els permisos" + +msgid "can move" +msgstr "pot moure" + +msgid "view restricted" +msgstr "vista restringida" + +msgid "can recover pages" +msgstr "pot recuperar pàgines" + +msgid "group" +msgstr "grup" + +msgid "sites" +msgstr "llocs" + +msgid "created by" +msgstr "creat per" + +msgid "changed by" +msgstr "modificat per" + +msgid "publication date" +msgstr "data de publicació" + +msgid "publication end date" +msgstr "data final de publicació" + +msgid "in navigation" +msgstr "en la navegació" + +msgid "soft root" +msgstr "arrel tova" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "menú adjunt" + +msgid "template" +msgstr "plantilla" + +msgid "login required" +msgstr "necessita identificació" + +msgid "application" +msgstr "aplicació" + +msgid "application instance name" +msgstr "nom d'instància d'aplicació" + +msgid "site" +msgstr "lloc" + +msgid "Grant on" +msgstr "Autoritza a" + +msgid "page" +msgstr "pàgina" + +msgid "no limit set" +msgstr "sense límit establert" + +msgid "for logged in users only" +msgstr "momés per usuaris identificats" + +msgid "for anonymous users only" +msgstr "només per usuaris anònims" + +msgid "Inherit from parent page" +msgstr "Heretar de pàgina pare" + +msgid "Deny" +msgstr "Denegar" + +msgid "Only this website" +msgstr "Només aquest lloc web" + +msgid "Allow" +msgstr "Permetre" + +msgid "title" +msgstr "títol" + +msgid "The default title" +msgstr "El títol per defecte" + +msgid "Page Title" +msgstr "Títol de la pàgina" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Sobreescriviu el que es mostra a la part superior del navegador o en els " +"seus favorits" + +msgid "Menu Title" +msgstr "Títol del menú" + +msgid "Overwrite what is displayed in the menu" +msgstr "Sobreescriure el que es mostra al menú" + +msgid "Description meta tag" +msgstr "Meta tag de la descripció" + +msgid "A description of the page used by search engines." +msgstr "" +"Una llista de paraules clau separades per comes a vegades utilitzada pels " +"motors de cerca." + +msgid "redirect" +msgstr "redirecciona" + +msgid "Redirects to this URL." +msgstr "Redirecciona a aquesta URL." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Tots els avantpassats no es mostraran al menú de navegació" + +msgid "The template used to render the content." +msgstr "La plantilla utilitza per representar el contingut." + +msgid "page content" +msgstr "contingut de pàgina" + +msgid "page contents" +msgstr "continguts de pàgina" + +msgid "default" +msgstr "defecte" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Un identificador únic que és utilitzat amb el templatetag page_url per " +"enllaçar amb aquesta pàgina" + +msgid "Mark this page as a page type" +msgstr "Marcar aquesta pàgina com a tipus de pàgina" + +msgid "pages" +msgstr "pàgines" + +msgid "No available title" +msgstr "Cap títol disponible" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Camí" + +msgid "Current page" +msgstr "Pàgina actual" + +msgid "Page children (immediate)" +msgstr "Fill de la pàgina (immediats)" + +msgid "Page and children (immediate)" +msgstr "Pàgina i fills (immediats)" + +msgid "Page descendants" +msgstr "Descendents de la pàgina" + +msgid "Page and descendants" +msgstr "Pàgina i descendents" + +msgid "on page level" +msgstr "al nivell de pàgina" + +msgid "frontend view restriction" +msgstr "restricció a visualitzar la interfície d'usuari" + +msgid "Please select user or group." +msgstr "Seleccioneu un usuari o grup." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Els usuaris no poden publicar una pàgina sense permisos per modificar la " +"pàgina. Calen permisos de modificació." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Els usuaris no poden canviar la configuració avançada de la pàgina sense " +"permisos per modificar la pàgina. Calen permisos de modificació." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Els usuaris no poden canviar els permisos de la pàgina sense permisos per " +"modificar la pàgina. Calen permisos de modificació." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Els usuaris no poden moure una pàgina sense permisos per modificar la " +"pàgina. Calen permisos de modificació." + +msgid "can recover any deleted page" +msgstr "pot recuperar qualsevol pàgina eliminada" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"Si no hi ha res seleccionat, l'usuari tindrà permisos concedits a tot arreu." + +msgid "Page global permission" +msgstr "Permisos globals de pàgina" + +msgid "Pages global permissions" +msgstr "Permisos globals de pàgines" + +msgid "Page permission" +msgstr "Permís de pàgina" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"El permís Afegir pàgina requereix també l'accés als fills o descendents. En " +"cas contrari, la pàgina afegida no podrà ser modificada pel seu creador." + +msgid "User (page)" +msgstr "Usuari (pàgina)" + +msgid "Users (page)" +msgstr "Usuaris (pàgina)" + +msgid "User group (page)" +msgstr "Grup d'usuaris (pàgina)" + +msgid "User groups (page)" +msgstr "Grups d'usuaris (pàgina)" + +msgid "slot" +msgstr "espai" + +msgid "width" +msgstr "ample" + +msgid "Edit object" +msgstr "Editar objecte" + +msgid "This is an external placeholder" +msgstr "Aquest és un marcador de posició extern" + +msgid "plugin" +msgstr "plugin" + +msgid "plugins" +msgstr "plugins" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Idioma de la interfície d'administració i la barra d'eines" + +msgid "user setting" +msgstr "paràmetre d'usuari" + +msgid "user settings" +msgstr "configuració de l'usuari" + +msgid "by template" +msgstr "per plantilla" + +msgid "by code" +msgstr "per codi" + +msgid "static placeholder name" +msgstr "nom de marcador de posició estàtic" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Nom descriptiu per identificar aquest marcador de posició estàtic. No es " +"mostrarà als usuaris." + +msgid "placeholder code" +msgstr "codi de marcador de posició" + +msgid "To render the static placeholder in templates." +msgstr "Representar el marcador de posició estàtic a les plantilles" + +msgid "placeholder content" +msgstr "contingut del marcador de posició" + +msgid "creation_method" +msgstr "mètode de creació" + +msgid "static placeholder" +msgstr "marcador de posició estàtic" + +msgid "static placeholders" +msgstr "marcadors de posició estàtics" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" +"Ja existeix un marcador de posició estàtic amb el mateix lloc web i codi" + +msgid "Advanced options" +msgstr "Opcions avançades" + +msgid "Generic" +msgstr "Genèric" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "El %(name)s \"%(obj)s\" ha estat modificat." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "No hi ha més ajustos per aquest plugin. Ja el podeu desar." + +msgid "Moved" +msgstr "Mogut" + +msgid "Changed" +msgstr "Modificat" + +msgid "Deleted" +msgstr "Esborrat" + +msgid "Added Page Translation" +msgstr "Traducció de Pàgina Afegida" + +msgid "Changed Page Translation" +msgstr "Traducció de Pàgina Modificada" + +msgid "Deleted Page Translation" +msgstr "Traducció de Pàgina Esborrada" + +msgid "Added Plugin" +msgstr "Plugin Afegit" + +msgid "Changed Plugin" +msgstr "Plugin Modificat" + +msgid "Moved Plugin" +msgstr "Plugin Mogut" + +msgid "Deleted Plugin" +msgstr "Plugin Esborrat" + +msgid "Cut Plugin" +msgstr "Tallar Plugin" + +msgid "Paste Plugin" +msgstr "Enganxar Plugin" + +msgid "Paste to Placeholder" +msgstr "Enganxar al Marcador de posició" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Plugins afegits al marcador de posició des del porta-retalls" + +msgid "Cleared Placeholder" +msgstr "Marcador de posició Buidat" + +msgid "Save" +msgstr "Desa" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" +"Alguns camps no es poden modificar perquè són contingut de només lectura." + +#, python-format +msgid "Log in to administration here." +msgstr "Entra en l'administració aquí ." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Url d'autenticació: %(login_url)s" + +msgid "Username:" +msgstr "Nom d'usuari:" + +msgid "Password:" +msgstr "Contrasenya:" + +msgid "Add a page" +msgstr "Afegir una pàgina" + +msgid "Change a page" +msgstr "Canviar una pàgina" + +msgid "Home" +msgstr "Inici" + +msgid "View on site" +msgstr "Veure en el lloc" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Si us plau, corregiu l'error de sota." +msgstr[1] "Si us plau, corregiu els errors de sota." + +msgid "All permissions" +msgstr "Tots els permisos" + +msgid "Loading..." +msgstr "Carregant ..." + +msgid "Save and continue editing" +msgstr "Guardar i continuar editant" + +#, 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 "" +"Segur que voleu esborrar el %(object_name)s \"%(escaped_object)s\"? " +"S'esborraran tots els elements relacionats següents:" + +msgid "Yes, I’m sure" +msgstr "Sí, n’estic segur" + +msgid "No, take me back" +msgstr "No, torna enrere" + +msgid "Summary" +msgstr "Resum" + +msgid "User" +msgstr "Usuari" + +msgid "Group" +msgstr "Grup" + +msgid "Can edit" +msgstr "Pot editar" + +msgid "Can add" +msgstr "Pot afegir" + +msgid "Can delete" +msgstr "Pot eliminar" + +msgid "Can publish" +msgstr "Pot publicar" + +msgid "Can change permissions" +msgstr "Pot canviar permisos" + +msgid "Can move" +msgstr "Pot moure" + +msgid "Can view" +msgstr "Pot veure" + +msgid "(global)" +msgstr "(global)" + +msgid "(current)" +msgstr "(actual)" + +msgid "Page doesn't inherit any permissions." +msgstr "La pàgina no hereta cap permís." + +msgid "Edit model" +msgstr "Editar model" + +msgid "Save as new" +msgstr "Desa com a nou" + +msgid "Save and add another" +msgstr "Desar i afegir un altre" + +msgid "Copy" +msgstr "Còpiar" + +msgid "Cut" +msgstr "Tallar" + +msgid "Paste" +msgstr "Enganxar" + +msgid "Set as home" +msgstr "Establir com a inici" + +msgid "is restricted" +msgstr "està restringida" + +msgid "last change by" +msgstr "últim canvi per" + +msgid "last change on" +msgstr "darrer canvi el" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Llista de pàgines" + +msgid "Search" +msgstr "Cercar" + +msgid "Page Tree" +msgstr "Arbre de Pàgines" + +msgid "Reset filter" +msgstr "Reiniciar filtre" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Restaurar %(name)s esborrat\n" +" " + +msgid "Main Navigation" +msgstr "Navegació Principal" + +msgid "Options" +msgstr "Opcions" + +msgid "Successfully moved" +msgstr "Tralladat amb èxit" + +msgid "Changes within the tree might require a refresh." +msgstr "Els canvis dins l'arbre podrien requerir actualitzar la pàgina." + +msgid "Error:" +msgstr "Error:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Aquesta pàgina no pot ser copiada perquè té una aplicació lligada a ella. " +"Consulteu la Configuració Avançada de la pàgina per gestionar els apphooks." + +msgid "Are you sure you want to § this page?" +msgstr "Segur que voleu § aquesta pàgina?" + +msgid "Reload" +msgstr "Recarregar" + +msgid "New node" +msgstr "Nou node" + +msgid "nodes" +msgstr "nodes" + +msgid "View" +msgstr "Veure" + +msgid "Menu" +msgstr "Menú" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Encara no hi ha cap %(object)s.\n" +"
\n" +" Afegir %(object)s ara.\n" +" " + +msgid "Copy options" +msgstr "Opcions de còpia" + +msgid "Choose copy options" +msgstr "Tria les opcions de còpia" + +msgid "Close" +msgstr "Tancar" + +msgid "Legend" +msgstr "Llegenda" + +msgid "In menu" +msgstr "Al menú" + +msgid "Not in menu" +msgstr "No al menú" + +msgid "View page" +msgstr "Veure pàgina" + +msgid "Softroot" +msgstr "Arrel tova" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Aplicació: %(apphook)s" + +msgid "in menu" +msgstr "en menú" + +msgid "not in menu" +msgstr "no és al menú" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Configuració de pàgina (clic SHIFT per configuració avançada)" + +msgid "Permissions" +msgstr "Permisos de la pàgina" + +msgid "inherited" +msgstr "heretat" + +msgid "This page has no preview!" +msgstr "Aquesta pàgina no té previsualització!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Possiblement l'apphook adjunt no proporciona contingut per a la seva arrel." + +msgid "It is being redirected to:" +msgstr "S'està redirigint a:" + +msgid "Clipboard" +msgstr "Porta-retalls" + +msgid "Add plugin" +msgstr "Afegir plugin" + +msgid "Copy all" +msgstr "Copiar tot" + +msgid "Copy from" +msgstr "Copiar des de" + +msgid "Empty all" +msgstr "Buidar tot" + +msgid "Filter plugins..." +msgstr "Filtrar plugins..." + +msgid "Expand all" +msgstr "Expandir tot" + +msgid "Collapse all" +msgstr "Contreure tot" + +msgid "You cannot add plugins to this plugin." +msgstr "No podeu afegir plugins a aquest plugin." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "No es pot moure o editar aquest plugin fora del seu pare" + +msgid "Clipboard is empty." +msgstr "El portapapers és buit." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Aquest plugin no permet plugin d'aquest tipus com a plugins niats." + +msgid "This plugin cannot have nested plugins." +msgstr "Aquest plugin no pot tenir plugins niats." + +msgid "Highlight" +msgstr "Ressaltar" + +msgid "Available plugins" +msgstr "Plugins disponibles" + +msgid "Toggle structure" +msgstr "Commutar l'estructura" + +msgid "Login" +msgstr "Iniciar sessió" + +msgid "Add plugin to" +msgstr "Afegir plugin a" + +msgid "More" +msgstr "Més" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Versió de desenvolupament utilitzant django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Cancel·lar" + +msgid "The following error occurred:" +msgstr "S´ha produït el següent error:" + +msgid "Action successful." +msgstr "Acció realitzada amb èxit." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Segur que voleu eliminar aquest plugin?" + +msgid "Are you sure you want to publish this page?" +msgstr "Segur que voleu publicar aquesta pàgina?" + +msgid "Plugin will be added here" +msgstr "El plugin serà afegit aquí" + +msgid "You have unsaved changes." +msgstr "Teniu modificacions sense desar." + +msgid "Loading" +msgstr "Carregant" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Segur que voleu descartar aquestes modificacions?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"No s'ha pogut carregar el formulari. Comproveu que el servidor està " +"funcionant correctament." + +msgid "Most used" +msgstr "Més utilitzats" + +msgid "Shortcuts" +msgstr "Dreceres" + +msgid "The page was changed in the meantime, reloading..." +msgstr "La pàgina ha canviat mentrestant, recarregant..." + +msgid "CMS-wide Shortcuts" +msgstr "Dreceres de tot el CMS" + +msgid "Bring up this help dialog" +msgstr "Mostrar aquest diàleg d'ajuda" + +msgid "Close/cancel" +msgstr "Tancar/cancel·lar" + +msgid "Toggle structure mode" +msgstr "Commutar el mode d'estructura" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" +"Commutar el mode d'estructura i ressaltar el plugin sobre el qual es passa " +"el cursor" + +msgid "Open \"Create\" dialog" +msgstr "Obrir el diàleg \"Crear\"" + +msgid "Focus on Toolbar" +msgstr "Enfocar la barra d'eines" + +msgid "Focus on placeholders" +msgstr "Enfocar els marcadors de posició" + +msgid "Move to next/previous element" +msgstr "Anar a l'element següent/anterior" + +msgid "Focus on plugins of placeholder" +msgstr "Enfocar els plugins del marcador de posició" + +msgid "Edit plugin" +msgstr "Editar plugin" + +msgid "Open actions menu" +msgstr "Obrir el menú d'accions" + +msgid "Expand/collapse" +msgstr "Expandir/contraure" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"La identificació ha fallat. Comproveu les credencials i " +"torneu-ho a provar." + +msgid "Double-click to edit" +msgstr "Fer doble clic per editar" + +msgid "Tap to edit" +msgstr "Toc per editar" + +msgid "Click to go back" +msgstr "Fer clic per tornar enrera" + +msgid "Click to go forward" +msgstr "Fer clic per anar endavant" + +msgid "Minimize" +msgstr "Minimintzar" + +msgid "Maximize" +msgstr "Maximitzar" + +msgid "Placeholder not editable" +msgstr "Marcador de posició no editable" + +msgid "Drop a plugin here" +msgstr "Deixar anar un plugin aquí" + +msgid "Welcome to your new django CMS installation!" +msgstr "Benvingut a la vostra nova instal·lació de django CMS!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Versió %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Construïm alguna cosa genial junts!" + +msgid "Please log in" +msgstr "Identifica't" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Afegir la vostra primera pàgina\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Ajudeu amb el finançament

\n" +"

\n" +" El vostre finançament beneficia directament el producte, principalment a través del\n" +" Programa Fellowship de django CMS!\n" +"

\n" +"

\n" +" Una manera ràpida perquè vós o la vostra organització feu un donatiu és a\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Uniu-vos a nosaltres

\n" +"

\n" +" L'Associació django CMS és una organització sense ànim de lucre que finança i dirigeix el desenvolupament de\n" +" django CMS.\n" +"

\n" +"

\n" +" Podeu unir-vos tant com a individu com a\n" +" organització.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Contribuïu

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Notes de la instal·lació" + +msgid "Support" +msgstr "Suport" + +msgid "Documentation" +msgstr "Documentació" + +msgid "User guide" +msgstr "Guia d'usuari" + +msgid "Give back" +msgstr "Tornar quelcom a la comunitat" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Si no veieu el logotip de django CMS a la part superior, assegureu-vos\n" +" d'haver enllaçat la carpeta static/cms als vostres\n" +" fitxers estàtics.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Veieu aquest missatge perquè teniu\n" +" DEBUG = True al vostre fitxer de configuració de django i\n" +" encara no heu afegit cap pàgina.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Benvingut a django CMS" + +msgid "Add Another" +msgstr "Afegir un altre" + +msgid "Back" +msgstr "Tornar" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "Trieu una opció de sota per anar al següent pas." + +msgid "Next" +msgstr "Següent" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Desconegut" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Pàgina no trobada a %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Una etiqueta de la plantilla no ha pogut trobat la pàgina amb els arguments de lookup `%(page_lookup)s\n" +"`. La URL de la petició ha estat: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Dues columnes" + +msgid "Three columns" +msgstr "Tres columnes" + +msgid "username" +msgstr "nom d'usuari" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Obligatori. 300 caràcters o menys. Lletres, números i els caràcters " +"@/./+/-/_" + +msgid "Enter a valid username." +msgstr "Introduiu un nom d'usuari vàlid." + +msgid "email address" +msgstr "mailto" + +msgid "staff status" +msgstr "estat de membre del personal" + +msgid "Designates whether the user can log into this admin site." +msgstr "" +"Estableix si un usuari pot identificar-se en aquest lloc d'administració." + +msgid "active" +msgstr "actiu" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Estableix si un usuari ha de ser tractat com a actiu. Desmarcar-lo en " +"comptes d'esborrar comptes d'usuari." + +msgid "users" +msgstr "usuaris" + +msgid "Title Extension" +msgstr "Extensió de Títol" + +msgid "Page Extension" +msgstr "Extensió de Pàgina" + +msgid "object ID" +msgstr "ID d'objecte" + +msgid "Example1 App" +msgstr "App Exemple1" + +msgid "MultilingualExample1 App" +msgstr "App ExemplePlurilingue1" + +msgid "Example1" +msgstr "Exemple1" + +msgid "Examples" +msgstr "Exemples" + +msgid "Extra Context" +msgstr "Contexte Extra" + +msgid "Articles" +msgstr "Articles" + +msgid "Sample App" +msgstr "App de prova" + +msgid "Sample App with config" +msgstr "Aplicació d'exemple amb configuració" + +msgid "Sample App with excluded permissions" +msgstr "App d'exemple amb permisos exclosos" + +msgid "Sample App 2" +msgstr "App de prova 2" + +msgid "Sample App 3" +msgstr "Sample App 3" + +msgid "Sample App Without Landing Page" +msgstr "Aplicació d'exemple sense pàgina d'inici" + +msgid "Namespaced App" +msgstr "App amb espai de noms" + +msgid "Parent app" +msgstr "Aplicació pare" + +msgid "Child app" +msgstr "Aplicació filla" + +msgid "Variable urls-menus App" +msgstr "Variable App urls-menus" + +msgid "sample root page" +msgstr "pàgina arrel de prova" + +msgid "sample settings page" +msgstr "pàgina de paràmetres de prova" + +msgid "sample account page" +msgstr "Pàgina de compte de prova" + +msgid "sample my profile page" +msgstr "Pàgina del meu perfil de prova" + +msgid "Static Menu" +msgstr "Menú estàtic" + +msgid "Static Menu2" +msgstr "Menú estàtic 2" + +msgid "Static Menu3" +msgstr "Menú Static3" + +msgid "Static Menu4" +msgstr "Static Menu4" + +msgid "Category" +msgstr "Categoria" + +msgid "Categories" +msgstr "Categories" + +msgid "Add Category" +msgstr "Afegir categoria" + +msgid "^account/$" +msgstr "^compte/$" + +msgid "Change Category" +msgstr "Modificar categoria" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" +"Gràcies per gastar una mica de temps de qualitat amb el lloc web avui." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Hereta la plantilla del l'ancestre més pròxim" + +msgid "UserSettings" +msgstr "Configuració d'usuari" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Afegir plugin al marcador de posició \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Afegir plugin a %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Marcador de posició únic" + +msgid "CMS - your user account was created." +msgstr "CMS - s'ha creat el vostre compte d'usuari." + +msgid "CMS - your user account was changed." +msgstr "CMS - el vostre compte d'usuari ha canviat." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Aquest marcador de posició ja té el nombre màxim de plugins (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Aquest marcador de posició ja té el nombre màxim permès (%(limit)s) de " +"plugins de %(plugin_name)s." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "No s'ha trobat el mòdul CMS_REQUEST_IP_RESOLVER especificat: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"No s'ha trobat la funció CMS_REQUEST_IP_RESOLVER especificada: \"{0}\" al " +"mòdul \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Crear una nova %s instància." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Ja hi ha un assistent registrat per al model: %s" diff --git a/cms/locale/ca/LC_MESSAGES/djangojs.po b/cms/locale/ca/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..2b9359b7 --- /dev/null +++ b/cms/locale/ca/LC_MESSAGES/djangojs.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Roger Pons , 2012,2015 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Roger Pons , 2012,2015\n" +"Language-Team: Catalan (http://app.transifex.com/divio/django-cms/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" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Esteu segur que voleu canviar de secció sense guardar la primera pàgina?" diff --git a/cms/locale/cmn/LC_MESSAGES/django.po b/cms/locale/cmn/LC_MESSAGES/django.po new file mode 100644 index 00000000..dd54406c --- /dev/null +++ b/cms/locale/cmn/LC_MESSAGES/django.po @@ -0,0 +1,1983 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# 5thgfka <5thgfka@gmail.com>, 2014 +# 5thgfka <5thgfka@gmail.com>, 2014 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-05 12:20+0000\n" +"PO-Revision-Date: 2020-10-29 15:33+0000\n" +"Last-Translator: Aiky30 \n" +"Language-Team: Chinese (Mandarin) (http://www.transifex.com/divio/django-cms/language/cmn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cmn\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "All" +msgstr "" + +msgid "Copy permissions" +msgstr "" + +msgid "Title" +msgstr "" + +msgid "The default title" +msgstr "" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "" + +msgid "Menu Title" +msgstr "" + +msgid "Overwrite what is displayed in the menu" +msgstr "" + +msgid "Page Title" +msgstr "" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "Slug must not be empty." +msgstr "" + +msgid "Page type" +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "Overwrite URL" +msgstr "" + +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#| msgid "softroot" +msgid "Soft root" +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "Redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +#| msgid "Copy options" +msgid "URL options" +msgstr "" + +#| msgid "Copy options" +msgid "Menu options" +msgstr "" + +msgid "Application" +msgstr "" + +msgid "Hook application to this page." +msgstr "" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +#| msgid "Application configurations" +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +#| msgid "Parent plugin language must be same as language!" +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +#| msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#| msgid "You do not have permission to clear this placeholder" +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +#| msgid "You do not have permission to delete this plugin" +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "You do not have permission to change this page's in_navigation status" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +#| msgid "You do not have permission to clear this placeholder" +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +#| msgid "You have no permission to move this plugin" +msgid "You have no permission to paste this plugin" +msgstr "" + +#| msgid "You have no permission to move this plugin" +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +#| msgid "You have no permission to move this plugin" +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Alias" +msgstr "" + +msgid "Create Alias" +msgstr "" + +#, python-format +msgid "" +"This is an alias reference, you can edit the content only on the %(page_title)s page." +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "" + +#| msgid "Add %(language)s Translation" +msgid "Add Translation" +msgstr "" + +#| msgid "Delete %(language)s Translation" +msgid "Delete Translation" +msgstr "" + +#| msgid "Copy all plugins from %s" +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +#| msgid "Are you sure you want copy all plugins from %s?" +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +#| msgid "Create" +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Edit this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +#, python-format +#| msgid "" +#| "(pages)s has the same url '%(url)s' as current page \"%(instance)s" +#| msgid_plural "" +#| "%(pages)s have the same url '%(url)s' as current page \"%(instance)s" +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +#| msgid "" +#| "(pages)s has the same url '%(url)s' as current page \"%(instance)s" +#| msgid_plural "" +#| "%(pages)s have the same url '%(url)s' as current page \"%(instance)s" +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#| msgid "You do not have permission to add a plugin" +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "default" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +#| msgid "Please select user or group first." +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "" + +msgid "overwrite the title (html title tag)" +msgstr "" + +msgid "overwrite the title in the menu" +msgstr "" + +msgid "description" +msgstr "" + +msgid "The text displayed in search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "" + +#, python-format +#| msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +#| msgid "Change" +msgid "Changed" +msgstr "" + +#| msgid "Delete" +msgid "Deleted" +msgstr "" + +#| msgid "Add %(language)s Translation" +msgid "Added Page Translation" +msgstr "" + +#| msgid "Delete %(language)s Translation" +msgid "Changed Page Translation" +msgstr "" + +#| msgid "Delete %(language)s Translation" +msgid "Deleted Page Translation" +msgstr "" + +#| msgid "Add plugin" +msgid "Added Plugin" +msgstr "" + +#| msgid "Change" +msgid "Changed Plugin" +msgstr "" + +#| msgid "Add plugin" +msgid "Moved Plugin" +msgstr "" + +#| msgid "Delete page" +msgid "Deleted Plugin" +msgstr "" + +#| msgid "Add plugin" +msgid "Cut Plugin" +msgstr "" + +#| msgid "Add plugin" +msgid "Paste Plugin" +msgstr "" + +#| msgid "static placeholder" +msgid "Paste to Placeholder" +msgstr "" + +#| msgid "Copied plugins to %(placeholder)s" +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#| msgid "Placeholder" +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +#| msgid "Add Page" +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +#| msgid "Save as new" +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +#| msgid "Page Title" +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "" +"\n" +" New Page\n" +" " +msgstr "" + +#| msgid "in navigation" +msgid "Main Navigation" +msgstr "" + +#| msgid "Actions" +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +#| msgid "New Page" +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +#| msgid "" +#| " JavaScript seems to be disabled so please\n" +#| " add a page manually.\n" +#| " " +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +#| msgid "published" +msgid "Published" +msgstr "" + +#| msgid "unpublished" +msgid "Unpublished" +msgstr "" + +msgid "Empty" +msgstr "" + +#| msgid "in menu" +msgid "In menu" +msgstr "" + +#| msgid "not in menu" +msgid "Not in menu" +msgstr "" + +#| msgid "New page" +msgid "View page" +msgstr "" + +#| msgid "softroot" +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +#| msgid "Page settings (SHIFT-click for advanced settings)" +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "This is a static placeholder" +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +#| msgid "Structure" +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +#| msgid "Development version using django CMS %(cms_version)s" +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occured:" +msgstr "" + +#| msgid "Action successfull... reloading." +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +#| msgid "This page has unpublished changes." +msgid "You have unsaved changes." +msgstr "" + +#| msgid "Loading..." +msgid "Loading" +msgstr "" + +#| msgid "Are you sure you want to § this page?" +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#| msgid "Notify user" +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +#| msgid "Cancel" +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +#| msgid "static placeholders" +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +#| msgid "Add plugin to placeholder" +msgid "Focus on plugins of placeholder" +msgstr "" + +#| msgid "Add plugin" +msgid "Edit plugin" +msgstr "" + +#| msgid "not in menu" +msgid "Open actions menu" +msgstr "" + +#| msgid "Expand all" +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Installation successful!" +msgstr "" + +msgid "Add your first page" +msgstr "" + +msgid "Please log in" +msgstr "" + +#, python-format +msgid "" +"\n" +" Welcome to django CMS version %(cms_version)s.\n" +" " +msgstr "" + +#, python-format +msgid "" +"\n" +" Add the first page to the system to continue.\n" +" " +msgstr "" + +#, python-format +msgid "" +"\n" +" JavaScript seems to be disabled so please\n" +" add a page manually.\n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +#| msgid "" +#| "

If you don't see the ngo CMS logo at the top, make sure\n" +#| " you linked the static/cms folder to r\n" +#| " static files.

\n" +#| "

You're seeing this message ause you have\n" +#| " DEBUG = True in your django settings e and\n" +#| " haven't added any pages yet.\n" +#| "

\n" +#| " " +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#| msgid "" +#| "

If you don't see the ngo CMS logo at the top, make sure\n" +#| " you linked the static/cms folder to r\n" +#| " static files.

\n" +#| "

You're seeing this message ause you have\n" +#| " DEBUG = True in your django settings e and\n" +#| " haven't added any pages yet.\n" +#| "

\n" +#| " " +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "no content" +msgstr "" + +#| msgid "no content" +msgid "has contents" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +#| msgid "Sample App with excluded permissions" +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +#| msgid "Sample App 2" +msgid "Sample App 3" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +#| msgid "Static Menu" +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +#| msgid "Add plugin to placeholder" +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +#| msgid "Add plugin to placeholder" +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "X Frame Options" +#~ msgstr "X Frame Options" + +#~ msgid "Whether this page can be embedded in other pages or websites" +#~ msgstr "Whether this page can be embedded in other pages or websites" + +#~ msgid "Language independent options" +#~ msgstr "Language independent options" + +#~ msgid "Publishing dates" +#~ msgstr "Publishing dates" + +#~ msgid "Change Permissions" +#~ msgstr "Change Permissions" + +#~ msgid "You do not have permission to revert this page." +#~ msgstr "You do not have permission to edit this page" + +#~ msgid "You do not have permission to publish this page" +#~ msgstr "You do not have permission to publish this page" + +#~ msgid "Page not published! A parent page is not published yet." +#~ msgstr "Page not published! A parent page is not published yet." + +#~ msgid "The content was successfully published." +#~ msgstr "The content was successfully published." + +#~ msgid "There was a problem publishing your content" +#~ msgstr "There was a problem publishing your content" + +#~ msgid "You do not have permission to unpublish this page" +#~ msgstr "You do not have permission to unpublish this page" + +#~ msgid "This page was never published" +#~ msgstr "This page was never published" + +#~ msgid "The %(language)s page \"%(page)s\" was successfully unpublished" +#~ msgstr "The %(language)s page \"%(page)s\" was successfully unpublished" + +#~ msgid "You don't have permissions to see page \"%(title)s\"" +#~ msgstr "You do not have permission to change pages." + +#~ msgid "parent must be in the same placeholder" +#~ msgstr "parent must be in the same placeholder" + +#~ msgid "parent must be in the same language as plugin_language" +#~ msgstr "parent must be in the same language as plugin_language" + +#~ msgid "Publish page changes" +#~ msgstr "Publish changes" + +#~ msgid "Publish page now" +#~ msgstr "Publish page now" + +#~ msgid "Save as Page Type" +#~ msgstr "Save as Page Type" + +#~ msgid "Unpublish page" +#~ msgstr "Unpublish page" + +#~ msgid "Publish page" +#~ msgstr "Publish page" + +#~ msgid "Are you sure you want to revert to live?" +#~ msgstr "Are you sure you want to revert to live?" + +#~ msgid "Revert to live" +#~ msgstr "Revert to live" + +#~ msgid "" +#~ "When the page should go live. Status must be \"Published\" for page to go " +#~ "live." +#~ msgstr "" +#~ "When the page should go live. Status must be \"Published\" for page to go " +#~ "live." + +#~ msgid "When to expire the page. Leave empty to never expire." +#~ msgstr "When to expire the page. Leave empty to never expire." + +#~ msgid "has url overwrite" +#~ msgstr "has url overwrite" + +#~ msgid "is published" +#~ msgstr "is published" + +#~ msgid "Basic Settings" +#~ msgstr "Basic Settings" + +#~ msgid "Preview this page in %(language)s " +#~ msgstr "Edit this page in %(language)s " + +#~ msgid "Publish" +#~ msgstr "Publish" + +#~ msgid "Unpublish" +#~ msgstr "Unpublish" + +#~ msgid "View published" +#~ msgstr "View published" + +#~ msgid "This page has unpublished changes." +#~ msgstr "This page has unpublished changes." + +#~ msgid "unpublished changes" +#~ msgstr "unpublished changes" + +#~ msgid "published" +#~ msgstr "published" + +#~ msgid "unpublished parent" +#~ msgstr "unpublished parent" + +#~ msgid "unpublished" +#~ msgstr "unpublished" + +#~ msgid "The current language of the content fields." +#~ msgstr "The current language of the content fields." + +#~ msgid "Another page with this slug already exists" +#~ msgstr "Another page with this slug already exists" + +#~ msgid "Add Page Type" +#~ msgstr "Add Page Type" + +#~ msgid "You do not have permission to change the template" +#~ msgstr "You do not have permission to change the template" + +#~ msgid "You do not have permission to change this page" +#~ msgstr "You do not have permission to change this page" + +#~ msgid "There only exists one translation for this page" +#~ msgstr "There only exists one translation for this page" + +#~ msgid "User does not have permission to add page." +#~ msgstr "User does not have permission to add page." + +#~ msgid "The site the page is accessible at." +#~ msgstr "The site the page is accessible at." + +#~ msgid "Edit page" +#~ msgstr "Edit this Page" + +#~ msgid "Toggle toolbar" +#~ msgstr "Toggle toolbar" + +#~ msgid "Invalid URL, use /my/url format." +#~ msgstr "Invalid URL, use /my/url format." + +#~ msgid "Add page permission also requires edit page permission." +#~ msgstr "Add page permission also requires edit page permission." + +#~ msgid "Recover (any) pages" +#~ msgstr "Recover (any) pages" + +#~ msgid "" +#~ "Send email notification to user about username or password change. Requires " +#~ "user email." +#~ msgstr "" +#~ "Send email notification to user about username or password change. Requires " +#~ "user email." + +#~ msgid "New password" +#~ msgstr "New password" + +#~ msgid "New password confirmation" +#~ msgstr "New password confirmation" + +#~ msgid "Email notification requires valid email address." +#~ msgstr "Email notification requires valid email address." + +#~ msgid "" +#~ "The permission to add new pages requires the permission to change pages!" +#~ msgstr "" +#~ "The permission to add new pages requires the permission to change pages!" + +#~ msgid "" +#~ "The permission to add new users requires the permission to change users!" +#~ msgstr "" +#~ "The permission to add new users requires the permission to change users!" + +#~ msgid "To add permissions you also need to edit them!" +#~ msgstr "To add permissions you also need to edit them!" + +#~ msgid "%(plugin_name)s plugin added to %(placeholder)s" +#~ msgstr "%(plugin_name)s plugin added to %(placeholder)s" + +#~ msgid "Copied plugins to %(placeholder)s" +#~ msgstr "Copied plugins to %(placeholder)s" + +#~ msgid "" +#~ "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +#~ msgstr "" +#~ "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" + +#~ msgid "" +#~ "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " +#~ "deleted." +#~ msgstr "" +#~ "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " +#~ "deleted." + +#~ msgid "All plugins in the placeholder \"%(name)s\" were deleted." +#~ msgstr "All plugins in the placeholder \"%(name)s\" were deleted." + +#~ msgid "Page reverted but slug stays the same because of url collisions." +#~ msgstr "Page reverted but slug stays the same because of url collisions." + +#~ msgid "Template changed to %s" +#~ msgstr "Template changed to %s" + +#~ msgid "Page moved" +#~ msgstr "Page moved" + +#~ msgid "Copied plugins from %(source_language)s to %(target_language)s" +#~ msgstr "Copied plugins from %(source_language)s to %(target_language)s" + +#~ msgid "The page \"%s\" was successfully reverted." +#~ msgstr "The page \"%s\" was successfully reverted." + +#~ msgid "History" +#~ msgstr "History" + +#~ msgid "Undo" +#~ msgstr "Undo" + +#~ msgid "Redo" +#~ msgstr "Redo" + +#~ msgid "View history" +#~ msgstr "View history" + +#~ msgid "" +#~ "\n" +#~ " Recover deleted %(verbose_name)s\n" +#~ " " +#~ msgstr "Recover deleted %(verbose_name)s" + +#~ msgid "Press the save button below to recover this version of the object." +#~ msgstr "Press the save button below to recover this version of the object." + +#~ msgid "Revert %(verbose_name)s" +#~ msgstr "Revert %(verbose_name)s" + +#~ msgid "Press the save button below to revert to this version of the object." +#~ msgstr "Press the save button below to revert to this version of the object." + +#~ msgid "home" +#~ msgstr "home" + +#~ msgid "softroot" +#~ msgstr "softroot" + +#~ msgid "({1}) plugin is empty. Remove it?" +#~ msgstr "({1}) plugin is empty. Remove it?" + +#~ msgid "sample second page" +#~ msgstr "sample account page" + +#~ msgid "Plugins were moved" +#~ msgstr "Plugins were moved" + +#~ msgid "Path Overflow from: '%s'" +#~ msgstr "Path Overflow from: '%s'" + +#~ msgid "" +#~ "The new node is too deep in the tree, try increasing the path.max_length " +#~ "property and UPDATE your database" +#~ msgstr "" +#~ "The new node is too deep in the tree, try increasing the path.max_length " +#~ "property and UPDATE your database" + +#~ msgid "An error occured. Please reload the page" +#~ msgstr "An error occured. Please reload the page" + +#~ msgid "Recover deleted %(name)s" +#~ msgstr "Recover deleted %(name)s" + +#~ msgid "Add %(name)s" +#~ msgstr "Add %(name)s" + +#~ msgid "Pages on:" +#~ msgstr "Pages on:" + +#~ msgid "%(counter)s result" +#~ msgid_plural "%(counter)s results" +#~ msgstr[0] "a848884d0af974a125106fa2043a5716_pl_0" + +#~ msgid "%(full_result_count)s total" +#~ msgstr "%(full_result_count)s total" + +#~ msgid "Show all" +#~ msgstr "Show all" + +#~ msgid "Filter:" +#~ msgstr "Filter:" + +#~ msgid "on" +#~ msgstr "on" + +#~ msgid "off" +#~ msgstr "off" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "" +#~ "There is no page around yet.
Add page now." +#~ msgstr "" +#~ "There is no page around yet.
Add page now." + +#~ msgid "insert above" +#~ msgstr "insert above" + +#~ msgid "insert below" +#~ msgstr "insert below" + +#~ msgid "insert inside" +#~ msgstr "insert inside" + +#~ msgid "Pick an action:" +#~ msgstr "Pick an action:" + +#~ msgid "page settings" +#~ msgstr "page settings" + +#~ msgid "copy" +#~ msgstr "copy" + +#~ msgid "Add Child" +#~ msgstr "Add Child" + +#~ msgid "add" +#~ msgstr "add" + +#~ msgid "cut" +#~ msgstr "cut" + +#~ msgid "delete" +#~ msgstr "delete" + +#~ msgid "info" +#~ msgstr "info" + +#~ msgid "Information" +#~ msgstr "Information" + +#~ msgid "%(icon)s" +#~ msgstr "%(icon)s" + +#~ msgid "English" +#~ msgstr "English" + +#~ msgid "French" +#~ msgstr "French" + +#~ msgid "German" +#~ msgstr "German" + +#~ msgid "Brazilian Portuguese" +#~ msgstr "Brazilian Portuguese" + +#~ msgid "Dutch" +#~ msgstr "Dutch" + +#~ msgid "two columns" +#~ msgstr "two columns" + +#~ msgid "three columns" +#~ msgstr "three columns" + +#~ msgid "navigation examples" +#~ msgstr "navigation examples" + +#~ msgid "sidebar column" +#~ msgstr "sidebar column" + +#~ msgid "left column" +#~ msgstr "left column" + +#~ msgid "Add a link" +#~ msgstr "Add a link" + +#~ msgid "right column" +#~ msgstr "right column" diff --git a/cms/locale/cmn/LC_MESSAGES/djangojs.po b/cms/locale/cmn/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..75a63c87 --- /dev/null +++ b/cms/locale/cmn/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-05 12:20+0000\n" +"PO-Revision-Date: 2018-01-11 16:38+0000\n" +"Last-Translator: Paulo Alvarado \n" +"Language-Team: Chinese (Mandarin) (http://www.transifex.com/divio/django-cms/language/cmn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cmn\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/cs/LC_MESSAGES/django.po b/cms/locale/cs/LC_MESSAGES/django.po new file mode 100644 index 00000000..3f953cf2 --- /dev/null +++ b/cms/locale/cs/LC_MESSAGES/django.po @@ -0,0 +1,1757 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# koren , 2025 +# Martin S. , 2026 +# Jakub Dorňák , 2026 +# yedpodtrzitko , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Czech (https://app.transifex.com/divio/teams/58664/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" + +msgid "All" +msgstr "Vše" + +msgid "Copy permissions" +msgstr "Zkopírovat oprávnění" + +msgid "Slug" +msgstr "Identifikátor" + +msgid "The part of the title that is used in the URL" +msgstr "Část názvu, který je použit v URL" + +msgid "Page type" +msgstr "Typ stránky" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Typy stránek" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Přepsat URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Ponechejte toto políčko prázdné, pokud se má použít standardní cesta." + +msgid "Start typing..." +msgstr "Začněte psát ..." + +msgid "menu visibility" +msgstr "viditelnost nabídky" + +msgid "limit when this page is visible in the menu" +msgstr "omezuje zobrazení této stránky v menu" + +msgid "X Frame Options" +msgstr "Možnosti pro X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Zda lze tuto stránku vkládat do jiných stránek nebo webů." + +msgid "URL options" +msgstr "Možnosti URL" + +msgid "Menu options" +msgstr "Možnosti menu" + +msgid "Headers" +msgstr "Hlavičky" + +msgid "Application" +msgstr "Aplikace" + +msgid "Hook application to this page." +msgstr "Připojit aplikaci k této stránce." + +msgid "Application configurations" +msgstr "Konfigurace aplikace" + +msgid "A page with this reverse URL id exists already." +msgstr "Stránka s takovu hodnotou reverse URL id již existuje." + +msgid "Invalid application config value" +msgstr "Neplatná hodnota konfigurace aplikace" + +msgid "An application instance using this configuration already exists." +msgstr "Instance aplikace používající tuto konfiguraci již existuje." + +msgid "An application instance with this name already exists." +msgstr "Instance aplikace s tímto jménem již existuje." + +msgid "You can't move the home page inside another page" +msgstr "Domovskou stránku nemůžete přesunout pod jinou stránku" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Nemůžete mít dvě stránky se stejným identifikátorem na stejné úrovni. Před " +"dalším pokusem o přesun změňte identifikátor jedné ze stránek." + +msgid "Yes" +msgstr "Ano" + +msgid "No" +msgstr "Ne" + +msgid "user" +msgstr "uživatel" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "Přidat" + +msgid "Change" +msgstr "Změnit" + +msgid "Delete" +msgstr "Odstranit" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Uživatelé nemohou vytvořit stránku bez oprávnění k editaci stránek. Nutno " +"provést změnu oprávnění uživatele." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Uživatelé nemohou odstranit stránku bez oprávnění k editaci stránek. Nutno " +"provést změnu oprávnění uživatele." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Uživatelé nemohou měnit vlastnosti stránky bez oprávnění k editaci stránek. " +"Nutno provést změnu oprávnění uživatele." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Uživatelé nemohou odstranit vlastnosti stránky bez oprávnění k editaci " +"stránek. Nutno provést změnu oprávnění uživatele." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Uživatelé nemohou vytvářet vlastnosti stránky bez oprávnění ke změně těchto " +"vlastností. Nutno provést změnu oprávnění uživatele." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Uživatelé nemohou odstranit vlastnosti stránky bez oprávnění k úpravě " +"stránek. Nutno provést změnu oprávnění uživatele." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Neplatný typ pluginu: \"%s\"" + +msgid "Language must be set to a supported language!" +msgstr "Zadaný jazyk není podporovaný, zvolte jiný!" + +msgid "Parent plugin language must be same as language!" +msgstr "Jazyk rodičovského pluginu musí být stejný jako jazyk!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Placeholder v nadřazeném pluginu musí odpovídat tomuto placeholderu!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Pozice pluginu musí být větší než %(position)d" + +msgid "Translations" +msgstr "Překlady" + +msgid "Advanced Settings" +msgstr "Rozšířené možnosti" + +msgid "The page is not eligible to be home." +msgstr "Stránka nemůže být domovská." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Objekt %(name)s s primárním klíčem %(key)r neexistuje." + +msgid "error" +msgstr "chyba" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Chyba! Nemáte oprávnění k přesunu této stránky. Načtěte si prosím stránku " +"znovu" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Chyba! Nemáte oprávnění ke kopírování této stránky." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Chyba! Stránka, kterou kopírujete, není přeložena v žádném z jazyků " +"nakonfigurovaných cílovou stránkou." + +msgid "You do not have permission to edit this page" +msgstr "Nemáte oprávnění tuto stránku upravovat" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(chcete-li to změnit, nejprve zrušte publikování aktuálně publikované verze " +"této stránky)" + +msgid "Add Translation" +msgstr "Přidat překlad" + +msgid "Add Page Copy" +msgstr "Přidat kopii stránky" + +msgid "New sub page" +msgstr "Nová podstránka" + +msgid "New page" +msgstr "Nová stránka" + +msgid "Database error" +msgstr "Databázová chyba" + +msgid "Template not valid" +msgstr "Šablona není platná" + +msgid "Placeholder selection not valid" +msgstr "Neplatný výběr placeholderu" + +msgid "The template was successfully changed" +msgstr "Šablona byla úspěšně změněna" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Placeholder '%s' v cílovém jazyce neexistuje" + +msgid "You do not have permission to copy these plugins." +msgstr "Nemáte oprávnění kopírovat tyto položky obsahu." + +msgid "You do not have permission to delete this page" +msgstr "Nemáte oprávnění k odstranění této stránky" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Texty a položky obsahu pro jazyk %(language)s byli odstraněny" + +msgid "Public content" +msgstr "Veřejný obsah" + +msgid "Empty" +msgstr "Prázdné" + +msgid "Create Content" +msgstr "Vytvořit obsah" + +msgid "View restriction" +msgstr "Zobrazit omezení" + +msgid "View restrictions" +msgstr "Zobrazit omezení" + +#, python-format +msgid "Field %s not found" +msgstr "Pole %s nenalezeno" + +msgid "You do not have permission to edit this item" +msgstr "Nemáte oprávnění k editování této položky" + +msgid "You do not have permission to add a plugin" +msgstr "Nemáte oprávnění přidávat položky obsahu" + +msgid "You do not have permission to copy this placeholder." +msgstr "Nemáte oprávnění ke kopírování tohoto placeholderu." + +msgid "Plugin not found" +msgstr "Plugin nebyl nalezen" + +msgid "You do not have permission to edit this plugin" +msgstr "Nemáte oprávnění editovat tuto položku obsahu" + +msgid "You have no permission to paste this plugin" +msgstr "Nemáte oprávnění ke vložení tohoto pluginu" + +msgid "You have no permission to paste this placeholder" +msgstr "Nemáte oprávnění ke vložení tohoto placeholderu" + +msgid "You have no permission to move this plugin" +msgstr "Nemáte oprávnění přesouvat tuto položku obsahu" + +msgid "You have no permission to cut this plugin" +msgstr "Nemáte oprávnění k vyjmutí tohoto pluginu" + +msgid "You do not have permission to delete this plugin" +msgstr "Nemáte oprávnění odstranit tuto položku obsahu" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "Položka obsahu \"%(obj)s\" typu %(name)s byla úspěšně odstraněna." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Není možné odstranit položku %(name)s" + +msgid "Are you sure?" +msgstr "Jste si jist?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Nemáte oprávnění k vyprázdnění tohoto bloku" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Blok \"%(obj)s\" byl úspěšně vymazán." + +msgid "placeholder" +msgstr "blok" + +msgid "Page permissions" +msgstr "Práva stránky" + +msgid "User & Group permissions" +msgstr "Práva uživatele/skupiny" + +msgid "Page permissions management" +msgstr "Správa práv stránky" + +msgid "Actions" +msgstr "Akce" + +msgid "Empty content" +msgstr "Prázdný obsah" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Vlastnosti %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Přidat nový %(object_name)s" + +msgid "Add content" +msgstr "Přidat obsah" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Obsah pro aktuální jazyk byl změněn. Klikněte na \"Zrušit\" pro návrat k " +"formuláři a uložení změn. Klikněte na \"OK\" pro zahození změn." + +#, python-format +msgid "Add %(language)s content" +msgstr "Přidat obsah v jazyce %(language)s" + +msgid "Preview" +msgstr "Náhled" + +msgid "Settings" +msgstr "Nastavení" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Neplatný jazyk %(value)s. Tento formulář nelze zpracovat. Zkuste změnit " +"jazyk." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Přípojka aplikace \"%r\" nenalezena" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Umístěnka" + +msgid "Create" +msgstr "Vytvořit" + +msgid "Edit" +msgstr "Upravit" + +msgid "Structure" +msgstr "Struktura" + +msgid "Content" +msgstr "Obsah" + +msgid "Sites" +msgstr "Weby" + +msgid "Admin Sites" +msgstr "Správa webů" + +msgid "Administration" +msgstr "Administrace" + +msgid "User settings" +msgstr "Uživatelská nastavení" + +msgid "Clipboard..." +msgstr "Schránka..." + +msgid "Clear clipboard" +msgstr "Vyprázdnit schránku" + +msgid "Disable toolbar" +msgstr "Vypnout řádek nástrojů" + +msgid "Shortcuts..." +msgstr "Zkratky..." + +msgid "Users" +msgstr "Uživatelé" + +#, python-format +msgid "Logout %s" +msgstr "Odhlásit %s" + +msgid "Logout" +msgstr "Odhlásit" + +msgid "Language" +msgstr "Jazyk" + +msgid "Delete Translation" +msgstr "Odstranit překlad" + +msgid "Copy all plugins" +msgstr "Zkopírovat všechny pluginy" + +#, python-format +msgid "from %s" +msgstr "z %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Opravdu chcete zkopírovat všechny pluginy z %s?" + +msgid "Pages" +msgstr "Stránky" + +msgid "Page" +msgstr "Stránka" + +msgid "Create Page" +msgstr "Vytvořit stránku" + +msgid "New Page" +msgstr "Nová stránka" + +msgid "New Sub Page" +msgstr "Nová podstránka" + +msgid "Duplicate this Page" +msgstr "Duplikovat tuto stránku" + +msgid "Page settings" +msgstr "Nastavení stránky" + +msgid "Advanced settings" +msgstr "Pokročilé nastavení" + +msgid "Templates" +msgstr "Šablony" + +msgid "Placeholders" +msgstr "Placeholdery" + +msgid "Hide in navigation" +msgstr "Skrýt v navigaci" + +msgid "Display in navigation" +msgstr "Zobrazit v navigaci" + +msgid "Delete page" +msgstr "Odstranit stránku" + +msgid "Create a new page next to the current page." +msgstr "Vytvořit novou stránku vedle současné stránky." + +msgid "Create a page below the current page." +msgstr "Vytvořit stránku pod současnou stránkou." + +msgid "Select a valid site" +msgstr "Vybrat platnou stránku" + +msgid "Select a valid page" +msgstr "Vybrat platnou stránku" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"Stránka %(conflict_page)s más stejnou url '%(url)s' jako aktuální stránka " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"Stránka %(conflict_page)s má stejnou url '%(url)s' jako aktuální stránka." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Volitelné. Pokud uvedete, text bude automaticky přidán do nové textové " +"položky obsahu." + +msgid "Provide a title for the new page." +msgstr "Uveďte nadpis pro novou stránku." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" +"Ponechte prázdné pro automatické vyplnění slugu, nebo vyplňte dle potřeby." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "Nelze automaticky vytvořit identifikátor. Zadejte jej prosím ručně." + +msgid "Please provide a valid slug." +msgstr "Zadejte prosím platný identifikátor." + +msgid "You don't have the permissions required to add a page." +msgstr "Nemáte oprávnění vytvářet stránky." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "pozice" + +msgid "language" +msgstr "jazyk" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "datum vytvoření" + +msgid "can edit" +msgstr "smí upravovat" + +msgid "can add" +msgstr "smí přidávat" + +msgid "can delete" +msgstr "smí odstranit" + +msgid "can change advanced settings" +msgstr "smí měnit Rozšířené možnosti" + +msgid "can publish" +msgstr "smí publikovat" + +msgid "can change permissions" +msgstr "smí měnit oprávnění" + +msgid "can move" +msgstr "smí přesunovat" + +msgid "view restricted" +msgstr "zobrazit omezení" + +msgid "can recover pages" +msgstr "obnova stránky" + +msgid "group" +msgstr "skupina" + +msgid "sites" +msgstr "stránky" + +msgid "created by" +msgstr "vytvořil" + +msgid "changed by" +msgstr "změnil" + +msgid "publication date" +msgstr "datum publikace" + +msgid "publication end date" +msgstr "publikováno do" + +msgid "in navigation" +msgstr "v navigaci" + +msgid "soft root" +msgstr "soft root" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "připojené nabídky" + +msgid "template" +msgstr "šablona" + +msgid "login required" +msgstr "vyžaduje přihlášení" + +msgid "application" +msgstr "aplikace" + +msgid "application instance name" +msgstr "název instance aplikace" + +msgid "site" +msgstr "stránka" + +msgid "Grant on" +msgstr "Platné pro" + +msgid "page" +msgstr "stránka" + +msgid "no limit set" +msgstr "bez nastaveného limitu" + +msgid "for logged in users only" +msgstr "pro přihlášené uživatele" + +msgid "for anonymous users only" +msgstr "pro anonymní uživatele" + +msgid "Inherit from parent page" +msgstr "Převzít od nadřazené stránky" + +msgid "Deny" +msgstr "Odmítnout" + +msgid "Only this website" +msgstr "Jen tento web" + +msgid "Allow" +msgstr "Povolit" + +msgid "title" +msgstr "popisek" + +msgid "The default title" +msgstr "Výchozí název" + +msgid "Page Title" +msgstr "Název stránky" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Přepsat to, co se zobrazuje v horní části vašeho prohlížeče nebo v záložkách" + +msgid "Menu Title" +msgstr "Název menu" + +msgid "Overwrite what is displayed in the menu" +msgstr "Přepsat to, co se zobrazuje v menu" + +msgid "Description meta tag" +msgstr "Meta tag Description (Popis)" + +msgid "A description of the page used by search engines." +msgstr "" +"Seznam klíčových slov oddělených čárkou, které mohou indexovat vyhledávače." + +msgid "redirect" +msgstr "přesměrování" + +msgid "Redirects to this URL." +msgstr "Přesměruje se na tuto URL." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Potomci nebudou zobrazeni v navigaci" + +msgid "The template used to render the content." +msgstr "Šablona pro vykreslení obsahu." + +msgid "page content" +msgstr "obsah stránky" + +msgid "page contents" +msgstr "obsahy stránek" + +msgid "default" +msgstr "výchozí" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Unikátní identifikátor, který je použit s page_url templatetag pro " +"odkazování do této stránky" + +msgid "Mark this page as a page type" +msgstr "Označit tuto stránku jako typ stránky" + +msgid "pages" +msgstr "stránky" + +msgid "No available title" +msgstr "Žádný dostupný název" + +msgid "slug" +msgstr "identifikátor" + +msgid "Path" +msgstr "Cesta" + +msgid "Current page" +msgstr "Aktuální stránka" + +msgid "Page children (immediate)" +msgstr "Přímí potomci stránky" + +msgid "Page and children (immediate)" +msgstr "Tato stránka + přímí potomci" + +msgid "Page descendants" +msgstr "Všichni potomci stránky" + +msgid "Page and descendants" +msgstr "Tato stránka ₊ všichni potomci" + +msgid "on page level" +msgstr "na úrovni stránky" + +msgid "frontend view restriction" +msgstr "omezení frontend view" + +msgid "Please select user or group." +msgstr "Prosím zvolte uživatele či skupinu." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Uživatelé nemohou publikovat stránku bez oprávnění k její editaci. Oprávnění" +" k editaci je vyžadováno." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Uživatel nemůže změnit pokročilé vlastnosti stránky bez oprávnění k její " +"změně. Nuto změnit oprávnění uživatele." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Uživatel nemůže změnit vlastnosti stránky bez oprávnění k její změně. Nuto " +"změnit oprávnění uživatele." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Uživatel nemůže přesunout stránku bez oprávnění k její změně. Nuto změnit " +"oprávnění uživatele." + +msgid "can recover any deleted page" +msgstr "může obnovit jakoukoliv odstraněnou stránku" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "Pokud není vyplněno, uživatel má práva ke všem stránkám." + +msgid "Page global permission" +msgstr "Globální oprávnění stránky" + +msgid "Pages global permissions" +msgstr "Globální oprávnění stránek" + +msgid "Page permission" +msgstr "Práva stránky" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Právo na přidání stránky vyžaduje také přístup k \"vnořeným\" stránkám, " +"jinak tyto stránky nebude moci editovat jejich autor." + +msgid "User (page)" +msgstr "Uživatel (stránka)" + +msgid "Users (page)" +msgstr "Uživatelé (stránka)" + +msgid "User group (page)" +msgstr "Skupina uživatel (stránka)" + +msgid "User groups (page)" +msgstr "Skupiny uživatel (stránka)" + +msgid "slot" +msgstr "pozice" + +msgid "width" +msgstr "šírka" + +msgid "Edit object" +msgstr "Upravit objekt" + +msgid "This is an external placeholder" +msgstr "Toto je externí placeholder" + +msgid "plugin" +msgstr "plugin" + +msgid "plugins" +msgstr "pluginy" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Jazyk administračního rozhraní a panelu nástrojů" + +msgid "user setting" +msgstr "uživatelské nastavení" + +msgid "user settings" +msgstr "uživatelská nastavení" + +msgid "by template" +msgstr "podle šablony" + +msgid "by code" +msgstr "podlé kódu" + +msgid "static placeholder name" +msgstr "statické jméno umístěnky" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Popisné jméno identifikující tuto umístěnku. Není zobrazováno uživatelům." + +msgid "placeholder code" +msgstr "kód umístěnky" + +msgid "To render the static placeholder in templates." +msgstr "Generuj statické umístěnky v šablonách." + +msgid "placeholder content" +msgstr "obsah umístěnky" + +msgid "creation_method" +msgstr "creation_method" + +msgid "static placeholder" +msgstr "statická umístěnka" + +msgid "static placeholders" +msgstr "statické umístěnky" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Statická umístěnka se stejným kódem pro tento web již existuje" + +msgid "Advanced options" +msgstr "Pokročilá nastavení" + +msgid "Generic" +msgstr "Generic" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "Změna úspěšná: %(name)s \"%(obj)s\"." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" +"Nejsou k dispozici žádné další nastavení tohoto pluginu. Prosím, stiskněte " +"tlačítko Uložit." + +msgid "Moved" +msgstr "Přesunuto" + +msgid "Changed" +msgstr "Zmeněno" + +msgid "Deleted" +msgstr "Odstraněno" + +msgid "Added Page Translation" +msgstr "Přidán překlad stránky" + +msgid "Changed Page Translation" +msgstr "Změněn překlad stránky" + +msgid "Deleted Page Translation" +msgstr "Odstraněn překlad stránky" + +msgid "Added Plugin" +msgstr "Přidán plugin" + +msgid "Changed Plugin" +msgstr "Změněn plugin" + +msgid "Moved Plugin" +msgstr "Přesunut plugin" + +msgid "Deleted Plugin" +msgstr "Odstraněn plugin" + +msgid "Cut Plugin" +msgstr "Vyjmut plugin" + +msgid "Paste Plugin" +msgstr "Vložen plugin" + +msgid "Paste to Placeholder" +msgstr "Vložit do placeholderu" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Pluginy přidány do placeholderu ze schránky" + +msgid "Cleared Placeholder" +msgstr "Vyprázdněn placeholder" + +msgid "Save" +msgstr "Uložit" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "Některá pole nelze změnit, protože jsou určena pouze pro čtení." + +#, python-format +msgid "Log in to administration here." +msgstr "Přihlášení do administrace." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Přihlašovací URL: %(login_url)s" + +msgid "Username:" +msgstr "Uživatelské jméno:" + +msgid "Password:" +msgstr "Heslo:" + +msgid "Add a page" +msgstr "Přidat stránku" + +msgid "Change a page" +msgstr "Upravit stránku" + +msgid "Home" +msgstr "Domů" + +msgid "View on site" +msgstr "Zobrazit" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Opravte prosím následující chybu." +msgstr[1] "Opravte prosím následující chyby." +msgstr[2] "Opravte prosím následující chyby." +msgstr[3] "Opravte prosím následující chyby." + +msgid "All permissions" +msgstr "Všechna oprávnění" + +msgid "Loading..." +msgstr "Načítání..." + +msgid "Save and continue editing" +msgstr "Uložit a pokračovat v editaci" + +#, 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 chcete odstranit %(object_name)s \"%(escaped_object)s\"? Všechny " +"následující související položky budou odstraněny:" + +msgid "Yes, I’m sure" +msgstr "Ano, jsem si jist" + +msgid "No, take me back" +msgstr "Ne, vrátit zpět" + +msgid "Summary" +msgstr "Souhrn" + +msgid "User" +msgstr "Uživatel" + +msgid "Group" +msgstr "Skupina" + +msgid "Can edit" +msgstr "Smí upravovat" + +msgid "Can add" +msgstr "Smí přidávat" + +msgid "Can delete" +msgstr "Smí odstranit" + +msgid "Can publish" +msgstr "Smí publikovat" + +msgid "Can change permissions" +msgstr "Smí měnit oprávnění" + +msgid "Can move" +msgstr "Smí přesouvat" + +msgid "Can view" +msgstr "Může vidět" + +msgid "(global)" +msgstr "(globální)" + +msgid "(current)" +msgstr "(aktuální)" + +msgid "Page doesn't inherit any permissions." +msgstr "Stránka nedědí žádná oprávnění." + +msgid "Edit model" +msgstr "Upravit model" + +msgid "Save as new" +msgstr "Uložit jako novou" + +msgid "Save and add another" +msgstr "Uložit a přidat další" + +msgid "Copy" +msgstr "Kopírovat" + +msgid "Cut" +msgstr "Vyjmout" + +msgid "Paste" +msgstr "Vložit" + +msgid "Set as home" +msgstr "Nastavit jako domovskou stránku" + +msgid "is restricted" +msgstr "je omezeno" + +msgid "last change by" +msgstr "poslední změna od" + +msgid "last change on" +msgstr "poslední změna" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Seznam stránek" + +msgid "Search" +msgstr "Vyhledat" + +msgid "Page Tree" +msgstr "Strom stránek" + +msgid "Reset filter" +msgstr "Původní filtr" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +"Obnovit odstraněnou položku %(name)s\n" +" " + +msgid "Main Navigation" +msgstr "Hlavní navigace" + +msgid "Options" +msgstr "Možnosti" + +msgid "Successfully moved" +msgstr "Úspěšně přesunuto" + +msgid "Changes within the tree might require a refresh." +msgstr "Změny ve stromu mohou vyžadovat obnovení." + +msgid "Error:" +msgstr "Chyba:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Tuto stránku nelze zkopírovat, protože je k ní připojena aplikace. Podívejte" +" se na pokročilá nastavení stránky pro správu aplikací." + +msgid "Are you sure you want to § this page?" +msgstr "Opravdu chcete § tuto stránku?" + +msgid "Reload" +msgstr "Obnovit" + +msgid "New node" +msgstr "Nový uzel" + +msgid "nodes" +msgstr "uzly" + +msgid "View" +msgstr "Zobrazit" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Zatím tu žádná položka typu %(object)s není.\n" +"
\n" +" Přidat položku typu %(object)s nyní.\n" +" " + +msgid "Copy options" +msgstr "Kopírovat volby" + +msgid "Choose copy options" +msgstr "Zvolte volby pro zkopírování" + +msgid "Close" +msgstr "Zavřít" + +msgid "Legend" +msgstr "Legenda" + +msgid "In menu" +msgstr "V menu" + +msgid "Not in menu" +msgstr "Není v menu" + +msgid "View page" +msgstr "Zobrazit stránku" + +msgid "Softroot" +msgstr "Softroot" + +msgid "Apphook" +msgstr "Přípojka aplikace" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Aplikace: %(apphook)s" + +msgid "in menu" +msgstr "v menu" + +msgid "not in menu" +msgstr "není v menu" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Nastavení stránky (SHIFT + kliknutí pro Pokročilé nastavení)" + +msgid "Permissions" +msgstr "Oprávnění" + +msgid "inherited" +msgstr "zděděno" + +msgid "This page has no preview!" +msgstr "Tato stránka nemá náhled!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Připojená přípojka aplikace pravděpodobně neposkytuje obsah pro svůj kořen." + +msgid "It is being redirected to:" +msgstr "Přesměrovává na:" + +msgid "Clipboard" +msgstr "Schránka" + +msgid "Add plugin" +msgstr "Přidat plugin" + +msgid "Copy all" +msgstr "Kopírovat vše" + +msgid "Copy from" +msgstr "Kopírovat z" + +msgid "Empty all" +msgstr "Odebrat vše" + +msgid "Filter plugins..." +msgstr "Vyfiltrovat pluginy..." + +msgid "Expand all" +msgstr "Rozbalit vše" + +msgid "Collapse all" +msgstr "Sbalit vše" + +msgid "You cannot add plugins to this plugin." +msgstr "Není možné přidat pluginy do tohoto pluginu." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "Tento plugin nelze přesunout ani upravit mimo nadřazený modul" + +msgid "Clipboard is empty." +msgstr "Schránka je prázdná." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Tento plugin neumožňuje zanořovat pluginy tohoto typu." + +msgid "This plugin cannot have nested plugins." +msgstr "Tento plugin nemůže mít zanořené pluginy." + +msgid "Highlight" +msgstr "Zvýraznění" + +msgid "Available plugins" +msgstr "Dostupné typy obsahu" + +msgid "Toggle structure" +msgstr "Přepnout strukturu" + +msgid "Login" +msgstr "Přihlášení" + +msgid "Add plugin to" +msgstr "Přidat plugin do" + +msgid "More" +msgstr "Více" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Vývojová verze používající django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Storno" + +msgid "The following error occurred:" +msgstr "Došlo k následující chybě:" + +msgid "Action successful." +msgstr "Akce úspěšná." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Určitě chcete odstranit tento plugin?" + +msgid "Are you sure you want to publish this page?" +msgstr "Jste si jisti, že chcete publikovat tuto stránku?" + +msgid "Plugin will be added here" +msgstr "Zde bude přidán plugin" + +msgid "You have unsaved changes." +msgstr "Existují neuložené změny." + +msgid "Loading" +msgstr "Načítám" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Chcete zahodit tyto změny?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "Formulář nelze nahrát. Prosím zkontrolujte že aplikace beží korektně." + +msgid "Most used" +msgstr "Nejvíc používané" + +msgid "Shortcuts" +msgstr "Zkratky" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Stránka byla mezitím změněna, znovu se načítá ..." + +msgid "CMS-wide Shortcuts" +msgstr "Klávesové zkratky napříč CMS" + +msgid "Bring up this help dialog" +msgstr "Zobrazit dialog nápovědy" + +msgid "Close/cancel" +msgstr "Zavřít/zrušit" + +msgid "Toggle structure mode" +msgstr "Přepnout režim struktury" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Přepnout režim struktury a zvýraznit ukazatel myši nad pluginem" + +msgid "Open \"Create\" dialog" +msgstr "Otevřít dialog pro Vytvoření" + +msgid "Focus on Toolbar" +msgstr "Zaměřte se na panel nástrojů" + +msgid "Focus on placeholders" +msgstr "Zaměřte se na placeholdery" + +msgid "Move to next/previous element" +msgstr "Přesun na následující/předcházející prvek" + +msgid "Focus on plugins of placeholder" +msgstr "Zaměřte se na pluginy placeholderů" + +msgid "Edit plugin" +msgstr "Upravit plugin" + +msgid "Open actions menu" +msgstr "Otevřít menu akcí" + +msgid "Expand/collapse" +msgstr "Rozvinout/sbalit" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Přihlášení se nezdařilo. Zkontrolujte prosím jméno a heslo " +"a zkuste to znovu." + +msgid "Double-click to edit" +msgstr "Poklepáním myši editujte" + +msgid "Tap to edit" +msgstr "Ťukněte sem pro editaci" + +msgid "Click to go back" +msgstr "Klikněte pro krok zpět" + +msgid "Click to go forward" +msgstr "Klikněte pro krok vpřed" + +msgid "Minimize" +msgstr "Minimalizovat" + +msgid "Maximize" +msgstr "Maximalizovat" + +msgid "Placeholder not editable" +msgstr "Placeholder nelze upravovat" + +msgid "Drop a plugin here" +msgstr "Přesuňte pložku obsahu sem" + +msgid "Welcome to your new django CMS installation!" +msgstr "Vítejte ve vaší nové instalaci django CMS!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Verze %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Pojďme společně vytvořit něco skvělého!" + +msgid "Please log in" +msgstr "Přihlaste se prosím" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Přidejte svou první stránku\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Pomozte s financováním

\n" +"

\n" +" Vaše finanční podpora přímo prospívá produktu, zejména prostřednictvím\n" +" programu django CMS Fellowship!\n" +"

\n" +"

\n" +" Rychlý způsob, jak můžete vy nebo vaše organizace přispět, je na\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Přidejte se k nám

\n" +"

\n" +" Asociace django CMS je nezisková organizace, která financuje a řídí vývoj\n" +" django CMS.\n" +"

\n" +"

\n" +" Můžete se přidat jako jednotlivec nebo jako\n" +" organizace.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Přispějte

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Poznámky instalace" + +msgid "Support" +msgstr "Podpora" + +msgid "Documentation" +msgstr "Dokumentace" + +msgid "User guide" +msgstr "Uživatelská příručka" + +msgid "Give back" +msgstr "Přispějte zpět" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Pokud nevidíte logo CMS django nahoře, ujistěte se\n" +" propojili jste složku static / cms s vaší\n" +" statické soubory.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Tuto zprávu vidíte, protože máte nastaveno\n" +" DEBUG = True v nastavení projektu a ještě není vytvořena žádná stránka.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Vítejte v django CMS" + +msgid "Add Another" +msgstr "Přidat další" + +msgid "Back" +msgstr "Zpět" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" +"Prosím zvolte jednu z možností uvedených níže, pro pokračování k dalšímu " +"kroku." + +msgid "Next" +msgstr "Další" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Neznámé" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Stránka nenalezena na webu %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Template tag nemůže najít stránku s argumenty vyhledávání `%(page_lookup)s`." +" URL požadavku bylo: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Dva sloupce" + +msgid "Three columns" +msgstr "Tři sloupce" + +msgid "username" +msgstr "uživatelské jméno" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "Povinné. 300 znaků nebo méně. Písmena, čísla a znaky @/./+/-/_" + +msgid "Enter a valid username." +msgstr "Zadejte platné uživatelské jméno." + +msgid "email address" +msgstr "mailto" + +msgid "staff status" +msgstr "stav personálu" + +msgid "Designates whether the user can log into this admin site." +msgstr "Určuje, zda se uživatel smí přihlásit do administrace." + +msgid "active" +msgstr "aktivní" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Určuje, zda má být uživatel brán jako aktivní. Zrušte toto nastavení namísto" +" mazání účtu." + +msgid "users" +msgstr "uživatelé" + +msgid "Title Extension" +msgstr "Název stránky" + +msgid "Page Extension" +msgstr "Rozšíření stránky" + +msgid "object ID" +msgstr "ID objektu" + +msgid "Example1 App" +msgstr "Příklad 1 aplikace" + +msgid "MultilingualExample1 App" +msgstr "Výcejazyčný příklad 1 aplikace" + +msgid "Example1" +msgstr "Příklad 1" + +msgid "Examples" +msgstr "Příklady" + +msgid "Extra Context" +msgstr "Další souvislosti" + +msgid "Articles" +msgstr "Články" + +msgid "Sample App" +msgstr "Ukázková aplikace" + +msgid "Sample App with config" +msgstr "Vzorová aplikace s konfigurací" + +msgid "Sample App with excluded permissions" +msgstr "Vzorová aplikace s vyňatými právy" + +msgid "Sample App 2" +msgstr "Ukázková aplikace 2" + +msgid "Sample App 3" +msgstr "Ukázková aplikace 2" + +msgid "Sample App Without Landing Page" +msgstr "Ukázková aplikace bez vstupní stránky" + +msgid "Namespaced App" +msgstr "Namespaced App" + +msgid "Parent app" +msgstr "Aplikace rodiče" + +msgid "Child app" +msgstr "Aplikace potomka" + +msgid "Variable urls-menus App" +msgstr "Variabilní adresy URL - menu aplikací" + +msgid "sample root page" +msgstr "ukázková výchozí stránka" + +msgid "sample settings page" +msgstr "ukázková stránka s nastavením" + +msgid "sample account page" +msgstr "ukázková stránka účtu" + +msgid "sample my profile page" +msgstr "ukázková profilová stránka" + +msgid "Static Menu" +msgstr "Statické Menu" + +msgid "Static Menu2" +msgstr "Statické Menu2" + +msgid "Static Menu3" +msgstr "Statické Menu3" + +msgid "Static Menu4" +msgstr "Statické Menu" + +msgid "Category" +msgstr "Kategorie" + +msgid "Categories" +msgstr "Kategorie" + +msgid "Add Category" +msgstr "Přidat kategorii" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Upravit kategorii" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Děkujeme za dnešní kvalitní strávení času s našimi stránkami." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Podědit šablonu nejbližšího předka" + +msgid "UserSettings" +msgstr "Uživatelské nastavení" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Přidat plugin do placeholderu „%(placeholder_label)s“" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Přidat plugin k %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Jeden placeholder" + +msgid "CMS - your user account was created." +msgstr "CMS - Váš uživatelský účet byl vytvořen." + +msgid "CMS - your user account was changed." +msgstr "CMS - váš uživatelský účet byl změněn." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Tento blok už obsahuje maximální povolený počet položek obsahu (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Tento blok už obsahuje maximální povolený počet (%(limit)s) položek typu " +"%(plugin_name)s." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Nelze najít zadaný modul CMS_REQUEST_IP_RESOLVER: „{0}“." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Nelze najít zadanou funkci CMS_REQUEST_IP_RESOLVER: „{0}“ v modulu „{1}“." + +#, python-format +msgid "Create a new %s instance." +msgstr "Vytvořit novou instanci %s." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Průvodce již byl přiřazen modelu: %s" diff --git a/cms/locale/cs/LC_MESSAGES/djangojs.po b/cms/locale/cs/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..b2c21726 --- /dev/null +++ b/cms/locale/cs/LC_MESSAGES/djangojs.po @@ -0,0 +1,26 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Jakub Dorňák , 2013 +# Jakub Dorňák , 2013 +# xlu , 2013 +# xlu , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: xlu , 2013\n" +"Language-Team: Czech (http://app.transifex.com/divio/django-cms/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" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Určitě chcete změnit záložku bez uložení změn?" diff --git a/cms/locale/cs_CZ/LC_MESSAGES/django.po b/cms/locale/cs_CZ/LC_MESSAGES/django.po new file mode 100644 index 00000000..0ca8ab07 --- /dev/null +++ b/cms/locale/cs_CZ/LC_MESSAGES/django.po @@ -0,0 +1,2266 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Czech (Czech Republic) (https://app.transifex.com/divio/teams/58664/cs_CZ/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs_CZ\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/cs_CZ/LC_MESSAGES/djangojs.po b/cms/locale/cs_CZ/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..eb8e0c5c --- /dev/null +++ b/cms/locale/cs_CZ/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Czech (Czech Republic) (http://app.transifex.com/divio/django-cms/language/cs_CZ/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs_CZ\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/cy/LC_MESSAGES/django.po b/cms/locale/cy/LC_MESSAGES/django.po new file mode 100644 index 00000000..35f272b0 --- /dev/null +++ b/cms/locale/cy/LC_MESSAGES/django.po @@ -0,0 +1,2266 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Welsh (https://app.transifex.com/divio/teams/58664/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" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/cy/LC_MESSAGES/djangojs.po b/cms/locale/cy/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..457d643b --- /dev/null +++ b/cms/locale/cy/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Welsh (http://app.transifex.com/divio/django-cms/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" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/da/LC_MESSAGES/django.po b/cms/locale/da/LC_MESSAGES/django.po new file mode 100644 index 00000000..abb1e285 --- /dev/null +++ b/cms/locale/da/LC_MESSAGES/django.po @@ -0,0 +1,1660 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# valberg , 2025 +# Jonas Hyatt , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Danish (https://app.transifex.com/divio/teams/58664/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" + +msgid "All" +msgstr "Alle" + +msgid "Copy permissions" +msgstr "Kopiér rettigheder" + +msgid "Slug" +msgstr "Slug" + +msgid "The part of the title that is used in the URL" +msgstr "Del af titlen der bliver brugt i adressen" + +msgid "Page type" +msgstr "Sidetype" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Sidetyper" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Overskriv adresse" + +msgid "Keep this field empty if standard path should be used." +msgstr "Lad feltet stå tomt, hvis standardstien skal bruges" + +msgid "Start typing..." +msgstr "Begynd at taste" + +msgid "menu visibility" +msgstr "menu synlighed" + +msgid "limit when this page is visible in the menu" +msgstr "begræns hvornår denne side er synlig i menuen" + +msgid "X Frame Options" +msgstr "X Frame Options" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "Applikation" + +msgid "Hook application to this page." +msgstr "Tilknyt applikation til denne side" + +msgid "Application configurations" +msgstr "Applikations konfigurationer" + +msgid "A page with this reverse URL id exists already." +msgstr "En side med denne reverse adresse id eksisterer allerede" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "En applikationsinstans med denne konfiguration eksisterer allerede." + +msgid "An application instance with this name already exists." +msgstr "En applikationsinstans med dette navn eksisterer allerede." + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "Ja" + +msgid "No" +msgstr "Nej" + +msgid "user" +msgstr "bruger" + +msgid "can_view" +msgstr "kan læse" + +msgid "Add" +msgstr "Tilføj" + +msgid "Change" +msgstr "Ret" + +msgid "Delete" +msgstr "Slet" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Brugere kan ikke oprette en side uden rettigheder til at ændre den oprettede" +" side. Ret de relevante brugerrettigheder." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Brugere kan ikke slette en side uden rettigheder til at ændre siden. Ret de " +"relevante brugerrettigheder." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Brugere kan ikke sætte side tilladelser uden rettigheder til at ændre den " +"siden. Ret de relevante brugerrettigheder." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Brugere kan ikke slette siden uden rettigheder til at ændre siden. Ret de " +"relevante brugerrettigheder." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Ugyldig plugin type '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Sprog skal sættes til et understøttet sprog!" + +msgid "Parent plugin language must be same as language!" +msgstr "Forældreplugin sprog skal være det samme som indstillet sprog!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "Avancerede indstillinger" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s objekt med primære nøgle %(key)r findes ikke." + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Fejl! Du har ikke rettigheder til at flytte denne side. Genindlæs venligst " +"siden" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Fejl! Du har ikke rettigheder til at kopiere denne side." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Fejl! Den side du indsætter er ikke oversat til nogen af de sprog der er " +"konfigureret af siden." + +msgid "You do not have permission to edit this page" +msgstr "Du har ikke rettigheder til at redigere denne side" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "Tilføj oversættelse" + +msgid "Add Page Copy" +msgstr "Tilføj Side Kopi" + +msgid "New sub page" +msgstr "Ny underside" + +msgid "New page" +msgstr "Ny side" + +msgid "Database error" +msgstr "Database fejl" + +msgid "Template not valid" +msgstr "Skabelonen er ikke gyldig" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "Skabelonen er blevet ændret" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "Du har ikke rettigheder til at kopiere disse plugins." + +msgid "You do not have permission to delete this page" +msgstr "Du har ikke rettigheder til at slette denne side" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Titel og plugins med sproget %(language)s blev slettet" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "Tom" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "Se begrænsning" + +msgid "View restrictions" +msgstr "Se begrænsninger" + +#, python-format +msgid "Field %s not found" +msgstr "Feltet %s blev ikke fundet" + +msgid "You do not have permission to edit this item" +msgstr "Du har ikke rettigheder til at redigere dette element" + +msgid "You do not have permission to add a plugin" +msgstr "Du har ikke rettigheder til at tilføje et plugin" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "Plugin blev ikke fundet" + +msgid "You do not have permission to edit this plugin" +msgstr "Du har ikke rettigheder til at redigere dette plugin" + +msgid "You have no permission to paste this plugin" +msgstr "Du har ikke rettigheder til at indsætte dette plugin" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "Du har ikke rettigheder til at flytte dette plugin" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "Du har ikke rettigheder til at slette dette plugin" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "%(name)s pluginet \"%(obj)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 "You do not have permission to clear this placeholder" +msgstr "Du har ikke rettigheder til at tømme denne placeholder" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Placeholderen \"%(obj)s\" blev tømt." + +msgid "placeholder" +msgstr "placeholder" + +msgid "Page permissions" +msgstr "Siderettigheder" + +msgid "User & Group permissions" +msgstr "Bruger- og grupperettigheder" + +msgid "Page permissions management" +msgstr "Siderettighedeshåndtering" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "Preview" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Pladsholder" + +msgid "Create" +msgstr "Opret" + +msgid "Edit" +msgstr "Redigér" + +msgid "Structure" +msgstr "Struktur" + +msgid "Content" +msgstr "Indhold" + +msgid "Sites" +msgstr "Sider" + +msgid "Admin Sites" +msgstr "Admin sider" + +msgid "Administration" +msgstr "Administration" + +msgid "User settings" +msgstr "Bruger indstillinger" + +msgid "Clipboard..." +msgstr "Udklipsholder..." + +msgid "Clear clipboard" +msgstr "Ryd udklipsholder" + +msgid "Disable toolbar" +msgstr "Deaktiver værktøjslinje" + +msgid "Shortcuts..." +msgstr "Genveje..." + +msgid "Users" +msgstr "Brugere" + +#, python-format +msgid "Logout %s" +msgstr "Log ud %s" + +msgid "Logout" +msgstr "Log ud" + +msgid "Language" +msgstr "Sprog" + +msgid "Delete Translation" +msgstr "Slet oversættelse" + +msgid "Copy all plugins" +msgstr "Kopiér alle plugins" + +#, python-format +msgid "from %s" +msgstr "fra %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Er du sikker på at du vil kopiere alle plugins fra %s?" + +msgid "Pages" +msgstr "Sider" + +msgid "Page" +msgstr "Side" + +msgid "Create Page" +msgstr "Opret side" + +msgid "New Page" +msgstr "Ny Side" + +msgid "New Sub Page" +msgstr "Ny Underside" + +msgid "Duplicate this Page" +msgstr "Duplikér denne Side" + +msgid "Page settings" +msgstr "Sideindstillinger" + +msgid "Advanced settings" +msgstr "Avancerede indstillinger" + +msgid "Templates" +msgstr "Skabeloner" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "Skjul i navigation" + +msgid "Display in navigation" +msgstr "Vis i navigation" + +msgid "Delete page" +msgstr "Slet side" + +msgid "Create a new page next to the current page." +msgstr "Opret ny side ved siden af den nuværende side." + +msgid "Create a page below the current page." +msgstr "Opret ny side under den nuværende side." + +msgid "Select a valid site" +msgstr "Vælg et gyldigt website" + +msgid "Select a valid page" +msgstr "Vælg en gyldig side" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "position" + +msgid "language" +msgstr "sprog" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "oprettelsesdato" + +msgid "can edit" +msgstr "kan redigere" + +msgid "can add" +msgstr "kan tilføje" + +msgid "can delete" +msgstr "kan slette" + +msgid "can change advanced settings" +msgstr "kan ændre avancerede indstillinger" + +msgid "can publish" +msgstr "kan publicere" + +msgid "can change permissions" +msgstr "can ændre rettigheder" + +msgid "can move" +msgstr "kan flytte" + +msgid "view restricted" +msgstr "se begrænsede" + +msgid "can recover pages" +msgstr "kan genskabe sider" + +msgid "group" +msgstr "gruppe" + +msgid "sites" +msgstr "websites" + +msgid "created by" +msgstr "oprettet af" + +msgid "changed by" +msgstr "ændret af" + +msgid "publication date" +msgstr "offentliggørelsesdato" + +msgid "publication end date" +msgstr "offentliggørelsens udløbsdato" + +msgid "in navigation" +msgstr "i navigationen" + +msgid "soft root" +msgstr "soft root" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "vedhæftet menu" + +msgid "template" +msgstr "skabelon" + +msgid "login required" +msgstr "login krævet" + +msgid "application" +msgstr "applikation" + +msgid "application instance name" +msgstr "applikation instansnavn" + +msgid "site" +msgstr "website" + +msgid "Grant on" +msgstr "Tildel til" + +msgid "page" +msgstr "side" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "kun for brugere der er logget ind" + +msgid "for anonymous users only" +msgstr "kun for anonyme brugere" + +msgid "Inherit from parent page" +msgstr "Nedarv fra forældreside" + +msgid "Deny" +msgstr "Afvis" + +msgid "Only this website" +msgstr "Kun dette website" + +msgid "Allow" +msgstr "Tillad" + +msgid "title" +msgstr "titel" + +msgid "The default title" +msgstr "Standard titel" + +msgid "Page Title" +msgstr "Sidetitel" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "Overskriv hvad der er vist i toppen af din browser eller bogmærker" + +msgid "Menu Title" +msgstr "Menutitel" + +msgid "Overwrite what is displayed in the menu" +msgstr "Overskriv hvad der bliver vist i menuen" + +msgid "Description meta tag" +msgstr "Beskrivelse meta tag" + +msgid "A description of the page used by search engines." +msgstr "En beskrivelse af siden til brug for søgemaskiner" + +msgid "redirect" +msgstr "omdirigér" + +msgid "Redirects to this URL." +msgstr "Videresend til denne adresse" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" +"Alle sider placeret over denne i navigationen bliver ikke vist i " +"navigationen." + +msgid "The template used to render the content." +msgstr "Skabelonen der bliver brugt til at rendere indholdet." + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "standard" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Et unikt navn der bliver brugt med page_url skabelon tagget for at linke til" +" denne side" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "sider" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Sti" + +msgid "Current page" +msgstr "Aktuel side" + +msgid "Page children (immediate)" +msgstr "Side børn (umiddelbare)" + +msgid "Page and children (immediate)" +msgstr "Side og børn (umiddelbare)" + +msgid "Page descendants" +msgstr "Side efterkommere" + +msgid "Page and descendants" +msgstr "Side og efterkommere" + +msgid "on page level" +msgstr "på side niveau" + +msgid "frontend view restriction" +msgstr "frontend adgangsbegrænsning" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "kan genskabe enhver slettet side" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "Hvis intet er valgt har brugeren adgang til alle websites." + +msgid "Page global permission" +msgstr "Global siderettighed" + +msgid "Pages global permissions" +msgstr "Globale siderettigheder" + +msgid "Page permission" +msgstr "Siderettigheder" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Rettighed til at tilføje sider kræver at der også er adgang til undersider," +" ellers kan siden ikke blive ændret af brugeren der har oprettet den." + +msgid "User (page)" +msgstr "Bruger (side)" + +msgid "Users (page)" +msgstr "Brugere (side)" + +msgid "User group (page)" +msgstr "Brugergruppe (side)" + +msgid "User groups (page)" +msgstr "Brugergrupper (side)" + +msgid "slot" +msgstr "åbning" + +msgid "width" +msgstr "bredde" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Sprog for administrationsgrænseflade og værktøjslinje" + +msgid "user setting" +msgstr "brugerindstilling" + +msgid "user settings" +msgstr "brugerindstillinger" + +msgid "by template" +msgstr "efter skabelon" + +msgid "by code" +msgstr "efter kode" + +msgid "static placeholder name" +msgstr "statisk pladsholder navn" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Beskrivende navn til at identificere denne statiske pladsholder. Bliver ikke" +" vist til brugere." + +msgid "placeholder code" +msgstr "pladsholder kode" + +msgid "To render the static placeholder in templates." +msgstr "For at rendere den statiske pladsholder i skabeloner." + +msgid "placeholder content" +msgstr "pladsholder indhold" + +msgid "creation_method" +msgstr "oprettelse_metode" + +msgid "static placeholder" +msgstr "statisk pladsholder" + +msgid "static placeholders" +msgstr "statiske pladsholdere" + +msgid "A static placeholder with the same site and code already exists" +msgstr "En statisk pladsholder med samme side og kode findes i forvejen." + +msgid "Advanced options" +msgstr "Avancerede indstillinger" + +msgid "Generic" +msgstr "Generisk" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "Der er ikke flere indstillinger for dette plugin. Tryk venligst gem." + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "Ændret" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "Gem" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "Login i administrationen her." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Login adresse: %(login_url)s" + +msgid "Username:" +msgstr "Brugernavn:" + +msgid "Password:" +msgstr "Kodeord:" + +msgid "Add a page" +msgstr "Tilføj en side" + +msgid "Change a page" +msgstr "Ret en side" + +msgid "Home" +msgstr "Forside" + +msgid "View on site" +msgstr "Se på siden" + +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." + +msgid "All permissions" +msgstr "Alle rettigheder" + +msgid "Loading..." +msgstr "Indlæser..." + +msgid "Save and continue editing" +msgstr "Gem og forsæt redigering" + +#, 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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "Bruger" + +msgid "Group" +msgstr "Gruppe" + +msgid "Can edit" +msgstr "Kan redigere" + +msgid "Can add" +msgstr "Kan tilføje" + +msgid "Can delete" +msgstr "Kan slette" + +msgid "Can publish" +msgstr "Kan publicere" + +msgid "Can change permissions" +msgstr "Kan ændre rettigheder" + +msgid "Can move" +msgstr "Kan flytte" + +msgid "Can view" +msgstr "Kan se" + +msgid "(global)" +msgstr "(global)" + +msgid "(current)" +msgstr "(aktuel)" + +msgid "Page doesn't inherit any permissions." +msgstr "Siden nedarver ingen rettigheder." + +msgid "Edit model" +msgstr "Redigér model" + +msgid "Save as new" +msgstr "Gem som ny" + +msgid "Save and add another" +msgstr "Gem og tilføj en til" + +msgid "Copy" +msgstr "Kopiér" + +msgid "Cut" +msgstr "Klip" + +msgid "Paste" +msgstr "Indsæt" + +msgid "Set as home" +msgstr "Markér som hjem" + +msgid "is restricted" +msgstr "er begrænset" + +msgid "last change by" +msgstr "sidst ændring af" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Sideliste" + +msgid "Search" +msgstr "Søg" + +msgid "Page Tree" +msgstr "Sidetræ" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "Flyttet med success" + +msgid "Changes within the tree might require a refresh." +msgstr "Ændringer i træet kan kræve en genindlæsning." + +msgid "Error:" +msgstr "Fejl:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "Genindlæs" + +msgid "New node" +msgstr "Ny node" + +msgid "nodes" +msgstr "noder" + +msgid "View" +msgstr "Vis" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "Kopiér indstillinger" + +msgid "Choose copy options" +msgstr "Vælg koperingsindstillinger" + +msgid "Close" +msgstr "Luk" + +msgid "Legend" +msgstr "Legende" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "Vis side" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Applikation: %(apphook)s" + +msgid "in menu" +msgstr "i menu" + +msgid "not in menu" +msgstr "ikke i menuen" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "Rettigheder" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "Denne side har ingen forhåndsvisning!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "Den bliver omdirigeret til:" + +msgid "Clipboard" +msgstr "Udklipsholder" + +msgid "Add plugin" +msgstr "Tilføj plugin" + +msgid "Copy all" +msgstr "Kopiér alle" + +msgid "Copy from" +msgstr "Kopiér fra" + +msgid "Empty all" +msgstr "Tøm alle" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "Udvid alle" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "Udklipsholderen er tom." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "Tilgængelige plugins" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "Login" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "Mere" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "Annullér" + +msgid "The following error occurred:" +msgstr "Den følgende fejl opstod:" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "Er du sikker på at du vil slette dette plugin?" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Login fejlede. Venligst tjek dine " +"identifikationsoplysninger og prøv igen." + +msgid "Double-click to edit" +msgstr "Dobbelklik for at redigere" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "Drop et plugin her" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "Tilføj endnu en" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Siden blev ikke fundet på %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Et templatetag kunne ikke finde sidee med parametrene `%(page_lookup)s`. " +"Adressen for forespørgelsen var: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "email adresse" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "Titeludvidelse" + +msgid "Page Extension" +msgstr "Sideudvidelse" + +msgid "object ID" +msgstr "objekt ID" + +msgid "Example1 App" +msgstr "Eksempel1 Applikation" + +msgid "MultilingualExample1 App" +msgstr "FlersprogetEksempel1 Applikation" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "Ekstra Kontekst" + +msgid "Articles" +msgstr "Artikler" + +msgid "Sample App" +msgstr "Eksempel app" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "Eksempel App 2" + +msgid "Sample App 3" +msgstr "Eksempel App 2" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "Namepaced App" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "eksempel grundside" + +msgid "sample settings page" +msgstr "eksempel indstillingsside" + +msgid "sample account page" +msgstr "eksempel kontoside" + +msgid "sample my profile page" +msgstr "eksempel min profil side" + +msgid "Static Menu" +msgstr "Statisk Menu" + +msgid "Static Menu2" +msgstr "Statisk Menu2" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "Statisk Menu" + +msgid "Category" +msgstr "Kategori" + +msgid "Categories" +msgstr "Kategorier" + +msgid "Add Category" +msgstr "Tilføj Kategori" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Ret Kategori" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "Nedarv skabelon den nærmeste forældre" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "CMS - din bruger blev oprettet." + +msgid "CMS - your user account was changed." +msgstr "CMS - din brugerkonto blev ændret." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Denne placeholder har allerede det maskimale antal plugins (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Denne placeholder har allerede det maksimale antal (%(limit)s) tilladte " +"%(plugin_name)s plugins." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/da/LC_MESSAGES/djangojs.po b/cms/locale/da/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..0cdde853 --- /dev/null +++ b/cms/locale/da/LC_MESSAGES/djangojs.po @@ -0,0 +1,25 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Kristian Øllegaard , 2011 +# Kristian Øllegaard , 2011 +# Kristian Øllegaard , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Kristian Øllegaard , 2011\n" +"Language-Team: Danish (http://app.transifex.com/divio/django-cms/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" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Er du sikker på du vil ændre tabs uden at gemme siden først?" diff --git a/cms/locale/de/LC_MESSAGES/django.po b/cms/locale/de/LC_MESSAGES/django.po new file mode 100644 index 00000000..06fdcf32 --- /dev/null +++ b/cms/locale/de/LC_MESSAGES/django.po @@ -0,0 +1,1774 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# djangoger , 2023 +# Angelo Dini , 2023 +# Hendrik Richter , 2025 +# Jannik Vieten , 2026 +# Alexander Elvers , 2026 +# Fabian Braun , 2026 +# Peter Wischer , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Peter Wischer , 2026\n" +"Language-Team: German (https://app.transifex.com/divio/teams/58664/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" + +msgid "All" +msgstr "Alle" + +msgid "Copy permissions" +msgstr "Berechtigungen kopieren" + +msgid "Slug" +msgstr "Slug" + +msgid "The part of the title that is used in the URL" +msgstr "Die Kurzform des Titels, die in URLs verwendet wird" + +msgid "Page type" +msgstr "Seitentyp" + +msgid "You do not have permission to change this page." +msgstr "Sie haben nicht die Berechtigung, diese Seite zu ändern." + +msgid "Page Types" +msgstr "Seitentypen" + +msgid "You do not have permission to copy this page." +msgstr "Sie haben nicht die Berechtigung, diese Seite zu kopieren." + +msgid "Overwrite URL" +msgstr "Manuelle URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "" +"Lassen Sie dieses Feld leer, wenn die automatisch generierte URL verwendet " +"werden soll." + +msgid "Start typing..." +msgstr "Geben Sie etwas ein …" + +msgid "menu visibility" +msgstr "Menü-Sichtbarkeit" + +msgid "limit when this page is visible in the menu" +msgstr "Limitiert, wer diese Seite im Menu sehen kann." + +msgid "X Frame Options" +msgstr "\"X-Frame\"-Optionen" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Ob diese Seite von anderen Websites eingebunden werden kann." + +msgid "URL options" +msgstr "URL-Optionen" + +msgid "Menu options" +msgstr "Menü-Optionen" + +msgid "Headers" +msgstr "Headers" + +msgid "Application" +msgstr "Applikation" + +msgid "Hook application to this page." +msgstr "Schließen Sie Applikationen an diese Seite an." + +msgid "Application configurations" +msgstr "Applikationskonfiguration" + +msgid "A page with this reverse URL id exists already." +msgstr "Eine andere Seite mit dieser Reverse-URL-ID ist bereits vorhanden." + +msgid "Invalid application config value" +msgstr "Ungültiger Applikationskonfigurationswert" + +msgid "An application instance using this configuration already exists." +msgstr "Eine Applikationsinstanz mit dieser Konfiguration existiert bereits." + +msgid "An application instance with this name already exists." +msgstr "Eine Applikation-Instanz mit diesem Namen existiert bereits." + +msgid "You can't move the home page inside another page" +msgstr "Die Startseite kann nicht in ein andere Seite verschoben werden" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Es können nicht zwei Seiten mit demselben Slug auf derselben Ebene " +"existieren. Bitte ändern Sie den Slug einer der Seiten, bevor Sie erneut " +"versuchen zu verschieben." + +msgid "Yes" +msgstr "Ja" + +msgid "No" +msgstr "Nein" + +msgid "user" +msgstr "Benutzer" + +msgid "can_view" +msgstr "Kann sehen" + +msgid "Add" +msgstr "Hinzufügen" + +msgid "Change" +msgstr "Ändern" + +msgid "Delete" +msgstr "Löschen" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Benutzer können keine Seite erstellen, ohne die Berechtigung zu haben, die " +"erstellte Seite zu editieren." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Benutzer können keine Seite löschen, ohne die Berechtigung zu haben, die " +"Seite zu editieren." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Benutzer können keine Seitenberechtigungen setzen, ohne die Berechtigung zu " +"haben, Seiten zu editieren." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Benutzer können keine Seitenberechtigungen löschen, ohne die Berechtigung zu" +" haben, Seiten zu editieren." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Benutzer können keine Seitenberechtigungen erstellen, ohne die Berechtigung " +"zu haben, die erstellte Berechtigung zu editieren." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Benutzer können keine Seitenberechtigungen löschen, ohne die Berechtigung zu" +" haben, Berechtigungen zu editieren." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Invalider Baustein-Typ '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Sprache muss auf eine unterstützte Sprache gesetzt werden!" + +msgid "Parent plugin language must be same as language!" +msgstr "Übergeordneter Baustein muss die gleiche Sprache haben!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Übergeordneter Baustein muss im selben Platzhalter sein!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Baustein-Position muss größer sein als %(position)d." + +msgid "Translations" +msgstr "Übersetzungen" + +msgid "Advanced Settings" +msgstr "Erweiterte Einstellungen" + +msgid "The page is not eligible to be home." +msgstr "Die Seite ist nicht berechtigt die Startseite zu sein." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s Objekt mit Primärschlüssel %(key)r existiert nicht." + +msgid "error" +msgstr "Fehler" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Error! Sie haben keine Berechtigung, um diese Seite zu verschieben. Bitte " +"laden Sie die Seite neu." + +msgid "Error! You don't have permissions to copy this page." +msgstr "" +"Fehler! Sie haben nicht die Berechtigungen um diese Seite zu kopieren." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Fehler! Die Seite, welche Sie versuchen einzufügen ist in keine der Sprachen" +" übersetzt, die in der Zielseite konfiguriert sind." + +msgid "You do not have permission to edit this page" +msgstr "Sie haben nicht die Berechtigung, diese Seite zu bearbeiten." + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(für Änderungen zunächst die Veröffentlichung dieser Seite rückgängig " +"machen)" + +msgid "Add Translation" +msgstr "Übersetzung hinzufügen" + +msgid "Add Page Copy" +msgstr "Seitenkopie hinzufügen" + +msgid "New sub page" +msgstr "Neue Unterseite" + +msgid "New page" +msgstr "Neue Seite" + +msgid "Database error" +msgstr "Datenbankfehler" + +msgid "Template not valid" +msgstr "Vorlage ist ungültig" + +msgid "Placeholder selection not valid" +msgstr "Platzhalter-Auswahl ungültig" + +msgid "The template was successfully changed" +msgstr "Die Vorlage wurde erfolgreich geändert" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Platzhalter '%s' existiert nicht in der Zielsprache" + +msgid "You do not have permission to copy these plugins." +msgstr "Sie haben keine Berechtigung, diese Bausteine zu kopieren." + +msgid "You do not have permission to delete this page" +msgstr "Keine Berechtigung, diese Seite zu löschen" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Titel und Bausteine in der Sprache %(language)s wurden gelöscht." + +msgid "Public content" +msgstr "Öffentlicher Inhalt" + +msgid "Empty" +msgstr "Leer" + +msgid "Create Content" +msgstr "Inhalt erstellen" + +msgid "View restriction" +msgstr "Ansichts-Beschränkung" + +msgid "View restrictions" +msgstr "Ansichts-Beschränkungen" + +#, python-format +msgid "Field %s not found" +msgstr "Feld %s nicht gefunden" + +msgid "You do not have permission to edit this item" +msgstr "Sie haben keine Berechtigung dieses Objekt zu editieren." + +msgid "You do not have permission to add a plugin" +msgstr "" +"Sie haben nicht die notwendigen Rechte, um einen Baustein hinzuzufügen." + +msgid "You do not have permission to copy this placeholder." +msgstr "Sie haben nicht die Berechtigung, um diesen Platzhalter zu kopieren." + +msgid "Plugin not found" +msgstr "Baustein nicht gefunden" + +msgid "You do not have permission to edit this plugin" +msgstr "Sie haben nicht die Berechtigung, diesen Baustein zu bearbeiten." + +msgid "You have no permission to paste this plugin" +msgstr "Sie haben nicht die Berechtigung, diesen Baustein einzufügen." + +msgid "You have no permission to paste this placeholder" +msgstr "Sie haben keine Berechtigung diesen Platzhalter einzufügen" + +msgid "You have no permission to move this plugin" +msgstr "Sie haben nicht die Berechtigung, diesen Baustein zu verschieben." + +msgid "You have no permission to cut this plugin" +msgstr "Sie haben keine Berechtigung, diesen Baustein auszuschneiden." + +msgid "You do not have permission to delete this plugin" +msgstr "Sie haben nicht die Berechtigung, diesen Baustein zu löschen." + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "Der %(name)s-Baustein \"%(obj)s\" wurde erfolgreich gelöscht." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "%(name)s konnte nicht gelöscht werden" + +msgid "Are you sure?" +msgstr "Sind Sie sicher?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Sie haben nicht die Berechtigung, um diesen Platzhalter zu leeren" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Der Platzhalter \"%(obj)s\" wurde erfolgreich geleert." + +msgid "placeholder" +msgstr "Platzhalter" + +msgid "Page permissions" +msgstr "Seiten-Berechtigungen" + +msgid "User & Group permissions" +msgstr "Benutzer- und Gruppen-Berechtigungen" + +msgid "Page permissions management" +msgstr "Verwaltung der Benutzer-Berechtigungen" + +msgid "Actions" +msgstr "Aktionen" + +msgid "Empty content" +msgstr "Leerer Inhalt" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Eigenschaften (%(object_name)s)" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "%(object_name)s hinzufügen" + +msgid "Add content" +msgstr "Inhalt hinzufügen" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Der Inhalt der aktuell ausgewählten Sprache wurde bearbeitet. \"OK\" " +"verwirft die Änderungen. \"Abbrechen\" geht zum Formular zurück." + +#, python-format +msgid "Add %(language)s content" +msgstr "Inhalt auf %(language)s hinzufügen" + +msgid "Preview" +msgstr "Vorschau" + +msgid "Settings" +msgstr "Einstellungen" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Ungültige Sprache: %(value)s. Dieses Formular kann nicht bearbeitet werden. " +"Bitte die Sprache wechseln." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Kein registrierter apphook \"%r\" gefunden" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Platzhalter" + +msgid "Create" +msgstr "Erstellen" + +msgid "Edit" +msgstr "Bearbeiten" + +msgid "Structure" +msgstr "Struktur" + +msgid "Content" +msgstr "Inhalt" + +msgid "Sites" +msgstr "Website" + +msgid "Admin Sites" +msgstr "Webseiten bearbeiten" + +msgid "Administration" +msgstr "Administration" + +msgid "User settings" +msgstr "Benutzer-Einstellungen" + +msgid "Clipboard..." +msgstr "Zwischenablage..." + +msgid "Clear clipboard" +msgstr "Zwischenablage leeren" + +msgid "Disable toolbar" +msgstr "Toolbar abschalten" + +msgid "Shortcuts..." +msgstr "Tastenkürzel..." + +msgid "Users" +msgstr "Benutzer" + +#, python-format +msgid "Logout %s" +msgstr "%s abmelden" + +msgid "Logout" +msgstr "Abmelden" + +msgid "Language" +msgstr "Sprache" + +msgid "Delete Translation" +msgstr "Übersetzung löschen" + +msgid "Copy all plugins" +msgstr "Alle Bausteine kopieren" + +#, python-format +msgid "from %s" +msgstr "von %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Sind Sie sicher, dass Sie alle Bausteine von %s kopieren wollen?" + +msgid "Pages" +msgstr "Seiten" + +msgid "Page" +msgstr "Seite" + +msgid "Create Page" +msgstr "Seite erstellen" + +msgid "New Page" +msgstr "Neue Seite" + +msgid "New Sub Page" +msgstr "Neue Unterseite" + +msgid "Duplicate this Page" +msgstr "Diese Seite duplizieren" + +msgid "Page settings" +msgstr "Seiten-Einstellungen" + +msgid "Advanced settings" +msgstr "Erweiterte Einstellungen" + +msgid "Templates" +msgstr "Vorlagen" + +msgid "Placeholders" +msgstr "Platzhalter" + +msgid "Hide in navigation" +msgstr "Im Menu verstecken" + +msgid "Display in navigation" +msgstr "Im Menu anzeigen" + +msgid "Delete page" +msgstr "Seite löschen" + +msgid "Create a new page next to the current page." +msgstr "Erstelle eine neue Seite auf der gleichen Ebene wie die aktuelle." + +msgid "Create a page below the current page." +msgstr "Erstelle eine neue Seite unterhalb der aktuellen." + +msgid "Select a valid site" +msgstr "Wählen Sie eine gültige Webseite" + +msgid "Select a valid page" +msgstr "Wählen Sie eine gültige Seite" + +msgid "Enter a valid relative or absolute URL." +msgstr "Geben Sie eine gültige relative oder absolute URL ein." + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"Die Seite %(conflict_page)s hat die selbe URL '%(url)s' wie die aktuelle " +"Seite \"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"Die Seite %(conflict_page)s hat die selbe URL '%(url)s' wie die aktuelle " +"Seite." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Optional. Falls ausgefüllt, wird automatisch ein neuer Text eingefügt." + +msgid "Provide a title for the new page." +msgstr "Füge einen Titel für die neue Seite ein." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "Leer lassen um automatisch zu generieren, oder manuell überschreiben." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "Kann Slug nicht automatisch generieren. Bitte manuell eingeben." + +msgid "Please provide a valid slug." +msgstr "Bitte geben Sie eine gültige Slug an." + +msgid "You don't have the permissions required to add a page." +msgstr "Sie haben nicht die notwendigen Rechte um eine Seite hinzuzufügen." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "Position" + +msgid "language" +msgstr "Sprache" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "erstellt am" + +msgid "can edit" +msgstr "Kann bearbeiten" + +msgid "can add" +msgstr "Kann hinzufügen" + +msgid "can delete" +msgstr "Kann löschen" + +msgid "can change advanced settings" +msgstr "Kann erweiterte Einstellungen ändern" + +msgid "can publish" +msgstr "kann publizieren" + +msgid "can change permissions" +msgstr "Kann Berechtigungen ändern" + +msgid "can move" +msgstr "Kann verschieben" + +msgid "view restricted" +msgstr "Ansicht eingeschränkt" + +msgid "can recover pages" +msgstr "Kann Seiten wiederherstellen" + +msgid "group" +msgstr "Gruppe" + +msgid "sites" +msgstr "Website" + +msgid "created by" +msgstr "Erstellt von" + +msgid "changed by" +msgstr "Geändert von" + +msgid "publication date" +msgstr "Veröffentlicht am" + +msgid "publication end date" +msgstr "Veröffentlicht bis" + +msgid "in navigation" +msgstr "im Menü" + +msgid "soft root" +msgstr "Softroot" + +msgid "id" +msgstr "ID" + +msgid "attached menu" +msgstr "Angehängtes Menu" + +msgid "template" +msgstr "Vorlage" + +msgid "login required" +msgstr "Login erforderlich" + +msgid "application" +msgstr "Applikation" + +msgid "application instance name" +msgstr "Applikations-Instanz-Name" + +msgid "site" +msgstr "Website" + +msgid "Grant on" +msgstr "Gewähren" + +msgid "page" +msgstr "Seite" + +msgid "no limit set" +msgstr "keine Einschränkung" + +msgid "for logged in users only" +msgstr "Nur für angemeldete Benutzer" + +msgid "for anonymous users only" +msgstr "Nur für nicht angemeldete Benutzer" + +msgid "Inherit from parent page" +msgstr "Von übergeordneter Seite erben" + +msgid "Deny" +msgstr "Verbieten" + +msgid "Only this website" +msgstr "Nur diese Webseite" + +msgid "Allow" +msgstr "Erlauben" + +msgid "title" +msgstr "Titel" + +msgid "The default title" +msgstr "Der Standardtitel" + +msgid "Page Title" +msgstr "Seitentitel" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Überschreiben, was im Titel des Browsers oder in den Lesezeichen erscheint" + +msgid "Menu Title" +msgstr "Menütitel" + +msgid "Overwrite what is displayed in the menu" +msgstr "Überschreiben, was im Menü angezeigt wird" + +msgid "Description meta tag" +msgstr "\"Description\" Meta-Tag" + +msgid "A description of the page used by search engines." +msgstr "" +"Eine Beschreibung der Seite. Wird teilweise von Suchmaschinen genutzt." + +msgid "redirect" +msgstr "umleiten" + +msgid "Redirects to this URL." +msgstr "Zu dieser URL umleiten" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Alle übergeordneten Seiten werden nicht im Menü dargestellt" + +msgid "The template used to render the content." +msgstr "Die benutzte Vorlage, um die Seite darzustellen." + +msgid "page content" +msgstr "Seiteninhalt" + +msgid "page contents" +msgstr "Seiteninhalte" + +msgid "default" +msgstr "Standard" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Ein einzigartiger Identifikator, der benutzt wird, um mit dem page_url " +"templatetag auf diese Seite zu verlinken" + +msgid "Mark this page as a page type" +msgstr "Diese Seite als Seitentyp markieren" + +msgid "pages" +msgstr "Seiten" + +msgid "No available title" +msgstr "Kein Titel verfügbar" + +msgid "slug" +msgstr "Slug" + +msgid "Path" +msgstr "Pfad" + +msgid "Current page" +msgstr "Aktuelle Seite" + +msgid "Page children (immediate)" +msgstr "Direkt untergeordnete Seiten" + +msgid "Page and children (immediate)" +msgstr "Aktuelle Seite und direkt untergeordnete Seiten" + +msgid "Page descendants" +msgstr "Alle untergeordnete Seiten" + +msgid "Page and descendants" +msgstr "Aktuelle Seite und alle untergeordnete Seiten" + +msgid "on page level" +msgstr "Auf Seitenebene" + +msgid "frontend view restriction" +msgstr "Frontendansicht eingeschränkt" + +msgid "Please select user or group." +msgstr "Bitte Benutzer oder Gruppe auswählen." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Benutzer können keine Seite veröffentlichen, ohne die Berechtigung zu haben," +" die Seite zu editieren." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Benutzer können nicht die erweiterten Einstellungen einer Seite ändern, ohne" +" die Berechtigung zu haben, die Seite zu editieren." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Benutzer können keine Seitenberechtigungen ändern, ohne die Berechtigung zu " +"haben, die Seite zu editieren." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Benutzer können eine Seite nicht verschieben, ohne die Berechtigung zu " +"haben, die Seite zu editieren." + +msgid "can recover any deleted page" +msgstr "Kann alle gelöschten Seiten wiederherstellen" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"Falls keine Auswahl erfolgt, hat der Benutzer Berechtigungen auf alle " +"Seiten." + +msgid "Page global permission" +msgstr "Globale Seitenberechtigung" + +msgid "Pages global permissions" +msgstr "Globale Seitenberechtigungen" + +msgid "Page permission" +msgstr "Seitenberechtigung" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Zum Hinzufügen von Seiten muss der Zugriff auf Unterseiten ebenfalls " +"ermöglicht werden, sonst können neu erstellte Seiten nach dem ersten " +"Speichervorgang nicht mehr bearbeitet werden." + +msgid "User (page)" +msgstr "Benutzer (Seite)" + +msgid "Users (page)" +msgstr "Benutzer (Seite)" + +msgid "User group (page)" +msgstr "Benutzergruppe (Seite)" + +msgid "User groups (page)" +msgstr "Benutzergruppen (Seite)" + +msgid "slot" +msgstr "Slot" + +msgid "width" +msgstr "Breite" + +msgid "Edit object" +msgstr "Objekt bearbeiten" + +msgid "This is an external placeholder" +msgstr "Dies ist ein externer Platzhalter" + +msgid "plugin" +msgstr "Baustein" + +msgid "plugins" +msgstr "Bausteine" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Die Sprache für das Administrations Interface und die Toolbar" + +msgid "user setting" +msgstr "Benutzer-Einstellung" + +msgid "user settings" +msgstr "Benutzer-Einstellungen" + +msgid "by template" +msgstr "Bei Vorlage" + +msgid "by code" +msgstr "Bei Code" + +msgid "static placeholder name" +msgstr "Name des statischen Platzhalters" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Beschreibender Name, um den statischen Platzhalter zu identifizieren. Wird " +"nicht dem Benutzer gezeigt." + +msgid "placeholder code" +msgstr "Platzhalter-Kennung" + +msgid "To render the static placeholder in templates." +msgstr "Um den statischen Platzhalter im Template zu rendern." + +msgid "placeholder content" +msgstr "Platzhalter-Inhalt" + +msgid "creation_method" +msgstr "erstellungs_methode" + +msgid "static placeholder" +msgstr "Statischer Platzhalter" + +msgid "static placeholders" +msgstr "Statische Platzhalter" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" +"Ein statischer Platzhalter mit der gleichen Website und Kennung existiert " +"bereits." + +msgid "Advanced options" +msgstr "Erweiterte Einstellungen" + +msgid "Generic" +msgstr "Generisch" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" wurde erfolgreich geändert." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" +"Es gibt keine weiteren Einstellungen für diesen Baustein. Bitte klicken Sie " +"auf speichern." + +msgid "Moved" +msgstr "Verschoben" + +msgid "Changed" +msgstr "Geändert" + +msgid "Deleted" +msgstr "Gelöscht" + +msgid "Added Page Translation" +msgstr "Seiten Übersetzung hinzugefügt" + +msgid "Changed Page Translation" +msgstr "Seiten Übersetzung bearbeitet" + +msgid "Deleted Page Translation" +msgstr "Seiten Übersetzung gelöscht" + +msgid "Added Plugin" +msgstr "Baustein hinzugefügt" + +msgid "Changed Plugin" +msgstr "Baustein bearbeitet" + +msgid "Moved Plugin" +msgstr "Baustein verschoben" + +msgid "Deleted Plugin" +msgstr "Baustein gelöscht" + +msgid "Cut Plugin" +msgstr "Baustein ausschneiden" + +msgid "Paste Plugin" +msgstr "Baustein einfügen" + +msgid "Paste to Placeholder" +msgstr "In Platzhalter einfügen" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Bausteine aus der Zwischenablage wurden zum Platzhalter hinzugefügt" + +msgid "Cleared Placeholder" +msgstr "Platzhalter geleert" + +msgid "Save" +msgstr "Speichern" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" +"Einige Felder können wegen fehlender Schreibberechtigung nicht verändert " +"werden." + +#, python-format +msgid "Log in to administration here." +msgstr "" +"Sie können sich hier in die Administration " +"einloggen." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Login URL: %(login_url)s" + +msgid "Username:" +msgstr "Benutzername:" + +msgid "Password:" +msgstr "Passwort:" + +msgid "Add a page" +msgstr "Seite hinzufügen" + +msgid "Change a page" +msgstr "Seite bearbeiten" + +msgid "Home" +msgstr "Start" + +msgid "View on site" +msgstr "Im Web anzeigen" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Bitte korrigieren Sie unterhalb den Fehler." +msgstr[1] "Bitte korrigieren Sie unterhalb alle Fehler." + +msgid "All permissions" +msgstr "Alle Berechtigungen" + +msgid "Loading..." +msgstr "Wird geladen…" + +msgid "Save and continue editing" +msgstr "Speichern und weiter bearbeiten" + +#, 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 " +"möchten? Alle der folgenden verknüpften Objekte werden gelöscht:" + +msgid "Yes, I’m sure" +msgstr "Ja, ich bin sicher" + +msgid "No, take me back" +msgstr "Nein, zurück" + +msgid "Summary" +msgstr "Zusammenfassung" + +msgid "User" +msgstr "Benutzer" + +msgid "Group" +msgstr "Gruppe" + +msgid "Can edit" +msgstr "Kann bearbeiten" + +msgid "Can add" +msgstr "Kann hinzufügen" + +msgid "Can delete" +msgstr "Kann löschen" + +msgid "Can publish" +msgstr "Kann veröffentlichen" + +msgid "Can change permissions" +msgstr "Kann Berechtigungen ändern" + +msgid "Can move" +msgstr "Kann verschieben" + +msgid "Can view" +msgstr "Kann sehen" + +msgid "(global)" +msgstr "(global)" + +msgid "(current)" +msgstr "(aktuell)" + +msgid "Page doesn't inherit any permissions." +msgstr "Seite erbt keine Berechtigungen." + +msgid "Edit model" +msgstr "Modell editieren" + +msgid "Save as new" +msgstr "Als \"neu\" speichern" + +msgid "Save and add another" +msgstr "Speichern und neu hinzufügen" + +msgid "Copy" +msgstr "Kopieren" + +msgid "Cut" +msgstr "Ausschneiden" + +msgid "Paste" +msgstr "Einfügen" + +msgid "Set as home" +msgstr "Als Startseite setzen" + +msgid "is restricted" +msgstr "Ist eingeschränkt" + +msgid "last change by" +msgstr "Letzte Änderungen von" + +msgid "last change on" +msgstr "Letzte Änderung" + +msgid "meta" +msgstr "Meta" + +msgid "List of pages" +msgstr "Liste der Seiten" + +msgid "Search" +msgstr "Suche" + +msgid "Page Tree" +msgstr "Seitenbaum" + +msgid "Reset filter" +msgstr "Filter zurücksetzen" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +"Gelöschte %(name)s wiederherstellen" + +msgid "Main Navigation" +msgstr "Hauptnavigation" + +msgid "Options" +msgstr "Optionen" + +msgid "Successfully moved" +msgstr "Erfolgreich verschoben" + +msgid "Changes within the tree might require a refresh." +msgstr "Änderunge im Baum brauchen vielleicht ein neu laden der Seite." + +msgid "Error:" +msgstr "Fehler:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Diese Seite kann nicht kopiert werden da eine Applikation daran gebunden " +"ist. Sie können \"apphooks\" in den erweiterten Einstellungen verwalten." + +msgid "Are you sure you want to § this page?" +msgstr "Sind Sie sicher dass diese Seite § wollen?" + +msgid "Reload" +msgstr "Neu laden" + +msgid "New node" +msgstr "Neue Seite" + +msgid "nodes" +msgstr "seiten" + +msgid "View" +msgstr "Ansehen" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +"Es gibt derzeit keine %(object)s.\n" +"
\n" +"%(object)s jetzt hinzufügen." + +msgid "Copy options" +msgstr "Kopier-Optionen" + +msgid "Choose copy options" +msgstr "Wählen Sie Kopier-Optionen" + +msgid "Close" +msgstr "Schließen" + +msgid "Legend" +msgstr "Legende" + +msgid "In menu" +msgstr "Im Menü" + +msgid "Not in menu" +msgstr "Nicht im Menü" + +msgid "View page" +msgstr "Im Web anzeigen" + +msgid "Softroot" +msgstr "Softroot" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Applikation: %(apphook)s" + +msgid "in menu" +msgstr "Im Menü" + +msgid "not in menu" +msgstr "Nicht im Menü" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Seiten-Einstellungen (Shift-Klick für erweiterte Einstellungen)" + +msgid "Permissions" +msgstr "Seiten-Berechtigungen" + +msgid "inherited" +msgstr "geerbt" + +msgid "This page has no preview!" +msgstr "Diese Seite hat keine Vorschau!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Möglicherweise stellt der Apphook keinen Inhalt für seine Wurzel-URL zur " +"Verfügung." + +msgid "It is being redirected to:" +msgstr "Wird weitergeleitet nach:" + +msgid "Clipboard" +msgstr "Zwischenablage" + +msgid "Add plugin" +msgstr "Baustein hinzufügen" + +msgid "Copy all" +msgstr "Alle kopieren" + +msgid "Copy from" +msgstr "Kopieren von" + +msgid "Empty all" +msgstr "Alle entfernen" + +msgid "Filter plugins..." +msgstr "Bausteine filtern..." + +msgid "Expand all" +msgstr "Alle ausklappen" + +msgid "Collapse all" +msgstr "Alle einklappen" + +msgid "You cannot add plugins to this plugin." +msgstr "Zu diesem Baustein können keine weiteren Bausteine hinzugefügt werden" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"Dieser Baustein kann nicht außerhalb des übergeordneten Bausteins verschoben" +" oder bearbeitet werden." + +msgid "Clipboard is empty." +msgstr "Zwischenablage ist leer." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" +"Dieser Baustein erlaubt keine weiteren Bausteine dieses Typs innerhalb sich " +"selbst." + +msgid "This plugin cannot have nested plugins." +msgstr "" +"Dieser Baustein erlaubt keine weiteren Bausteine innerhalb sich selbst." + +msgid "Highlight" +msgstr "Hervorheben" + +msgid "Available plugins" +msgstr "Verfügbare Baustein-Typen" + +msgid "Toggle structure" +msgstr "Struktur umschalten" + +msgid "Login" +msgstr "Anmelden" + +msgid "Add plugin to" +msgstr "Baustein hinzufügen zu" + +msgid "More" +msgstr "Mehr" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Development version nutzt django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Abbrechen" + +msgid "The following error occurred:" +msgstr "Der folgende Fehler ist aufgetreten:" + +msgid "Action successful." +msgstr "Aktion erfolgreich." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Sind Sie sicher, dass Sie diesen Baustein löschen wollen?" + +msgid "Are you sure you want to publish this page?" +msgstr "Sind Sie sicher, dass Sie diese Seite veröffentlichen wollen?" + +msgid "Plugin will be added here" +msgstr "Der Baustein wird hier hinzugefügt" + +msgid "You have unsaved changes." +msgstr "Es gibt ungespeicherte Änderungen." + +msgid "Loading" +msgstr "Lädt" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Sicher, dass die Änderungen verworfen werden sollen?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"Das Formular konnte nicht geladen werden. Bitte überprüfen, dass der Server " +"korrekt läuft." + +msgid "Most used" +msgstr "Meist genutzt" + +msgid "Shortcuts" +msgstr "Tastenkombinationen" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Die Seite wurde in der Zwischenzeit verändert, lade neu..." + +msgid "CMS-wide Shortcuts" +msgstr "CMS-weite Tastenkürzel" + +msgid "Bring up this help dialog" +msgstr "Diesen Hilfedialog anzeigen" + +msgid "Close/cancel" +msgstr "Schließen/Abbrechen" + +msgid "Toggle structure mode" +msgstr "Strukturmodus umschalten" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Strukturmodus umschalten und angewählten Baustein hervorheben." + +msgid "Open \"Create\" dialog" +msgstr "Öffne \"Erstellen\" Dialog" + +msgid "Focus on Toolbar" +msgstr "Toolbar fokussieren" + +msgid "Focus on placeholders" +msgstr "Platzhalter fokussieren" + +msgid "Move to next/previous element" +msgstr "Zu nächstem/vorherigem Element navigieren" + +msgid "Focus on plugins of placeholder" +msgstr "Bausteine eines Platzhalters fokussieren" + +msgid "Edit plugin" +msgstr "Baustein bearbeiten" + +msgid "Open actions menu" +msgstr "Aktionsmenü öffnen" + +msgid "Expand/collapse" +msgstr "Ausklappen/Einklappen" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Login fehlgeschlagen. Bitte überprüfen Sie Ihre " +"Zugangsdaten und versuchen Sie es erneut." + +msgid "Double-click to edit" +msgstr "Doppelklicken zum Editieren" + +msgid "Tap to edit" +msgstr "Antippen zum bearbeiten" + +msgid "Click to go back" +msgstr "Seite zurück gehen" + +msgid "Click to go forward" +msgstr "Seite vorwärts gehen" + +msgid "Minimize" +msgstr "Minimieren" + +msgid "Maximize" +msgstr "Maximieren" + +msgid "Placeholder not editable" +msgstr "Platzhalter nicht bearbeitbar" + +msgid "Drop a plugin here" +msgstr "Baustein hier fallen lassen" + +msgid "Welcome to your new django CMS installation!" +msgstr "Willkommen zu Ihrer neuen django CMS-Installation!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Version %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Lassen Sie uns gemeinsam etwas Großartiges bauen!" + +msgid "Please log in" +msgstr "Bitte Einloggen" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Erstellen Sie Ihre erste Seite\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Finanzierung unterstützen

\n" +"

\n" +" Ihre Unterstützung kommt dem Produkt direkt zugute, vor allem durch das\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" Eine schnelle Möglichkeit für Sie oder Ihre Organisation zu spenden ist über\n" +" GitHub Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Mach mit

\n" +"

\n" +" Die django CMS Association ist eine gemeinnützige Organisation, die die Entwicklung von\n" +" django CMS finanziert und lenkt.\n" +"

\n" +"

\n" +" Sie können als Einzelperson oder als\n" +" Organisation beitreten.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Mitwirken

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Hinweise zur Installation" + +msgid "Support" +msgstr "Support" + +msgid "Documentation" +msgstr "Dokumentation" + +msgid "User guide" +msgstr "Benutzeranleitung" + +msgid "Give back" +msgstr "Etwas zurückgeben" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Wenn Sie das django CMS Logo oben nicht sehen, stellen Sie sicher das der Ordner static/cms in Ihre statischen Dateien verlinkt ist.

" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Sie sehen diese Meldung weil Sie DEBUG = True in Ihrer django Einstellungsdatei eingetragen haben und noch keine Seite existiert.

" + +msgid "Welcome to django CMS" +msgstr "Willkommen im django CMS" + +msgid "Add Another" +msgstr "Weitere hinzufügen" + +msgid "Back" +msgstr "Zurück" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" +"Bitte eine der Optionen unten wählen, um zum nächsten Schritt zu gelangen." + +msgid "Next" +msgstr "Weiter" + +msgid "Select what you would like to create" +msgstr "Wählen Sie aus, was Sie erstellen möchten" + +msgid "Unknown" +msgstr "Unbekannt" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Seite nicht gefunden auf %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Ein Templatetag konnte die Seite `%(page_lookup)s\n" +"` nicht finden. Die Addresse war: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Zwei Spalten" + +msgid "Three columns" +msgstr "Drei Spalten" + +msgid "username" +msgstr "Benutzername" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Erforderlich. 300 Zeichen oder weniger. Buchstaben, Zahlen und @/./.+/-/_ " +"Zeichen" + +msgid "Enter a valid username." +msgstr "Gib einen gültigen Benutzernamen ein" + +msgid "email address" +msgstr "E-Mail-Adresse" + +msgid "staff status" +msgstr "Mitarbeiterstatus" + +msgid "Designates whether the user can log into this admin site." +msgstr "Bestimmt, ob sich der Benutzer im Admin-Bereich anmelden kann." + +msgid "active" +msgstr "aktiv" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Bestimmt, ob der Benutzer als \"aktiv\" behandelt werden soll. Entfernen Sie" +" diese Option, anstatt das Benutzerkonto zu löschen." + +msgid "users" +msgstr "Benutzer" + +msgid "Title Extension" +msgstr "Titel Erweiterung" + +msgid "Page Extension" +msgstr "Seiten Erweiterung" + +msgid "object ID" +msgstr "Objekt ID" + +msgid "Example1 App" +msgstr "Beispiel1 App" + +msgid "MultilingualExample1 App" +msgstr "Mehrsprachiges Beispiel1 App" + +msgid "Example1" +msgstr "Beispiel1" + +msgid "Examples" +msgstr "Beispiele" + +msgid "Extra Context" +msgstr "Extra-Context" + +msgid "Articles" +msgstr "Artikel" + +msgid "Sample App" +msgstr "Beispiel-App" + +msgid "Sample App with config" +msgstr "Beispiel Anwendung mit Konfiguration" + +msgid "Sample App with excluded permissions" +msgstr "Beispiel-App mit \"excluded permissions\"" + +msgid "Sample App 2" +msgstr "Beispiel-App 2" + +msgid "Sample App 3" +msgstr "Beispiel-App 2" + +msgid "Sample App Without Landing Page" +msgstr "Beispiel-App ohne Landingpage" + +msgid "Namespaced App" +msgstr "App mit Namensraum" + +msgid "Parent app" +msgstr "Übergeordnete Applikation" + +msgid "Child app" +msgstr "Untergeordnete Applikation" + +msgid "Variable urls-menus App" +msgstr "Variable urls-menus Applikation" + +msgid "sample root page" +msgstr "Beispiel-Root-Seite" + +msgid "sample settings page" +msgstr "Beispiel-Einstellungsseite " + +msgid "sample account page" +msgstr "Beispiel-Kontoseite" + +msgid "sample my profile page" +msgstr "Beispiel-Profilseite" + +msgid "Static Menu" +msgstr "Statisches Menü" + +msgid "Static Menu2" +msgstr "Statisches Menü 2" + +msgid "Static Menu3" +msgstr "Statisches Menü 3" + +msgid "Static Menu4" +msgstr "Statisches Menü" + +msgid "Category" +msgstr "Kategorie" + +msgid "Categories" +msgstr "Kategorien" + +msgid "Add Category" +msgstr "Kategorie hinzufügen" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Kategorie bearbeiten" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" +"Danke, dass sie heute ein schöne Zeit mit ihrer Webseite verbracht haben." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Die Vorlage der direkt übergeordneten Seite verwenden" + +msgid "UserSettings" +msgstr "Benutzer-Einstellungen" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Baustein zu Platzhalter \"%(placeholder_label)s\" hinzufügen" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Baustein zu %(plugin_name)s hinzufügen" + +msgid "Single placeholder" +msgstr "Einzelner Platzhalter" + +msgid "CMS - your user account was created." +msgstr "CMS - Ihr Benutzerkonto wurde erstellt." + +msgid "CMS - your user account was changed." +msgstr "CMS - Ihr Benutzerkonto wurde verändert." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Dieser Platzhalter hat bereits die maximale Anzahl von %s Bausteinen." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Dieser Platzhalter hat bereits die maximale Anzahl (%(limit)s) von erlaubten" +" %(plugin_name)s-Bausteinen." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Konnte das Modul CMS_REQUEST_IP_RESOLVER nicht finden: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Konnte die Funktion CMS_REQUEST_IP_RESOLVER nicht finden: \"{0}\" in module " +"\"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Neue %s Instanz erstellen." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Ein \"Wizard\" wurde bereits für dieses Modal registriert: %s" diff --git a/cms/locale/de/LC_MESSAGES/djangojs.po b/cms/locale/de/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..340440bf --- /dev/null +++ b/cms/locale/de/LC_MESSAGES/djangojs.po @@ -0,0 +1,26 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Jonas Obrist , 2011 +# Michael P. Jung , 2013 +# Peter Wischer , 2022 +# Stefan T. Oertel , 2015 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Stefan T. Oertel , 2015\n" +"Language-Team: German (http://app.transifex.com/divio/django-cms/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" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Sind Sie sicher Sie wollen den Reiter wechseln ohne vorher zu speichern?" diff --git a/cms/locale/el/LC_MESSAGES/django.po b/cms/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000..5c413e70 --- /dev/null +++ b/cms/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,1781 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Dimitrios Manolopoulos , 2025 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Greek (https://app.transifex.com/divio/teams/58664/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" + +msgid "All" +msgstr "Όλα" + +msgid "Copy permissions" +msgstr "Αντιγραφή δικαιωμάτων" + +msgid "Slug" +msgstr "Slug" + +msgid "The part of the title that is used in the URL" +msgstr "Το μέρος του τίτλου που χρησιμοποιείται στο URL" + +msgid "Page type" +msgstr "Τύπος σελίδας" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Τύπος Σελιδών" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Αντικατάστησε το URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "" +"Αφήστε αυτό το πεδίο κενό, για να χρησιμοποιηθεί το πρότυπο μονοπάτι (path)." + +msgid "Start typing..." +msgstr "Άρχισε να πληκτρολογείς..." + +msgid "menu visibility" +msgstr "ορατότητα μενού" + +msgid "limit when this page is visible in the menu" +msgstr "όριο σελίδας όταν είναι οραό από το μενού" + +msgid "X Frame Options" +msgstr "Επιλογές Πλαισίου X" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Αν αυτή η σελίδα μπορεί να ενσωματωθεί σε άλλες σελίδες ή ιστότοπους." + +msgid "URL options" +msgstr "Επιλογές URL" + +msgid "Menu options" +msgstr "Επιλογές μενού" + +msgid "Headers" +msgstr "Κεφαλίδες" + +msgid "Application" +msgstr "Εφαρμογή" + +msgid "Hook application to this page." +msgstr "Σύνδεση εφαρμογής σε αυτή τη σελίδα." + +msgid "Application configurations" +msgstr "Παραμετροποιήσεις Εφαρμογής" + +msgid "A page with this reverse URL id exists already." +msgstr "Υπάρχει ήδη σελίδα με το συγκεκριμένο αντίστροφο URL id." + +msgid "Invalid application config value" +msgstr "Μη έγκυρη τιμή" + +msgid "An application instance using this configuration already exists." +msgstr "" +"Υπάρχει ήδη ένα στιγμιότυπο εφαρμογής που χρησιμοποιεί αυτή την " +"παραμετροποίηση." + +msgid "An application instance with this name already exists." +msgstr "Υπάρχει ήδη ένα στιγμιότυπο εφαρμογής με αυτό το όνομα." + +msgid "You can't move the home page inside another page" +msgstr "Δεν μπορείτε να μετακινήσετε την αρχική σελίδα μέσα σε άλλη σελίδα" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Δεν μπορείτε να έχετε δύο σελίδες με το ίδιο slug στο ίδιο επίπεδο σελίδας. " +"Παρακαλώ αλλάξτε το slug μιας από τις σελίδες πριν προσπαθήσετε να " +"μετακινήσετε ξανά." + +msgid "Yes" +msgstr "Ναι" + +msgid "No" +msgstr "Όχι" + +msgid "user" +msgstr "χρήστης" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "Προσθήκη" + +msgid "Change" +msgstr "Αλλαγή" + +msgid "Delete" +msgstr "Διαγραφή" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Οι χρήστες δεν μπορούν να δημιουργήσουν μια σελίδα χωρίς δικαιώματα " +"τροποποίησης της σελίδας που δημιουργήθηκε. Απαιτούνται δικαιώματα " +"επεξεργασίας." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Οι χρήστες δεν μπορούν να διαγράψουν μια σελίδα χωρίς δικαιώματα " +"τροποποίησης της σελίδας. Απαιτούνται δικαιώματα επεξεργασίας." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Οι χρήστες δεν μπορούν να ορίσουν δικαιώματα σελίδας χωρίς δικαιώματα " +"τροποποίησης μιας σελίδας. Απαιτούνται δικαιώματα επεξεργασίας." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Οι χρήστες δεν μπορούν να διαγράψουν δικαιώματα σελίδας χωρίς δικαιώματα " +"τροποποίησης μιας σελίδας. Απαιτούνται δικαιώματα επεξεργασίας." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Οι χρήστες δεν μπορούν να δημιουργήσουν δικαιώματα σελίδας χωρίς δικαιώματα " +"τροποποίησης του δικαιώματος που δημιουργήθηκε. Απαιτούνται δικαιώματα " +"επεξεργασίας." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Οι χρήστες δεν μπορούν να διαγράψουν δικαιώματα σελίδας χωρίς δικαιώματα " +"τροποποίησης δικαιωμάτων. Απαιτούνται δικαιώματα επεξεργασίας." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Μη έγκυρος τύπος πρόσθετου '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Η γλώσσα πρέπει τεθεί σε κάποια που υποστηρίζεται!" + +msgid "Parent plugin language must be same as language!" +msgstr "Η γλώσσα του γονικού πρόσθετου πρέπει να είναι ίδια με τη γλώσσα!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Η υποδοχή του γονικού πρόσθετου πρέπει να είναι ίδια με την υποδοχή!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Η θέση του πρόσθετου πρέπει να είναι μεγαλύτερη από %(position)d" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "Προχωρημένες Ρυθμίσεις" + +msgid "The page is not eligible to be home." +msgstr "Η σελίδα δεν μπορεί να οριστεί ως αρχική." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s αντικείμενο με πρωτεύων κλειδί %(key)r δεν υφίσταται." + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Σφάλμα! Δεν έχεις δικαίωμα μετακίνησης αυτής της Σελίδας. Παρακαλώ ανανέωσε " +"την παρών Σελίδα." + +msgid "Error! You don't have permissions to copy this page." +msgstr "Σφάλμα! Δεν έχετε δικαιώματα αντιγραφής αυτής της σελίδας." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Σφάλμα! Η σελίδα που επικολλάτε δεν είναι μεταφρασμένη σε καμία από τις " +"γλώσσες που έχουν ρυθμιστεί για τον ιστότοπο προορισμού." + +msgid "You do not have permission to edit this page" +msgstr "Δεν έχετε δικαίωμα επεξεργασίας αυτής της σελίδας" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(για να το αλλάξετε, πρώτα καταργήστε τη δημοσίευση της τρέχουσας " +"δημοσιευμένης έκδοσης αυτής της σελίδας)" + +msgid "Add Translation" +msgstr "Προσθήκη μετάφρασης" + +msgid "Add Page Copy" +msgstr "Προσθήκη Σελίδα Αντιγραφής" + +msgid "New sub page" +msgstr "Νέα υποσελίδα" + +msgid "New page" +msgstr "Νέα σελίδα" + +msgid "Database error" +msgstr "Σφάλμα στη βάση δεδομένων" + +msgid "Template not valid" +msgstr "Μη έγκυρος Καμβάς" + +msgid "Placeholder selection not valid" +msgstr "Μη έγκυρη επιλογή υποδοχής" + +msgid "The template was successfully changed" +msgstr "Επιτυχής αλλαγής Καμβά." + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Η υποδοχή '%s' δεν υπάρχει στη γλώσσα προορισμού" + +msgid "You do not have permission to copy these plugins." +msgstr "Δεν έχεις δικαίωμα αντιγραφής αυτών των Πρόσθετων." + +msgid "You do not have permission to delete this page" +msgstr "Δεν έχετε δικαίωμα διαγραφής αυτής της σελίδας" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Τίτλοι και πρόσθετα με γλώσσα %(language)s διαγράφηκαν" + +msgid "Public content" +msgstr "Δημόσιο περιεχόμενο" + +msgid "Empty" +msgstr "Κενό" + +msgid "Create Content" +msgstr "Δημιουργία περιεχομένου" + +msgid "View restriction" +msgstr "Προβολή περιορισμού" + +msgid "View restrictions" +msgstr "Προβολή περιορισμών" + +#, python-format +msgid "Field %s not found" +msgstr "Το πεδίο %s δεν βρέθηκε" + +msgid "You do not have permission to edit this item" +msgstr "Δεν έχετε δικαίωμα επεξεργασίας αυτού του αντικειμένου" + +msgid "You do not have permission to add a plugin" +msgstr "Δεν έχεις άδεια πρόσβασης για Προσθήκη Πρόσθετου." + +msgid "You do not have permission to copy this placeholder." +msgstr "Δεν έχετε δικαίωμα αντιγραφής αυτής της υποδοχής." + +msgid "Plugin not found" +msgstr "Το πρόσθετο δεν βρέθηκε" + +msgid "You do not have permission to edit this plugin" +msgstr "Δεν έχεις δικαίωμα να επεξεργαστεί το επιλεγμένο Πρόσθετο." + +msgid "You have no permission to paste this plugin" +msgstr "Δεν έχετε δικαίωμα επικόλλησης αυτού του πρόσθετου" + +msgid "You have no permission to paste this placeholder" +msgstr "Δεν έχετε δικαίωμα επικόλλησης αυτής της υποδοχής" + +msgid "You have no permission to move this plugin" +msgstr "Δεν έχεις δικαίωμα μετακίνησης αύτου του Πρόσθετου" + +msgid "You have no permission to cut this plugin" +msgstr "Δεν έχετε δικαίωμα αποκοπής αυτού του πρόσθετου" + +msgid "You do not have permission to delete this plugin" +msgstr "Δεν έχεις δικαίωμα διαγραφής αυτού του Πρόσθετου" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "Το πρόσθετο %(name)s \"%(obj)s\" διαγράφηκε με επιτυχία." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Δεν είναι δυνατή η διαγραφή %(name)s" + +msgid "Are you sure?" +msgstr "Είστε σίγουρος?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Δεν έχετε δικαίωμα εκκαθάρισης αυτής της υποδοχής" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Η υποδοχή \"%(obj)s\" εκκαθαρίστηκε με επιτυχία." + +msgid "placeholder" +msgstr "υποδοχή" + +msgid "Page permissions" +msgstr "Δικαιώματα σελίδας" + +msgid "User & Group permissions" +msgstr "Δικαιώματα Χρηστών και Ομάδων" + +msgid "Page permissions management" +msgstr "Διαχείριση δικαιωμάτων σελίδας" + +msgid "Actions" +msgstr "Ενέργειες" + +msgid "Empty content" +msgstr "Κενό περιεχόμενο" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Ιδιότητες %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Προσθήκη νέου %(object_name)s" + +msgid "Add content" +msgstr "Προσθήκη περιεχομένου" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Το περιεχόμενο για την τρέχουσα γλώσσα έχει αλλάξει. Κάντε κλικ στο " +"\"Άκυρο\" για να επιστρέψετε στη φόρμα και να αποθηκεύσετε τις αλλαγές. " +"Κάντε κλικ στο \"OK\" για να απορρίψετε τις αλλαγές." + +#, python-format +msgid "Add %(language)s content" +msgstr "Προσθήκη περιεχομένου στα %(language)s" + +msgid "Preview" +msgstr "Προεπισκόπιση" + +msgid "Settings" +msgstr "Ρυθμίσεις" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Μη έγκυρη γλώσσα %(value)s. Αυτή η φόρμα δεν μπορεί να επεξεργαστεί. " +"Δοκιμάστε να αλλάξετε γλώσσα." + +msgid "" +msgstr "<μη καθορισμένο>" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Δεν βρέθηκε καταχωρημένο apphook \"%r\"" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Υποδοχή" + +msgid "Create" +msgstr "Δημιουργία" + +msgid "Edit" +msgstr "Επεξεργασία" + +msgid "Structure" +msgstr "Δομή" + +msgid "Content" +msgstr "Περιεχόμενο" + +msgid "Sites" +msgstr "Ιστότοποι" + +msgid "Admin Sites" +msgstr "Ιστοσελίδες Διαχειριστή." + +msgid "Administration" +msgstr "Διαχείριση" + +msgid "User settings" +msgstr "Ρυθμίσεις χρήστη" + +msgid "Clipboard..." +msgstr "Πρόχειρο..." + +msgid "Clear clipboard" +msgstr "Εκκαθάριση πρόχειρου" + +msgid "Disable toolbar" +msgstr "Απενεργοποίηση γραμμής εργαλείων" + +msgid "Shortcuts..." +msgstr "Συντομεύσεις..." + +msgid "Users" +msgstr "Χρήστες" + +#, python-format +msgid "Logout %s" +msgstr "Αποσύνδεση %s" + +msgid "Logout" +msgstr "Αποσύνδεση" + +msgid "Language" +msgstr "Γλώσσα" + +msgid "Delete Translation" +msgstr "Διαγραφή μετάφρασης" + +msgid "Copy all plugins" +msgstr "Αντιγραφή όλων των πρόσθετων" + +#, python-format +msgid "from %s" +msgstr "από %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Είστε σίγουροι ότι θέλετε να αντιγράψετε όλα τα πρόσθετα από %s;" + +msgid "Pages" +msgstr "Σελίδες" + +msgid "Page" +msgstr "Σελίδα" + +msgid "Create Page" +msgstr "Δημιουργία σελίδας" + +msgid "New Page" +msgstr "Νέα Σελίδα" + +msgid "New Sub Page" +msgstr "Καινούργια Υπο-Σελίδα" + +msgid "Duplicate this Page" +msgstr "Αντιγραφή σελίδας" + +msgid "Page settings" +msgstr "Ρυθμίσεις σελίδας" + +msgid "Advanced settings" +msgstr "Προχωρημένες Ρυθμίσεις" + +msgid "Templates" +msgstr "Καμβάς Ιστοσελίδας" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "Απόκρυψη κατά την πλοήγηση περιεχομένων" + +msgid "Display in navigation" +msgstr "Εμφάνιση στην πλοήγηση περιεχομένων" + +msgid "Delete page" +msgstr "Διαγραφή σελίδας" + +msgid "Create a new page next to the current page." +msgstr "Δημιουργία νέας σελίδας δίπλα στην τρέχουσα σελίδα." + +msgid "Create a page below the current page." +msgstr "Δημιουργία σελίδας κάτω από την τρέχουσα σελίδα." + +msgid "Select a valid site" +msgstr "Επιλέξτε έγκυρη ιστοσελίδα" + +msgid "Select a valid page" +msgstr "Επιλέξτε έγκυρη σελίδα" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"Η σελίδα %(conflict_page)s έχει το ίδιο url '%(url)s' με την τρέχουσα σελίδα" +" \"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"Η σελίδα %(conflict_page)s έχει το ίδιο url '%(url)s' με την τρέχουσα " +"σελίδα." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Προαιρετικό. Αν συμπληρωθεί, θα προστεθεί αυτόματα μέσα σε ένα νέο πρόσθετο " +"κειμένου." + +msgid "Provide a title for the new page." +msgstr "Δώστε έναν τίτλο για τη νέα σελίδα." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "Αφήστε το κενό για αυτόματο slug ή αντικαταστήστε το όπως απαιτείται." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" +"Δεν είναι δυνατή η αυτόματη δημιουργία slug. Παρακαλώ δώστε ένα χειροκίνητα." + +msgid "Please provide a valid slug." +msgstr "Παρακαλώ δώστε ένα έγκυρο slug." + +msgid "You don't have the permissions required to add a page." +msgstr "Δεν έχετε τα απαραίτητα δικαιώματα για την προσθήκη σελίδας." + +msgid "ID" +msgstr "Α.Α." + +msgid "position" +msgstr "θέση" + +msgid "language" +msgstr "γλώσσα" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "ημερομηνία δημιουργίας" + +msgid "can edit" +msgstr "μπορεί να επεξεργαστεί" + +msgid "can add" +msgstr "μπορεί να προστεθεί" + +msgid "can delete" +msgstr "μπορεί να διαγραφεί" + +msgid "can change advanced settings" +msgstr "μπορεί να τροποποιήσει προχωρημένες ρυθμίσεις" + +msgid "can publish" +msgstr "μπορεί να δημοσιεύσει" + +msgid "can change permissions" +msgstr "μπορεί να τροποποιήσει δικαιώματα" + +msgid "can move" +msgstr "μπορεί να μετακινήσει" + +msgid "view restricted" +msgstr "περιορισμένη προβολή" + +msgid "can recover pages" +msgstr "μπορεί να ανακτήσει σελίδες" + +msgid "group" +msgstr "ομάδα" + +msgid "sites" +msgstr "ιστότοποι" + +msgid "created by" +msgstr "δημιουργημένο από" + +msgid "changed by" +msgstr "τροποποιημένο από" + +msgid "publication date" +msgstr "ημερομηνία δημοσίευσης" + +msgid "publication end date" +msgstr "ημερομηνία λήξης δημοσίευσης" + +msgid "in navigation" +msgstr "στην πλοήγηση" + +msgid "soft root" +msgstr "μαλακή ρίζα" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "επισυναπτόμενα περιεχόμενα περιήγησης" + +msgid "template" +msgstr "περίγραμμα" + +msgid "login required" +msgstr "απαιτείται σύνδεση" + +msgid "application" +msgstr "εφαρμογή" + +msgid "application instance name" +msgstr "όνομα στιγμιότυπου εφαρμογής" + +msgid "site" +msgstr "ιστότοπος" + +msgid "Grant on" +msgstr "Χορήγηση σε" + +msgid "page" +msgstr "σελίδα" + +msgid "no limit set" +msgstr "δεν έχει οριστεί όριο" + +msgid "for logged in users only" +msgstr "μόνο για συνδεδεμένους χρήστες" + +msgid "for anonymous users only" +msgstr "μόνο για ανώνυμους χρήστες" + +msgid "Inherit from parent page" +msgstr "Κληρονομιά από τη γονική σελίδα" + +msgid "Deny" +msgstr "Απαγόρευση" + +msgid "Only this website" +msgstr "Μόνο αυτός ο ιστότοπος" + +msgid "Allow" +msgstr "Αποδοχή" + +msgid "title" +msgstr "τίτλος" + +msgid "The default title" +msgstr "Προεπιλεγμένος τίτλος" + +msgid "Page Title" +msgstr "Τίτλος Σελίδας" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Αντικαθιστά αυτό που εμφανίζεται στο επάνω μέρος του περιηγητή ιστού σας ή " +"στους σελιδοδείκτες" + +msgid "Menu Title" +msgstr "Τίτλος Μενού" + +msgid "Overwrite what is displayed in the menu" +msgstr "Αντικατάσταση στην εμφάνιση του μενού" + +msgid "Description meta tag" +msgstr "Περιγραφή meta tag" + +msgid "A description of the page used by search engines." +msgstr "" +"Μια λίστα με \"λέξεις κλειδιά\" που χρησιμοποιούνται μερικές φορές από τις " +"μηχανές αναζήτησης." + +msgid "redirect" +msgstr "ανακατεύθυνση" + +msgid "Redirects to this URL." +msgstr "Ανακατεύθυνση στο ακόλουθο URL." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Όλες οι ανώτερες σελίδες δεν θα εμφανίζονται στην πλοήγηση" + +msgid "The template used to render the content." +msgstr "Το περίγραμμα που χρησιμοποιήθηκε για να προσφερθεί το περιεχόμενο." + +msgid "page content" +msgstr "περιεχόμενο σελίδας" + +msgid "page contents" +msgstr "περιεχόμενα σελίδας" + +msgid "default" +msgstr "εξ' ορισμού" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Ένα μοναδικό αναγνωριστικό που χρησιμοποιείται με το templatetag page_url " +"για σύνδεση προς αυτή τη σελίδα" + +msgid "Mark this page as a page type" +msgstr "Επισήμανση αυτής της σελίδας ως τύπος σελίδας" + +msgid "pages" +msgstr "σελίδες" + +msgid "No available title" +msgstr "Δεν υπάρχει διαθέσιμος τίτλος" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Διαδρομή" + +msgid "Current page" +msgstr "Τρέχουσα σελίδα" + +msgid "Page children (immediate)" +msgstr "Υποσελίδες (άμεσες)" + +msgid "Page and children (immediate)" +msgstr "Τρέχουσα σελίδα και υποσελίδες (άμεσες)" + +msgid "Page descendants" +msgstr "Όλες οι υποσελίδες" + +msgid "Page and descendants" +msgstr "Τρέχουσα σελίδα και όλες οι υποσελίδες" + +msgid "on page level" +msgstr "σε επίπεδο σελίδας" + +msgid "frontend view restriction" +msgstr "περιορισμός προβολής frontend" + +msgid "Please select user or group." +msgstr "Παρακαλώ επιλέξτε χρήστη ή ομάδα." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Οι χρήστες δεν μπορούν να δημοσιεύσουν μια σελίδα χωρίς δικαιώματα " +"τροποποίησης της σελίδας. Απαιτούνται δικαιώματα επεξεργασίας." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Οι χρήστες δεν μπορούν να αλλάξουν τις προχωρημένες ρυθμίσεις της σελίδας " +"χωρίς δικαιώματα τροποποίησης της σελίδας. Απαιτούνται δικαιώματα " +"επεξεργασίας." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Οι χρήστες δεν μπορούν να αλλάξουν τα δικαιώματα της σελίδας χωρίς " +"δικαιώματα τροποποίησης της σελίδας. Απαιτούνται δικαιώματα επεξεργασίας." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Οι χρήστες δεν μπορούν να μετακινήσουν μια σελίδα χωρίς δικαιώματα " +"τροποποίησης της σελίδας. Απαιτούνται δικαιώματα επεξεργασίας." + +msgid "can recover any deleted page" +msgstr "μπορεί να ανακτήσει οποιαδήποτε διαγραμμένη σελίδα" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"Αν κανένα δεν είναι επιλεγμένο, ο χρήστης έχει παραχωρημένα δικαιώματα σε " +"όλους τους ιστότοπους." + +msgid "Page global permission" +msgstr "Δικαίωμα σε όλη τη σελίδα" + +msgid "Pages global permissions" +msgstr "Δικαιώματα σε όλες τις σελίδες" + +msgid "Page permission" +msgstr "Δικαίωμα σελίδας" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Το δικαίωμα προσθήκης σελίδας απαιτεί πρόσβαση στις υποσελίδες, αλλιώς η " +"σελίδα που προστέθηκε δεν μπορεί να τροποποιηθεί από τον δημιουργό της." + +msgid "User (page)" +msgstr "Χρήστης (σελίδα)" + +msgid "Users (page)" +msgstr "Χρήστες (σελίδα)" + +msgid "User group (page)" +msgstr "Ομάδα χρηστών (σελίδα)" + +msgid "User groups (page)" +msgstr "Ομάδες χρηστών (σελίδα)" + +msgid "slot" +msgstr "σχισμή" + +msgid "width" +msgstr "πλάτος" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "<Κενό>" + +msgid "The language for the admin interface and toolbar" +msgstr "Η γλώσσα για το περιβάλλον διαχείρισης και τη γραμμή εργαλείων" + +msgid "user setting" +msgstr "ρυθμίση χρήστη" + +msgid "user settings" +msgstr "ρυθμίσεις χρήστη" + +msgid "by template" +msgstr "άνα Καμβά Ιστοσελίδας" + +msgid "by code" +msgstr "βάση κώδικα" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "Προχωρημένες επιλογές" + +msgid "Generic" +msgstr "Γενικό" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "Το %(name)s \"%(obj)s\" άλλαξε με επιτυχία." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" +"Δεν υπάρχουν άλλες ρυθμίσεις για αυτό το πρόσθετο. Παρακαλώ πατήστε " +"αποθήκευση." + +msgid "Moved" +msgstr "Μετακινήθηκε" + +msgid "Changed" +msgstr "Άλλαξε" + +msgid "Deleted" +msgstr "Διαγράφηκε" + +msgid "Added Page Translation" +msgstr "Προστέθηκε μετάφραση σελίδας" + +msgid "Changed Page Translation" +msgstr "Άλλαξε μετάφραση σελίδας" + +msgid "Deleted Page Translation" +msgstr "Διαγράφηκε μετάφραση σελίδας" + +msgid "Added Plugin" +msgstr "Προστέθηκε πρόσθετο" + +msgid "Changed Plugin" +msgstr "Άλλαξε πρόσθετο" + +msgid "Moved Plugin" +msgstr "Μετακινήθηκε πρόσθετο" + +msgid "Deleted Plugin" +msgstr "Διαγράφηκε πρόσθετο" + +msgid "Cut Plugin" +msgstr "Αποκόπηκε πρόσθετο" + +msgid "Paste Plugin" +msgstr "Επικολλήθηκε πρόσθετο" + +msgid "Paste to Placeholder" +msgstr "Επικόλληση σε υποδοχή" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Προστέθηκαν πρόσθετα στην υποδοχή από το πρόχειρο" + +msgid "Cleared Placeholder" +msgstr "Εκκαθαρίστηκε υποδοχή" + +msgid "Save" +msgstr "Αποθήκευση" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" +"Ορισμένα πεδία δεν μπορούν να αλλάξουν, καθώς αποτελούν περιεχόμενο μόνο για" +" ανάγνωση." + +#, python-format +msgid "Log in to administration here." +msgstr "Συνδεθείτε ως διαχειριστής εδώ." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "URL σύνδεσης: %(login_url)s" + +msgid "Username:" +msgstr "Όνομα χρήστη:" + +msgid "Password:" +msgstr "Κωδικός πρόσβασης:" + +msgid "Add a page" +msgstr "Προσθήκη σελίδας" + +msgid "Change a page" +msgstr "Τροποποιήστε μια σελίδα" + +msgid "Home" +msgstr "Αρχική" + +msgid "View on site" +msgstr "Δείτε την ιστοσελίδα" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Παρακαλώ διορθώστε το παρακάτω λάθος." +msgstr[1] "Παρακαλώ διορθώστε τα παρακάτω λάθη." + +msgid "All permissions" +msgstr "Όλα τα δικαιώματα" + +msgid "Loading..." +msgstr "Φόρτωμα..." + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "Ναι, είμαι σίγουρος" + +msgid "No, take me back" +msgstr "Όχι, επιστροφή" + +msgid "Summary" +msgstr "Σύνοψη" + +msgid "User" +msgstr "Χρήστης" + +msgid "Group" +msgstr "Ομάδα" + +msgid "Can edit" +msgstr "Μπορεί να επεξεργαστεί" + +msgid "Can add" +msgstr "Μπορεί να προσθέσει" + +msgid "Can delete" +msgstr "Μπορεί να διαγράψει" + +msgid "Can publish" +msgstr "Μπορεί να δημοσιεύσει" + +msgid "Can change permissions" +msgstr "Μπορεί να αλλάξει δικαιώματα" + +msgid "Can move" +msgstr "Μπορεί να μετακινήσει" + +msgid "Can view" +msgstr "Μπορεί να δει" + +msgid "(global)" +msgstr "(καθολικό)" + +msgid "(current)" +msgstr "(τρέχων)" + +msgid "Page doesn't inherit any permissions." +msgstr "Η σελίδα δεν κληρονομεί δικαιώματα." + +msgid "Edit model" +msgstr "Επεξεργασία Μοντέλου" + +msgid "Save as new" +msgstr "Αποθήκευση ως νέο" + +msgid "Save and add another" +msgstr "Αποθήκευση και προσθήκη νέου" + +msgid "Copy" +msgstr "Αντιγραφή" + +msgid "Cut" +msgstr "Αποκοπή" + +msgid "Paste" +msgstr "Επικόλληση" + +msgid "Set as home" +msgstr "Ορισμός ως αρχική" + +msgid "is restricted" +msgstr "είναι περιορισμένο" + +msgid "last change by" +msgstr "τελευταία αλλαγή από" + +msgid "last change on" +msgstr "τελευταία αλλαγή στις" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Λίστα σελίδων" + +msgid "Search" +msgstr "Αναζήτηση" + +msgid "Page Tree" +msgstr "Δέντρο σελίδων" + +msgid "Reset filter" +msgstr "Επαναφορά φίλτρου" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Επαναφορά διαγραμμένου %(name)s\n" +" " + +msgid "Main Navigation" +msgstr "Κύρια πλοήγηση" + +msgid "Options" +msgstr "Επιλογές" + +msgid "Successfully moved" +msgstr "Επιτυχής μετακίνηση" + +msgid "Changes within the tree might require a refresh." +msgstr "" +"Αλλαγές εντός του χάρτη ιστοτόπου πιθανόν να απαιτεί ανανέωση ιστοσελίδας." + +msgid "Error:" +msgstr "Σφάλμα:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Αυτή η σελίδα δεν μπορεί να αντιγραφεί επειδή έχει συνδεθεί μια εφαρμογή σε " +"αυτήν. Δείτε τις Προχωρημένες ρυθμίσεις της σελίδας για τη διαχείριση των " +"apphooks." + +msgid "Are you sure you want to § this page?" +msgstr "Είστε σίγουροι ότι θέλετε να § αυτή τη σελίδα;" + +msgid "Reload" +msgstr "Επαναφόρτωση" + +msgid "New node" +msgstr "Νέος κόμβος" + +msgid "nodes" +msgstr "κόμβοι" + +msgid "View" +msgstr "Προβολή" + +msgid "Menu" +msgstr "Μενού" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Δεν υπάρχει ακόμη κανένα %(object)s.\n" +"
\n" +" Προσθέστε %(object)s τώρα.\n" +" " + +msgid "Copy options" +msgstr "Ρυθμίσεις αντιγραφής" + +msgid "Choose copy options" +msgstr "Επιλογή των ρυθμησεων αντιγραφής" + +msgid "Close" +msgstr "Κλείσιμο" + +msgid "Legend" +msgstr "Υπόμνημα" + +msgid "In menu" +msgstr "Στο μενού" + +msgid "Not in menu" +msgstr "Εκτός μενού" + +msgid "View page" +msgstr "Προβολή σελίδας" + +msgid "Softroot" +msgstr "Μαλακή ρίζα" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Εφαρμογή: %(apphook)s" + +msgid "in menu" +msgstr "στο μενού" + +msgid "not in menu" +msgstr "δεν βρίσκεται στα Περιεχόμενα Περιήγησης" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Ρυθμίσεις σελίδας (κλικ με SHIFT για προχωρημένες ρυθμίσεις)" + +msgid "Permissions" +msgstr "Δικαιώματα" + +msgid "inherited" +msgstr "κληρονομημένο" + +msgid "This page has no preview!" +msgstr "Αυτή η Σελίδας δεν διαθέτει Προεπισκόπηση Σελίδας!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Πιθανώς το συνδεδεμένο apphook δεν παρέχει περιεχόμενο για τη ρίζα του." + +msgid "It is being redirected to:" +msgstr "Ανακατευθύνεται στο:" + +msgid "Clipboard" +msgstr "Πρόχειρο" + +msgid "Add plugin" +msgstr "Προσθήκη πρόσθετου" + +msgid "Copy all" +msgstr "Αντιγραφή όλων" + +msgid "Copy from" +msgstr "Αντιγραφή από" + +msgid "Empty all" +msgstr "Άδειασμο όλων" + +msgid "Filter plugins..." +msgstr "Φιλτράρισμα πρόσθετων..." + +msgid "Expand all" +msgstr "Ανάπτυξη όλων" + +msgid "Collapse all" +msgstr "Σύμπτυξη όλων" + +msgid "You cannot add plugins to this plugin." +msgstr "Δεν μπορείτε να προσθέσετε πρόσθετα σε αυτό το πρόσθετο." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"Αυτό το πρόσθετο δεν μπορεί να μετακινηθεί ή να επεξεργαστεί εκτός του " +"γονικού του" + +msgid "Clipboard is empty." +msgstr "Το πρόχειρο είναι κενό." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" +"Αυτό το πρόσθετο δεν επιτρέπει πρόσθετα αυτού του τύπου ως ένθετα πρόσθετα." + +msgid "This plugin cannot have nested plugins." +msgstr "Αυτό το πρόσθετο δεν μπορεί να έχει ένθετα πρόσθετα." + +msgid "Highlight" +msgstr "Επισήμανση" + +msgid "Available plugins" +msgstr "Διαθέσιμα προς χρήση Πρόσθετα" + +msgid "Toggle structure" +msgstr "Εναλλαγή δομής" + +msgid "Login" +msgstr "Σύνδεση" + +msgid "Add plugin to" +msgstr "Προσθήκη πρόσθετου σε" + +msgid "More" +msgstr "Περισσότερα" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Έκδοση ανάπτυξης που χρησιμοποιεί django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Άκυρο" + +msgid "The following error occurred:" +msgstr "Παρουσιάστηκε το ακόλουθο σφάλμα:" + +msgid "Action successful." +msgstr "Η ενέργεια ολοκληρώθηκε με επιτυχία." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Είσαι σίγουρος πως θέλεις να διαγράψεις αυτό το πρόσθετο?" + +msgid "Are you sure you want to publish this page?" +msgstr "Είσαι σίγουρος ότι θέλεις να δημοσιεύεσεις την παρών σελίδα?" + +msgid "Plugin will be added here" +msgstr "Το πρόσθετο θα προστεθεί εδώ" + +msgid "You have unsaved changes." +msgstr "Έχετε μη αποθηκευμένες αλλαγές." + +msgid "Loading" +msgstr "Φόρτωση" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Είστε σίγουροι ότι θέλετε να εγκαταλείψετε αυτές τις αλλαγές;" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"Δεν ήταν δυνατή η φόρτωση της φόρμας. Παρακαλώ ελέγξτε ότι ο διακομιστής " +"λειτουργεί σωστά." + +msgid "Most used" +msgstr "Πιο συχνά χρησιμοποιούμενα" + +msgid "Shortcuts" +msgstr "Συντομεύσεις" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Η σελίδα άλλαξε στο μεταξύ, γίνεται επαναφόρτωση..." + +msgid "CMS-wide Shortcuts" +msgstr "Συντομεύσεις σε όλο το CMS" + +msgid "Bring up this help dialog" +msgstr "Εμφάνιση αυτού του παραθύρου βοήθειας" + +msgid "Close/cancel" +msgstr "Κλείσιμο/ακύρωση" + +msgid "Toggle structure mode" +msgstr "Εναλλαγή λειτουργίας δομής" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" +"Εναλλαγή λειτουργίας δομής και επισήμανση του πρόσθετου κάτω από τον δείκτη" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "Εστίαση στη γραμμή εργαλείων" + +msgid "Focus on placeholders" +msgstr "Εστίαση στις υποδοχές" + +msgid "Move to next/previous element" +msgstr "Μετακίνηση στο επόμενο/προηγούμενο στοιχείο" + +msgid "Focus on plugins of placeholder" +msgstr "Εστίαση στα πρόσθετα της υποδοχής" + +msgid "Edit plugin" +msgstr "Επεξεργασία πρόσθετου" + +msgid "Open actions menu" +msgstr "Άνοιγμα μενού ενεργειών" + +msgid "Expand/collapse" +msgstr "Ανάπτυξη/σύμπτυξη" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Η σύνδεση απέτυχε. Παρακαλώ ελέγξτε τα διαπιστευτήριά σας " +"και δοκιμάστε ξανά." + +msgid "Double-click to edit" +msgstr "Διπλό κλίκ για επεξεργασία" + +msgid "Tap to edit" +msgstr "Πατήστε για επεξεργασία" + +msgid "Click to go back" +msgstr "Κάντε κλικ για επιστροφή" + +msgid "Click to go forward" +msgstr "Κάντε κλικ για μετάβαση μπροστά" + +msgid "Minimize" +msgstr "Ελαχιστοποίηση" + +msgid "Maximize" +msgstr "Μεγιστοποίηση" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "Σύρε Πρόσθετο εδώ" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Έκδοση %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Ας φτιάξουμε κάτι σπουδαίο μαζί!" + +msgid "Please log in" +msgstr "Παρακαλώ συνδεθείτε" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Προσθέστε την πρώτη σας σελίδα\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Βοηθήστε στη χρηματοδότηση

\n" +"

\n" +" Η χρηματοδότησή σας ωφελεί άμεσα το προϊόν, κυρίως μέσω του\n" +" προγράμματος Fellowship του django CMS!\n" +"

\n" +"

\n" +" Ένας γρήγορος τρόπος για εσάς ή τον οργανισμό σας να κάνετε δωρεά είναι μέσω του\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Γίνετε μέλος

\n" +"

\n" +" Ο σύλλογος django CMS Association είναι ένας μη κερδοσκοπικός οργανισμός που χρηματοδοτεί και κατευθύνει την ανάπτυξη του\n" +" django CMS.\n" +"

\n" +"

\n" +" Μπορείτε να γίνετε μέλος είτε ως ιδιώτης είτε ως\n" +" οργανισμός.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Συνεισφέρετε

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Σημειώσεις εγκατάστασης" + +msgid "Support" +msgstr "Υποστήριξη" + +msgid "Documentation" +msgstr "Τεκμηρίωση" + +msgid "User guide" +msgstr "Οδηγός χρήστη" + +msgid "Give back" +msgstr "Προσφέρετε κι εσείς" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Αν δεν βλέπετε το λογότυπο του django CMS στην κορυφή, βεβαιωθείτε\n" +" ότι έχετε συνδέσει τον φάκελο static/cms με τα\n" +" στατικά σας αρχεία.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Βλέπετε αυτό το μήνυμα επειδή έχετε\n" +" DEBUG = True στο αρχείο ρυθμίσεων του django και\n" +" δεν έχετε προσθέσει ακόμη καμία σελίδα.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Καλώς ήρθατε στο django CMS" + +msgid "Add Another" +msgstr "Προσθήκη και άλλου" + +msgid "Back" +msgstr "Πίσω" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" +"Παρακαλώ επιλέξτε μια από τις παρακάτω επιλογές για να προχωρήσετε στο " +"επόμενο βήμα." + +msgid "Next" +msgstr "Επόμενο" + +msgid "Select what you would like to create" +msgstr "Επιλέξτε τι θα θέλατε να δημιουργήσετε" + +msgid "Unknown" +msgstr "Άγνωστο" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Η σελίδα δεν βρέθηκε στο %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Ένα template tag δεν μπόρεσε να βρει τη σελίδα με τα ορίσματα αναζήτησης `%(page_lookup)s\n" +"`. Το URL του αιτήματος ήταν: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Δίστυλλο" + +msgid "Three columns" +msgstr "Τρίστυλλο" + +msgid "username" +msgstr "όνομα χρήση" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Απαιτείται. 300 χαρακτήρες ή λιγότεροι. Γράμματα, αριθμοί και οι χαρακτήρες " +"@/./+/-/_" + +msgid "Enter a valid username." +msgstr "Εισάγεται έγκυρο όνομα Χρήστη." + +msgid "email address" +msgstr "διεύθυνση ηλεκτρονικής αλληλογραφίας" + +msgid "staff status" +msgstr "κατάσταση προσωπικού" + +msgid "Designates whether the user can log into this admin site." +msgstr "" +"Καθορίζει αν ο χρήστης μπορεί να συνδεθεί σε αυτόν τον ιστότοπο διαχείρισης." + +msgid "active" +msgstr "ενεργό" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Καθορίζει αν αυτός ο χρήστης πρέπει να θεωρείται ενεργός. Αποεπιλέξτε το " +"αντί να διαγράψετε λογαριασμούς." + +msgid "users" +msgstr "χρήστες" + +msgid "Title Extension" +msgstr "Τίτλος Επέκτασης " + +msgid "Page Extension" +msgstr "Επέκταση Σελίδας" + +msgid "object ID" +msgstr "Α.Α. αντικειμένου" + +msgid "Example1 App" +msgstr "Παράδειγμα1 Εφαρμογής" + +msgid "MultilingualExample1 App" +msgstr "Πολυγλωσσικό-Παράδειγμα1 Εφαρμογής" + +msgid "Example1" +msgstr "Παράδειγμα1" + +msgid "Examples" +msgstr "Παραδείγματα" + +msgid "Extra Context" +msgstr "Επιπλέον Περιεχόμενο" + +msgid "Articles" +msgstr "Άρθρα" + +msgid "Sample App" +msgstr "Δείγμα Εφαρμογής" + +msgid "Sample App with config" +msgstr "Δείγμα εφαρμογής με ρυθμίσεις" + +msgid "Sample App with excluded permissions" +msgstr "Δείγμα εφαρμογής με εξαιρούμενα δικαιώματα" + +msgid "Sample App 2" +msgstr "Δείγμα Εφαρμογής 2" + +msgid "Sample App 3" +msgstr "Δείγμα Εφαρμογής 2" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "Εφαρμογή με namespace" + +msgid "Parent app" +msgstr "Γονική εφαρμογή" + +msgid "Child app" +msgstr "Θυγατρική εφαρμογή" + +msgid "Variable urls-menus App" +msgstr "Εφαρμογή με μεταβλητά urls-menus" + +msgid "sample root page" +msgstr "δείγμα ριζικής σελίδας" + +msgid "sample settings page" +msgstr "δείγμα Σελίδας Ρυθμίσεων" + +msgid "sample account page" +msgstr "δείγμα Σελίδας Λογαριασμών " + +msgid "sample my profile page" +msgstr "δείγμα Σελίδας ατομικού Προφίλ" + +msgid "Static Menu" +msgstr "Στατικό Μενού" + +msgid "Static Menu2" +msgstr "Στατικό Μενού2" + +msgid "Static Menu3" +msgstr "Στατικό Μενού3" + +msgid "Static Menu4" +msgstr "Στατικό Μενού" + +msgid "Category" +msgstr "Κατηγορία" + +msgid "Categories" +msgstr "Κατηγορίες" + +msgid "Add Category" +msgstr "Προσθήκη κατηγορίας" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Τροποποίηση Κατηγορίας" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Σας ευχαριστούμε για τον χρόνο που αφιερώσατε στον ιστότοπο σήμερα." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Κληρονομιά του προτύπου της πλησιέστερης ανώτερης σελίδας" + +msgid "UserSettings" +msgstr "Ρυθμίσεις χρήστη" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Προσθήκη πρόσθετου στην υποδοχή \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Προσθήκη πρόσθετου σε %(plugin_name)s" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "CMS - δημιουργήθηκε ο λογαριασμός σας." + +msgid "CMS - your user account was changed." +msgstr "CMS - μεταβλήθηκε ο λογαριασμός σας." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Αυτή η υποδοχή έχει ήδη τον μέγιστο αριθμό πρόσθετων (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Αυτή η υποδοχή έχει ήδη τον μέγιστο αριθμό (%(limit)s) επιτρεπόμενων " +"πρόσθετων %(plugin_name)s." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" +"Δεν είναι δυνατή η εύρεση του καθορισμένου module CMS_REQUEST_IP_RESOLVER: " +"\"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Δεν είναι δυνατή η εύρεση της καθορισμένης συνάρτησης " +"CMS_REQUEST_IP_RESOLVER: \"{0}\" στο module \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Δημιουργία νέου στιγμιότυπου %s." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Έχει ήδη καταχωρηθεί ένας οδηγός για το μοντέλο: %s" diff --git a/cms/locale/el/LC_MESSAGES/djangojs.po b/cms/locale/el/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..79f6096f --- /dev/null +++ b/cms/locale/el/LC_MESSAGES/djangojs.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# George Petsagourakis , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: George Petsagourakis , 2013\n" +"Language-Team: Greek (http://app.transifex.com/divio/django-cms/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" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Είσαι σίγουρος πως θες να αλλάξεις καρτέλες χωρίς να έχεις αποθηκεύσει πρώτα τη σελίδα?" diff --git a/cms/locale/en/LC_MESSAGES/django.po b/cms/locale/en/LC_MESSAGES/django.po new file mode 100644 index 00000000..88e014cf --- /dev/null +++ b/cms/locale/en/LC_MESSAGES/django.po @@ -0,0 +1,1992 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-02 17:57+0000\n" +"PO-Revision-Date: 2015-11-11 17:31+0000\n" +"Last-Translator: yakky \n" +"Language-Team: English (http://www.transifex.com/divio/django-cms/language/" +"en/)\n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "All" + +msgid "Copy permissions" +msgstr "Copy permissions" + +msgid "Slug" +msgstr "Slug" + +msgid "The part of the title that is used in the URL" +msgstr "The part of the title that is used in the URL" + +msgid "Page type" +msgstr "Page type" + +#, fuzzy +#| msgid "You do not have permission to edit this page" +msgid "You do not have permission to change this page." +msgstr "You do not have permission to edit this page" + +msgid "Page Types" +msgstr "Page Types" + +#, fuzzy +#| msgid "You do not have permission to copy this placeholder." +msgid "You do not have permission to copy this page." +msgstr "You do not have permission to copy this placeholder." + +msgid "Overwrite URL" +msgstr "Overwrite URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Keep this field empty if standard path should be used." + +msgid "Start typing..." +msgstr "Start typing..." + +msgid "limit when this page is visible in the menu" +msgstr "limit when this page is visible in the menu" + +msgid "X Frame Options" +msgstr "X Frame Options" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Whether this page can be embedded in other pages or websites." + +msgid "URL options" +msgstr "URL options" + +msgid "Menu options" +msgstr "Menu options" + +msgid "Headers" +msgstr "Headers" + +msgid "Application" +msgstr "Application" + +msgid "Hook application to this page." +msgstr "Hook application to this page." + +msgid "Application configurations" +msgstr "Application configurations" + +msgid "A page with this reverse URL id exists already." +msgstr "A page with this reverse URL id exists already." + +msgid "Invalid application config value" +msgstr "Invalid application config value" + +msgid "An application instance using this configuration already exists." +msgstr "An application instance using this configuration already exists." + +msgid "An application instance with this name already exists." +msgstr "An application instance with this name already exists." + +msgid "You can't move the home page inside another page" +msgstr "You can't move the home page inside another page" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." + +msgid "Yes" +msgstr "Yes" + +msgid "No" +msgstr "No" + +msgid "user" +msgstr "user" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "Add" + +msgid "Change" +msgstr "Change" + +msgid "Delete" +msgstr "Delete" + +msgid "" +"Users can't set page permissions without also being able to change the page. " +"Please also enable 'Can edit'." +msgstr "" +"Users can't set page permissions without also being able to change the page. " +"Please also enable 'Can edit'." + +msgid "" +"Users can't delete page permissions without also being able to change the " +"page. Please also enable 'Can edit'." +msgstr "" +"Users can't delete page permissions without also being able to change the " +"page. Please also enable 'Can edit'." + +msgid "" +"Users can't create page permissions without also being able to change them. " +"Please also enable 'Can edit'." +msgstr "" +"Users can't create page permissions without also being able to change them. " +"Please also enable 'Can edit'." + +msgid "" +"Users can't delete page permissions without also being able to change them. " +"Please also enable 'Can edit'." +msgstr "" +"Users can't delete page permissions without also being able to change them. " +"Please also enable 'Can edit'." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Invalid plugin type '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Language must be set to a supported language!" + +msgid "Parent plugin language must be same as language!" +msgstr "Parent plugin language must be same as language!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Parent plugin placeholder must be same as placeholder!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Plugin position must be greater than %(position)d" + +#, python-format +msgid "Plugin %(plugin)s is not allowed in placeholder '%(slot)s'." +msgstr "" + +msgid "Translations" +msgstr "Translations" + +msgid "Advanced Settings" +msgstr "Advanced Settings" + +msgid "Change Permissions" +msgstr "Change Permissions" + +msgid "The page is not eligible to be home." +msgstr "The page is not eligible to be home." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s object with primary key %(key)r does not exist." + +msgid "error" +msgstr "error" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Error! You don't have permissions to move this page. Please reload the page" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Error! You don't have permissions to copy this page." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." + +msgid "You do not have permission to edit this page" +msgstr "You do not have permission to edit this page" + +msgid "Add Translation" +msgstr "Add Translation" + +msgid "Add Page Copy" +msgstr "Add Page Copy" + +msgid "New sub page" +msgstr "New sub page" + +msgid "New page" +msgstr "New page" + +msgid "" +"You do not have permission to access this site. Please contact your " +"administrator." +msgstr "" +"You do not have permission to access this site. Please contact your " +"administrator." + +msgid "Database error" +msgstr "Database error" + +msgid "Template not valid" +msgstr "Template not valid" + +msgid "Placeholder selection not valid" +msgstr "Placeholder selection not valid" + +msgid "The template was successfully changed" +msgstr "The template was successfully changed" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Placeholder '%s' does not exist in target language" + +msgid "You do not have permission to copy these plugins." +msgstr "You do not have permission to copy these plugins." + +msgid "You do not have permission to delete this page" +msgstr "You do not have permission to delete this page" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Title and plugins with language %(language)s was deleted" + +msgid "Public content" +msgstr "Public content" + +msgid "Empty" +msgstr "Empty" + +msgid "Create Content" +msgstr "Create Content" + +msgid "View restriction" +msgstr "View restriction" + +msgid "View restrictions" +msgstr "View restrictions" + +#, python-format +msgid "Field %s not found" +msgstr "Field %s not found" + +msgid "You do not have permission to edit this item" +msgstr "You do not have permission to edit this item" + +msgid "You do not have permission to add a plugin" +msgstr "You do not have permission to add a plugin" + +msgid "You do not have permission to copy this placeholder." +msgstr "You do not have permission to copy this placeholder." + +msgid "Plugin not found" +msgstr "Plugin not found" + +msgid "You do not have permission to edit this plugin" +msgstr "You do not have permission to edit this plugin" + +msgid "You have no permission to paste this plugin" +msgstr "You have no permission to paste this plugin" + +msgid "You have no permission to paste this placeholder" +msgstr "You have no permission to paste this placeholder" + +msgid "You have no permission to move this plugin" +msgstr "You have no permission to move this plugin" + +msgid "You have no permission to cut this plugin" +msgstr "You have no permission to cut this plugin" + +msgid "You do not have permission to delete this plugin" +msgstr "You do not have permission to delete this plugin" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "The %(name)s plugin \"%(obj)s\" was deleted successfully." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Cannot delete %(name)s" + +msgid "Are you sure?" +msgstr "Are you sure?" + +msgid "You do not have permission to clear this placeholder" +msgstr "You do not have permission to clear this placeholder" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "The placeholder \"%(obj)s\" was cleared successfully." + +msgid "placeholder" +msgstr "placeholder" + +msgid "Page permissions" +msgstr "Page permissions" + +msgid "User & Group permissions" +msgstr "User & Group permissions" + +msgid "Page permissions management" +msgstr "Page permissions management" + +msgid "Actions" +msgstr "Actions" + +msgid "Empty content" +msgstr "Empty content" + +#, fuzzy +#| msgid "You do not have permission to edit this item" +msgid "You do not have permission to change this content." +msgstr "You do not have permission to edit this item" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "%(object_name)s Properties" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Add new %(object_name)s" + +msgid "Add content" +msgstr "Add content" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." + +#, python-format +msgid "Add %(language)s content" +msgstr "Add %(language)s content" + +msgid "Preview" +msgstr "Preview" + +msgid "Settings" +msgstr "Settings" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." + +msgid "" +msgstr "" + +msgid "The selected content does not match this object and grouping." +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "No registered apphook \"%r\" found" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Placeholder" + +msgid "Getting started developer guide" +msgstr "Getting started developer guide" + +msgid "Documentation" +msgstr "Documentation" + +msgid "User guide" +msgstr "User guide" + +msgid "Discord community" +msgstr "Discord community" + +msgid "What's new" +msgstr "What's new" + +msgid "Create" +msgstr "Create" + +msgid "Edit" +msgstr "Edit" + +msgid "Structure" +msgstr "Structure" + +msgid "Content" +msgstr "Content" + +msgid "Help" +msgstr "Help" + +msgid "Sites" +msgstr "Sites" + +msgid "Admin Sites" +msgstr "Admin Sites" + +msgid "Administration" +msgstr "Administration" + +msgid "User settings" +msgstr "User settings" + +msgid "Clipboard..." +msgstr "Clipboard..." + +msgid "Clear clipboard" +msgstr "Clear clipboard" + +msgid "Disable toolbar" +msgstr "Disable toolbar" + +msgid "Shortcuts..." +msgstr "Shortcuts..." + +msgid "Users" +msgstr "Users" + +#, python-format +msgid "Logout %s" +msgstr "Logout %s" + +msgid "Logout" +msgstr "Logout" + +msgid "Language" +msgstr "Language" + +msgid "Delete Translation" +msgstr "Delete Translation" + +msgid "Copy all plugins" +msgstr "Copy all plugins" + +#, python-format +msgid "from %s" +msgstr "from %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Are you sure you want to copy all plugins from %s?" + +msgid "Pages" +msgstr "Pages" + +msgid "Page" +msgstr "Page" + +msgid "Create Page" +msgstr "Create Page" + +msgid "New Page" +msgstr "New Page" + +msgid "New Sub Page" +msgstr "New Sub Page" + +msgid "Duplicate this Page" +msgstr "Duplicate this Page" + +msgid "Page settings" +msgstr "Page settings" + +msgid "Advanced settings" +msgstr "Advanced settings" + +msgid "Templates" +msgstr "Templates" + +msgid "Placeholders" +msgstr "Placeholders" + +msgid "Hide in navigation" +msgstr "Hide in navigation" + +msgid "Display in navigation" +msgstr "Display in navigation" + +msgid "Delete page" +msgstr "Delete page" + +msgid "Create a new page next to the current page." +msgstr "Create a new page next to the current page." + +msgid "Create a page below the current page." +msgstr "Create a page below the current page." + +msgid "Select a valid site" +msgstr "Select a valid site" + +msgid "Select a valid page" +msgstr "Select a valid page" + +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid relative or absolute URL." +msgstr "Enter a valid username." + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "Page %(conflict_page)s has the same url '%(url)s' as current page." + +msgid "Add another" +msgstr "Add another" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Optional. If supplied, will be automatically added within a new text plugin." + +msgid "Provide a title for the new page." +msgstr "Provide a title for the new page." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "Leave empty for automatic slug, or override as required." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "Cannot automatically create slug. Please provide one manually." + +msgid "Please provide a valid slug." +msgstr "Please provide a valid slug." + +msgid "You don't have the permissions required to add a page." +msgstr "You don't have the permissions required to add a page." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "position" + +msgid "language" +msgstr "language" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "creation date" + +msgid "can edit" +msgstr "can edit" + +msgid "can add" +msgstr "can add" + +msgid "can delete" +msgstr "can delete" + +msgid "can change advanced settings" +msgstr "can change advanced settings" + +msgid "can publish" +msgstr "can publish" + +msgid "can change permissions" +msgstr "can change permissions" + +msgid "can move" +msgstr "can move" + +msgid "view restricted" +msgstr "view restricted" + +msgid "can recover pages" +msgstr "can recover pages" + +msgid "group" +msgstr "group" + +msgid "sites" +msgstr "sites" + +msgid "created by" +msgstr "created by" + +msgid "changed by" +msgstr "changed by" + +msgid "publication date" +msgstr "publication date" + +msgid "publication end date" +msgstr "publication end date" + +msgid "in navigation" +msgstr "in navigation" + +msgid "soft root" +msgstr "soft root" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "attached menu" + +msgid "template" +msgstr "template" + +msgid "login required" +msgstr "login required" + +msgid "menu visibility" +msgstr "menu visibility" + +msgid "application" +msgstr "application" + +msgid "application instance name" +msgstr "application instance name" + +msgid "site" +msgstr "site" + +msgid "Grant on" +msgstr "Grant on" + +msgid "page" +msgstr "page" + +#, fuzzy +#| msgid "" +#| "Allows granting and revoking permissions for this page covered by this " +#| "permission." +msgid "Allows this user to grant and revoke page permissions for other users." +msgstr "" +"Allows granting and revoking permissions for this page covered by this " +"permission." + +msgid "" +"Grants frontend view access. Note: as soon as any user or group is given " +"view access to a page, that page becomes restricted — only users/groups with " +"view access can then see it on the frontend." +msgstr "" +"Grants frontend view access. Note: as soon as any user or group is given " +"view access to a page, that page becomes restricted — only users/groups with " +"view access can then see it on the frontend." + +msgid "can view restricted pages" +msgstr "can view restricted pages" + +msgid "no limit set" +msgstr "no limit set" + +msgid "for logged in users only" +msgstr "for logged in users only" + +msgid "for anonymous users only" +msgstr "for anonymous users only" + +msgid "Inherit from parent page" +msgstr "Inherit from parent page" + +msgid "Deny" +msgstr "Deny" + +msgid "Only this website" +msgstr "Only this website" + +msgid "Allow" +msgstr "Allow" + +msgid "title" +msgstr "title" + +msgid "The default title" +msgstr "The default title" + +msgid "Page Title" +msgstr "Page Title" + +msgid "Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Overwrites what is displayed at the top of your browser or in bookmarks" + +msgid "Menu Title" +msgstr "Menu Title" + +msgid "Overwrite what is displayed in the menu" +msgstr "Overwrite what is displayed in the menu" + +msgid "Description meta tag" +msgstr "Description meta tag" + +msgid "A description of the page used by search engines." +msgstr "A description of the page used by search engines." + +msgid "redirect" +msgstr "redirect" + +msgid "Redirects to this URL." +msgstr "Redirects to this URL." + +msgid "slug" +msgstr "slug" + +#, fuzzy +#| msgid "Overwrite URL" +msgid "overwrite URL" +msgstr "Overwrite URL" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "All ancestors will not be displayed in the navigation" + +msgid "The template used to render the content." +msgstr "The template used to render the content." + +msgid "page content" +msgstr "page content" + +msgid "page contents" +msgstr "page contents" + +msgid "default" +msgstr "default" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" + +msgid "Mark this page as a page type" +msgstr "Mark this page as a page type" + +msgid "pages" +msgstr "pages" + +msgid "No available title" +msgstr "No available title" + +msgid "Path" +msgstr "Path" + +msgid "Current page" +msgstr "Current page" + +msgid "Page children (immediate)" +msgstr "Page children (immediate)" + +msgid "Page and children (immediate)" +msgstr "Page and children (immediate)" + +msgid "Page descendants" +msgstr "Page descendants" + +msgid "Page and descendants" +msgstr "Page and descendants" + +msgid "" +"Users can't create a page without also being able to change it. Please also " +"enable 'Can edit'." +msgstr "" +"Users can't create a page without also being able to change it. Please also " +"enable 'Can edit'." + +msgid "" +"Users can't delete a page without also being able to change it. Please also " +"enable 'Can edit'." +msgstr "" +"Users can't delete a page without also being able to change it. Please also " +"enable 'Can edit'." + +msgid "" +"Users can't publish a page without also being able to change it. Please also " +"enable 'Can edit'." +msgstr "" +"Users can't publish a page without also being able to change it. Please also " +"enable 'Can edit'." + +msgid "" +"Users can't change a page's advanced settings without also being able to " +"change it. Please also enable 'Can edit'." +msgstr "" +"Users can't change a page's advanced settings without also being able to " +"change it. Please also enable 'Can edit'." + +msgid "" +"Users can't change a page's permissions without also being able to change " +"it. Please also enable 'Can edit'." +msgstr "" +"Users can't change a page's permissions without also being able to change " +"it. Please also enable 'Can edit'." + +msgid "" +"Users can't move a page without also being able to change it. Please also " +"enable 'Can edit'." +msgstr "" +"Users can't move a page without also being able to change it. Please also " +"enable 'Can edit'." + +msgid "Please select user or group." +msgstr "Please select user or group." + +msgid "can recover any deleted page" +msgstr "can recover any deleted page" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "If none selected, user haves granted permissions to all sites." + +msgid "Page global permission" +msgstr "Page global permission" + +msgid "Pages global permissions" +msgstr "Pages global permissions" + +msgid "Page permission" +msgstr "Page permission" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." + +msgid "User (page)" +msgstr "User (page)" + +msgid "Users (page)" +msgstr "Users (page)" + +msgid "User group (page)" +msgstr "User group (page)" + +msgid "User groups (page)" +msgstr "User groups (page)" + +msgid "slot" +msgstr "slot" + +msgid "width" +msgstr "width" + +msgid "Edit object" +msgstr "Edit object" + +msgid "This is an external placeholder" +msgstr "This is an external placeholder" + +msgid "plugin" +msgstr "plugin" + +msgid "plugins" +msgstr "plugins" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "The language for the admin interface and toolbar" + +msgid "user setting" +msgstr "user setting" + +msgid "user settings" +msgstr "user settings" + +msgid "Advanced options" +msgstr "Advanced options" + +msgid "Generic" +msgstr "Generic" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "The %(name)s \"%(obj)s\" was changed successfully." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "There are no further settings for this plugin. Please press save." + +msgid "Moved" +msgstr "Moved" + +msgid "Changed" +msgstr "Changed" + +msgid "Deleted" +msgstr "Deleted" + +msgid "Added Page Translation" +msgstr "Added Page Translation" + +msgid "Changed Page Translation" +msgstr "Changed Page Translation" + +msgid "Deleted Page Translation" +msgstr "Deleted Page Translation" + +msgid "Added Plugin" +msgstr "Added Plugin" + +msgid "Changed Plugin" +msgstr "Changed Plugin" + +msgid "Moved Plugin" +msgstr "Moved Plugin" + +msgid "Deleted Plugin" +msgstr "Deleted Plugin" + +msgid "Cut Plugin" +msgstr "Cut Plugin" + +msgid "Paste Plugin" +msgstr "Paste Plugin" + +msgid "Paste to Placeholder" +msgstr "Paste to Placeholder" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Added plugins to placeholder from clipboard" + +msgid "Cleared Placeholder" +msgstr "Cleared Placeholder" + +msgid "Save" +msgstr "Save" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "Some fields cannot be changed since they are read-only content." + +#, python-format +msgid "Log in to administration here." +msgstr "Log in to administration here." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Login url: %(login_url)s" + +msgid "Username:" +msgstr "Username:" + +msgid "Password:" +msgstr "Password:" + +msgid "Add a page" +msgstr "Add a page" + +msgid "Change a page" +msgstr "Change a page" + +msgid "Home" +msgstr "Home" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Please correct the error below." +msgstr[1] "Please correct the errors below." + +msgid "All permissions" +msgstr "All permissions" + +msgid "Loading..." +msgstr "Loading..." + +msgid "Save and continue editing" +msgstr "Save and continue editing" + +#, 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 "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" + +msgid "Yes, I’m sure" +msgstr "Yes, I’m sure" + +msgid "No, take me back" +msgstr "No, take me back" + +msgid "Summary" +msgstr "Summary" + +msgid "View on site" +msgstr "View on site" + +msgid "User" +msgstr "User" + +msgid "Group" +msgstr "Group" + +msgid "Can edit" +msgstr "Can edit" + +msgid "Can add" +msgstr "Can add" + +msgid "Can delete" +msgstr "Can delete" + +msgid "Can publish" +msgstr "Can publish" + +msgid "Can change permissions" +msgstr "Can change permissions" + +msgid "Can move" +msgstr "Can move" + +msgid "Can view" +msgstr "Can view" + +msgid "(global)" +msgstr "(global)" + +msgid "(current)" +msgstr "(current)" + +msgid "Page doesn't inherit any permissions." +msgstr "Page doesn't inherit any permissions." + +msgid "Edit model" +msgstr "Edit model" + +msgid "Save as new" +msgstr "Save as new" + +msgid "Save and add another" +msgstr "Save and add another" + +msgid "Copy" +msgstr "Copy" + +msgid "Cut" +msgstr "Cut" + +msgid "Paste" +msgstr "Paste" + +msgid "Set as home" +msgstr "Set as home" + +msgid "is restricted" +msgstr "is restricted" + +msgid "last change by" +msgstr "last change by" + +msgid "last change on" +msgstr "last change on" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "List of pages" + +msgid "Search" +msgstr "Search" + +msgid "Page Tree" +msgstr "Page Tree" + +msgid "Reset filter" +msgstr "Reset filter" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Restore deleted %(name)s\n" +" " + +msgid "Main Navigation" +msgstr "Main Navigation" + +msgid "Options" +msgstr "Options" + +msgid "Successfully moved" +msgstr "Successfully moved" + +msgid "Changes within the tree might require a refresh." +msgstr "Changes within the tree might require a refresh." + +msgid "Error:" +msgstr "Error:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the " +"Page's Advanced settings to manage apphooks." +msgstr "" +"This page cannot be copied because an application is attached to it. See the " +"Page's Advanced settings to manage apphooks." + +msgid "Are you sure you want to § this page?" +msgstr "Are you sure you want to § this page?" + +msgid "Reload" +msgstr "Reload" + +msgid "New node" +msgstr "New node" + +msgid "nodes" +msgstr "nodes" + +msgid "View" +msgstr "View" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add " +"%(object)s now.\n" +" " +msgstr "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add " +"%(object)s now.\n" +" " + +msgid "Copy options" +msgstr "Copy options" + +msgid "Choose copy options" +msgstr "Choose copy options" + +msgid "Close" +msgstr "Close" + +msgid "Legend" +msgstr "Legend" + +msgid "In menu" +msgstr "In menu" + +msgid "Not in menu" +msgstr "Not in menu" + +msgid "View page" +msgstr "View page" + +msgid "Softroot" +msgstr "Softroot" + +msgid "Apphook" +msgstr "Apphook" + +msgid "Redirect" +msgstr "Redirect" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Application: %(apphook)s" + +msgid "in menu" +msgstr "in menu" + +msgid "not in menu" +msgstr "not in menu" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Page settings (SHIFT click for advanced settings)" + +msgid "Permissions" +msgstr "Permissions" + +msgid "inherited" +msgstr "inherited" + +msgid "This page has no preview!" +msgstr "This page has no preview!" + +msgid "Potentially the attached apphook does not provide content for its root." +msgstr "" +"Potentially the attached apphook does not provide content for its root." + +msgid "It is being redirected to:" +msgstr "It is being redirected to:" + +msgid "Clipboard" +msgstr "Clipboard" + +msgid "Add plugin" +msgstr "Add plugin" + +msgid "Copy all" +msgstr "Copy all" + +msgid "Copy from" +msgstr "Copy from" + +msgid "Empty all" +msgstr "Empty all" + +msgid "Filter plugins..." +msgstr "Filter plugins..." + +msgid "Expand all" +msgstr "Expand all" + +msgid "Collapse all" +msgstr "Collapse all" + +msgid "You cannot add plugins to this plugin." +msgstr "You cannot add plugins to this plugin." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "This plugin cannot be moved or edited outside of its parent" + +msgid "Clipboard is empty." +msgstr "Clipboard is empty." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "This plugin does not allow plugins of this type as nested plugins." + +msgid "This plugin cannot have nested plugins." +msgstr "This plugin cannot have nested plugins." + +msgid "Highlight" +msgstr "Highlight" + +msgid "Available plugins" +msgstr "Available plugins" + +msgid "Toggle structure" +msgstr "Toggle structure" + +msgid "Login" +msgstr "Login" + +msgid "Add plugin to" +msgstr "Add plugin to" + +msgid "More" +msgstr "More" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Cancel" + +msgid "The following error occurred:" +msgstr "The following error occurred:" + +msgid "Action successful." +msgstr "Action successful." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Are you sure you want to delete this plugin?" + +msgid "Are you sure you want to publish this page?" +msgstr "Are you sure you want to publish this page?" + +msgid "Plugin will be added here" +msgstr "Plugin will be added here" + +msgid "You have unsaved changes." +msgstr "You have unsaved changes." + +msgid "Loading" +msgstr "Loading" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Are you sure you want to abandon these changes?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"The form could not be loaded. Please check that the server is running " +"correctly." + +msgid "Most used" +msgstr "Most used" + +msgid "Shortcuts" +msgstr "Shortcuts" + +msgid "The page was changed in the meantime, reloading..." +msgstr "The page was changed in the meantime, reloading..." + +msgid "CMS-wide Shortcuts" +msgstr "CMS-wide Shortcuts" + +msgid "Bring up this help dialog" +msgstr "Bring up this help dialog" + +msgid "Close/cancel" +msgstr "Close/cancel" + +msgid "Toggle structure mode" +msgstr "Toggle structure mode" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Toggle structure mode and highlight hovered-over plugin" + +msgid "Open \\" +msgstr "Open \\" + +msgid "Focus on Toolbar" +msgstr "Focus on Toolbar" + +msgid "Focus on placeholders" +msgstr "Focus on placeholders" + +msgid "Move to next/previous element" +msgstr "Move to next/previous element" + +msgid "Focus on plugins of placeholder" +msgstr "Focus on plugins of placeholder" + +msgid "Edit plugin" +msgstr "Edit plugin" + +msgid "Open actions menu" +msgstr "Open actions menu" + +msgid "Expand/collapse" +msgstr "Expand/collapse" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Login failed. Please check your credentials and try again." + +msgid "Double-click to edit" +msgstr "Double-click to edit" + +msgid "Tap to edit" +msgstr "Tap to edit" + +msgid "Click to go back" +msgstr "Click to go back" + +msgid "Click to go forward" +msgstr "Click to go forward" + +msgid "Minimize" +msgstr "Minimize" + +msgid "Maximize" +msgstr "Maximize" + +msgid "Placeholder not editable" +msgstr "Placeholder not editable" + +msgid "Drop a plugin here" +msgstr "Drop a plugin here" + +msgid "Welcome to your new django CMS installation!" +msgstr "Welcome to your new django CMS installation!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Version %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Let’s build something great together!" + +msgid "Please log in" +msgstr "Please log in" + +msgid "" +"\n" +" Add your " +"first page\n" +" " +msgstr "" +"\n" +" Add your " +"first page\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly " +"through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to " +"donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly " +"through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to " +"donate is on\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit " +"organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit " +"organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Contribute

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Installation Notes" + +msgid "Support" +msgstr "Support" + +msgid "Give back" +msgstr "Give back" + +msgid "" +"\n" +"

If you don't see the django " +"CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

If you don't see the django " +"CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " + +msgid "" +"\n" +"

You're seeing this " +"message because you have\n" +" DEBUG = True in your django settings " +"file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

You're seeing this " +"message because you have\n" +" DEBUG = True in your django settings " +"file and\n" +" haven't added any pages yet.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Welcome to django CMS" + +msgid "Add Another" +msgstr "Add Another" + +msgid "Back" +msgstr "Back" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "Please choose an option from below to proceed to the next step." + +msgid "Next" +msgstr "Next" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Unknown" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Page not found on %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments " +"`%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"A template tag couldn't find the page with lookup arguments " +"`%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Two columns" + +msgid "Three columns" +msgstr "Three columns" + +msgid "username" +msgstr "username" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" + +msgid "Enter a valid username." +msgstr "Enter a valid username." + +msgid "email address" +msgstr "email address" + +msgid "staff status" +msgstr "staff status" + +msgid "Designates whether the user can log into this admin site." +msgstr "Designates whether the user can log into this admin site." + +msgid "active" +msgstr "active" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." + +msgid "users" +msgstr "users" + +msgid "Title Extension" +msgstr "Title Extension" + +msgid "Page Extension" +msgstr "Page Extension" + +msgid "object ID" +msgstr "object ID" + +msgid "Example1 App" +msgstr "Example1 App" + +msgid "MultilingualExample1 App" +msgstr "MultilingualExample1 App" + +msgid "Example1" +msgstr "Example1" + +msgid "Examples" +msgstr "Examples" + +msgid "Extra Context" +msgstr "Extra Context" + +msgid "Articles" +msgstr "Articles" + +msgid "Sample App" +msgstr "Sample App" + +msgid "Sample App with config" +msgstr "Sample App with config" + +msgid "Sample App with excluded permissions" +msgstr "Sample App with excluded permissions" + +msgid "Sample App 2" +msgstr "Sample App 2" + +msgid "Sample App 3" +msgstr "Sample App 3" + +msgid "Sample App Without Landing Page" +msgstr "Sample App Without Landing Page" + +msgid "Namespaced App" +msgstr "Namespaced App" + +msgid "Parent app" +msgstr "Parent app" + +msgid "Child app" +msgstr "Child app" + +msgid "Variable urls-menus App" +msgstr "Variable urls-menus App" + +msgid "sample root page" +msgstr "sample root page" + +msgid "sample settings page" +msgstr "sample settings page" + +msgid "sample account page" +msgstr "sample account page" + +msgid "sample my profile page" +msgstr "sample my profile page" + +msgid "Static Menu" +msgstr "Static Menu" + +msgid "Static Menu2" +msgstr "Static Menu2" + +msgid "Static Menu3" +msgstr "Static Menu3" + +msgid "Static Menu4" +msgstr "Static Menu4" + +msgid "Category" +msgstr "Category" + +msgid "Categories" +msgstr "Categories" + +msgid "Add Category" +msgstr "Add Category" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Change Category" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Thanks for spending some quality time with the Web site today." + +msgid "English" +msgstr "" + +msgid "French" +msgstr "" + +msgid "German" +msgstr "" + +msgid "Brazilian Portuguese" +msgstr "" + +msgid "Dutch" +msgstr "" + +#, fuzzy +#| msgid "Two columns" +msgid "two columns" +msgstr "Two columns" + +#, fuzzy +#| msgid "Three columns" +msgid "three columns" +msgstr "Three columns" + +#, fuzzy +#| msgid "in navigation" +msgid "navigation examples" +msgstr "in navigation" + +msgid "sidebar column" +msgstr "" + +#, fuzzy +#| msgid "Three columns" +msgid "left column" +msgstr "Three columns" + +#, fuzzy +#| msgid "Add plugin" +msgid "Add a link" +msgstr "Add plugin" + +#, fuzzy +#| msgid "Three columns" +msgid "right column" +msgstr "Three columns" + +msgid "Inherit the template of the nearest ancestor" +msgstr "Inherit the template of the nearest ancestor" + +msgid "UserSettings" +msgstr "UserSettings" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Add plugin to placeholder \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Add plugin to %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Single placeholder" + +msgid "Community forum" +msgstr "Community forum" + +msgid "Getting started" +msgstr "Getting started" + +msgid "Talk to us" +msgstr "Talk to us" + +msgid "CMS - your user account was created." +msgstr "CMS - your user account was created." + +msgid "CMS - your user account was changed." +msgstr "CMS - your user account was changed." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "This placeholder already has the maximum number of plugins (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Create a new %s instance." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "A wizard has already been registered for model: %s" + +#~ msgid "" +#~ "(to change it, first unpublish the currently published version of this " +#~ "page)" +#~ msgstr "" +#~ "(to change it, first unpublish the currently published version of this " +#~ "page)" + +#~ msgid "" +#~ "Users can't delete page permissions without permissions to change " +#~ "permissions. Edit permissions required." +#~ msgstr "" +#~ "Users can't delete page permissions without permissions to change " +#~ "permissions. Edit permissions required." + +#~ msgid "on page level" +#~ msgstr "on page level" + +#~ msgid "frontend view restriction" +#~ msgstr "frontend view restriction" + +#~ msgid "by template" +#~ msgstr "by template" + +#~ msgid "by code" +#~ msgstr "by code" + +#~ msgid "static placeholder name" +#~ msgstr "static placeholder name" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "To render the static placeholder in templates." + +#~ msgid "placeholder content" +#~ msgstr "placeholder content" + +#~ msgid "creation_method" +#~ msgstr "creation_method" + +#~ msgid "static placeholder" +#~ msgstr "static placeholder" + +#~ msgid "static placeholders" +#~ msgstr "static placeholders" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "A static placeholder with the same site and code already exists" + +#~ msgid "Title" +#~ msgstr "Title" + +#~ msgid "Soft root" +#~ msgstr "Soft root" + +#, python-format +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "The %(name)s \"%(obj)s\" was deleted successfully." + +#~ msgid "Alias" +#~ msgstr "Alias" + +#~ msgid "Create Alias" +#~ msgstr "Create Alias" + +#, python-format +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." + +#~ msgid "Edit this Page" +#~ msgstr "Edit this Page" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "overwrite the title (html title tag)" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "overwrite the title in the menu" + +#~ msgid "description" +#~ msgstr "description" + +#~ msgid "The text displayed in search engines." +#~ msgstr "The text displayed in search engines." + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "Open \"Create\" dialog" + +#~ msgid "Installation successful!" +#~ msgstr "Installation successful!" + +#~ msgid "Add your first page" +#~ msgstr "Add your first page" + +#, python-format +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version " +#~ "%(cms_version)s.\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " Welcome to django CMS version " +#~ "%(cms_version)s.\n" +#~ " " + +#, python-format +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "You do not have permission to change a page's navigation status" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "You cannot change this page's navigation status" + +#~ msgid "Slug must not be empty." +#~ msgstr "Slug must not be empty." diff --git a/cms/locale/en/LC_MESSAGES/djangojs.po b/cms/locale/en/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..d79a1c28 --- /dev/null +++ b/cms/locale/en/LC_MESSAGES/djangojs.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2015-10-31 12:28+0000\n" +"Last-Translator: yakky \n" +"Language-Team: English (http://www.transifex.com/divio/django-cms/language/" +"en/)\n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Are you sure you want to change tabs without saving the page first?" diff --git a/cms/locale/en_GB/LC_MESSAGES/django.po b/cms/locale/en_GB/LC_MESSAGES/django.po new file mode 100644 index 00000000..e817c633 --- /dev/null +++ b/cms/locale/en_GB/LC_MESSAGES/django.po @@ -0,0 +1,2266 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Martin Koistinen , 2022 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Martin Koistinen , 2022\n" +"Language-Team: English (United Kingdom) (https://app.transifex.com/divio/teams/58664/en_GB/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_GB\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "A page with this reverse URL Id exists already." + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/en_GB/LC_MESSAGES/djangojs.po b/cms/locale/en_GB/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..874fe26c --- /dev/null +++ b/cms/locale/en_GB/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: English (United Kingdom) (http://app.transifex.com/divio/django-cms/language/en_GB/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_GB\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/en_HK/LC_MESSAGES/django.po b/cms/locale/en_HK/LC_MESSAGES/django.po new file mode 100644 index 00000000..696700c2 --- /dev/null +++ b/cms/locale/en_HK/LC_MESSAGES/django.po @@ -0,0 +1,2264 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: English (Hong Kong) (https://app.transifex.com/divio/teams/58664/en_HK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_HK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/en_HK/LC_MESSAGES/djangojs.po b/cms/locale/en_HK/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..8e1ba451 --- /dev/null +++ b/cms/locale/en_HK/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: English (Hong Kong) (http://app.transifex.com/divio/django-cms/language/en_HK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_HK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/en_US/LC_MESSAGES/django.po b/cms/locale/en_US/LC_MESSAGES/django.po new file mode 100644 index 00000000..32eb6621 --- /dev/null +++ b/cms/locale/en_US/LC_MESSAGES/django.po @@ -0,0 +1,2264 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: English (United States) (https://app.transifex.com/divio/teams/58664/en_US/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_US\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/en_US/LC_MESSAGES/djangojs.po b/cms/locale/en_US/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..6f1a1521 --- /dev/null +++ b/cms/locale/en_US/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: English (United States) (http://app.transifex.com/divio/django-cms/language/en_US/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_US\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/eo/LC_MESSAGES/django.po b/cms/locale/eo/LC_MESSAGES/django.po new file mode 100644 index 00000000..8d7b25a8 --- /dev/null +++ b/cms/locale/eo/LC_MESSAGES/django.po @@ -0,0 +1,2268 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2023 +# Baptiste D , 2025 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Baptiste D , 2025\n" +"Language-Team: Esperanto (https://app.transifex.com/divio/teams/58664/eo/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eo\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "Kopiaj permesoj" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "URLa nomo" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "La parto de la titolo uzita en la URL" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "Paĝa tipo" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "Paĝaj tipoj" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "Anstataŭigu URLn" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" +"Konservu tiun kampon malplenan se la apriora dosierindiko devus esti uzata." + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "Komencu tajpi…" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "X kadro opcioj" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "Aplikaĵo" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "Aplikaĵa hoko al tiu paĝo." + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "Aplikaĵa agordoj" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "uzanto" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "Aldoni" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "Ŝanĝi" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "Forviŝi" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "La lingvo devas esti subtenata lingvo!" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "Supera kromaĵa lingvo devas esti sama al lingvo!" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "Specialaj agordoj" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "Ŝangi permesojn" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "Vi ne havas permeson redakti tiun paĝon" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "Aldoni paĝan kopion" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "Datumbaza eraro" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "Ŝablono ne validas" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "Vi sukcese ŝanĝis la ŝablonon" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "Vi ne havas permeson kopii tiujn kromaĵojn." + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "Malplena" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "Vida limigo" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "Vidaj limigoj" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "Kampo %s ne trovita" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "Vi ne havas permeson redakti tiun eron" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "Vi ne havas permeson aldoni kromaĵon" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "Kromaĵo ne trovita" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "Ĉu vi certas?" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "Paĝaj permesoj" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "Uzantaj kaj grupaj permesoj" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "Paĝa permesa administrado" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "django CMS" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "Strukturo" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "Enhavo" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "Retejoj" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "Adminretejoj" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "Administrado" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "Uzantaj agordoj" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "Malŝalti ilobreton" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "Uzantoj" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "Elsaluti %s" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "Elsaluti" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "Lingvo" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "Paĝoj" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "Paĝo" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "Nova paĝo" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "Nova subpaĝo" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "Duobli tiun paĝon" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "Paĝaj agordoj" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "Specialaj agordoj" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "Ŝablonoj" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "Kaŝi dum navigo" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "Afiŝi dum navigo" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "Forviŝi paĝon" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "Elektu validan retejon" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "Elektu validan paĝon" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "ID" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "pozicio" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "lingvo" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "kromaĵa_nomo" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "kreodato" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "eblas redakti" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "eblas aldoni" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "elbas forviŝi" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "eblas ŝanĝi specialajn agordojn" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "eblas publikigi" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "eblas ŝanĝi permesojn" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "eblas movigi" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "vidi limigitaj" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "grupo" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "retejoj" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "kreis " + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "ŝanĝis " + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "dato de publikigo" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "dato de fino de publikigo" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "dum navigo" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "id" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "aplikaĵo" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "retejo" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "paĝo" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "Malpermesi" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "Nur en tiu retejo" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "Permesi" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "La apriora titolo" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "Paĝa titolo" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "Anstataŭigu tiun, kiu estas supre en via foliumilo aŭ en paĝmarkiloj" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "Menua titolo" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "Antataŭigas tiun, kiu estas afiŝita en la menuo" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "Metaetikedo de priskribo" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "Priskribo de la paĝo uzita de serĉiloj. " + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "Aldirektas al tiun URL." + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "aprioro" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "paĝoj" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "Nuna paĝo" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "Permesoj" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "Aldoni alian" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "Titolo" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "Aldirekto" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "Aliaso" + +#~ msgid "Create Alias" +#~ msgstr "Krei aliason" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "Redakti tiun paĝon" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "URLa nomo ne devas esti malplena." diff --git a/cms/locale/eo/LC_MESSAGES/djangojs.po b/cms/locale/eo/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..44222be7 --- /dev/null +++ b/cms/locale/eo/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Esperanto (http://app.transifex.com/divio/django-cms/language/eo/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eo\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/es/LC_MESSAGES/django.po b/cms/locale/es/LC_MESSAGES/django.po new file mode 100644 index 00000000..1dd6c795 --- /dev/null +++ b/cms/locale/es/LC_MESSAGES/django.po @@ -0,0 +1,1780 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Erick Del Castillo Deza , 2023 +# Luis Montiel , 2023 +# Pier Jose Gotta Perez , 2023 +# Alexandre Filgueira , 2023 +# Luis Zárate , 2025 +# Adolfo Gómez , 2025 +# Diego Alejandro Romero Mercado, 2025 +# jorlugaqui , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Spanish (https://app.transifex.com/divio/teams/58664/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "All" +msgstr "Todo" + +msgid "Copy permissions" +msgstr "Permisos de copia" + +msgid "Slug" +msgstr "Nombre único (slug)" + +msgid "The part of the title that is used in the URL" +msgstr "La parte del título que se usa en la URL" + +msgid "Page type" +msgstr "Tipo de página" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Tipos de Página" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Sobreescribir la URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Mantenga este campo vacío si se va a utilizar la ruta estándar." + +msgid "Start typing..." +msgstr "Empiece a teclear..." + +msgid "menu visibility" +msgstr "visibilidad del menú" + +msgid "limit when this page is visible in the menu" +msgstr "límite cuando la página es visible en el menú" + +msgid "X Frame Options" +msgstr "Opciones X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" +"Indica si esta página puede incrustarse en otras páginas o sitios web." + +msgid "URL options" +msgstr "Opciones de URL" + +msgid "Menu options" +msgstr "Opciones de menú" + +msgid "Headers" +msgstr "Cabeceras" + +msgid "Application" +msgstr "Aplicación" + +msgid "Hook application to this page." +msgstr "Integrar la aplicación a esta página." + +msgid "Application configurations" +msgstr "Configuraciones de aplicación" + +msgid "A page with this reverse URL id exists already." +msgstr "Ya existe una página con este id de URL inversa." + +msgid "Invalid application config value" +msgstr "Configuración de aplicación inválida" + +msgid "An application instance using this configuration already exists." +msgstr "Ya existe una instancia de la aplicación usando esta configuración." + +msgid "An application instance with this name already exists." +msgstr "Ya existe una instancia de la aplicación con este nombre." + +msgid "You can't move the home page inside another page" +msgstr "No puede mover la página de Inicio detro de otra página" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"No puede tener dos páginas con el mismo slug en el mismo nivel de página. " +"Modifique el slug de una de las páginas antes de intentar moverla de nuevo." + +msgid "Yes" +msgstr "Si" + +msgid "No" +msgstr "No" + +msgid "user" +msgstr "usuario" + +msgid "can_view" +msgstr "puede ver" + +msgid "Add" +msgstr "Añadir" + +msgid "Change" +msgstr "Cambiar" + +msgid "Delete" +msgstr "Eliminar" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Usuarios no pueden crear una página sin tener permisos para cambiar la " +"página creada. Permisos de edición son requeridos." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Usuarios no pueden eliminar una página sin tener permisos de cambio de " +"página. Permisos de edición son requeridos." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Usuarios no pueden configurar permisos de página sin tener permisos de " +"cambio de página. Permisos de edición son requeridos." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Usuarios no pueden eliminar permisos de página sin tener permisos de cambio " +"de página. Permisos de edición son requeridos." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Usuarios no pueden crear permisos de página sin tener permisos de cambio de " +"página. Permisos de edición son requeridos." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Usuarios no pueden eliminar permisos de página sin tener permisos de cambio " +"de permisos. Permisos de edición son requeridos." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Tipo de extension inválida '%s'" + +msgid "Language must be set to a supported language!" +msgstr "¡El idioma debe ser fijado a un idioma soportado!" + +msgid "Parent plugin language must be same as language!" +msgstr "El lenguaje debe ser el mismo que el del plugin padre" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" +"¡El marcador de posición debe ser igual al marcador de posición padre!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "La posición del plugin debe ser mayor que %(position)d" + +msgid "Translations" +msgstr "Traducciones" + +msgid "Advanced Settings" +msgstr "Configuración avanzada" + +msgid "The page is not eligible to be home." +msgstr "Ésta página no es elegible para ser Inicio" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "El objeto %(name)s con la clave primaria %(key)r no existe." + +msgid "error" +msgstr "error" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Error! Usted no tiene permisos para cambiar esta página. Por favor, " +"refrescar la página." + +msgid "Error! You don't have permissions to copy this page." +msgstr "¡Error! Usted no tiene permisos para copiar esta página" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"¡Error! La página que está pegando no está traducida a ninguno de los " +"idiomas configurados por el sitio de destino." + +msgid "You do not have permission to edit this page" +msgstr "No tiene permisos para editar esta página" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(para cambiarlo, primero despublique la versión actualmente publicada de " +"esta página)" + +msgid "Add Translation" +msgstr "Agregar Traducción" + +msgid "Add Page Copy" +msgstr "Añadir Copia de Página" + +msgid "New sub page" +msgstr "Nueva sub página" + +msgid "New page" +msgstr "Nueva página" + +msgid "Database error" +msgstr "Error de Base de Datos" + +msgid "Template not valid" +msgstr "Plantilla inválida" + +msgid "Placeholder selection not valid" +msgstr "La selección de placeholder no es válida" + +msgid "The template was successfully changed" +msgstr "La plantilla fue cambiada exitosamente" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "El placeholder '%s' no existe en el idioma de destino" + +msgid "You do not have permission to copy these plugins." +msgstr "No tiene permisos para copiar estas extensiones" + +msgid "You do not have permission to delete this page" +msgstr "No tiene permisos para eliminar esta página" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" +"El título y los plugins con el lenguaje %(language)s fueron eliminados." + +msgid "Public content" +msgstr "Contenido público" + +msgid "Empty" +msgstr "Vacio" + +msgid "Create Content" +msgstr "Crear Contenido" + +msgid "View restriction" +msgstr "Mostrar restricción" + +msgid "View restrictions" +msgstr "Mostrar restricciones" + +#, python-format +msgid "Field %s not found" +msgstr "Campo %s no hallado" + +msgid "You do not have permission to edit this item" +msgstr "No tiene permisos para editar este item" + +msgid "You do not have permission to add a plugin" +msgstr "No tiene permisos para agregar conectores o plugins" + +msgid "You do not have permission to copy this placeholder." +msgstr "No tienes permisos para copiar este marcador de posición." + +msgid "Plugin not found" +msgstr "Complemento no encontrado" + +msgid "You do not have permission to edit this plugin" +msgstr "No tiene permisos para editar esta extensin" + +msgid "You have no permission to paste this plugin" +msgstr "No tienes permiso para copiar esta extensión" + +msgid "You have no permission to paste this placeholder" +msgstr "No tienes permiso para copiar este marcador de posición" + +msgid "You have no permission to move this plugin" +msgstr "No tienes permiso para mover esta extensión" + +msgid "You have no permission to cut this plugin" +msgstr "No tienes permiso para cortar esta extensión" + +msgid "You do not have permission to delete this plugin" +msgstr "No tiene permisos para eliminar esta extensión" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "La extesión \"%(name)s\" %(obj)s\" fue eliminada exitosamente." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "No puede borrar %(name)s" + +msgid "Are you sure?" +msgstr "¿Está seguro?" + +msgid "You do not have permission to clear this placeholder" +msgstr "No tiene permisos para quitar este marcador de posición" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "El marcador de posición \"%(obj)s\" fue quitado exitosamente." + +msgid "placeholder" +msgstr "marcador de posición" + +msgid "Page permissions" +msgstr "Permisos de página" + +msgid "User & Group permissions" +msgstr "Permisos de usuario y grupo" + +msgid "Page permissions management" +msgstr "Administración de permisos de la página" + +msgid "Actions" +msgstr "Acciones" + +msgid "Empty content" +msgstr "Contenido vacío" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Propiedades de %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Añadir nuevo %(object_name)s" + +msgid "Add content" +msgstr "Añadir contenido" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"El contenido del idioma actual ha cambiado. Haga clic en \"Cancelar\" para " +"volver al formulario y guardar los cambios. Haga clic en \"Aceptar\" para " +"descartar los cambios." + +#, python-format +msgid "Add %(language)s content" +msgstr "Añadir contenido en %(language)s" + +msgid "Preview" +msgstr "Previo" + +msgid "Settings" +msgstr "Configuración" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Idioma %(value)s no válido. Este formulario no se puede procesar. Intente " +"cambiar de idioma." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Sin apphook \"%r\" encontrada" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Placeholder" + +msgid "Create" +msgstr "Crear" + +msgid "Edit" +msgstr "Editar" + +msgid "Structure" +msgstr "Estructura" + +msgid "Content" +msgstr "Contenido" + +msgid "Sites" +msgstr "Sitios" + +msgid "Admin Sites" +msgstr "Administrar Sitios" + +msgid "Administration" +msgstr "Administración" + +msgid "User settings" +msgstr "Configuración de usuario" + +msgid "Clipboard..." +msgstr "Portapapeles..." + +msgid "Clear clipboard" +msgstr "Limpiar portapapeles" + +msgid "Disable toolbar" +msgstr "Inhabilitar barra de herramientas" + +msgid "Shortcuts..." +msgstr "Atajos..." + +msgid "Users" +msgstr "Usuarios" + +#, python-format +msgid "Logout %s" +msgstr "Salir %s" + +msgid "Logout" +msgstr "Salir" + +msgid "Language" +msgstr "Idioma" + +msgid "Delete Translation" +msgstr "Eliminar Traducción" + +msgid "Copy all plugins" +msgstr "Copiar todas las extensiones" + +#, python-format +msgid "from %s" +msgstr "de %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "¿Está seguro de querer copiar todas las extensiones desde %s?" + +msgid "Pages" +msgstr "Páginas" + +msgid "Page" +msgstr "Página" + +msgid "Create Page" +msgstr "Crear Página" + +msgid "New Page" +msgstr "Nueva Página" + +msgid "New Sub Page" +msgstr "Nueva Sub Página" + +msgid "Duplicate this Page" +msgstr "Duplicar esta Página" + +msgid "Page settings" +msgstr "Configuración de la página" + +msgid "Advanced settings" +msgstr "Configuración avanzada" + +msgid "Templates" +msgstr "Plantillas" + +msgid "Placeholders" +msgstr "Placeholders" + +msgid "Hide in navigation" +msgstr "Oculto en navegación" + +msgid "Display in navigation" +msgstr "Mostrar en navegación" + +msgid "Delete page" +msgstr "Eliminar página" + +msgid "Create a new page next to the current page." +msgstr "Crear nueva página a continuación de la página actual." + +msgid "Create a page below the current page." +msgstr "Crear página debajo de la página actual." + +msgid "Select a valid site" +msgstr "Elija un sitio válido" + +msgid "Select a valid page" +msgstr "Elija una página válida" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"La página %(conflict_page)s tiene la misma url '%(url)s' que la página " +"actual \"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"La página %(conflict_page)s tiene la misma url '%(url)s' que la página " +"actual." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Opcional. Si se suministra, se añadirá automáticamente dentro de un nuevo " +"plugin de texto ." + +msgid "Provide a title for the new page." +msgstr "Introduzca un titulo para la página nueva." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" +"Dejar en blanco para un slug automático, o configurar como sea necesario." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "No se puede crear slug automáticamente. Proporcione uno manualmente." + +msgid "Please provide a valid slug." +msgstr "Por favor proporcione un slug válido" + +msgid "You don't have the permissions required to add a page." +msgstr "No tiene los permisos necesarios para agregar una página." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "posición" + +msgid "language" +msgstr "idioma" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "fecha de creación" + +msgid "can edit" +msgstr "puede editar" + +msgid "can add" +msgstr "puede añadir" + +msgid "can delete" +msgstr "puede eliminar" + +msgid "can change advanced settings" +msgstr "puede cambiar la configuración avanzada" + +msgid "can publish" +msgstr "puede publicar" + +msgid "can change permissions" +msgstr "puede cambiar permisos" + +msgid "can move" +msgstr "puede mover" + +msgid "view restricted" +msgstr "vista restringida" + +msgid "can recover pages" +msgstr "puede recuperar páginas" + +msgid "group" +msgstr "grupo" + +msgid "sites" +msgstr "sitios" + +msgid "created by" +msgstr "creado por" + +msgid "changed by" +msgstr "cambiado por" + +msgid "publication date" +msgstr "fecha de publicación" + +msgid "publication end date" +msgstr "fecha final de la publicación" + +msgid "in navigation" +msgstr "en navegación" + +msgid "soft root" +msgstr "soft root" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "menú anclado" + +msgid "template" +msgstr "plantilla" + +msgid "login required" +msgstr "se necesita autentificar" + +msgid "application" +msgstr "aplicación" + +msgid "application instance name" +msgstr "nombre de instancia de aplicación" + +msgid "site" +msgstr "sitio" + +msgid "Grant on" +msgstr "Autorizado" + +msgid "page" +msgstr "página" + +msgid "no limit set" +msgstr "sin límite establecido" + +msgid "for logged in users only" +msgstr "solo para usuarios identificados" + +msgid "for anonymous users only" +msgstr "solo para usuarios anónimos" + +msgid "Inherit from parent page" +msgstr "Heredar de la página padre" + +msgid "Deny" +msgstr "Denegar" + +msgid "Only this website" +msgstr "Solo este sitio web" + +msgid "Allow" +msgstr "Permitir" + +msgid "title" +msgstr "título" + +msgid "The default title" +msgstr "El título por defecto" + +msgid "Page Title" +msgstr "Título de la Página" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Sobreescribe lo que se muestra en la parte superior de su navegador o en los" +" marcadores" + +msgid "Menu Title" +msgstr "Título del Menú" + +msgid "Overwrite what is displayed in the menu" +msgstr "Sobreescribir lo que se muestra en el menú" + +msgid "Description meta tag" +msgstr "Meta tag de descripción (Description)" + +msgid "A description of the page used by search engines." +msgstr "" +"Lista de palabras clave que a veces será usada por los motores de búsqueda." + +msgid "redirect" +msgstr "redirige" + +msgid "Redirects to this URL." +msgstr "Redirige a esta URL." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Todos los ancestros no serán mostrados en la navegación" + +msgid "The template used to render the content." +msgstr "La plantilla usada para mostrar el contenido." + +msgid "page content" +msgstr "contenido de página" + +msgid "page contents" +msgstr "contenidos de página" + +msgid "default" +msgstr "por defecto" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Un identificador único que se usa conjuntamente con el templatetag " +"\"page_url\" para enlazar a esta página" + +msgid "Mark this page as a page type" +msgstr "Marcar esta página como un tipo de página" + +msgid "pages" +msgstr "páginas" + +msgid "No available title" +msgstr "Ningún título disponible" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Path" + +msgid "Current page" +msgstr "Página actual" + +msgid "Page children (immediate)" +msgstr "Página hija (inmediata)" + +msgid "Page and children (immediate)" +msgstr "Página y página hija (inmediata)" + +msgid "Page descendants" +msgstr "Descendientes de la página" + +msgid "Page and descendants" +msgstr "Página y descendientes" + +msgid "on page level" +msgstr "en el nivel de la página" + +msgid "frontend view restriction" +msgstr "restricción para el usuario final" + +msgid "Please select user or group." +msgstr "Por favor seleccione usuario o grupo." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Usuarios no pueden publicar una página sin tener permisos de cambio de " +"página. Permisos de edición son requeridos." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Usuarios no pueden cambiar la configuración avanzada de una página sin tener" +" permisos de cambio de página. Permisos de edición son requeridos." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Usuarios no pueden cambiar permisos de página sin tener permisos de cambio " +"de página. Permisos de edición son requeridos." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Usuarios no pueden mover una página sin tener permisos de cambio de página. " +"Permisos de edición son requeridos." + +msgid "can recover any deleted page" +msgstr "puede recuperar cualquier página eliminada" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"Si no selecciona nada, el usuario tiene garantizado el permiso a todos los " +"sitios." + +msgid "Page global permission" +msgstr "Permiso global de la página" + +msgid "Pages global permissions" +msgstr "Permisos globales de las páginas" + +msgid "Page permission" +msgstr "Permiso de la página" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Añadir permisos a la página requiere también acceso a sus hijos o " +"descendientes, de otra forma la página añadida no puede ser modificada por " +"su autor." + +msgid "User (page)" +msgstr "Usuario (página) " + +msgid "Users (page)" +msgstr "Usuarios (página)" + +msgid "User group (page)" +msgstr "Grupo del usuario (página)" + +msgid "User groups (page)" +msgstr "Grupos de usuarios (página)" + +msgid "slot" +msgstr "slot" + +msgid "width" +msgstr "ancho" + +msgid "Edit object" +msgstr "Editar objeto" + +msgid "This is an external placeholder" +msgstr "Este es un placeholder externo" + +msgid "plugin" +msgstr "plugin" + +msgid "plugins" +msgstr "plugins" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "El idioma para la interfaz de administración y barra de herramientas" + +msgid "user setting" +msgstr "configuración de usuario" + +msgid "user settings" +msgstr "Configuraciones de usuario" + +msgid "by template" +msgstr "por plantilla" + +msgid "by code" +msgstr "por código" + +msgid "static placeholder name" +msgstr "nombre del placeholder estático" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Nombre descriptivo para identificar este placeholder estático. No se " +"mostrará a los usuarios." + +msgid "placeholder code" +msgstr "código de placeholder" + +msgid "To render the static placeholder in templates." +msgstr "Para renderizar los placeholder estáticos en plantillas." + +msgid "placeholder content" +msgstr "contenido de placeholder" + +msgid "creation_method" +msgstr "metodo_de_creacion" + +msgid "static placeholder" +msgstr "placeholder estático" + +msgid "static placeholders" +msgstr "placeholder estáticos" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Un placeholder estático ya existe con el mismo codigo y site" + +msgid "Advanced options" +msgstr "Opciones avanzadas" + +msgid "Generic" +msgstr "Genérico" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "La %(name)s \"%(obj)s\" fue modificada exitosamente." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "No hay mas ajustes para este plugin. Por favor, pulse sobre \"Guardar\"" + +msgid "Moved" +msgstr "Movido" + +msgid "Changed" +msgstr "Cambiado" + +msgid "Deleted" +msgstr "Eliminado" + +msgid "Added Page Translation" +msgstr "Traducción de página añadida" + +msgid "Changed Page Translation" +msgstr "Traducción de página modificada" + +msgid "Deleted Page Translation" +msgstr "Traducción de página eliminada" + +msgid "Added Plugin" +msgstr "Plugin añadido" + +msgid "Changed Plugin" +msgstr "Plugin modificado" + +msgid "Moved Plugin" +msgstr "Plugin movido" + +msgid "Deleted Plugin" +msgstr "Plugin eliminado" + +msgid "Cut Plugin" +msgstr "Plugin cortado" + +msgid "Paste Plugin" +msgstr "Pegar plugin" + +msgid "Paste to Placeholder" +msgstr "Pegar en el placeholder" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Plugins añadidos al placeholder desde el portapapeles" + +msgid "Cleared Placeholder" +msgstr "Placeholder vaciado" + +msgid "Save" +msgstr "Guardar" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" +"Algunos campos no se pueden cambiar porque son contenido de solo lectura." + +#, python-format +msgid "Log in to administration here." +msgstr "" +"Entrar por aquía la parte de administración." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Url de inicio de sesión: %(login_url)s" + +msgid "Username:" +msgstr "Nombre de usuario:" + +msgid "Password:" +msgstr "Contraseña:" + +msgid "Add a page" +msgstr "Agregar página" + +msgid "Change a page" +msgstr "Cambiar la página" + +msgid "Home" +msgstr "Inicio" + +msgid "View on site" +msgstr "Ver en el sitio" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Por favor, corrija el error de abajo." +msgstr[1] "Por favor, corrija los errores de abajo." +msgstr[2] "Por favor, corrija los errores de abajo." + +msgid "All permissions" +msgstr "Todos los permisos" + +msgid "Loading..." +msgstr "Cargando..." + +msgid "Save and continue editing" +msgstr "Guardar y continuar editando" + +#, 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 "" +"¿Está seguro de que desea eliminar el %(object_name)s " +"\"%(escaped_object)s\"? Se eliminarán todos los siguientes elementos " +"relacionados:" + +msgid "Yes, I’m sure" +msgstr "Sí, estoy seguro" + +msgid "No, take me back" +msgstr "No, volver atrás" + +msgid "Summary" +msgstr "Resumen" + +msgid "User" +msgstr "Usuario" + +msgid "Group" +msgstr "Grupo" + +msgid "Can edit" +msgstr "Puede editar" + +msgid "Can add" +msgstr "Puede añadir" + +msgid "Can delete" +msgstr "Puede borrar" + +msgid "Can publish" +msgstr "Puede publicar" + +msgid "Can change permissions" +msgstr "Puede cambiar los permisos" + +msgid "Can move" +msgstr "Puede mover" + +msgid "Can view" +msgstr "Puede ver" + +msgid "(global)" +msgstr "(global)" + +msgid "(current)" +msgstr "(actual)" + +msgid "Page doesn't inherit any permissions." +msgstr "La página no hereda ningún permiso." + +msgid "Edit model" +msgstr "Editar modelo" + +msgid "Save as new" +msgstr "Guardar como nuevo" + +msgid "Save and add another" +msgstr "Guardar y añadir otro" + +msgid "Copy" +msgstr "Copiar" + +msgid "Cut" +msgstr "Cortar" + +msgid "Paste" +msgstr "Pegar" + +msgid "Set as home" +msgstr "Hacerla como Inicio" + +msgid "is restricted" +msgstr "está restringido/a" + +msgid "last change by" +msgstr "ultimo cambio por" + +msgid "last change on" +msgstr "Último cambio por" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Listado de páginas" + +msgid "Search" +msgstr "Búsqueda" + +msgid "Page Tree" +msgstr "Jerarquía de la página " + +msgid "Reset filter" +msgstr "Restablecer filtro" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +"Restablecer %(name)s eliminado" + +msgid "Main Navigation" +msgstr "Navegación principal" + +msgid "Options" +msgstr "Opciones" + +msgid "Successfully moved" +msgstr "Se ha movido con éxito" + +msgid "Changes within the tree might require a refresh." +msgstr "Los cambios en el árbol pueden requerir un refresco." + +msgid "Error:" +msgstr "Error:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Esta página no puede ser copiada porque una aplicación está enlazada a ella." +" Vea las configuraciones avanzadas para administrar los apphooks." + +msgid "Are you sure you want to § this page?" +msgstr "¿Está seguro de que desea %%s esta página?" + +msgid "Reload" +msgstr "Recargar" + +msgid "New node" +msgstr "Nuevo nodo" + +msgid "nodes" +msgstr "nodos" + +msgid "View" +msgstr "Ver" + +msgid "Menu" +msgstr "Menú" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Todavía no hay %(object)s alrededor.\n" +"
\n" +" Agregar %(object)s ahora.\n" +" " + +msgid "Copy options" +msgstr "Opciones de copia" + +msgid "Choose copy options" +msgstr "Elija las opciones de copia" + +msgid "Close" +msgstr "Cerrar" + +msgid "Legend" +msgstr "Leyenda" + +msgid "In menu" +msgstr "En el menú" + +msgid "Not in menu" +msgstr "No est´en el menú" + +msgid "View page" +msgstr "Ver página" + +msgid "Softroot" +msgstr "Softroot" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Aplicación: %(apphook)s" + +msgid "in menu" +msgstr "en el menú" + +msgid "not in menu" +msgstr "no está en el menú" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Ajustes de página (Mayús-clic para ajustes avanzados)" + +msgid "Permissions" +msgstr "Permisos" + +msgid "inherited" +msgstr "heredado" + +msgid "This page has no preview!" +msgstr "¡Esta página no tiene vista previa!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Posiblemente el apphook anclado no proporciona contenido para su raíz." + +msgid "It is being redirected to:" +msgstr "Está siendo redirigido a:" + +msgid "Clipboard" +msgstr "Portapapeles" + +msgid "Add plugin" +msgstr "Añadir complemento" + +msgid "Copy all" +msgstr "Copiar todo" + +msgid "Copy from" +msgstr "Copiar desde" + +msgid "Empty all" +msgstr "Vaciar todo" + +msgid "Filter plugins..." +msgstr "Filtrar complementos..." + +msgid "Expand all" +msgstr "Expandir todo" + +msgid "Collapse all" +msgstr "Recoger todo" + +msgid "You cannot add plugins to this plugin." +msgstr "No puedes añadir complementos a este." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "Este complemento no puede ser movido o editado fuera de su padre" + +msgid "Clipboard is empty." +msgstr "El portapapeles está vacío." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" +"Este complemento no acepta este tipo de complemento de manera anidada." + +msgid "This plugin cannot have nested plugins." +msgstr "Este complemento no puede tener complementos anidados." + +msgid "Highlight" +msgstr "Destacar" + +msgid "Available plugins" +msgstr "Plugins disponibles" + +msgid "Toggle structure" +msgstr "Cambiar estructura" + +msgid "Login" +msgstr "Iniciar Sesión" + +msgid "Add plugin to" +msgstr "Añadir complemento a" + +msgid "More" +msgstr "Más" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Versión de desarrollo usando django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Cancelar" + +msgid "The following error occurred:" +msgstr "Ha ocurrido el siguiente error:" + +msgid "Action successful." +msgstr "Acción exitosa." + +msgid "Are you sure you want to delete this plugin?" +msgstr "¿Seguro que desea eliminar este plugin?" + +msgid "Are you sure you want to publish this page?" +msgstr "¿Está seguro de que desea publicar esta página?" + +msgid "Plugin will be added here" +msgstr "El complemento se añadirá aquí" + +msgid "You have unsaved changes." +msgstr "Tienes cambios sin guardar." + +msgid "Loading" +msgstr "Cargando" + +msgid "Are you sure you want to abandon these changes?" +msgstr "¿Está seguro de querer abandonar estos cambios?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"El formulario no pudo ser cargado. Por favor revisa que el servidor esté " +"corriendo correctamente." + +msgid "Most used" +msgstr "Más utilizado" + +msgid "Shortcuts" +msgstr "Atajos" + +msgid "The page was changed in the meantime, reloading..." +msgstr "La página fue cambiada mientras tanto, volviendo a cargar..." + +msgid "CMS-wide Shortcuts" +msgstr "Atajos de CMS-wide" + +msgid "Bring up this help dialog" +msgstr "Abrir este diálogo de ayuda" + +msgid "Close/cancel" +msgstr "Cerrar/cancelar" + +msgid "Toggle structure mode" +msgstr "Cambiar modo de estructura" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Alternar el modo de estructura y resaltar el complemento suspendido" + +msgid "Open \"Create\" dialog" +msgstr "Abrir \"Crear\" diálogo." + +msgid "Focus on Toolbar" +msgstr "Foco en la barra de herramientas" + +msgid "Focus on placeholders" +msgstr "Foco sobre los marcadores de posición" + +msgid "Move to next/previous element" +msgstr "Mover al siguiente/anterior elemento" + +msgid "Focus on plugins of placeholder" +msgstr "Foco sobre las extensiones de marcador de posición" + +msgid "Edit plugin" +msgstr "Editar extensión" + +msgid "Open actions menu" +msgstr "Abrir menú de acciones" + +msgid "Expand/collapse" +msgstr "Expander/contraer" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Fallo al iniciar sesión. Por favor, compruebe sus datos e " +"intente otra vez." + +msgid "Double-click to edit" +msgstr "Doble click para editar" + +msgid "Tap to edit" +msgstr "Toca para editar" + +msgid "Click to go back" +msgstr "Cic para regresar" + +msgid "Click to go forward" +msgstr "Clic para avanzar" + +msgid "Minimize" +msgstr "Minimizar" + +msgid "Maximize" +msgstr "Maximizar" + +msgid "Placeholder not editable" +msgstr "Placeholder no editable" + +msgid "Drop a plugin here" +msgstr "Soltar una extensión aquí" + +msgid "Welcome to your new django CMS installation!" +msgstr "¡Bienvenido a su nueva instalación de django CMS!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Versión %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "¡Construyamos algo grandioso juntos!" + +msgid "Please log in" +msgstr "Por favor autenticarse " + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Añada su primera página\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Ayude con la financiación

\n" +"

\n" +" Su financiación beneficia directamente al producto, principalmente a través del\n" +" Programa de Becas de django CMS!\n" +"

\n" +"

\n" +" Una forma rápida de donar, ya sea usted mismo o su organización, es a través de\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Únase a nosotros

\n" +"

\n" +" La django CMS Association es una organización sin ánimo de lucro que financia y dirige el desarrollo de\n" +" django CMS.\n" +"

\n" +"

\n" +" Puede unirse tanto como individuo como\n" +" organización.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Contribuya

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Notas de instalación" + +msgid "Support" +msgstr "Soporte" + +msgid "Documentation" +msgstr "Documentación" + +msgid "User guide" +msgstr "Guía de usuario" + +msgid "Give back" +msgstr "Devolver" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Si no puedes ver el logo de django CMS en la parte superior, revisa que\n" +" hayas asociado la carpeta static/cms a tus\n" +" archivos estáticos.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Estás viendo este mensaje porque tienes\n" +" DEBUG = True en su archivo de configuración de django y\n" +" no he agregado ninguna página todavía.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Bienvenido a django CMS" + +msgid "Add Another" +msgstr "Añadir otro" + +msgid "Back" +msgstr "Regresar" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" +"Por favor escoja una opción a continuación para proceder con el siguiente " +"paso." + +msgid "Next" +msgstr "Siguiente" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Desconocido" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Página no encontrada en %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Una etiqueta en la plantilla no puedo encontrar la página con estos argumentos de lookup `%(page_lookup)s\n" +"`. La URL de la petición era: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Dos columnas" + +msgid "Three columns" +msgstr "Tres columnas" + +msgid "username" +msgstr "nombre de usuario" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Obligatorio. 300 caracteres o menos. Letras, números y los caracteres " +"@/./+/-/_" + +msgid "Enter a valid username." +msgstr "Introduzca un nombre de usuario válido." + +msgid "email address" +msgstr "enviar a" + +msgid "staff status" +msgstr "estado del personal" + +msgid "Designates whether the user can log into this admin site." +msgstr "" +"Designa si el usuario puede autenticarse en este sitio de administración." + +msgid "active" +msgstr "activo" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Establece si este usuario es tratado como activo. Desmarcar esto en vez de " +"borrar las cuentas." + +msgid "users" +msgstr "usuarios" + +msgid "Title Extension" +msgstr "Extensión de Título" + +msgid "Page Extension" +msgstr "Extensión de Página" + +msgid "object ID" +msgstr "ID de objeto" + +msgid "Example1 App" +msgstr "Aplicación de Ejemplo 1" + +msgid "MultilingualExample1 App" +msgstr "Aplicación de Ejemplo MultiIdioma 1" + +msgid "Example1" +msgstr "Ejemplo1" + +msgid "Examples" +msgstr "Ejemplos" + +msgid "Extra Context" +msgstr "Contenido Extra" + +msgid "Articles" +msgstr "Artículos" + +msgid "Sample App" +msgstr "Aplicación de Ejemplo" + +msgid "Sample App with config" +msgstr "Aplicación de Ejemplo con config" + +msgid "Sample App with excluded permissions" +msgstr "Aplicación de muestra con permisos excluidos" + +msgid "Sample App 2" +msgstr "Aplicación de Ejemplo 2" + +msgid "Sample App 3" +msgstr "Aplicación de Ejemplo 2" + +msgid "Sample App Without Landing Page" +msgstr "Aplicación de ejemplo sin página de inicio" + +msgid "Namespaced App" +msgstr "Applicación de Espacio de Nombre" + +msgid "Parent app" +msgstr "Aplicación padre" + +msgid "Child app" +msgstr "Aplicación hija" + +msgid "Variable urls-menus App" +msgstr "Variable url-menus App" + +msgid "sample root page" +msgstr "página raiz de ejemplo" + +msgid "sample settings page" +msgstr "página de configuraciones de ejemplo" + +msgid "sample account page" +msgstr "página de cuenta de ejemplo" + +msgid "sample my profile page" +msgstr "página de ejemplo de mi perfil" + +msgid "Static Menu" +msgstr "Menú Estático" + +msgid "Static Menu2" +msgstr "Menú Estático 2" + +msgid "Static Menu3" +msgstr "Menú Estático 3" + +msgid "Static Menu4" +msgstr "Menú Estático" + +msgid "Category" +msgstr "Categoría" + +msgid "Categories" +msgstr "Categorias" + +msgid "Add Category" +msgstr "Agregar Categoría" + +msgid "^account/$" +msgstr "^cuenta/$" + +msgid "Change Category" +msgstr "Cambiar Categoría" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Gracias por tomarse parte de su valioso tiempo en el sitio hoy." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Heredar la plantilla ('template') de su ancestro más cercano" + +msgid "UserSettings" +msgstr "Configuración de Usuarios" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Agregar extensión al marcador de posición \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Agregar extensión a %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Placeholder único" + +msgid "CMS - your user account was created." +msgstr "CMS - su cuenta de usuario ha sido creada." + +msgid "CMS - your user account was changed." +msgstr "CMS - su cuenta de usuario ha cambiado." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Este placeholder tiene ya el máximo número de plugins (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Este placeholder tiene ya el máximo número (%(limit)s) de plugins " +"%(plugin_name)s permitido." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" +"Incapaz de encontrar el modulo especificado CMS_REQUEST_IP_RESOLVER: \"{0}\"" +" . " + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Incapaz de encontrar la función especificada CMS_REQUEST_IP_RESOLVER : " +"\"{0}\" en el modulo \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Crear nueva instancia de %s." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Ya se ha asignado un wizard para el modelo: %s" diff --git a/cms/locale/es/LC_MESSAGES/djangojs.po b/cms/locale/es/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..945452c8 --- /dev/null +++ b/cms/locale/es/LC_MESSAGES/djangojs.po @@ -0,0 +1,25 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# e4db27214f7e7544f2022c647b585925_bb0e321, 2015 +# Edwin Caldon , 2011 +# e4db27214f7e7544f2022c647b585925_bb0e321, 2015 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: e4db27214f7e7544f2022c647b585925_bb0e321, 2015\n" +"Language-Team: Spanish (http://app.transifex.com/divio/django-cms/language/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "¿Estás seguro de que desea cambiar de pestañas sin guardar antes la página?" diff --git a/cms/locale/es_AR/LC_MESSAGES/django.po b/cms/locale/es_AR/LC_MESSAGES/django.po new file mode 100644 index 00000000..1478a1f1 --- /dev/null +++ b/cms/locale/es_AR/LC_MESSAGES/django.po @@ -0,0 +1,2268 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Matias Roson , 2022 +# Eduardo Ludi , 2025 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Eduardo Ludi , 2025\n" +"Language-Team: Spanish (Argentina) (https://app.transifex.com/divio/teams/58664/es_AR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_AR\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "Opciones de X Frame" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "Configuraciones de la aplicación" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "Cambiar permisos" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "Lista de palabras clave que serán usada por los motores de búsqueda." + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Por favor, corrija el error de abajo." +msgstr[1] "Por favor, corrija los errores de abajo." +msgstr[2] "Por favor, corrija los errores de abajo." + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/es_AR/LC_MESSAGES/djangojs.po b/cms/locale/es_AR/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..42d9b393 --- /dev/null +++ b/cms/locale/es_AR/LC_MESSAGES/djangojs.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Edwin Caldon , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Edwin Caldon , 2011\n" +"Language-Team: Spanish (Argentina) (http://app.transifex.com/divio/django-cms/language/es_AR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_AR\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "¿Estás seguro de que desea cambiar de pestañas sin guardar antes la página?" diff --git a/cms/locale/es_BO/LC_MESSAGES/django.po b/cms/locale/es_BO/LC_MESSAGES/django.po new file mode 100644 index 00000000..dbdb6dfb --- /dev/null +++ b/cms/locale/es_BO/LC_MESSAGES/django.po @@ -0,0 +1,2267 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# mariocesar , 2025 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: mariocesar , 2025\n" +"Language-Team: Spanish (Bolivia) (https://app.transifex.com/divio/teams/58664/es_BO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_BO\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Por favor, corrija el error de abajo." +msgstr[1] "Por favor, corrija los errores de abajo." +msgstr[2] "Por favor, corrija los errores de abajo." + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/es_BO/LC_MESSAGES/djangojs.po b/cms/locale/es_BO/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..d8ee64ed --- /dev/null +++ b/cms/locale/es_BO/LC_MESSAGES/djangojs.po @@ -0,0 +1,25 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Edwin Caldon , 2011 +# mariocesar , 2011 +# mariocesar , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: mariocesar , 2011\n" +"Language-Team: Spanish (Bolivia) (http://app.transifex.com/divio/django-cms/language/es_BO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_BO\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "¿Estás seguro de que desea cambiar de pestañas sin guardar antes la página?" diff --git a/cms/locale/es_DO/LC_MESSAGES/django.po b/cms/locale/es_DO/LC_MESSAGES/django.po new file mode 100644 index 00000000..bacef63c --- /dev/null +++ b/cms/locale/es_DO/LC_MESSAGES/django.po @@ -0,0 +1,2265 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Spanish (Dominican Republic) (https://app.transifex.com/divio/teams/58664/es_DO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_DO\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/es_DO/LC_MESSAGES/djangojs.po b/cms/locale/es_DO/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..fe988303 --- /dev/null +++ b/cms/locale/es_DO/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Spanish (Dominican Republic) (http://app.transifex.com/divio/django-cms/language/es_DO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_DO\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/et/LC_MESSAGES/django.po b/cms/locale/et/LC_MESSAGES/django.po new file mode 100644 index 00000000..b3903266 --- /dev/null +++ b/cms/locale/et/LC_MESSAGES/django.po @@ -0,0 +1,1638 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2022 +# Martin , 2023 +# Rivo Zängov , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Rivo Zängov , 2026\n" +"Language-Team: Estonian (https://app.transifex.com/divio/teams/58664/et/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "Kõik" + +msgid "Copy permissions" +msgstr "Kopeeri õigused" + +msgid "Slug" +msgstr "Aadressi komponent" + +msgid "The part of the title that is used in the URL" +msgstr "Osa pealkirjast, mida kasutatakse internetiaadressi koostamiseks" + +msgid "Page type" +msgstr "Lehekülje tüüp" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Lehekülje tüübid" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Kirjuta üle internetiaadress" + +msgid "Keep this field empty if standard path should be used." +msgstr "Hoia see väli tühjana, et kasutada standardset rada." + +msgid "Start typing..." +msgstr "Alusta kirjutamist..." + +msgid "menu visibility" +msgstr "menüü nähtavus" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "Rakendus" + +msgid "Hook application to this page." +msgstr "Haagi rakendus selle lehekülje külge." + +msgid "Application configurations" +msgstr "Rakenduse seaded" + +msgid "A page with this reverse URL id exists already." +msgstr "Sellise pööratud identifikaatoriga lehekülg on juba olemas." + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "Jah" + +msgid "No" +msgstr "Ei" + +msgid "user" +msgstr "kasutaja" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "Lisa" + +msgid "Change" +msgstr "Muuda" + +msgid "Delete" +msgstr "Kustuta" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "Muud seadistused" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Objekti %(name)s primaarvõtmega %(key)r ei ole olemas." + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "Lisa tõlge" + +msgid "Add Page Copy" +msgstr "Lisa lehe koopia" + +msgid "New sub page" +msgstr "Uus alamlehekülg" + +msgid "New page" +msgstr "Uus lehekülg" + +msgid "Database error" +msgstr "Andmebaasi viga" + +msgid "Template not valid" +msgstr "Mall ei ole korrektne" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Pealkiri ja pluginad %(language)s keeles kustutatud" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "Tühi" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "Vaata piirangut" + +msgid "View restrictions" +msgstr "Vaata piiranguid" + +#, python-format +msgid "Field %s not found" +msgstr "Välja %s ei leitud" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "Pluginat ei leitud" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "Kas oled kindel?" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "kohahoidja" + +msgid "Page permissions" +msgstr "Lehekülje õigused" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "Lehekülje õiguste haldamine" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "Eelvaade" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Kohahoidja" + +msgid "Create" +msgstr "Loo" + +msgid "Edit" +msgstr "Muuda" + +msgid "Structure" +msgstr "Struktuur" + +msgid "Content" +msgstr "Sisu" + +msgid "Sites" +msgstr "Saidid" + +msgid "Admin Sites" +msgstr "Admini saidid" + +msgid "Administration" +msgstr "Administreerimine" + +msgid "User settings" +msgstr "asutaja seaded" + +msgid "Clipboard..." +msgstr "Lõikelaud..." + +msgid "Clear clipboard" +msgstr "Tühjenda lõikelaud" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "Otseteed..." + +msgid "Users" +msgstr "Kasutajad" + +#, python-format +msgid "Logout %s" +msgstr "Logi välja %s" + +msgid "Logout" +msgstr "Logi välja" + +msgid "Language" +msgstr "Keel" + +msgid "Delete Translation" +msgstr "Kustuta tõlge" + +msgid "Copy all plugins" +msgstr "Kopeeri kõik pluginad" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "Leheküljed" + +msgid "Page" +msgstr "Lehekülg" + +msgid "Create Page" +msgstr "Loo leht" + +msgid "New Page" +msgstr "Uus lehekülg" + +msgid "New Sub Page" +msgstr "Uus alamlehekülg" + +msgid "Duplicate this Page" +msgstr "Tee sellest lehest koopia" + +msgid "Page settings" +msgstr "Lehekülje seadistused" + +msgid "Advanced settings" +msgstr "Lisaseaded" + +msgid "Templates" +msgstr "Mallid" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "Peida menüüs" + +msgid "Display in navigation" +msgstr "Näita menüüs" + +msgid "Delete page" +msgstr "Kustuta lehekülg" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "Vali korrektne sait" + +msgid "Select a valid page" +msgstr "Vali korrektne lehekülg" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "asukoht" + +msgid "language" +msgstr "keel" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "loomise aeg" + +msgid "can edit" +msgstr "võib muuta" + +msgid "can add" +msgstr "võib lisada" + +msgid "can delete" +msgstr "võib kustutada" + +msgid "can change advanced settings" +msgstr "saab muuta lisaseadeid" + +msgid "can publish" +msgstr "saab avaldada" + +msgid "can change permissions" +msgstr "saab muuta õiguseid" + +msgid "can move" +msgstr "saab liigutada" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "saab lehekülgi taastada" + +msgid "group" +msgstr "grupp" + +msgid "sites" +msgstr "saiti" + +msgid "created by" +msgstr "lisas" + +msgid "changed by" +msgstr "muutis" + +msgid "publication date" +msgstr "avaldamise aeg" + +msgid "publication end date" +msgstr "avaldamise lõpetamise aeg" + +msgid "in navigation" +msgstr "menüüs" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "mall" + +msgid "login required" +msgstr "sisselogimine on nõutud" + +msgid "application" +msgstr "rakendus" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "ait" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "lehekülg" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "ainult sisselogitud kasutajatele" + +msgid "for anonymous users only" +msgstr "ainult anonüümsetele kasutajatele" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "Keela" + +msgid "Only this website" +msgstr "Ainult see veebisait" + +msgid "Allow" +msgstr "Luba" + +msgid "title" +msgstr "pealkiri" + +msgid "The default title" +msgstr "Vaikimisi pealkiri" + +msgid "Page Title" +msgstr "Lehekülje pealkiri" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "Kirjuta üle veebilehitseja ülaosas või järjehoidjas kuvatav" + +msgid "Menu Title" +msgstr "Pealkiri menüüs" + +msgid "Overwrite what is displayed in the menu" +msgstr "Kirjuta üle menüüs kuvatav" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" +"Komade eraldatud nimekiri märksõnadest mida mõnikord kasutavad " +"otsingumootorid." + +msgid "redirect" +msgstr "ümbersuunamine" + +msgid "Redirects to this URL." +msgstr "Suuna ümber sellele internetiaadressile." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "vaikeväärtus" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "leheküge" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "Asukoht" + +msgid "Current page" +msgstr "Praegune lehekülg" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "lehekülje tasemel" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "saab taastada iga kustutatud lehekülje" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "Lehekülje üldised õigused" + +msgid "Pages global permissions" +msgstr "Lehekülgede üldised õigused" + +msgid "Page permission" +msgstr "Lehekülje õigused" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Õigus lehekülge lisada nõuab ka ligipääsu alamlehekülgede, vastasel juhul ei" +" saa lehekülje looja lisatud lehekülge muuta." + +msgid "User (page)" +msgstr "Kasutaja (lehekülg)" + +msgid "Users (page)" +msgstr "Kasutajad (lehekülg)" + +msgid "User group (page)" +msgstr "Kasutajate grupp (lehekülg)" + +msgid "User groups (page)" +msgstr "Kasutajate grupid (lehekülg)" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "laius" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "kasutaja seaded" + +msgid "user settings" +msgstr "kasutaja seaded" + +msgid "by template" +msgstr "malli järgi" + +msgid "by code" +msgstr "koodi järgi" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "Täpsemad valikud" + +msgid "Generic" +msgstr "Üldine" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "Muudetud" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "Salvesta" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "Kasutajanimi:" + +msgid "Password:" +msgstr "Parool:" + +msgid "Add a page" +msgstr "Lisa leht" + +msgid "Change a page" +msgstr "Muuda lehte" + +msgid "Home" +msgstr "Avahelt" + +msgid "View on site" +msgstr "Vaata saidil" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Palun paranda allolev viga." +msgstr[1] "Palun paranda allolevad vead." + +msgid "All permissions" +msgstr "Kõik õigused" + +msgid "Loading..." +msgstr "Laadimine..." + +msgid "Save and continue editing" +msgstr "Salvesta ja jätka muutmist" + +#, 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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "Kasutaja" + +msgid "Group" +msgstr "Grupp" + +msgid "Can edit" +msgstr "Võib muuta" + +msgid "Can add" +msgstr "Võib lisada" + +msgid "Can delete" +msgstr "Võib kustutada" + +msgid "Can publish" +msgstr "Saab avaldada" + +msgid "Can change permissions" +msgstr "Saab muuta õiguseid" + +msgid "Can move" +msgstr "Saab liigutada" + +msgid "Can view" +msgstr "Võib vaadata" + +msgid "(global)" +msgstr "(üldine)" + +msgid "(current)" +msgstr "(praegune)" + +msgid "Page doesn't inherit any permissions." +msgstr "Lehekülg ei päri ühtki õigust." + +msgid "Edit model" +msgstr "Muuda mudelit" + +msgid "Save as new" +msgstr "Salvesta uuena" + +msgid "Save and add another" +msgstr "Salvesta ja lisa uus" + +msgid "Copy" +msgstr "Kopeeri" + +msgid "Cut" +msgstr "Lõika" + +msgid "Paste" +msgstr "Aseta" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "on piiratud" + +msgid "last change by" +msgstr "viimati muutis" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Lehekülgede loend" + +msgid "Search" +msgstr "Otsi" + +msgid "Page Tree" +msgstr "Lehekülgede puu" + +msgid "Reset filter" +msgstr "Nulli filter" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "Peamenüü" + +msgid "Options" +msgstr "Valikud" + +msgid "Successfully moved" +msgstr "Edukalt liigutatud" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "Viga:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "Kas oled kindel, et soovid § selle lehekülje?" + +msgid "Reload" +msgstr "Laadi uuesti" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "Vaata" + +msgid "Menu" +msgstr "Menüü" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "Kopeeri valikud" + +msgid "Choose copy options" +msgstr "Tee kopeerimise valikud" + +msgid "Close" +msgstr "Sulge" + +msgid "Legend" +msgstr "Legend" + +msgid "In menu" +msgstr "Menüüs" + +msgid "Not in menu" +msgstr "Pole menüüs" + +msgid "View page" +msgstr "Vaata lehte" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "menüüs" + +msgid "not in menu" +msgstr "pole menüüs" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "Õigused" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "Sellel leheküljel pole eelvaadet!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "Lõikelaud" + +msgid "Add plugin" +msgstr "Lisa plugin" + +msgid "Copy all" +msgstr "Kopeeri kõik" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "Tühjenda kõik" + +msgid "Filter plugins..." +msgstr "Filtreeri pluginaid" + +msgid "Expand all" +msgstr "Laienda kõiki" + +msgid "Collapse all" +msgstr "Sulge kõik" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "Lõikelaud on tühi." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "Tõsta esile" + +msgid "Available plugins" +msgstr "aadaolevad pluginad" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "Logi sisse" + +msgid "Add plugin to" +msgstr "Lisa plugin" + +msgid "More" +msgstr "Veel" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "Loobu" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "Kas oled kindel, et soovid selle plugina kustutada?" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "Plugin lisatakse siia" + +msgid "You have unsaved changes." +msgstr "Sul on salvestamata muudatusi." + +msgid "Loading" +msgstr "Laadimine" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "Enim kasutatud" + +msgid "Shortcuts" +msgstr "Otseteed" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "Sulge/Loobu" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "Fookus tööriistaribal" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "Muuda pluginat" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "Ava/Sulge" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "Muumiseks vajuta" + +msgid "Click to go back" +msgstr "Tagasi minemiseks kliki" + +msgid "Click to go forward" +msgstr "Edasi minemiseks kliki" + +msgid "Minimize" +msgstr "Minimeeri" + +msgid "Maximize" +msgstr "Makimeeri" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "Lohista plugin siia" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "Palun logi sisse" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "Paigaldamise märkmed" + +msgid "Support" +msgstr "Kasutajatugi" + +msgid "Documentation" +msgstr "Dokumentatsioon" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "Teretulemast django CMS-i" + +msgid "Add Another" +msgstr "Lisa veel üks" + +msgid "Back" +msgstr "Tagasi" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "Edasi" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "Kaks veergu" + +msgid "Three columns" +msgstr "Kolm veergu" + +msgid "username" +msgstr "kasutajanimi" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "Sisesta korrektne kasutajanimi." + +msgid "email address" +msgstr "e-posti aadress" + +msgid "staff status" +msgstr "personali staatus" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "aktiivne" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "kasutajad" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "objekti ID" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "Näidis1" + +msgid "Examples" +msgstr "Näidised" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "Artiklid" + +msgid "Sample App" +msgstr "Näidis rakendus" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "Näidis rakendus 2" + +msgid "Sample App 3" +msgstr "Näidis rakendus 2" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "Peamine rakendus" + +msgid "Child app" +msgstr "Alamrakendus" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "Staatiline menüü" + +msgid "Static Menu2" +msgstr "Staatiline menüü 2" + +msgid "Static Menu3" +msgstr "Staatiline menüü 3" + +msgid "Static Menu4" +msgstr "Staatiline menüü" + +msgid "Category" +msgstr "Kategooria" + +msgid "Categories" +msgstr "Kategooriad" + +msgid "Add Category" +msgstr "Lisa kategooria" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Muuda kategooria" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "Kasutaja seaded" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "CMS - sinu kasutajakonto on loodud." + +msgid "CMS - your user account was changed." +msgstr "CMS - sinu kasutajakontot on muudetud." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/et/LC_MESSAGES/djangojs.po b/cms/locale/et/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..205d72c2 --- /dev/null +++ b/cms/locale/et/LC_MESSAGES/djangojs.po @@ -0,0 +1,24 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Martin , 2012 +# Martin , 2016 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Martin , 2016\n" +"Language-Team: Estonian (http://app.transifex.com/divio/django-cms/language/et/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Kas olete kindel, et soovite sakki vahetada ilma lehte salvestamata?" diff --git a/cms/locale/eu/LC_MESSAGES/django.po b/cms/locale/eu/LC_MESSAGES/django.po new file mode 100644 index 00000000..7c2e12fa --- /dev/null +++ b/cms/locale/eu/LC_MESSAGES/django.po @@ -0,0 +1,1642 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Basque (https://app.transifex.com/divio/teams/58664/eu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "Guztiak" + +msgid "Copy permissions" +msgstr "Kopiatzeko baimenak" + +msgid "Slug" +msgstr "Slug" + +msgid "The part of the title that is used in the URL" +msgstr "URLetan erabiltzen den izenburuaren zatia" + +msgid "Page type" +msgstr "" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "URLa gainidatzi" + +msgid "Keep this field empty if standard path should be used." +msgstr "Mantendu eremu hau hutsik bide arruntak erabiltzeko." + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "menu ikusgarritasuna" + +msgid "limit when this page is visible in the menu" +msgstr "orri hau menuan noiz ikusi ahalko den mugatzen du" + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "Aplikazioa" + +msgid "Hook application to this page." +msgstr "Orri honetan aplikazioa estekatu." + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "ID berdina duen alderantzizko URL bat badago dagoeneko." + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "erabiltzailea" + +msgid "can_view" +msgstr "Ikusi dezake" + +msgid "Add" +msgstr "Gehitu" + +msgid "Change" +msgstr "Aldatu" + +msgid "Delete" +msgstr "Ezabatu" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "Hizkuntza hori ez dago onartuta!" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "Ezarpen aurreratuak" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Ez da existitzen %(key)r gakodun %(name)s objecturik." + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Errorea! Ez duzu orri hau mugitzeko baimenik. Mesedez birkargatu orria" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "Ez duzu orri hau editatzeko baimenik" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "Datu baseko akatsa" + +msgid "Template not valid" +msgstr "Txantiloia ez da egokia" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "Txantiloia ondo aldatu da" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "Ez duzu plugin hauek kopiatzeko baimenik." + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "%(language)s hizkuntzako izenburu eta pluginak ezabatu dira" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "Hutsik" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "Murriztapena ikusi" + +msgid "View restrictions" +msgstr "Murriztapenak ikusi" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "Ez duzu elementu hau editatzeko baimenik" + +msgid "You do not have permission to add a plugin" +msgstr "Ez duzu pluginak gehitzeko baimenik" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "Ez duzu plugin hau editatzeko baimenik" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "Ez duzu plugin hau mugitzeko baimenik" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "Ez duzu plugin hau ezabatzeko baimenik" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "\"%(obj)s\" %(name)s plugina ongi ezabatu da." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Ezin da %(name)s ezabatu" + +msgid "Are you sure?" +msgstr "Ziur al zaude?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Ez duzu biltegi hau husteko baimenik." + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "\"%(obj)s\" biltegia ongi hustu da." + +msgid "placeholder" +msgstr "biltegia" + +msgid "Page permissions" +msgstr "Orri baimenak" + +msgid "User & Group permissions" +msgstr "Erabiltzaile eta talde baimenak" + +msgid "Page permissions management" +msgstr "Orriaren baimenen kudeaketa" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "Aurrebista" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Biltegia" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "Editatu" + +msgid "Structure" +msgstr "Egitura" + +msgid "Content" +msgstr "Edukia" + +msgid "Sites" +msgstr "Guneak" + +msgid "Admin Sites" +msgstr "Guneak kudeatu" + +msgid "Administration" +msgstr "Kudeaketa" + +msgid "User settings" +msgstr "Erabiltzaile ezarpenak" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "Erabiltzaileak" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "Irten" + +msgid "Language" +msgstr "Hizkuntza" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "Orriak" + +msgid "Page" +msgstr "Orria" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "Orri ezarpenak" + +msgid "Advanced settings" +msgstr "Ezarpen aurreratuak" + +msgid "Templates" +msgstr "Txantiloiak" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "Nabigazioan ezkutatu" + +msgid "Display in navigation" +msgstr "Nabigazioan ikusi" + +msgid "Delete page" +msgstr "ezabatzeko esk." + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "Hautatu baliozko gunea" + +msgid "Select a valid page" +msgstr "Hautatu baliozko orria" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "kokapena" + +msgid "language" +msgstr "hizkuntza" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "sorrera data" + +msgid "can edit" +msgstr "editatu dezake" + +msgid "can add" +msgstr "gehi dezake" + +msgid "can delete" +msgstr "ezaba dezake" + +msgid "can change advanced settings" +msgstr "ezarpen aurreratuak aldatu ditzake" + +msgid "can publish" +msgstr "Argitaratu dezake" + +msgid "can change permissions" +msgstr "baimenak alda ditzake" + +msgid "can move" +msgstr "mugitu dezake" + +msgid "view restricted" +msgstr "Ikusgarritasun mugatua" + +msgid "can recover pages" +msgstr "orriak berreskuratu ditzake" + +msgid "group" +msgstr "taldea" + +msgid "sites" +msgstr "guneak" + +msgid "created by" +msgstr "-k sortua" + +msgid "changed by" +msgstr "nork aldatua" + +msgid "publication date" +msgstr "argitalpen data" + +msgid "publication end date" +msgstr "argitalpen bukaera data" + +msgid "in navigation" +msgstr "nabigazioan" + +msgid "soft root" +msgstr "erro leuna" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "erantsitako menua" + +msgid "template" +msgstr "txantiloia" + +msgid "login required" +msgstr "Saio-hasiera beharrezkoa" + +msgid "application" +msgstr "aplikazioa" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "gunea" + +msgid "Grant on" +msgstr "Baimendu" + +msgid "page" +msgstr "orria" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "saioa hasi duten erabiltzaileentzat bakarrik" + +msgid "for anonymous users only" +msgstr "erabiltzaile anonimoentzat bakarrik" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "izenburua" + +msgid "The default title" +msgstr "Titulu lehenetsia" + +msgid "Page Title" +msgstr "Orriaren izenburua" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "Nabigatzailearen goikaldean edo bookmarketan ikusiko dena gainidatzi" + +msgid "Menu Title" +msgstr "Menuko izenburua" + +msgid "Overwrite what is displayed in the menu" +msgstr "Menuan ikusiko dena gainidatzi" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" +"Bilaketa motoreak batzutan erabiltzen dituzten gako-hitzak, komaz bereiztuta" + +msgid "redirect" +msgstr "berbideratu" + +msgid "Redirects to this URL." +msgstr "URL honetara berbideratu." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Arbaso guztiak ez dira nabigazioan bistaratuko" + +msgid "The template used to render the content." +msgstr "edukia ikusteko erabiliko den txantiloia" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "lehenetsia" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "orriak" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Bidea" + +msgid "Current page" +msgstr "Uneko orria" + +msgid "Page children (immediate)" +msgstr "Orri semeak (semeak bakarrik)" + +msgid "Page and children (immediate)" +msgstr "Orria eta semeak (semeak bakarrik)" + +msgid "Page descendants" +msgstr "Orriaren oinordekoak" + +msgid "Page and descendants" +msgstr "Orria eta oinordekoak" + +msgid "on page level" +msgstr "orri mailan" + +msgid "frontend view restriction" +msgstr "frontend-aren ikuspegiaren murrizketa" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "ezabatutako edozein orri berrezkuratu dezake" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"Aukeratzen ez bada, erabiltzaileak baimen guztiak bermatuak izango ditu orri" +" guztietan sartzeko" + +msgid "Page global permission" +msgstr "Orrien baimen globala" + +msgid "Pages global permissions" +msgstr "Orrien baimen globalak" + +msgid "Page permission" +msgstr "Orri baimena" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Orriaren baimena gehitzeko haurrentzako sarrera gehitzea beharrezkoa da, " +"bestela sortzaileak ezingo du gehitutako orria aldatu." + +msgid "User (page)" +msgstr "Erabiltzailea (orria)" + +msgid "Users (page)" +msgstr "Erabiltzaileak (orria)" + +msgid "User group (page)" +msgstr "Erabiltzaile taldea (orria)" + +msgid "User groups (page)" +msgstr "Erabiltzaile taldeak (orria)" + +msgid "slot" +msgstr "tartea" + +msgid "width" +msgstr "zabalera" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "erabiltzaile ezarpena" + +msgid "user settings" +msgstr "erabiltzaile ezarpenak" + +msgid "by template" +msgstr "txantiloiarengatik" + +msgid "by code" +msgstr "kodearengatik" + +msgid "static placeholder name" +msgstr "biltegi estatikoaren izena" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "biltegi kodea" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "biltegi edukia" + +msgid "creation_method" +msgstr "sortze_metodoa" + +msgid "static placeholder" +msgstr "biltegi estatikoa" + +msgid "static placeholders" +msgstr "biltegi estatikoak" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "Aukera aurreratuak" + +msgid "Generic" +msgstr "Generikoa" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "Gorde" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "Kudeaketa gunean saioa hasi hemen." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Saioa hasteko esteka: %(login_url)s" + +msgid "Username:" +msgstr "Erabiltzaile-izena:" + +msgid "Password:" +msgstr "Pasahitza:" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "Orria aldatu" + +msgid "Home" +msgstr "Hasiera orria" + +msgid "View on site" +msgstr "Gunean ikusi" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Arren beheko errorea." +msgstr[1] "Arren beheko erroreak." + +msgid "All permissions" +msgstr "Baimen guztiak" + +msgid "Loading..." +msgstr "Kargatzen..." + +msgid "Save and continue editing" +msgstr "Gorde eta aldatzen jarraitu" + +#, 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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "Erabiltzailea" + +msgid "Group" +msgstr "Taldea" + +msgid "Can edit" +msgstr "Edita dezake" + +msgid "Can add" +msgstr "Gehi dezake" + +msgid "Can delete" +msgstr "Ezaba dezake" + +msgid "Can publish" +msgstr "Argitara dezake" + +msgid "Can change permissions" +msgstr "Baimenak alda ditzake" + +msgid "Can move" +msgstr "Mugi dezake" + +msgid "Can view" +msgstr "Ikus dezake" + +msgid "(global)" +msgstr "(globala)" + +msgid "(current)" +msgstr "(unekoa)" + +msgid "Page doesn't inherit any permissions." +msgstr "Orriak ez dauka heredatutako baimenik." + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "Gorde berri gisa" + +msgid "Save and add another" +msgstr "Gorde eta berria gehitu" + +msgid "Copy" +msgstr "Kopiatu" + +msgid "Cut" +msgstr "Ebaki" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "mugatuta" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "Orri zerrenda" + +msgid "Search" +msgstr "Bilatu" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "Lekuz ongi aldatu da." + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "Kopiatzeko aukerak" + +msgid "Choose copy options" +msgstr "Aukeratu kopiatzeko aukerak" + +msgid "Close" +msgstr "Ezabatu" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Aplikazioa: %(apphook)s" + +msgid "in menu" +msgstr "menuan" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "Baimenak" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "Guztia kopiatu" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "Guztia hustu" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "Plugin eskuragarriak" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "Saio-hasiera" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "Utzi" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "Ziur plugin hau ezabatu nahi duzula?" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "Klik bikoitza editatzeko" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "Pluginen bat hona jaurti" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "Beste bat gehitu" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Orria ez da %(domain)s-en topatu" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Template tag batek ezin du `%(page_lookup)s` parametroak dituen orririk aurkitu. \n" +"Eskaeraren URLa hau zen: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "eposta helbidea" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "objetuaren IDa" + +msgid "Example1 App" +msgstr "Adibide1 aplikazioa" + +msgid "MultilingualExample1 App" +msgstr "HizkuntzaAnitzekoa1 Aplikazioa" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "Aparteko testuingurua" + +msgid "Articles" +msgstr "Artikuluak" + +msgid "Sample App" +msgstr "Ereduzko aplikazioa" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "Ereduzko aplikazioa 2" + +msgid "Sample App 3" +msgstr "Ereduzko aplikazioa 2" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "Izen-eremu propioa \"namespace\" duen aplikazioa" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "ereduzko orri erroa" + +msgid "sample settings page" +msgstr "ereduzko ezarpenen orria" + +msgid "sample account page" +msgstr "ereduzko kontu orria" + +msgid "sample my profile page" +msgstr "ereduzko profil orria" + +msgid "Static Menu" +msgstr "Menu estatikoa" + +msgid "Static Menu2" +msgstr "Menu estatikoa2" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "Menu estatikoa" + +msgid "Category" +msgstr "Kategoria" + +msgid "Categories" +msgstr "Kategoriak" + +msgid "Add Category" +msgstr "Kategoria gehitu" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Kategoria aldatu" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "CMS - zure erabiltzaile kontua sortu da." + +msgid "CMS - your user account was changed." +msgstr "CMS - zure erabiltzaile kontua aldatu da." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Biltegi honek gehienezko plugin kopurua dauka iada (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Biltegi honek iada gehienezko %(plugin_name)s plugin kopurua dauka iada " +"(%(limit)s)." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/eu/LC_MESSAGES/djangojs.po b/cms/locale/eu/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..deec5d98 --- /dev/null +++ b/cms/locale/eu/LC_MESSAGES/djangojs.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Ales Zabala Alava , 2012 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Ales Zabala Alava , 2012\n" +"Language-Team: Basque (http://app.transifex.com/divio/django-cms/language/eu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Ziur orria gorde gabe fitxaz aldatu nahi duzula?" diff --git a/cms/locale/fa/LC_MESSAGES/django.po b/cms/locale/fa/LC_MESSAGES/django.po new file mode 100644 index 00000000..d8bb219e --- /dev/null +++ b/cms/locale/fa/LC_MESSAGES/django.po @@ -0,0 +1,1756 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Majid Vaghari , 2023 +# Meysam K , 2023 +# Sina Rezaei , 2023 +# Alireza Fathi , 2023 +# Fariman Ghaedi , 2023 +# hadiazaddel , 2025 +# Pouya Abbassi, 2026 +# Mohammad Rafiei , 2026 +# ali sadr , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Persian (https://app.transifex.com/divio/teams/58664/fa/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fa\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgid "All" +msgstr "همه" + +msgid "Copy permissions" +msgstr "اختیارات کپی" + +msgid "Slug" +msgstr "نشانک (آدرس کوتاه صفحه)" + +msgid "The part of the title that is used in the URL" +msgstr "قسمتی از عنوان که در آدرس اینترنتی استفاده می شود" + +msgid "Page type" +msgstr "نوع صفحه" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "انواع صفحه" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "جاینوشت آدرس اینترنتی" + +msgid "Keep this field empty if standard path should be used." +msgstr "اگر از آدرس استاندارد استفاده می-شود، این فیلد خالی گذارده شود." + +msgid "Start typing..." +msgstr "شروع به نوشتن ..." + +msgid "menu visibility" +msgstr "روئیت پذیری منو" + +msgid "limit when this page is visible in the menu" +msgstr "محدودیت زمانی که این صفحه در منو ظاهر میشود" + +msgid "X Frame Options" +msgstr "تنظیمات مربوط به X-Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "آیا این صفحه می‌تواند در صفحات یا وب‌سایت‌های دیگر جاسازی شود." + +msgid "URL options" +msgstr "گزینه‌های نامک" + +msgid "Menu options" +msgstr "گزینه‌های منو" + +msgid "Headers" +msgstr "سرآیندها" + +msgid "Application" +msgstr "برنامه کاربردی" + +msgid "Hook application to this page." +msgstr "اتصال برنامه کاربردی به این صفحه" + +msgid "Application configurations" +msgstr "تنظیمات برنامه" + +msgid "A page with this reverse URL id exists already." +msgstr "صفحه-ای با شناسه-ی این آدرس معکوس وجود دارد." + +msgid "Invalid application config value" +msgstr "مقدار تنظیمات برنامه نامعتبر است." + +msgid "An application instance using this configuration already exists." +msgstr "یک برنامه موردی با این تنظیمات از پیش وجود دارد." + +msgid "An application instance with this name already exists." +msgstr "یک برنامه موردی با این نام از پیش وجود دارد." + +msgid "You can't move the home page inside another page" +msgstr "شما نمی توانید صفحه خانه را به درون صفحه دیگری منتقل کنید" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"نمی‌توانید دو صفحه با نشانک یکسان در یک سطح داشته باشید. لطفاً پیش از تلاش " +"مجدد برای جابجایی، نشانک یکی از صفحات را تغییر دهید." + +msgid "Yes" +msgstr "بله" + +msgid "No" +msgstr "نه" + +msgid "user" +msgstr "کاربر" + +msgid "can_view" +msgstr "امکان مشاهده" + +msgid "Add" +msgstr "افزودن" + +msgid "Change" +msgstr "تغییر" + +msgid "Delete" +msgstr "حذف" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"کاربران بدون دسترسی تغییر صفحه ساخته شده نمی‌توانند صفحه جدید ایجاد کنند. " +"دسترسی ویرایش لازم است. " + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"کاربران بدون دسترسی تغییر صفحه نمی‌توانند صفحه‌ای را حذف کنند. دسترسی " +"ویرایش لازم است. " + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"کاربران بدون دسترسی تغییر صفحه نمی‌توانند دسترسی‌های صفحه را تنظیم کنند. " +"دسترسی ویرایش لازم است. " + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"کاربران بدون دسترسی تغییر صفحه نمی‌توانند دسترسی‌های صفحه را حذف کنند. " +"دسترسی ویرایش لازم است. " + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"کاربران بدون دسترسی تغییر دسترسی ایجاد شده نمی‌توانند دسترسی‌های صفحه ایجاد" +" کنند. دسترسی ویرایش لازم است. " + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"کاربران بدون دسترسی تغییر دسترسی‌ها نمی توانند دسترسی‌های صفحه را حذف کنند. " +"دسترسی ویرایش لازم است" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "نوع پلاگین «%s» نامعتبر است" + +msgid "Language must be set to a supported language!" +msgstr "یکی از زبانهای پشتیبانی شده را انتخاب کنید." + +msgid "Parent plugin language must be same as language!" +msgstr "زبان افزونه ی پدر باید یکسان باشد! " + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "جایگاه پلاگین منبع باید مانند جایگاه باشد!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "موقعیت افزونه باید بزرگ‌تر از %(position)d باشد" + +msgid "Translations" +msgstr "ترجمه‌ها" + +msgid "Advanced Settings" +msgstr "تنظیمات پیشرفته" + +msgid "The page is not eligible to be home." +msgstr "این صفحه واجد شرایط برای اینکه صفحه خانه باشد نیست." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "شی %(name)s با کلید اصلی %(key)r موجود نیست." + +msgid "error" +msgstr "خطا" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "خطا! شما دسترسى لازم را براى انتقال اين صفحه نداريد." + +msgid "Error! You don't have permissions to copy this page." +msgstr "خطا! شما اختیارات کپی این صفحه را ندارید." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"خطا! صفحه ای که شما در حال چسباندن آن هستید به هیچ کدام از زبان هایی که سایت" +" هدف پیکربندی کرده ترجمه نشده است." + +msgid "You do not have permission to edit this page" +msgstr "شما اجازه ویرایش این صفحه را ندارید." + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(برای تغییر آن، ابتدا نسخه‌ی منتشرشده‌ی فعلی این صفحه را از انتشار خارج " +"کنید)" + +msgid "Add Translation" +msgstr "اضافه کردن ترجمه" + +msgid "Add Page Copy" +msgstr "افزودن کپی از صفحه" + +msgid "New sub page" +msgstr "زیر‌صفحه‌ی جدید" + +msgid "New page" +msgstr "صفحه‌ی جدید" + +msgid "Database error" +msgstr "خطای پایگاه داده" + +msgid "Template not valid" +msgstr "قالب معتبر نمی باشد." + +msgid "Placeholder selection not valid" +msgstr "انتخاب نگهدارنده معتبر نیست" + +msgid "The template was successfully changed" +msgstr "قالب با موفقیت تغییر یافت" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "نگهدارنده «%s» در زبان مقصد وجود ندارد" + +msgid "You do not have permission to copy these plugins." +msgstr "شما دسترسى لازم را براى كپى بردارى اين افزونه ها نداريد." + +msgid "You do not have permission to delete this page" +msgstr "شما اختیار حذف این صفحه را ندارید" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "عنوان و افزونه-ها به زبان %(language)s حذف شدند." + +msgid "Public content" +msgstr "محتوای عمومی" + +msgid "Empty" +msgstr "خالی" + +msgid "Create Content" +msgstr "ساخت محتوا" + +msgid "View restriction" +msgstr "مشاهد محدوديت" + +msgid "View restrictions" +msgstr "نمايش محدوديت ها" + +#, python-format +msgid "Field %s not found" +msgstr "فیلد %s پیدا نشد." + +msgid "You do not have permission to edit this item" +msgstr "شما اجازه ویرایش این صفحه را ندارید." + +msgid "You do not have permission to add a plugin" +msgstr "شما فاقد دسترسى لازم براى اضافه كردن افزونه مى باشيد ." + +msgid "You do not have permission to copy this placeholder." +msgstr "شما دسترسی لازم برای کپی کردن این نگهدارنه را ندارید." + +msgid "Plugin not found" +msgstr "پلاگین یافت نشد" + +msgid "You do not have permission to edit this plugin" +msgstr "شما فاقد مجوز لازم برای ویرایش پلاگین می باشید" + +msgid "You have no permission to paste this plugin" +msgstr "شما دسترسی لازم برای جایگذاری این افزونه را ندارید." + +msgid "You have no permission to paste this placeholder" +msgstr "شما دسترسی لازم برای جایگذاری این نگهدارنده را ندارید." + +msgid "You have no permission to move this plugin" +msgstr "شما فاقد دسترسى لازم براى منتقل كردن اين افزونه مى باشيد ." + +msgid "You have no permission to cut this plugin" +msgstr "شما دسترسی لازم برای برداشت این افزونه را ندارید." + +msgid "You do not have permission to delete this plugin" +msgstr "شما فاقد مجوز لازم برای حذف پلاگین می باشید." + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "%(name)s افزونه \"%(obj)s\" با موفقيت حذف شد." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "نمى توان %(name)s را پاك كرد" + +msgid "Are you sure?" +msgstr "آیا مطمئن هستید؟" + +msgid "You do not have permission to clear this placeholder" +msgstr "شما دسترسى حذف اين نگهدارنده را نداريد" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "منفذ \"%(obj)s\" با موفقيت حذف شد." + +msgid "placeholder" +msgstr "نگهدارنده" + +msgid "Page permissions" +msgstr "اختیارات صفحه" + +msgid "User & Group permissions" +msgstr "اختیارات کاربر و گروه" + +msgid "Page permissions management" +msgstr "مدیریت اختیارات صفحه" + +msgid "Actions" +msgstr "عملیات" + +msgid "Empty content" +msgstr "محتوای خالی" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "ویژگی‌های %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "افزودن %(object_name)s جدید" + +msgid "Add content" +msgstr "افزودن محتوا" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"محتوای زبان فعلی تغییر کرده است. برای بازگشت به فرم و ذخیره‌ی تغییرات روی " +"«Cancel» کلیک کنید. برای نادیده گرفتن تغییرات روی «OK» کلیک کنید." + +#, python-format +msgid "Add %(language)s content" +msgstr "افزودن محتوای %(language)s" + +msgid "Preview" +msgstr "پیش‌نمایش" + +msgid "Settings" +msgstr "تنظیمات" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"زبان نامعتبر %(value)s. این فرم قابل پردازش نیست. تغییر زبان را امتحان کنید." + +msgid "" +msgstr "<نامشخص>" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "قلاب نرم افزار (apphook) «%r» ثبت نشده یا پیدا نشد" + +msgid "django CMS" +msgstr "مدیریت محتوای جنگو" + +msgid "Placeholder" +msgstr "نگهدارنده" + +msgid "Create" +msgstr "بساز" + +msgid "Edit" +msgstr "ویرایش" + +msgid "Structure" +msgstr "ساختار" + +msgid "Content" +msgstr "محتوا" + +msgid "Sites" +msgstr "وبگاه‌ها" + +msgid "Admin Sites" +msgstr "سايت هاى مديريت" + +msgid "Administration" +msgstr "مديريت" + +msgid "User settings" +msgstr "تنظيمات كاربر" + +msgid "Clipboard..." +msgstr "فضای کپی" + +msgid "Clear clipboard" +msgstr "پاک کردن فضای کپی" + +msgid "Disable toolbar" +msgstr "از کار انداختن نوار ابزار" + +msgid "Shortcuts..." +msgstr "میانبرها..." + +msgid "Users" +msgstr "كاربر ها" + +#, python-format +msgid "Logout %s" +msgstr "خروج %s" + +msgid "Logout" +msgstr "خروج" + +msgid "Language" +msgstr "زبان" + +msgid "Delete Translation" +msgstr "حذف ترجمه" + +msgid "Copy all plugins" +msgstr "همه‌ی پلاگینها را کپی کن" + +#, python-format +msgid "from %s" +msgstr "از %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "آیا مطمئن هستید که می‌خواهید همه افزونه‌ها را از %s کپی کنید؟" + +msgid "Pages" +msgstr "صفحات" + +msgid "Page" +msgstr "صفحه" + +msgid "Create Page" +msgstr "ساخت صفحه" + +msgid "New Page" +msgstr "صفحه جدید" + +msgid "New Sub Page" +msgstr "صفحه زیرین جدید" + +msgid "Duplicate this Page" +msgstr "مضاعف سازی صفحه" + +msgid "Page settings" +msgstr "تنظيمات صفحه" + +msgid "Advanced settings" +msgstr "تنظیمات پیشرفته" + +msgid "Templates" +msgstr "قالب ها" + +msgid "Placeholders" +msgstr "نگهدارنده‌ها" + +msgid "Hide in navigation" +msgstr "مخفى كردن در ناوبرى" + +msgid "Display in navigation" +msgstr "نشان دادن در ناوبرى" + +msgid "Delete page" +msgstr "صفحه را پاک‌کن" + +msgid "Create a new page next to the current page." +msgstr "صفحه‌ی جدیدی در کنار صفحه‌ی فعلی بساز." + +msgid "Create a page below the current page." +msgstr "صفحه‌ی جدیدی در زیر صفحه‌ی فعلی بساز." + +msgid "Select a valid site" +msgstr "یک سایت معتبر انتخاب کنید." + +msgid "Select a valid page" +msgstr "یک صفحه معتبر انتخاب کنید" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"آدرس صفحه %(conflict_page)s با آدرس صفحه فعلی %(url)s یکسان است " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "آدرس صفحه %(conflict_page)s با آدرس صفحه فعلی %(url)s یکسان است." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"غیر ضروری، اگر پر شود، به صورت اتوماتیک در داخل پلاگین جدید اضافه میشود." + +msgid "Provide a title for the new page." +msgstr "برای صفحه، یک عنوان ارائه دهید." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "برای تنظیم نشانک به صورت اتوماتیک، خالی بگذارید." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "ساخت خودکار نشانک ممکن نیست. لطفاً به صورت دستی یکی ارائه دهید." + +msgid "Please provide a valid slug." +msgstr "لطفاً یک نشانک معتبر ارائه دهید." + +msgid "You don't have the permissions required to add a page." +msgstr "شما دسترسی لازم برای اضافه کردن صفحه را ندارید." + +msgid "ID" +msgstr "آی دی" + +msgid "position" +msgstr "موقعیت" + +msgid "language" +msgstr "زبان" + +msgid "plugin_name" +msgstr "نام-پلاگین" + +msgid "creation date" +msgstr "تاریخ ایجاد" + +msgid "can edit" +msgstr "می-تواند ویرایش کند" + +msgid "can add" +msgstr "می-تواند اضافه کند" + +msgid "can delete" +msgstr "می-تواند حذف کند" + +msgid "can change advanced settings" +msgstr "می-تواند تنظیمات پیشرفته را تغییر دهد" + +msgid "can publish" +msgstr "می-تواند منتشر کند" + +msgid "can change permissions" +msgstr "می-تواند اختیارات را تغییر دهد" + +msgid "can move" +msgstr "می-تواند جابجا کند" + +msgid "view restricted" +msgstr "مشاهده محدود شده" + +msgid "can recover pages" +msgstr "می-تواند صفحات را بازیابی کند" + +msgid "group" +msgstr "گروه" + +msgid "sites" +msgstr "وبگاه‌ها" + +msgid "created by" +msgstr "ایجادشده به وسیله" + +msgid "changed by" +msgstr "تغییریافته به وسیله" + +msgid "publication date" +msgstr "تاریخ انتشار" + +msgid "publication end date" +msgstr "تاریخ اتمام انتشار" + +msgid "in navigation" +msgstr "در گردش" + +msgid "soft root" +msgstr "ریشه نرم" + +msgid "id" +msgstr "شناسه" + +msgid "attached menu" +msgstr "منوی ضمیمه شده" + +msgid "template" +msgstr "قالب" + +msgid "login required" +msgstr "نیاز به ورود دارد" + +msgid "application" +msgstr "نرم افزار" + +msgid "application instance name" +msgstr "نام نمونه برنامه " + +msgid "site" +msgstr "وبگاه" + +msgid "Grant on" +msgstr "دسترسی به" + +msgid "page" +msgstr "صفحه" + +msgid "no limit set" +msgstr "محدودیتی تنظیم نشده" + +msgid "for logged in users only" +msgstr "فقط برای کاریران وارد شده به سیستم" + +msgid "for anonymous users only" +msgstr "فقط برای کاربران ناشناس" + +msgid "Inherit from parent page" +msgstr "از صفحه منبع ارث ببر." + +msgid "Deny" +msgstr "رد کردن" + +msgid "Only this website" +msgstr "فقط این وب سایت" + +msgid "Allow" +msgstr "پذیرفتن" + +msgid "title" +msgstr "عنوان" + +msgid "The default title" +msgstr "عنوان پیش فرض" + +msgid "Page Title" +msgstr "عنوان صفحه" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr " عنوان مرورگر یا بوک مارک ها بازنویسی می شوند." + +msgid "Menu Title" +msgstr "عنوان منو" + +msgid "Overwrite what is displayed in the menu" +msgstr "بازنویسی در منوی نمایش داده شده" + +msgid "Description meta tag" +msgstr "متا تگ توضیحات" + +msgid "A description of the page used by search engines." +msgstr "توضیحاتی در مورد محتوای صفحه که مورد استفاده موتورهای جستجو می باشد." + +msgid "redirect" +msgstr "تغییر مسیر" + +msgid "Redirects to this URL." +msgstr "تغییرمسیر به این آدرس." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "تمامی اجداد در گردش نمایش داده نمی-شوند." + +msgid "The template used to render the content." +msgstr "قالبی که برای پویش محتوا استفاده می‌شود" + +msgid "page content" +msgstr "محتوای صفحه" + +msgid "page contents" +msgstr "محتواهای صفحه" + +msgid "default" +msgstr "پیشفرض" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"یک شناسه ی منحصر به فرد که با تگ قالب page_url استفاده می شود برای لینک " +"دادن به این " + +msgid "Mark this page as a page type" +msgstr "علامت‌گذاری این صفحه به عنوان نوع صفحه" + +msgid "pages" +msgstr "صفحات" + +msgid "No available title" +msgstr "عنوانی در دسترس نیست" + +msgid "slug" +msgstr "نشانک ،آدرس کوتاه صفحه، " + +msgid "Path" +msgstr "آدرس" + +msgid "Current page" +msgstr "صحفه فعلی" + +msgid "Page children (immediate)" +msgstr "صحفهات فرزند (بلافاصله)" + +msgid "Page and children (immediate)" +msgstr "صفحه و فرزندان (بلافاصله)" + +msgid "Page descendants" +msgstr "نوادگان صفحه" + +msgid "Page and descendants" +msgstr "صفحه و نوادگان" + +msgid "on page level" +msgstr "در سطح صفحه" + +msgid "frontend view restriction" +msgstr "نمايش ابتدايى محدوديت" + +msgid "Please select user or group." +msgstr "لطفا کاربر یا گروه را انتخاب کنید." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"کاربران نمیتوانند صفحه ای را ، بدون اجازه ی تغییر صفحات ، تغییر دهند.اجازه ی" +" اصلاح ضروری است." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"کاربران نمیتوانند تنظیمات پیشرفته را بدون اجازه ی تغییر در صفحات تغییر دهند" +" . اجازه ی اصلاح ضروری است." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"کاربران نمیتوانند اجازه های صفحه را بدون اجازه ی تغییر در صفحات تغییر دهند ." +" اجازه ی اصلاح ضروری است." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"کاربران نمیتوانند صفحه ای را بدون اجازه ی تغییر در صفحات جا به جا کنند . " +"اجازه ی اصلاح ضروری است." + +msgid "can recover any deleted page" +msgstr "می-تواند هر صفحه پاک-شده را بازیابی کند" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"اگر انتخابی صورت نگیرد، کاربر در تمام وبگاه-ها، اختیارات داده-شده را خواهد " +"داشت." + +msgid "Page global permission" +msgstr "اختیار سراسری صفحه" + +msgid "Pages global permissions" +msgstr "اختیارات سراسری صفحه" + +msgid "Page permission" +msgstr "اختیار صفحه" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +" اجازه دسترسی به اضافه کردن صفحه اجازه دسترسی به صفحات زیرین، و یا صفحات " +"فرزند، را نیز نیاز دارد؛ در غیر اینصورت خود ایجادکننده صفحه قابلیت تغییر آن " +"را نخواهد داشت." + +msgid "User (page)" +msgstr "کاربر (صفحه)" + +msgid "Users (page)" +msgstr "کاربران (صفحه)" + +msgid "User group (page)" +msgstr "گروه کاربری (صفحه)" + +msgid "User groups (page)" +msgstr "گروه‌های کاربری (صفحه)" + +msgid "slot" +msgstr "شیار" + +msgid "width" +msgstr "عرض" + +msgid "Edit object" +msgstr "ویرایش شی" + +msgid "This is an external placeholder" +msgstr "این یک نگهدارنده‌ی خارجی است" + +msgid "plugin" +msgstr "افزونه" + +msgid "plugins" +msgstr "افزونه‌ها" + +msgid "" +msgstr "<خالی>" + +msgid "The language for the admin interface and toolbar" +msgstr "زبان محيط مديريت و نوارابزار" + +msgid "user setting" +msgstr "تنظيم كاربر" + +msgid "user settings" +msgstr "تنظيمات كاربر" + +msgid "by template" +msgstr "بر اساس قالب" + +msgid "by code" +msgstr "بر اساس كد" + +msgid "static placeholder name" +msgstr "نام نگهدارنده ی ثابت" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"نامی توصیف کننده برای شناخت این نگهدارنده ی ثابت است و به کاربرها نمایش " +"داده نمی شود." + +msgid "placeholder code" +msgstr "کد نگهدارنده " + +msgid "To render the static placeholder in templates." +msgstr "برای ارائه نگهدارنده ی ثابت در قالب ها." + +msgid "placeholder content" +msgstr "محتوای نگهدارنده" + +msgid "creation_method" +msgstr "روش-خلق" + +msgid "static placeholder" +msgstr "نگهدارنده ی ثابت" + +msgid "static placeholders" +msgstr "نگهدارنده های ثابت" + +msgid "A static placeholder with the same site and code already exists" +msgstr "یک نگهدارنده ی ثابت با سایت و کد یکسان از قبل موجود است." + +msgid "Advanced options" +msgstr "گزینه های پیشرفته" + +msgid "Generic" +msgstr "عمومی" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" با موفقیت تغییر کرد." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "تنظیمات بیشتری برای این پلاگین وجود ندارد . لطفا ذخیره کنید." + +msgid "Moved" +msgstr "منتقل شد" + +msgid "Changed" +msgstr "تغییر کرده" + +msgid "Deleted" +msgstr "حذف شد" + +msgid "Added Page Translation" +msgstr "ترجمه صفحه افزوده شد" + +msgid "Changed Page Translation" +msgstr "ترجمه صفحه تغییر کرد" + +msgid "Deleted Page Translation" +msgstr "ترجمه صفحه پاک شد" + +msgid "Added Plugin" +msgstr "افزونه اضافه گردید" + +msgid "Changed Plugin" +msgstr "افزونه تغییر کرد" + +msgid "Moved Plugin" +msgstr "افزونه منتقل شد" + +msgid "Deleted Plugin" +msgstr "افزونه حذف شد" + +msgid "Cut Plugin" +msgstr "برش افزونه" + +msgid "Paste Plugin" +msgstr "الصاق افزونه
" + +msgid "Paste to Placeholder" +msgstr "الصاق به جایگاه" + +msgid "Added plugins to placeholder from clipboard" +msgstr "افزونه‌ها از کلیپ‌بورد به جایگاه اضافه شدند." + +msgid "Cleared Placeholder" +msgstr "جایگاه زدوده شد" + +msgid "Save" +msgstr "ذخیره" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "برخی فیلدها قابل تغییر نیستند زیرا محتوای فقط‌خواندنی هستند." + +#, python-format +msgid "Log in to administration here." +msgstr "در اینجا به مدیریت وارد شوید." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "آدرس ورود: %(login_url)s" + +msgid "Username:" +msgstr "کاربر:" + +msgid "Password:" +msgstr "رمز عبور:" + +msgid "Add a page" +msgstr "صفحه ای اضافه کن." + +msgid "Change a page" +msgstr "تغییر یک صفحه" + +msgid "Home" +msgstr "خانه" + +msgid "View on site" +msgstr "مشاهده روی وب‌گاه" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "لطفا خطاهای زیر را تصحیح کنید." +msgstr[1] "لطفا خطاهای زیر را تصحیح کنید." + +msgid "All permissions" +msgstr "تمامی اختیارات" + +msgid "Loading..." +msgstr "در حال بارگذاری" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "بله، مطمئن هستم" + +msgid "No, take me back" +msgstr "خیر، مرا بازگردان" + +msgid "Summary" +msgstr "خلاصه" + +msgid "User" +msgstr "کاربر" + +msgid "Group" +msgstr "گروه" + +msgid "Can edit" +msgstr "می‌تواند ویرایش کند" + +msgid "Can add" +msgstr "می‌تواند بیفزاید" + +msgid "Can delete" +msgstr "می‌تواند پاک کند" + +msgid "Can publish" +msgstr "می‌تواند منتشر کند" + +msgid "Can change permissions" +msgstr "می‌تواند اختیارات را تغییر‌دهد" + +msgid "Can move" +msgstr "می‌تواند انتقال دهد" + +msgid "Can view" +msgstr "میتواند مشاهده کند" + +msgid "(global)" +msgstr ")سراسری(" + +msgid "(current)" +msgstr ")جاری(" + +msgid "Page doesn't inherit any permissions." +msgstr "صفحه اختیاراتی به ارث نمی‌برد." + +msgid "Edit model" +msgstr "حالت ویرایش" + +msgid "Save as new" +msgstr "ذخیره به عنوان جدید" + +msgid "Save and add another" +msgstr "ذخیره و اضافه‌کردن دیگری" + +msgid "Copy" +msgstr "کپی" + +msgid "Cut" +msgstr "برداشت" + +msgid "Paste" +msgstr "جایگذاری" + +msgid "Set as home" +msgstr "تنظیم به عنوان خانه" + +msgid "is restricted" +msgstr "محدود شده" + +msgid "last change by" +msgstr "آخرین تغییر توسط" + +msgid "last change on" +msgstr "آخرین تغییر در" + +msgid "meta" +msgstr "متا" + +msgid "List of pages" +msgstr "فهرست صفحات" + +msgid "Search" +msgstr "جستجو" + +msgid "Page Tree" +msgstr "لیست درختی صفحه" + +msgid "Reset filter" +msgstr "ریست فیلتر" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" %(name)s حذف شده بازیابی شد\n" +" " + +msgid "Main Navigation" +msgstr "جهت‌یابی اصلی" + +msgid "Options" +msgstr "گزینه‌ها" + +msgid "Successfully moved" +msgstr "با موفقیت جابجا شد" + +msgid "Changes within the tree might require a refresh." +msgstr "برای اعمال تغییرات در درخت نیاز به بازخوانی مجدد می باشد." + +msgid "Error:" +msgstr "خطا:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"نمیتوان این صفحه را کپی کرد چون یک نرم‌افزار به آن پیوست شده است. تنظیمات " +"پیشرفته‌ی صفحه را ببینید تا قلاب‌های نرم‌افزاری (apphook) را مدیریت کنید." + +msgid "Are you sure you want to § this page?" +msgstr "آیا اطمینان دارید که می‌خواهید این صفحه را § کنید؟" + +msgid "Reload" +msgstr "بارگزاری مجدد" + +msgid "New node" +msgstr "گره جدید" + +msgid "nodes" +msgstr "گره‌ها" + +msgid "View" +msgstr "نمایش" + +msgid "Menu" +msgstr "منو" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +"هیچ %(object)s یافت نشد\n" +"\n" +"همین الان %(object)s اضافه کنید." + +msgid "Copy options" +msgstr "تنظیمات کپی" + +msgid "Choose copy options" +msgstr "تنظیمات کپی را انتخاب کنید" + +msgid "Close" +msgstr "بستن" + +msgid "Legend" +msgstr "شرح" + +msgid "In menu" +msgstr "داخل منو" + +msgid "Not in menu" +msgstr "در منو نباشد" + +msgid "View page" +msgstr "نمایش صفحه" + +msgid "Softroot" +msgstr "ریشه‌ی نرم" + +msgid "Apphook" +msgstr "قلاب نرم‌افزار (apphook)" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "ابزار: %(apphook)s" + +msgid "in menu" +msgstr "داخل منو" + +msgid "not in menu" +msgstr "در منو نباشد" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "تنظیمات صفحه (دکمه‌ی shift را نگه‌دارید برای تنظیمات پیشرفته)" + +msgid "Permissions" +msgstr "دسترسى ها" + +msgid "inherited" +msgstr "به ارث رسیده" + +msgid "This page has no preview!" +msgstr "این صفحه هیچ پیش نمایشی ندارد!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"احتمالاً قلاب نرم‌افزار (apphook) ضمیمه‌شده محتوایی برای ریشه‌ی خود ارائه " +"نمی‌دهد." + +msgid "It is being redirected to:" +msgstr "تغییر مسیر می دهد به :" + +msgid "Clipboard" +msgstr "فضای کپی" + +msgid "Add plugin" +msgstr "اضافه کردن پلاگین" + +msgid "Copy all" +msgstr "كپى بردارى از همه" + +msgid "Copy from" +msgstr "کپی کردن از" + +msgid "Empty all" +msgstr "خالى كردن همه" + +msgid "Filter plugins..." +msgstr "فیلتر پلاگینها..." + +msgid "Expand all" +msgstr "گسترش همه" + +msgid "Collapse all" +msgstr "جمع کردن همه" + +msgid "You cannot add plugins to this plugin." +msgstr "شما نمیتوانید به این پلاگین، پلاگین دیگری اضافه کنید." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "این پلاگین نمیتواند به خارج از منبع منتقل یا ویرایش شود." + +msgid "Clipboard is empty." +msgstr "فضای کپی خالی است." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" +"این پلاگین، به پلاگینهایی از این نوع اجازه‌ی قرار گرفتن به صورت تو‌در‌تو " +"نمیدهد." + +msgid "This plugin cannot have nested plugins." +msgstr "این پلاگین نمیتواند پلاگینهای تو‌در‌تو داشته باشد." + +msgid "Highlight" +msgstr "هایلایت" + +msgid "Available plugins" +msgstr "افزونه‌های موجود" + +msgid "Toggle structure" +msgstr "تغییر ساختار" + +msgid "Login" +msgstr "ورود" + +msgid "Add plugin to" +msgstr "اضافه کردن پلاگین به" + +msgid "More" +msgstr "بیشتر" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"ورژن تحت توسعه، از نسخه‌ی %(cms_version)s «سیستم مدیریت محتوای جنگو» و " +"نسخه‌ی %(django_version)s «جنگو» و نسخه‌ی %(python_version)s «پایتون» " +"استفاده میکند." + +msgid "Cancel" +msgstr "لغو" + +msgid "The following error occurred:" +msgstr "خطای مقابل رخ داده است:" + +msgid "Action successful." +msgstr "اقدام موفقیت آمیز." + +msgid "Are you sure you want to delete this plugin?" +msgstr "آیا شما مطمئن هستید می‌خواهید این افزونه را پاک کنید؟" + +msgid "Are you sure you want to publish this page?" +msgstr "آیا مطمئن هستید که می خواهید این صفحه را منتشر کنید؟" + +msgid "Plugin will be added here" +msgstr "پلاگین اینجا اضافه میشود" + +msgid "You have unsaved changes." +msgstr "شما تغییراتی ذخیره نشده دارید." + +msgid "Loading" +msgstr "در حال بارگذاری" + +msgid "Are you sure you want to abandon these changes?" +msgstr "آیا اطمینان دارید میخواهید این تغییرات را رها کنید؟" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"فورم نمیتواند بارگزاری شود. لطفا اطمینان حاصل کنید که سرور به خوبی کار " +"میکند." + +msgid "Most used" +msgstr "بیشترین استفاده شده" + +msgid "Shortcuts" +msgstr "میانبرها" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" +"صفحه در این اثناء تغییر کرد،\n" +"در حال بارگذاری مجدد ..." + +msgid "CMS-wide Shortcuts" +msgstr "میان‌برهای سراسری CMS" + +msgid "Bring up this help dialog" +msgstr "این گفتگو کمک را بیابید" + +msgid "Close/cancel" +msgstr "بستن" + +msgid "Toggle structure mode" +msgstr "حالت ساختار را تغییر دهید" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "حالت ساختار را تغییر دهید و پلاگین شناور شده را برجسته کنید" + +msgid "Open \"Create\" dialog" +msgstr "گفتگوی \"ساختن\" را باز کنید." + +msgid "Focus on Toolbar" +msgstr "زوم بر روی نوار ابزار" + +msgid "Focus on placeholders" +msgstr "زوم بر روی نگهدارنده ها" + +msgid "Move to next/previous element" +msgstr "انتقال به المان بعدی/قبلی" + +msgid "Focus on plugins of placeholder" +msgstr "زوم بر روی پلاگین نگهدارنده ها" + +msgid "Edit plugin" +msgstr "ویرایش افزونه" + +msgid "Open actions menu" +msgstr "باز کردن منوی عملیات" + +msgid "Expand/collapse" +msgstr "بازکردن/جمع کردن" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +" لطفاً ورودى هاى خود را دوباره بازبينى " +"كنيد." + +msgid "Double-click to edit" +msgstr "برای ویرایش دو بار کلیک کنید" + +msgid "Tap to edit" +msgstr "برای ویرایش کلیک کنید" + +msgid "Click to go back" +msgstr "برای بازگشت کلیک کنید" + +msgid "Click to go forward" +msgstr "برای جلو رفتن کلیک کنید" + +msgid "Minimize" +msgstr "کوچک کردن" + +msgid "Maximize" +msgstr "بزرگ کردن" + +msgid "Placeholder not editable" +msgstr "نگهدارنده قابل ویرایش نیست" + +msgid "Drop a plugin here" +msgstr "افزونه را در اين مكان قرار دهيد" + +msgid "Welcome to your new django CMS installation!" +msgstr "به نصب جدید django CMS خود خوش آمدید!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "نسخه‌ی %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "بیایید با هم چیزی عالی بسازیم!" + +msgid "Please log in" +msgstr "لطفا لاگین کنید (وارد شوید)" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" اولین صفحه‌ی خود را اضافه کنید\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

کمک به تأمین مالی

\n" +"

\n" +" تأمین مالی شما مستقیماً به نفع محصول است، عمدتاً از طریق\n" +" برنامه‌ی همیاری django CMS!\n" +"

\n" +"

\n" +" یک راه سریع برای شما یا سازمانتان جهت اهدای کمک، در\n" +" Github Sponsors است.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

به ما بپیوندید

\n" +"

\n" +" انجمن django CMS یک سازمان غیرانتفاعی است که توسعه‌ی\n" +" django CMS را تأمین مالی و هدایت می‌کند.\n" +"

\n" +"

\n" +" شما می‌توانید هم به عنوان یک فرد و هم به عنوان یک\n" +" سازمان بپیوندید.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

مشارکت کنید

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "یادداشت های نصب" + +msgid "Support" +msgstr "پشتیبانی" + +msgid "Documentation" +msgstr "مستندات" + +msgid "User guide" +msgstr "راهنمای کاربر" + +msgid "Give back" +msgstr "جبران کنید" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

اگر شما نماد «سیستم مدیریت محتوای جنگو» را در بالای صفحه نمی‌بینید، مطمئن شوید\n" +"پوشه‌ی static/cms را به فایل‌های ایستای خود\n" +"لینک کرده‌اید.

" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

شما این پیغام را می‌بینید چون DEBUG = True را در تنظیمات جنگو فعال کرده‌اید.

" + +msgid "Welcome to django CMS" +msgstr "به سیستم مدیریت محتوای جنگو خوش آمدید" + +msgid "Add Another" +msgstr "اضافه کردن یکی دیگر" + +msgid "Back" +msgstr "قبلی" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "برای رفتن به مرحله‌ی بعد، لطفا یکی از گزینه‌های زیر را انتخاب کنید." + +msgid "Next" +msgstr "بعدی" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "نامشخص" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "صغحه پیدا نشد روی %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"يك تگ قالب نميتواند صفحه را با استفاده از آرگومان هاى ارجاعى پيدا كند " +"`%(page_lookup)s⏎ `. آدرس درخواست شده: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "دو ستون" + +msgid "Three columns" +msgstr "سه ستون" + +msgid "username" +msgstr "نام کاربری" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "واجب. 300 کاراکتر یا کمتر. حروف، اعداد و کاراکترهای @/./+/-/_" + +msgid "Enter a valid username." +msgstr "نام کاربری معتبر وارد کنید." + +msgid "email address" +msgstr "ایمیل به" + +msgid "staff status" +msgstr "وضعیت کارکنان" + +msgid "Designates whether the user can log into this admin site." +msgstr "معین می‌کند که آیا کاربر می‌تواند به این سایت مدیریت وارد شود." + +msgid "active" +msgstr "فعال" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"مشخص می‌سازد که آیا با این کاربر باید به عنوان فعال رفتار شود. حذف گزینش این" +" آیتم به جای حذف حساب‌ها" + +msgid "users" +msgstr "کاربران" + +msgid "Title Extension" +msgstr "‌گسترش عنوان" + +msgid "Page Extension" +msgstr "‌گسترش صفحه" + +msgid "object ID" +msgstr "شناسه شی" + +msgid "Example1 App" +msgstr "اپلیکیشن مثال۱" + +msgid "MultilingualExample1 App" +msgstr "اپلیکیشن چند زبانه‌ی مثال۱" + +msgid "Example1" +msgstr "مثال۱" + +msgid "Examples" +msgstr "مثال‌ها" + +msgid "Extra Context" +msgstr "مفهوم اصلى" + +msgid "Articles" +msgstr "مقالات" + +msgid "Sample App" +msgstr "ابزار نمونه" + +msgid "Sample App with config" +msgstr "اپلیکیشن نمونه همراه با پیکربندی" + +msgid "Sample App with excluded permissions" +msgstr "اَپ نمونه با سطح دسترسی‌های محدود" + +msgid "Sample App 2" +msgstr "ابزار نمونه ۲" + +msgid "Sample App 3" +msgstr "ابزار نمونه ۲" + +msgid "Sample App Without Landing Page" +msgstr "برنامه‌ی نمونه بدون صفحه‌ی فرود" + +msgid "Namespaced App" +msgstr "اپلیکیشن دارای فضای نام" + +msgid "Parent app" +msgstr "اَپ منبع" + +msgid "Child app" +msgstr "اَپ زیرمجموعه" + +msgid "Variable urls-menus App" +msgstr "متغیر اپلیکیشن لینکها-منوها" + +msgid "sample root page" +msgstr "صفحه اصلى نمونه" + +msgid "sample settings page" +msgstr "صفحه تنظيمات نمونه" + +msgid "sample account page" +msgstr "صفحه حساب كاربرى نمونه" + +msgid "sample my profile page" +msgstr "صفحه نمونه مشخصات من" + +msgid "Static Menu" +msgstr "منوی ایستا" + +msgid "Static Menu2" +msgstr "منوی ایستا ۲" + +msgid "Static Menu3" +msgstr "منوی ایستا ۳" + +msgid "Static Menu4" +msgstr "منوی ایستا" + +msgid "Category" +msgstr "موضوع" + +msgid "Categories" +msgstr "موضوعات" + +msgid "Add Category" +msgstr "افزودن موضوع" + +msgid "^account/$" +msgstr "^حساب كاربرى/$" + +msgid "Change Category" +msgstr "تغيير موضوع" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "از اینکه امروز زمان ارزشمندتان را در این وب سایت صرف کردید ممنونیم." + +msgid "Inherit the template of the nearest ancestor" +msgstr "الگوی نزدیک-ترین منبع را داشته باش." + +msgid "UserSettings" +msgstr "تنظیمات کاربر" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "افزودن افزونه به %(placeholder_label)s" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "افزودن افزونه به %(plugin_name)s" + +msgid "Single placeholder" +msgstr "نگهدارنده‌ی تکی" + +msgid "CMS - your user account was created." +msgstr "CMS - کاربر شما ساخته‌شد." + +msgid "CMS - your user account was changed." +msgstr "CMS - حساب کاربری شما تغییر کرد." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "اين منفذ در حال حاضر داراى حداكثر تعداد افزونه ها مى باشد (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"اين منفذ در حال حاضر داراى حداكثر تعداد(%(limit)s) پذيرفته شده ى " +"%(plugin_name)s افزونه ها مى باشد." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "مشکل در یافتن ماژول CMS_REQUEST_IP_RESOLVER تعیین شده: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"مشکل در یافتن تابع CMS_REQUEST_IP_RESOLVER تعیین شده: \"{0}\" در ماژول " +"\"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "ساخت یک مثال %s جدید ." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "در حال حاظر یک ویزارد ثبت شده برای : %s" diff --git a/cms/locale/fa/LC_MESSAGES/djangojs.po b/cms/locale/fa/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..c8ffb5aa --- /dev/null +++ b/cms/locale/fa/LC_MESSAGES/djangojs.po @@ -0,0 +1,25 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# cafe-click , 2013 +# Pouya Abbassi, 2016 +# Pouya Abbassi, 2016 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Pouya Abbassi, 2016\n" +"Language-Team: Persian (http://app.transifex.com/divio/django-cms/language/fa/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fa\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "آیا مطمئن هستید میخواهید تب‌ها را تغییر دهید بدون اینکه صفحه را از قبل ذخیره کرده باشید؟" diff --git a/cms/locale/fa_IR/LC_MESSAGES/django.po b/cms/locale/fa_IR/LC_MESSAGES/django.po new file mode 100644 index 00000000..79402773 --- /dev/null +++ b/cms/locale/fa_IR/LC_MESSAGES/django.po @@ -0,0 +1,1633 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Javad Miraftabzadeh , 2022 +# reza reza , 2025 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: reza reza , 2025\n" +"Language-Team: Persian (Iran) (https://app.transifex.com/divio/teams/58664/fa_IR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fa_IR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgid "All" +msgstr "" + +msgid "Copy permissions" +msgstr "مجوزهای کپی کردن" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "بخشی از عنوان که در URL استفاده می‌شود" + +msgid "Page type" +msgstr "نوع صفحه" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "" + +msgid "Keep this field empty if standard path should be used." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "تنظیمات X-Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "" + +msgid "Hook application to this page." +msgstr "" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "زبان" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "تنظیمات پیشرفته" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "زبان" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "صفحه" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "عنوان" + +msgid "The default title" +msgstr "عنوان پیش‌فرض" + +msgid "Page Title" +msgstr "عنوان صفحه" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +msgid "Menu Title" +msgstr "عنوان فهرست" + +msgid "Overwrite what is displayed in the menu" +msgstr "بازنویسی مواردی که در فهرست نمایش داده می‌شوند" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "عرض" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/fa_IR/LC_MESSAGES/djangojs.po b/cms/locale/fa_IR/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..931cdaee --- /dev/null +++ b/cms/locale/fa_IR/LC_MESSAGES/djangojs.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Javad Miraftabzadeh , 2016 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Javad Miraftabzadeh , 2016\n" +"Language-Team: Persian (Iran) (http://app.transifex.com/divio/django-cms/language/fa_IR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fa_IR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "آیا مطمئنید که می‌خواهید زبانه‌ها را پیش از ذخیره صفحه تغییر دهید؟" diff --git a/cms/locale/fi/LC_MESSAGES/django.po b/cms/locale/fi/LC_MESSAGES/django.po new file mode 100644 index 00000000..89a0ef1f --- /dev/null +++ b/cms/locale/fi/LC_MESSAGES/django.po @@ -0,0 +1,1762 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# 6e24184c9f8092a67bcd413cbcf598da_29fd2b5 <08b9fabf956572ae43d0b31e4effa6b5_821440>, 2022 +# Ville-Eemeli Käkelä , 2025 +# Niklas Jerva , 2025 +# Teemu Gratschev , 2026 +# Kusti Hämäläinen , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Finnish (https://app.transifex.com/divio/teams/58664/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "Kaikki" + +msgid "Copy permissions" +msgstr "Kopioi oikeudet" + +msgid "Slug" +msgstr "URL-otsikko" + +msgid "The part of the title that is used in the URL" +msgstr "Osa otsikosta jota käytetään URL:ssa" + +msgid "Page type" +msgstr "Sivutyyppi" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Sivutyypit" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Yliaja URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Jätä tämä kenttä tyhjäksi jos halutaan käyttää oletuspolkua." + +msgid "Start typing..." +msgstr "Aloita kirjoittaminen..." + +msgid "menu visibility" +msgstr "näytä valikossa" + +msgid "limit when this page is visible in the menu" +msgstr "rajoita tämän sivun näkyvyyttä valikossa" + +msgid "X Frame Options" +msgstr "X Frame valinnat" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Voidaanko tämä sivu upottaa muille sivuille tai verkkosivustoille." + +msgid "URL options" +msgstr "URL-asetukset" + +msgid "Menu options" +msgstr "Valikkoasetukset" + +msgid "Headers" +msgstr "Otsikot" + +msgid "Application" +msgstr "Sovellus" + +msgid "Hook application to this page." +msgstr "Kytke sovellus tähän sivuun." + +msgid "Application configurations" +msgstr "Ohjelman asetukset" + +msgid "A page with this reverse URL id exists already." +msgstr "Sivu tällä käänteisellä URL-tunnuksella on jo olemassa." + +msgid "Invalid application config value" +msgstr "Virheellinen sovelluksen konfigurointiarvo" + +msgid "An application instance using this configuration already exists." +msgstr "Kyseisellä konfiguraatiolla oleva ohjelma on jo olemassa." + +msgid "An application instance with this name already exists." +msgstr "Saman niminen ohjelma on jo olemassa." + +msgid "You can't move the home page inside another page" +msgstr "Kotisivua ei voi siirtää toisen sivun sisälle" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Samalla sivutasolla ei voi olla kahta sivua samalla URL-otsikolla. Muuta " +"toisen sivun URL-otsikkoa ennen kuin yrität siirtää uudelleen." + +msgid "Yes" +msgstr "Kyllä" + +msgid "No" +msgstr "Ei" + +msgid "user" +msgstr "käyttäjä" + +msgid "can_view" +msgstr "voi_katsella" + +msgid "Add" +msgstr "Lisää" + +msgid "Change" +msgstr "Muokkaa" + +msgid "Delete" +msgstr "Poista" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Käyttäjät eivät voi luoda sivua ilman oikeuksia muuttaa luotua sivua. " +"Muokkausoikeudet vaadittu." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Käyttäjät eivät voi poistaa sivua ilman oikeuksia muuttaa sivua. " +"Muokkausoikeudet vaadittu." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Käyttäjät eivät voi asettaa sivuoikeuksia ilman oikeuksia muuttaa sivua. " +"Muokkausoikeudet vaadittu." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Käyttäjät eivät voi poistaa sivuoikeuksia ilman oikeuksia muuttaa sivua. " +"Muokkausoikeudet vaadittu." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Käyttäjät eivät voi luoda sivuoikeuksia ilman oikeuksia muuttaa luotuja " +"sivuoikeuksia. Muokkausoikeudet vaadittu." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Käyttäjät eivät voi poistaa sivuoikeuksia ilman oikeuksia muuttaa oikeuksia." +" Muokkausoikeudet vaadittu." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Virheellinen liitännäisen tyyppi '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Kielen tulee olla tuettu!" + +msgid "Parent plugin language must be same as language!" +msgstr "Isäntäliitännäisen kielen tulee vastata aktiivista kieltä!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Isäntäliitännäisen sisältöpaikan tulee vastata sisältöpaikkaa!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Liitännäisen sijainnin tulee olla suurempi kuin %(position)d" + +msgid "Translations" +msgstr "Käännökset" + +msgid "Advanced Settings" +msgstr "Edistyneet asetukset" + +msgid "The page is not eligible to be home." +msgstr "Tätä sivua ei voi valita etusivuksi." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Olio %(name)s perusavaimella %(key)r ei ole olemassa" + +msgid "error" +msgstr "virhe" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Virhe! Oikeutesi eivät riitä tämän sivun siirtämiseen. Ole hyvä ja lataa " +"sivu uudelleen." + +msgid "Error! You don't have permissions to copy this page." +msgstr "Virhe! Sinulla ei ole oikeuksia kopioida tätä sivua." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Virhe! Liittämäsi sivu ei ole käännetty millekään kohdesivustolle " +"määritetyistä kielistä." + +msgid "You do not have permission to edit this page" +msgstr "Oikeutesi eivät riitä tämän sivun muokkaamiseen" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(muuttaaksesi tätä, poista ensin tämän sivun tällä hetkellä julkaistun " +"version julkaisu)" + +msgid "Add Translation" +msgstr "Lisää käännös" + +msgid "Add Page Copy" +msgstr "Lisää kopio sivusta" + +msgid "New sub page" +msgstr "Uusi alasivu" + +msgid "New page" +msgstr "Uusi sivu" + +msgid "Database error" +msgstr "Tietokantavirhe" + +msgid "Template not valid" +msgstr "Virheellinen asettelupohja" + +msgid "Placeholder selection not valid" +msgstr "Virheellinen sisältöpaikan valinta" + +msgid "The template was successfully changed" +msgstr "Asettelupohja vaihdettu" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Sisältöpaikkaa '%s' ei ole olemassa kohdekielessä" + +msgid "You do not have permission to copy these plugins." +msgstr "Oikeutesi eivät riitä näiden liitännäisten kopiointiin." + +msgid "You do not have permission to delete this page" +msgstr "Sinulla ei ole oikeuksia poistaa tätä sivua" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Otsikko ja liitännäiset kielelle %(language)s poistettu" + +msgid "Public content" +msgstr "Julkinen sisältö" + +msgid "Empty" +msgstr "Tyhjä" + +msgid "Create Content" +msgstr "Luo sisältö" + +msgid "View restriction" +msgstr "Näkyvyyden rajoittaminen" + +msgid "View restrictions" +msgstr "Näkymän rajoitukset" + +#, python-format +msgid "Field %s not found" +msgstr "Kenttää %s ei löytynyt" + +msgid "You do not have permission to edit this item" +msgstr "Oikeutesi eivät riitä tämän kohteen muokkaamiseen" + +msgid "You do not have permission to add a plugin" +msgstr "Oikeutesi eivät riitä liitännäisen lisäämiseen" + +msgid "You do not have permission to copy this placeholder." +msgstr "Oikeutesi eivät riitä tämän sisältöpaikan kopiointiin." + +msgid "Plugin not found" +msgstr "Liitännäistä ei löytynyt" + +msgid "You do not have permission to edit this plugin" +msgstr "Oikeutesi eivät riitä tämän liitännäisen muokkaamiseen" + +msgid "You have no permission to paste this plugin" +msgstr "Oikeutesi eivät riitä tämän liitännäisen liittämiseen" + +msgid "You have no permission to paste this placeholder" +msgstr "Oikeutesi eivät riitä tämän sisältöpaikan liittämiseen" + +msgid "You have no permission to move this plugin" +msgstr "Oikeutesi eivät riitä tämän liitännäisen siirtämiseen" + +msgid "You have no permission to cut this plugin" +msgstr "Oikeutesi eivät riitä tämän liitännäisen leikkaamiseen" + +msgid "You do not have permission to delete this plugin" +msgstr "Oikeutesi eivät riitä tämän liitännäisen poistamiseen" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "%(name)s-liitännäinen \"%(obj)s\" poistettiin." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Ei voida poistaa kohdetta %(name)s" + +msgid "Are you sure?" +msgstr "Oletko varma?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Oikeutesi eivät riitä tämän sisältöpaikan tyhjentämiseen" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Sisältöpaikka \"%(obj)s\" tyhjennettiin." + +msgid "placeholder" +msgstr "sisältöpaikka" + +msgid "Page permissions" +msgstr "Sivun oikeudet" + +msgid "User & Group permissions" +msgstr "Käyttäjä- & ryhmäoikeudet" + +msgid "Page permissions management" +msgstr "Sivun oikeuksien hallinta" + +msgid "Actions" +msgstr "Toiminnot" + +msgid "Empty content" +msgstr "Tyhjä sisältö" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "%(object_name)s-ominaisuudet" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Lisää uusi %(object_name)s" + +msgid "Add content" +msgstr "Lisää sisältöä" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Aktiivisen kielen sisältöä on muutettu. Napsauta \"Peruuta\" palataksesi " +"lomakkeelle ja tallentaaksesi muutokset. Napsauta \"OK\" hylätäksesi " +"muutokset." + +#, python-format +msgid "Add %(language)s content" +msgstr "Lisää %(language)s-sisältöä" + +msgid "Preview" +msgstr "Esikatselu" + +msgid "Settings" +msgstr "Asetukset" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Virheellinen kieli %(value)s. Tätä lomaketta ei voida käsitellä. Yritä " +"vaihtaa kieltä." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Rekisteröityä ohjelmaa \"%r\" ei löytynyt" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Sisältöpaikka" + +msgid "Create" +msgstr "Luo" + +msgid "Edit" +msgstr "Muokkaa" + +msgid "Structure" +msgstr "Rakenne" + +msgid "Content" +msgstr "Sisältö" + +msgid "Sites" +msgstr "Sivustot" + +msgid "Admin Sites" +msgstr "Hallintasivustot" + +msgid "Administration" +msgstr "Hallinta" + +msgid "User settings" +msgstr "Käyttäjäasetukset" + +msgid "Clipboard..." +msgstr "Leikepöytä..." + +msgid "Clear clipboard" +msgstr "Tyhjennä leikepöytä" + +msgid "Disable toolbar" +msgstr "Poista työkalupalkki käytöstä" + +msgid "Shortcuts..." +msgstr "Oikopolut..." + +msgid "Users" +msgstr "Käyttäjät" + +#, python-format +msgid "Logout %s" +msgstr "Kirjaa ulos %s" + +msgid "Logout" +msgstr "Kirjaudu ulos" + +msgid "Language" +msgstr "Kieli" + +msgid "Delete Translation" +msgstr "Poista käännös" + +msgid "Copy all plugins" +msgstr "Kopioi kaikki liitännäiset" + +#, python-format +msgid "from %s" +msgstr "kohteesta %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Oletko varma, että haluat kopioida kaikki liitännäiset kohteesta %s?" + +msgid "Pages" +msgstr "Sivut" + +msgid "Page" +msgstr "Sivu" + +msgid "Create Page" +msgstr "Luo sivu" + +msgid "New Page" +msgstr "Uusi sivu" + +msgid "New Sub Page" +msgstr "Uusi alasivu" + +msgid "Duplicate this Page" +msgstr "Kopioi tämä sivu" + +msgid "Page settings" +msgstr "Sivun asetukset" + +msgid "Advanced settings" +msgstr "Edistyneet asetukset" + +msgid "Templates" +msgstr "Asettelupohjat" + +msgid "Placeholders" +msgstr "Sisältöpaikat" + +msgid "Hide in navigation" +msgstr "Piilota navigaatiossa" + +msgid "Display in navigation" +msgstr "Näytä navigaatiossa" + +msgid "Delete page" +msgstr "Poista sivu" + +msgid "Create a new page next to the current page." +msgstr "Luo uusi sivu nykyisen sivun viereen." + +msgid "Create a page below the current page." +msgstr "Luo uusi sivu nykyisen sivun alapuolelle." + +msgid "Select a valid site" +msgstr "Valitse kelvollinen sivusto" + +msgid "Select a valid page" +msgstr "Valitse kelvollinen sivu" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"Sivulla %(conflict_page)s on sama url '%(url)s' kuin nykyisellä sivulla " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"Sivulla %(conflict_page)s on sama url '%(url)s' kuin nykyisellä sivulla." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Valinnainen. Jos annettu, lisätään automaattisesti uuteen " +"tekstiliitännäiseen." + +msgid "Provide a title for the new page." +msgstr "Anna otsikko uudelle sivulle." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" +"Jätä tyhjäksi automaattista URL-otsikkoa varten, tai korvaa tarpeen mukaan." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "URL-otsikkoa ei voida luoda automaattisesti. Anna se manuaalisesti." + +msgid "Please provide a valid slug." +msgstr "Anna kelvollinen URL-otsikko." + +msgid "You don't have the permissions required to add a page." +msgstr "Oikeutesi eivät riitä sivun lisäämiseen." + +msgid "ID" +msgstr "tunnus" + +msgid "position" +msgstr "Sijainti" + +msgid "language" +msgstr "kieli" + +msgid "plugin_name" +msgstr "liitännäisen_nimi" + +msgid "creation date" +msgstr "Luontipäiväys" + +msgid "can edit" +msgstr "voi muokata" + +msgid "can add" +msgstr "voi lisätä" + +msgid "can delete" +msgstr "voi poistaa" + +msgid "can change advanced settings" +msgstr "voi muokata edistyneitä asetuksia" + +msgid "can publish" +msgstr "voi julkaista" + +msgid "can change permissions" +msgstr "voi muokata käyttöoikeuksia" + +msgid "can move" +msgstr "voi liikuttaa" + +msgid "view restricted" +msgstr "Näyttö rajoitettu" + +msgid "can recover pages" +msgstr "voi palauttaa sivuja" + +msgid "group" +msgstr "ryhmä" + +msgid "sites" +msgstr "sivustot" + +msgid "created by" +msgstr "luoja" + +msgid "changed by" +msgstr "muokkaaja" + +msgid "publication date" +msgstr "julkaisupäiväys" + +msgid "publication end date" +msgstr "julkaisun loppupäiväys" + +msgid "in navigation" +msgstr "navigaatiossa" + +msgid "soft root" +msgstr "Softroot" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "liitetty valikko" + +msgid "template" +msgstr "asettelu" + +msgid "login required" +msgstr "Sisäänkirjautuminen vaadittu" + +msgid "application" +msgstr "sovellus" + +msgid "application instance name" +msgstr "ohjelman instanssin nimi" + +msgid "site" +msgstr "sivusto" + +msgid "Grant on" +msgstr "Myönnä oikeus" + +msgid "page" +msgstr "sivu" + +msgid "no limit set" +msgstr "rajaa ei asetettu" + +msgid "for logged in users only" +msgstr "ainoastaan kirjautuneille käyttäjille" + +msgid "for anonymous users only" +msgstr "ainoastaan kirjautumattomille käyttäjille" + +msgid "Inherit from parent page" +msgstr "Peri isäntäsivulta" + +msgid "Deny" +msgstr "Estä" + +msgid "Only this website" +msgstr "Vain tämä sivusto" + +msgid "Allow" +msgstr "Salli" + +msgid "title" +msgstr "otsikko" + +msgid "The default title" +msgstr "Oletusotsikko" + +msgid "Page Title" +msgstr "Sivun otsikko" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "Yliajaa selaimen ylälaidassa ja kirjanmerkeissä näytettävän tekstin" + +msgid "Menu Title" +msgstr "Valikko-otsikko" + +msgid "Overwrite what is displayed in the menu" +msgstr "Yliajaa valikossa näytettävän tekstin" + +msgid "Description meta tag" +msgstr "Kuvauksen meta tag" + +msgid "A description of the page used by search engines." +msgstr "Pilkuin eroteltu lista joita hakukoneet voivat hyödyntää." + +msgid "redirect" +msgstr "edelleenohjaus" + +msgid "Redirects to this URL." +msgstr "Edelleenohjaa tähän URL:iin" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Kaikkia vanhempia ei näytetä navigaatiossa" + +msgid "The template used to render the content." +msgstr "Asettelu jota käytetään sisällön tulostukseen ruudulle." + +msgid "page content" +msgstr "sivun sisältö" + +msgid "page contents" +msgstr "sivun sisällöt" + +msgid "default" +msgstr "oletus" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Yksilöllinen tunniste, jota käytetään page_url-templatetagin kanssa tähän " +"sivuun linkittämiseen" + +msgid "Mark this page as a page type" +msgstr "Merkitse tämä sivu sivutyypiksi" + +msgid "pages" +msgstr "sivut" + +msgid "No available title" +msgstr "Ei saatavilla olevaa otsikkoa" + +msgid "slug" +msgstr "url-otsikko" + +msgid "Path" +msgstr "Polku" + +msgid "Current page" +msgstr "Nykyinen sivu" + +msgid "Page children (immediate)" +msgstr "Sivun lapset" + +msgid "Page and children (immediate)" +msgstr "Sivu ja lapset" + +msgid "Page descendants" +msgstr "Sivun jälkeläiset" + +msgid "Page and descendants" +msgstr "Sivu ja jälkeläiset" + +msgid "on page level" +msgstr "sivutasolla" + +msgid "frontend view restriction" +msgstr "käyttöliittymän näkymärajoitus" + +msgid "Please select user or group." +msgstr "Valitse käyttäjä tai käyttäjäryhmä." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Käyttäjät eivät voi julkaista sivua ilman oikeuksia muuttaa sivua. " +"Muokkausoikeudet vaadittu." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Käyttäjät eivät voi muuttaa sivun kehittyneitä asetuksia ilman oikeuksia " +"muuttaa sivua. Muokkausoikeudet vaadittu." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Käyttäjät eivät voi muuttaa sivun oikeuksia ilman oikeuksia muuttaa sivua. " +"Muokkausoikeudet vaadittu." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Käyttäjät eivät voi siirtää sivua ilman oikeuksia muuttaa sivua. " +"Muokkausoikeudet vaadittu." + +msgid "can recover any deleted page" +msgstr "voi palauttaa minkä tahansa poistetun sivun" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"jos mitään ei ole valittu käyttäjälle myönnetään oikeudet kaikkiin " +"sivustoihin" + +msgid "Page global permission" +msgstr "Sivun globaali käyttöoikeus" + +msgid "Pages global permissions" +msgstr "Sivujen globaalit käyttöoikeudet" + +msgid "Page permission" +msgstr "Sivun käyttöoikeus" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Sivun luontioikeus vaatii pääsyn myös sen jälkeläisiin. Muuten sivun luoja " +"ei voi muokata sitä myöhemmin." + +msgid "User (page)" +msgstr "Käyttäjä (sivu)" + +msgid "Users (page)" +msgstr "Käyttäjät (sivu)" + +msgid "User group (page)" +msgstr "Käyttäjäryhmä (sivu)" + +msgid "User groups (page)" +msgstr "Käyttäjäryhmät (sivu)" + +msgid "slot" +msgstr "lovi" + +msgid "width" +msgstr "leveys" + +msgid "Edit object" +msgstr "Muokkaa oliota" + +msgid "This is an external placeholder" +msgstr "Tämä on ulkoinen sisältöpaikka" + +msgid "plugin" +msgstr "liitännäinen" + +msgid "plugins" +msgstr "liitännäiset" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Hallintapaneelin ja työkalupalkin kieli" + +msgid "user setting" +msgstr "käyttäjäasetukset" + +msgid "user settings" +msgstr "käyttäjäasetukset" + +msgid "by template" +msgstr "asettelupohjan mukaan" + +msgid "by code" +msgstr "koodin mukaan" + +msgid "static placeholder name" +msgstr "staattisen sisältöpaikan nimi" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "Kuvaava nimi tälle staattiselle sisältöpaikalle. Ei näy käyttäjille." + +msgid "placeholder code" +msgstr "sisältöpaikan tunniste" + +msgid "To render the static placeholder in templates." +msgstr "Staattisen sisältöpaikan esittämiseksi asettelupohjissa." + +msgid "placeholder content" +msgstr "sisältöpaikan sisältö" + +msgid "creation_method" +msgstr "luontitapa" + +msgid "static placeholder" +msgstr "staattinen sisältöpaikka" + +msgid "static placeholders" +msgstr "staattiset sisältöpaikat" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" +"Staattinen sisältöalue samalla sivustolla ja tunnisteella on jo olemassa" + +msgid "Advanced options" +msgstr "Edistyneet asetukset" + +msgid "Generic" +msgstr "Yleinen" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" on muutettu onnistuneesti." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" +"Tälle liitännäiselle ei ole muita asetuksia. Ole hyvä ja paina Tallenna-" +"painiketta." + +msgid "Moved" +msgstr "Siirretty" + +msgid "Changed" +msgstr "Muokattu" + +msgid "Deleted" +msgstr "Poistettu" + +msgid "Added Page Translation" +msgstr "Lisätty sivun käännös" + +msgid "Changed Page Translation" +msgstr "Muutettu sivun käännöstä" + +msgid "Deleted Page Translation" +msgstr "Poistettu sivun käännös" + +msgid "Added Plugin" +msgstr "Lisätty liitännäinen" + +msgid "Changed Plugin" +msgstr "Muutettu liitännäistä" + +msgid "Moved Plugin" +msgstr "Siirretty liitännäinen" + +msgid "Deleted Plugin" +msgstr "Poistettu liitännäinen" + +msgid "Cut Plugin" +msgstr "Leikkaa liitännäinen" + +msgid "Paste Plugin" +msgstr "Liitetty liitännäinen" + +msgid "Paste to Placeholder" +msgstr "Liitä sisältöpaikkaan" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Liitännäisiä lisätty sisältöpaikkaan leikepöydältä" + +msgid "Cleared Placeholder" +msgstr "Tyhjennetty sisältöpaikka" + +msgid "Save" +msgstr "Tallenna" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "Joitakin kenttiä ei voi muuttaa, koska ne ovat vain luku -sisältöä." + +#, python-format +msgid "Log in to administration here." +msgstr "Kirjaudu hallintapaneeliin." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Kirjautumis-URL: %(login_url)s" + +msgid "Username:" +msgstr "Käyttäjänimi:" + +msgid "Password:" +msgstr "Salasana:" + +msgid "Add a page" +msgstr "Lisää sivu" + +msgid "Change a page" +msgstr "Muuta sivua" + +msgid "Home" +msgstr "Koti" + +msgid "View on site" +msgstr "Näytä sivustolla" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Korjaa allaoleva virhe." +msgstr[1] "Korjaa allaolevat virheet." + +msgid "All permissions" +msgstr "Kaikki oikeudet" + +msgid "Loading..." +msgstr "Ladataan…" + +msgid "Save and continue editing" +msgstr "Tallenna ja jatka muokkausta" + +#, 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 "" +"Haluatko varmasti poistaa kohteen %(object_name)s \"%(escaped_object)s\"? " +"Kaikki seuraavat liittyvät kohteet poistetaan:" + +msgid "Yes, I’m sure" +msgstr "Kyllä, olen varma" + +msgid "No, take me back" +msgstr "Ei, palaa takaisin" + +msgid "Summary" +msgstr "Yhteenveto" + +msgid "User" +msgstr "Käyttäjä" + +msgid "Group" +msgstr "Ryhmä" + +msgid "Can edit" +msgstr "Voi muokata" + +msgid "Can add" +msgstr "Voi lisätä" + +msgid "Can delete" +msgstr "Voi poistaa" + +msgid "Can publish" +msgstr "Voi julkaista" + +msgid "Can change permissions" +msgstr "Voi muuttaa oikeuksia" + +msgid "Can move" +msgstr "Voi siirtää" + +msgid "Can view" +msgstr "Voi nähdä" + +msgid "(global)" +msgstr "(globaali)" + +msgid "(current)" +msgstr "(nykyinen)" + +msgid "Page doesn't inherit any permissions." +msgstr "Sivu ei peri mitään käyttöoikeuksia." + +msgid "Edit model" +msgstr "Muokkaa mallia" + +msgid "Save as new" +msgstr "Tallenna nimellä" + +msgid "Save and add another" +msgstr "Tallenna ja lisää uusi" + +msgid "Copy" +msgstr "Kopioi" + +msgid "Cut" +msgstr "Leikkaa" + +msgid "Paste" +msgstr "Liitä" + +msgid "Set as home" +msgstr "Aseta kotisivuksi" + +msgid "is restricted" +msgstr "rajoitettu" + +msgid "last change by" +msgstr "muokkaaja" + +msgid "last change on" +msgstr "viimeksi muutettu" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Sivulistaus" + +msgid "Search" +msgstr "Haku" + +msgid "Page Tree" +msgstr "Sivupuu" + +msgid "Reset filter" +msgstr "Nollaa suodatin" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Palauta poistettu %(name)s\n" +" " + +msgid "Main Navigation" +msgstr "Päänavigointi" + +msgid "Options" +msgstr "Valinnat" + +msgid "Successfully moved" +msgstr "Siirretty onnistuneesti" + +msgid "Changes within the tree might require a refresh." +msgstr "" +"Puun sisällä tapahtuvat muutokset saattavat vaatia sivun virkistyksen." + +msgid "Error:" +msgstr "Virhe:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Tätä sivua ei voi kopioida, koska siihen on liitetty ohjelma. Hallinnoi " +"ohjelmaliitoksia sivun Lisäasetuksista." + +msgid "Are you sure you want to § this page?" +msgstr "Haluatko varmasti § tämän sivun?" + +msgid "Reload" +msgstr "Lataa uudelleen" + +msgid "New node" +msgstr "Uusi solmu" + +msgid "nodes" +msgstr "solmut" + +msgid "View" +msgstr "Näytä" + +msgid "Menu" +msgstr "Valikko" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Yhtään kohdetta %(object)s ei ole vielä.\n" +"
\n" +" Lisää %(object)s nyt.\n" +" " + +msgid "Copy options" +msgstr "Kopioi valinnat" + +msgid "Choose copy options" +msgstr "Valitse kopioi asetukset" + +msgid "Close" +msgstr "Sulje" + +msgid "Legend" +msgstr "Selite" + +msgid "In menu" +msgstr "Valikossa" + +msgid "Not in menu" +msgstr "Ei valikossa" + +msgid "View page" +msgstr "Näytä sivu" + +msgid "Softroot" +msgstr "Pehmeä juuri" + +msgid "Apphook" +msgstr "Ohjelmaliitos" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Ohjelma: %(apphook)s" + +msgid "in menu" +msgstr "valikossa" + +msgid "not in menu" +msgstr "ei valikossa" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Sivun asetukset (SHIFT-napsautus lisäasetuksia varten)" + +msgid "Permissions" +msgstr "Oikeudet" + +msgid "inherited" +msgstr "peritty" + +msgid "This page has no preview!" +msgstr "Tätä sivua ei voi esikatsella!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "Mahdollisesti liitetty ohjelmaliitos ei tarjoa sisältöä juurelleen." + +msgid "It is being redirected to:" +msgstr "Uudelleenohjataan tällä hetkellä:" + +msgid "Clipboard" +msgstr "Leikepöytä" + +msgid "Add plugin" +msgstr "Lisää liitännäinen" + +msgid "Copy all" +msgstr "Kopioi kaikki" + +msgid "Copy from" +msgstr "Kopioi" + +msgid "Empty all" +msgstr "Tyhjennä kaikki" + +msgid "Filter plugins..." +msgstr "Suodata liitännäiset..." + +msgid "Expand all" +msgstr "Laajenna kaikki" + +msgid "Collapse all" +msgstr "Pienennä kaikki" + +msgid "You cannot add plugins to this plugin." +msgstr "Et voi lisätä liitännäisiä tähän liitännäiseen." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "Tätä liitännäistä ei voi siirtää tai muokata isäntänsä ulkopuolella" + +msgid "Clipboard is empty." +msgstr "Leikepöytä on tyhjä." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" +"Tämä liitännäinen ei salli tämän tyyppisiä liitännäisiä sisäkkäisinä " +"liitännäisinä." + +msgid "This plugin cannot have nested plugins." +msgstr "Tällä liitännäisellä ei voi olla sisäkkäisiä liitännäisiä." + +msgid "Highlight" +msgstr "Korosta" + +msgid "Available plugins" +msgstr "Saatavilla olevat liitännäiset" + +msgid "Toggle structure" +msgstr "Vaihda rakennenäkymä" + +msgid "Login" +msgstr "Kirjaudu sisään" + +msgid "Add plugin to" +msgstr "Lisää liitännäinen kohteeseen" + +msgid "More" +msgstr "Lisää" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Kehitysversio käyttäen django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Peruuta" + +msgid "The following error occurred:" +msgstr "Seuraava virhe tapahtui:" + +msgid "Action successful." +msgstr "Toiminto onnistui" + +msgid "Are you sure you want to delete this plugin?" +msgstr "Haluatko varmasti poistaa tämän liitännäisen?" + +msgid "Are you sure you want to publish this page?" +msgstr "Haluatko varmasti julkaista tämän sivun?" + +msgid "Plugin will be added here" +msgstr "Liitännäinen lisätään tähän" + +msgid "You have unsaved changes." +msgstr "Sinulla on tallentamattomia muutoksia." + +msgid "Loading" +msgstr "Ladataan" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Haluatko varmasti hylätä nämä muutokset?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"Lomaketta ei voitu ladata. Tarkistathan, että palvelin on toiminnassa " +"oikein." + +msgid "Most used" +msgstr "Eniten käytetty" + +msgid "Shortcuts" +msgstr "Oikopolut" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Sivua muutettiin tällä välin, ladataan uudelleen..." + +msgid "CMS-wide Shortcuts" +msgstr "CMS:n laajuiset pikanäppäimet" + +msgid "Bring up this help dialog" +msgstr "Tuo esiin tämä ohjeikkuna" + +msgid "Close/cancel" +msgstr "Sulje/peruuta" + +msgid "Toggle structure mode" +msgstr "Vaihda rakennetila" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Vaihda rakennetila ja korosta osoitettu liitännäinen" + +msgid "Open \"Create\" dialog" +msgstr "Avaa \"Luo\"-ikkuna" + +msgid "Focus on Toolbar" +msgstr "Keskitä työkalupalkkiin" + +msgid "Focus on placeholders" +msgstr "Kohdista sisältöpaikkoihin" + +msgid "Move to next/previous element" +msgstr "Siirry seuraavaan/edelliseen elementtiin" + +msgid "Focus on plugins of placeholder" +msgstr "Kohdista sisältöpaikan liitännäisiin" + +msgid "Edit plugin" +msgstr "Muokkaa liitännäistä" + +msgid "Open actions menu" +msgstr "Avaa toimintovalikko" + +msgid "Expand/collapse" +msgstr "Laajenna/pienennä" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Kirjautuminen epäonnistui. Tarkista tunnuksesi ja yritä " +"uudelleen." + +msgid "Double-click to edit" +msgstr "Muokkaa tuplaklikkaamalla" + +msgid "Tap to edit" +msgstr "Napauta muokataksesi" + +msgid "Click to go back" +msgstr "Napsauta palataksesi taaksepäin" + +msgid "Click to go forward" +msgstr "Napsauta siirtyäksesi eteenpäin" + +msgid "Minimize" +msgstr "Pienennä" + +msgid "Maximize" +msgstr "Suurenna" + +msgid "Placeholder not editable" +msgstr "Sisältöpaikkaa ei voi muokata" + +msgid "Drop a plugin here" +msgstr "Raahaa liitännäinen tähän" + +msgid "Welcome to your new django CMS installation!" +msgstr "Tervetuloa uuteen django CMS -asennukseesi!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Versio %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Rakennetaan yhdessä jotain hienoa!" + +msgid "Please log in" +msgstr "Kirjaudu sisään" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Lisää ensimmäinen sivusi\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Auta rahoittamaan

\n" +"

\n" +" Rahoituksesi hyödyttää suoraan tuotetta, pääasiassa\n" +" django CMS Fellowship -ohjelman kautta!\n" +"

\n" +"

\n" +" Nopea tapa sinulle tai organisaatiollesi lahjoittaa on\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Liity mukaan

\n" +"

\n" +" django CMS Association on voittoa tavoittelematon organisaatio, joka rahoittaa ja ohjaa\n" +" django CMS:n kehitystä.\n" +"

\n" +"

\n" +" Voit liittyä joko yksityishenkilönä tai\n" +" organisaationa.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Osallistu

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Asennushuomautukset" + +msgid "Support" +msgstr "Tuki" + +msgid "Documentation" +msgstr "Dokumentaatio" + +msgid "User guide" +msgstr "Käyttöopas" + +msgid "Give back" +msgstr "Anna takaisin" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Jos et näe django CMS -logoa yläosassa, varmista,\n" +" että olet linkittänyt static/cms-kansion\n" +" staattisiin tiedostoihisi.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Näet tämän viestin, koska django-asetustiedostossasi on\n" +" DEBUG = True etkä ole vielä\n" +" lisännyt yhtään sivua.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Tervetuloa django CMS:ään" + +msgid "Add Another" +msgstr "Lisää uusi" + +msgid "Back" +msgstr "Takaisin" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "Valitse valinta alapuolelta jatkaaksesi seuraavaan vaiheeseen." + +msgid "Next" +msgstr "Seuraava" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Tuntematon" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Sivua ei löytynyt lähteestä %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Template tag ei löytänyt sivua hakuargumenteilla `%(page_lookup)s\n" +"`. Pyynnön URL oli: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Kaksi saraketta" + +msgid "Three columns" +msgstr "Kolme saraketta" + +msgid "username" +msgstr "käyttäjänimi" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Vaadittu. Enintään 300 merkkiä. Kirjaimia, numeroita ja merkkejä @/./+/-/_" + +msgid "Enter a valid username." +msgstr "Syötä voimassaoleva käyttäjätunnus." + +msgid "email address" +msgstr "Sähköpostiosoite" + +msgid "staff status" +msgstr "henkilökunnan tila" + +msgid "Designates whether the user can log into this admin site." +msgstr "Määrittää, voiko käyttäjä kirjautua tähän hallintasivustoon." + +msgid "active" +msgstr "aktiivinen" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Määrittää, käsitelläänkö tätä käyttäjää aktiivisena. Poista tämän valinta " +"tilien poistamisen sijaan." + +msgid "users" +msgstr "käyttäjät" + +msgid "Title Extension" +msgstr "Otsikon laajennus" + +msgid "Page Extension" +msgstr "Sivun laajennus" + +msgid "object ID" +msgstr "kohteen ID" + +msgid "Example1 App" +msgstr "Example1-ohjelma" + +msgid "MultilingualExample1 App" +msgstr "MultilingualExample1-ohjelma" + +msgid "Example1" +msgstr "Esimerkki1" + +msgid "Examples" +msgstr "Esimerkit" + +msgid "Extra Context" +msgstr "Lisäkonteksti" + +msgid "Articles" +msgstr "Artikkelit" + +msgid "Sample App" +msgstr "Esimerkkiohjelma" + +msgid "Sample App with config" +msgstr "Esimerkkiohjelma asetuksilla" + +msgid "Sample App with excluded permissions" +msgstr "Esimerkkiohjelma poissuljetuilla oikeuksilla" + +msgid "Sample App 2" +msgstr "Esimerkkiohjelma 2" + +msgid "Sample App 3" +msgstr "Esimerkkiohjelma 3" + +msgid "Sample App Without Landing Page" +msgstr "Esimerkkiohjelma ilman aloitussivua" + +msgid "Namespaced App" +msgstr "Nimiavaruudella varustettu ohjelma" + +msgid "Parent app" +msgstr "Emosovellus" + +msgid "Child app" +msgstr "Tytärsovellus" + +msgid "Variable urls-menus App" +msgstr "Vaihteleva urls-menus-ohjelma" + +msgid "sample root page" +msgstr "esimerkki juurisivu" + +msgid "sample settings page" +msgstr "esimerkki asetussivu" + +msgid "sample account page" +msgstr "esimerkki tilisivu" + +msgid "sample my profile page" +msgstr "esimerkki oma profiili -sivu" + +msgid "Static Menu" +msgstr "Staattinen valikko" + +msgid "Static Menu2" +msgstr "Staattinen valikko2" + +msgid "Static Menu3" +msgstr "Staattinen valikko3" + +msgid "Static Menu4" +msgstr "Staattinen valikko" + +msgid "Category" +msgstr "Kategoria" + +msgid "Categories" +msgstr "Kategoriat" + +msgid "Add Category" +msgstr "Lisää kategoria" + +msgid "^account/$" +msgstr "^kayttajatili/$" + +msgid "Change Category" +msgstr "Muuta kategoriaa" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Kiitos, että vietit tänään laatuaikaa verkkosivuston parissa." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Peri lähimmän vanhemman asettelu" + +msgid "UserSettings" +msgstr "Käyttäjäasetukset" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Lisää liitännäinen sisältöpaikkaan \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Lisää liitännäinen kohteeseen %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Yksittäinen sisältöpaikka" + +msgid "CMS - your user account was created." +msgstr "CMS - käyttäjätilisi on luotu." + +msgid "CMS - your user account was changed." +msgstr "CMS - käyttäjätiliäsi on muokattu." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Tämä sisältöpaikka sisältää jo enimmäismäärän (%s) liitännäisiä." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Tämä sisältöpaikka sisältää jo sallitun enimmäismäärän (%(limit)s) " +"%(plugin_name)s-liitännäisiä." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Määritettyä CMS_REQUEST_IP_RESOLVER-moduulia ei löydy: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Määritettyä CMS_REQUEST_IP_RESOLVER-funktiota ei löydy: \"{0}\" moduulista " +"\"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Luo uusi %s-instanssi." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Ohjattu toiminto on jo rekisteröity mallille: %s" diff --git a/cms/locale/fi/LC_MESSAGES/djangojs.po b/cms/locale/fi/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..64206a0a --- /dev/null +++ b/cms/locale/fi/LC_MESSAGES/djangojs.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Niklas Jerva , 2017 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Niklas Jerva , 2017\n" +"Language-Team: Finnish (http://app.transifex.com/divio/django-cms/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Haluatko varmasti muuttaa välilehtiä tallentamatta sivua ensin?" diff --git a/cms/locale/fi_FI/LC_MESSAGES/django.po b/cms/locale/fi_FI/LC_MESSAGES/django.po new file mode 100644 index 00000000..1b4a01a3 --- /dev/null +++ b/cms/locale/fi_FI/LC_MESSAGES/django.po @@ -0,0 +1,2269 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# 6e24184c9f8092a67bcd413cbcf598da_29fd2b5 <08b9fabf956572ae43d0b31e4effa6b5_821440>, 2022 +# Niklas Jerva , 2025 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Niklas Jerva , 2025\n" +"Language-Team: Finnish (Finland) (https://app.transifex.com/divio/teams/58664/fi_FI/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi_FI\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "Kopioi käyttöoikeudet" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "lyhyt url" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "Otsikon osa mitä käytetään URLissa" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "Sivutyyppi" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "Sivutyypit" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "Korvaa URL" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "Jätä kenttä tyhjäksi jos oletuspolkua tulisi käyttää." + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "Aloita kirjoittamaan..." + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "X Frame vaihtoehdot" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "Sovellus" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "Liitä sovellus tähän sivuun." + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "Sovellusasetukset" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "Kyseinen käänteinen URL on jo olemassa." + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "Asetuksia käyttävä sovellus on jo olemassa." + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "Annettu nimi on jo käytössä toisella sovelluksella." + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "käyttäjä" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "voi_selata" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "Lisää" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "Muuta" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "Poista" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Epäkelpo lisäosatyyppi '%s'" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "Kieli on oltava jo tuettu kieli!" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "Isäntä lisäosan kieli on oltava sama kuin valittu kieli!" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Isäntä lisäosan 'placeholder' on oltava sama kuin 'placeholder'!" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "Lisäasetukset" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "Muuta käyttöoikeuksia" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Virhe! Sinulla ei ole oikeuksia siirtää sivua. Ole hyvä ja lataa sivu " +"uudelleen" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "Lisää sivun kopio" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "Uusi alasivu" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "Uusi sivu" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "Sapluuna ei ole kelvollinen" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "Sapluuna muutettiin onnistuneesti" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "Sinulla ei ole oikeuksia kopioda näitä lisäosia." + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "Kieli" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "Oletus otsikko" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "Sivun otsikko" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "Korvaa selaimen yläosassa tai kirjanmerkeissä näytettävän tekstin" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "Menu otsikko" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "Korvaa valikon näkymä" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "Kuvauksen meta tag" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "Hakukoneiden käyttämä kuvaus." + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "Uudelleenohjautuu tähän URLiin." + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "Otsikko" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "Uudelleenohjaa" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "Lyhyt url ei saa olla tyhjä." diff --git a/cms/locale/fi_FI/LC_MESSAGES/djangojs.po b/cms/locale/fi_FI/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..49b83e2f --- /dev/null +++ b/cms/locale/fi_FI/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Finnish (Finland) (http://app.transifex.com/divio/django-cms/language/fi_FI/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi_FI\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/fr/LC_MESSAGES/django.po b/cms/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 00000000..4ae30fea --- /dev/null +++ b/cms/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,1782 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Marc Antoine THEVENET , 2022 +# Nicolas PASCAL , 2023 +# a270031086f2a0d3514bc0cb507b48f6, 2023 +# Valentin Sandoz , 2023 +# Frédéric Roland, 2023 +# Adrien Delhorme, 2025 +# da27e4edd0c28b0ec121570dac46e169_947ca9c, 2025 +# Robin Durner, 2025 +# François Palmier , 2026 +# Sylvain Chiron , 2026 +# Fabian Braun , 2026 +# Corentin Bettiol, 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Corentin Bettiol, 2026\n" +"Language-Team: French (https://app.transifex.com/divio/teams/58664/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "All" +msgstr "Tout" + +msgid "Copy permissions" +msgstr "Copier les permissions" + +msgid "Slug" +msgstr "Slug" + +msgid "The part of the title that is used in the URL" +msgstr "Partie du titre qui doit être utilisée dans l'URL" + +msgid "Page type" +msgstr "Type de page" + +msgid "You do not have permission to change this page." +msgstr "Vous n'avez pas la permission de modifier cette page." + +msgid "Page Types" +msgstr "Types de pages" + +msgid "You do not have permission to copy this page." +msgstr "Vous n'avez pas la permission de copier cette page." + +msgid "Overwrite URL" +msgstr "Écraser l'URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Laissez ce champ vide pour utiliser l'URL par défaut." + +msgid "Start typing..." +msgstr "Commencez à écrire..." + +msgid "menu visibility" +msgstr "visibilité dans le menu" + +msgid "limit when this page is visible in the menu" +msgstr "Limite la visibilité de la page dans le menu" + +msgid "X Frame Options" +msgstr "Options X-Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" +"Cette page peut être intégrée ou pas dans d'autres pages ou sites web." + +msgid "URL options" +msgstr "Options de l’URL" + +msgid "Menu options" +msgstr "Options du menu" + +msgid "Headers" +msgstr "En-têtes" + +msgid "Application" +msgstr "Application" + +msgid "Hook application to this page." +msgstr "Accrocher une application à cette page." + +msgid "Application configurations" +msgstr "Configurations de l'application" + +msgid "A page with this reverse URL id exists already." +msgstr "Une page avec cet identifiant inversé existe déjà." + +msgid "Invalid application config value" +msgstr "Configuration d'application incorrecte" + +msgid "An application instance using this configuration already exists." +msgstr "" +"Une autre instance d'application utilisant cette configuration à déjà été " +"crée." + +msgid "An application instance with this name already exists." +msgstr "Il existe déjà une instance d'application portant ce nom." + +msgid "You can't move the home page inside another page" +msgstr "Vous ne pouvez pas déplacer la page d′accueil sous une autre page" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Vous ne pouvez pas avoir deux pages avec le même slug au même niveau de " +"page. Veuillez modifier le slug de l'une des pages avant d'essayer à nouveau" +" de la déplacer." + +msgid "Yes" +msgstr "Oui" + +msgid "No" +msgstr "Non" + +msgid "user" +msgstr "utilisateur" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "Ajouter" + +msgid "Change" +msgstr "Modifier" + +msgid "Delete" +msgstr "Supprimer" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Un utilisateur ne peut pas créer de page s'il n'a pas l'autorisation de " +"modifier la page créée. La permission de modifier est requise." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Un utilisateur ne peut pas supprimer une page s'il n'a pas l'autorisation de" +" modifier la page. La permission de modifier est requise." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Un utilisateur ne peut pas définir les permissions liées aux pages s'il n'a " +"pas l'autorisation de modifier des pages. La permission de modifier est " +"requise." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Un utilisateur ne peut pas supprimer les permissions liées aux pages s'il " +"n'a pas l'autorisation de modifier des pages. La permission de modifier est " +"requise." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Un utilisateur ne peut pas créer de permissions liées aux pages s'il n'a pas" +" l'autorisation de modifier les permissions crées. La permission de modifier" +" est requise." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Un utilisateur ne peut pas supprimer les permissions liées aux pages s'il " +"n'a pas l'autorisation de modifier les permissions. La permission de " +"modifier est requise." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Type de bloc invalide : « %s »" + +msgid "Language must be set to a supported language!" +msgstr "Une langue disponible doit être sélectionnée !" + +msgid "Parent plugin language must be same as language!" +msgstr "Le bloc parent doit être dans la langue sélectionnée !" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" +"Le texte de substitution du bloc parent doit être identique au texte de " +"substitution !" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "La position du bloc doit être supérieure à %(position)d " + +msgid "Translations" +msgstr "Traductions" + +msgid "Advanced Settings" +msgstr "Paramètres avancés" + +msgid "The page is not eligible to be home." +msgstr "La page ne peut pas être la page d′accueil." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "L'objet %(name)s de clé primaire %(key)r n'existe pas." + +msgid "error" +msgstr "erreur" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Erreur ! Vous n'avez pas la permission de déplacer cette page. Veuillez " +"actualiser la page" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Erreur! Vous n'avez pas les permission pour copier la page" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Erreur ! La page que vous êtes en train de coller n'est traduite dans aucun " +"des langages configurés du site cible." + +msgid "You do not have permission to edit this page" +msgstr "Vous n'avez pas la permission de modifier cette page" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(pour le modifier, dépubliez d’abord la version actuellement publiée de " +"cette page)" + +msgid "Add Translation" +msgstr "Ajouter une traduction" + +msgid "Add Page Copy" +msgstr "Ajouter une copie de la page" + +msgid "New sub page" +msgstr "Nouvelle sous-page" + +msgid "New page" +msgstr "Nouvelle page" + +msgid "Database error" +msgstr "Erreur de base de données" + +msgid "Template not valid" +msgstr "Modèle invalide" + +msgid "Placeholder selection not valid" +msgstr "Sélection de la zone non valide" + +msgid "The template was successfully changed" +msgstr "Le modèle a été modifié avec succès" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "La zone « %s » n’existe pas dans la langue cible" + +msgid "You do not have permission to copy these plugins." +msgstr "Vous n’avez pas la permission de copier ces blocs." + +msgid "You do not have permission to delete this page" +msgstr "Vous n'avez pas la permission de supprimer cette page" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Les titres et les blocs en %(language)s ont été supprimés" + +msgid "Public content" +msgstr "Contenu public" + +msgid "Empty" +msgstr "Vide" + +msgid "Create Content" +msgstr "Ajouter du contenu" + +msgid "View restriction" +msgstr "Restriction d'affichage" + +msgid "View restrictions" +msgstr "Restrictions d'affichage" + +#, python-format +msgid "Field %s not found" +msgstr "Champ %s non trouvé" + +msgid "You do not have permission to edit this item" +msgstr "Vous n'avez pas la permission de modifier cet élément" + +msgid "You do not have permission to add a plugin" +msgstr "Vous n'avez pas la permission d'ajouter un bloc" + +msgid "You do not have permission to copy this placeholder." +msgstr "Vous n'êtes pas autorisé à copier cet élément de substitution." + +msgid "Plugin not found" +msgstr "Bloc non trouvé" + +msgid "You do not have permission to edit this plugin" +msgstr "Vous n'avez pas la permission de modifier ce bloc" + +msgid "You have no permission to paste this plugin" +msgstr "Vous n'avez pas l'autorisation de coller ce bloc" + +msgid "You have no permission to paste this placeholder" +msgstr "Vous n'êtes pas autorisé à coller cet élément de substitution." + +msgid "You have no permission to move this plugin" +msgstr "Vous n’avez pas la permission de déplacer ce bloc" + +msgid "You have no permission to cut this plugin" +msgstr "Vous n'êtes pas autorisé à couper ce bloc" + +msgid "You do not have permission to delete this plugin" +msgstr "Vous n’avez pas la permission de supprimer ce bloc" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "Le bloc %(name)s « %(obj)s » a été supprimé avec succès." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Impossible de supprimer %(name)s" + +msgid "Are you sure?" +msgstr "Êtes-vous sûr(e) ?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Vous n’avez pas la permission de vider cette zone" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "La zone « %(obj)s » a été vidé avec succès." + +msgid "placeholder" +msgstr "zone" + +msgid "Page permissions" +msgstr "Permissions relatives à la page" + +msgid "User & Group permissions" +msgstr "Permissions relatives aux utilisateurs et groupes" + +msgid "Page permissions management" +msgstr "Gestion des permissions relatives aux pages" + +msgid "Actions" +msgstr "Actions" + +msgid "Empty content" +msgstr "Contenu vide" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "%(object_name)s Propriétés" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Ajouter un nouveau %(object_name)s" + +msgid "Add content" +msgstr "Ajouter du contenu" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Le contenu pour la langue courante a été modifié. Cliquer sur \"Précédent\" " +"pour revenir au formulaire et sauvegarder les modifications. Cliquer sur " +"\"Ok\" pour annuler les modifications." + +#, python-format +msgid "Add %(language)s content" +msgstr "Ajouter le contenu %(language)s" + +msgid "Preview" +msgstr "Prévisualiser" + +msgid "Settings" +msgstr "Paramètres" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Langue invalide : %(value)s. Ce formulaire ne peut être validé. Essayez de " +"changer de langue." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Aucune accroche enregistrée « %r » trouvée" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Zone" + +msgid "Create" +msgstr "Créer" + +msgid "Edit" +msgstr "Modifier" + +msgid "Structure" +msgstr "Structure" + +msgid "Content" +msgstr "Contenu" + +msgid "Sites" +msgstr "Sites" + +msgid "Admin Sites" +msgstr "Sites d’administration" + +msgid "Administration" +msgstr "Administration" + +msgid "User settings" +msgstr "Paramètres utilisateur" + +msgid "Clipboard..." +msgstr "Presse-papiers..." + +msgid "Clear clipboard" +msgstr "Vider le presse-papiers" + +msgid "Disable toolbar" +msgstr "Désactiver la barre d’outils" + +msgid "Shortcuts..." +msgstr "Raccourcis..." + +msgid "Users" +msgstr "Utilisateurs" + +#, python-format +msgid "Logout %s" +msgstr "Déconnecter %s" + +msgid "Logout" +msgstr "Se déconnecter" + +msgid "Language" +msgstr "Langue" + +msgid "Delete Translation" +msgstr "Supprimer une traduction" + +msgid "Copy all plugins" +msgstr "Copier tous les blocs" + +#, python-format +msgid "from %s" +msgstr "de %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Êtes-vous sûr de vouloir copier tous les blocs des %s?" + +msgid "Pages" +msgstr "Pages" + +msgid "Page" +msgstr "Page" + +msgid "Create Page" +msgstr "Créer une page" + +msgid "New Page" +msgstr "Nouvelle page" + +msgid "New Sub Page" +msgstr "Nouvelle sous-page" + +msgid "Duplicate this Page" +msgstr "Dupliquer cette page" + +msgid "Page settings" +msgstr "Paramètres de la page" + +msgid "Advanced settings" +msgstr "Paramètres avancés" + +msgid "Templates" +msgstr "Modèles" + +msgid "Placeholders" +msgstr "Zones" + +msgid "Hide in navigation" +msgstr "Cacher dans la navigation" + +msgid "Display in navigation" +msgstr "Afficher dans la navigation" + +msgid "Delete page" +msgstr "Supprimer la page" + +msgid "Create a new page next to the current page." +msgstr "Crée une nouvelle page à la suite de la page actuelle." + +msgid "Create a page below the current page." +msgstr "Crée une sous-page de la page actuelle." + +msgid "Select a valid site" +msgstr "Choisissez un site valide" + +msgid "Select a valid page" +msgstr "Choisissez une page valide" + +msgid "Enter a valid relative or absolute URL." +msgstr "Veuillez saisir une URL relative ou absolue valide." + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"La page %(conflict_page)s a le même url \"%(url)s\" que la page " +"actuelle%(instance)s." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "La page %(conflict_page)s a le même url \"%(url)s\" que la page actuelle." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Facultatif. Si indiqué, sera automatiquement ajouté dans un nouveau bloc " +"texte." + +msgid "Provide a title for the new page." +msgstr "Fournit un titre à la nouvelle page." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "Laissez vide pour un slug automatique, ou écrasez si nécessaire." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" +"Le slug ne peut être auto-généré. Spécifiez-le manuellement, s'il vous " +"plaît." + +msgid "Please provide a valid slug." +msgstr "Saisissez un slug valide." + +msgid "You don't have the permissions required to add a page." +msgstr "Vous n'avez pas la permission nécessaire pour créer une page." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "position" + +msgid "language" +msgstr "langue" + +msgid "plugin_name" +msgstr "nom_du_bloc" + +msgid "creation date" +msgstr "date de création" + +msgid "can edit" +msgstr "peut modifier" + +msgid "can add" +msgstr "peut ajouter" + +msgid "can delete" +msgstr "peut supprimer" + +msgid "can change advanced settings" +msgstr "peut modifier les paramètres avancés" + +msgid "can publish" +msgstr "peut publier" + +msgid "can change permissions" +msgstr "peut modifier les permissions" + +msgid "can move" +msgstr "peut déplacer" + +msgid "view restricted" +msgstr "voir les éléments restreints" + +msgid "can recover pages" +msgstr "peut restaurer des pages" + +msgid "group" +msgstr "groupe" + +msgid "sites" +msgstr "sites" + +msgid "created by" +msgstr "créée par" + +msgid "changed by" +msgstr "modifiée par" + +msgid "publication date" +msgstr "date de publication" + +msgid "publication end date" +msgstr "date de fin de publication" + +msgid "in navigation" +msgstr "présent dans la navigation" + +msgid "soft root" +msgstr "racine" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "menu attaché" + +msgid "template" +msgstr "modèle" + +msgid "login required" +msgstr "identification requise" + +msgid "application" +msgstr "application" + +msgid "application instance name" +msgstr "nom d'instance de l'application" + +msgid "site" +msgstr "site" + +msgid "Grant on" +msgstr "S'applique sur" + +msgid "page" +msgstr "page" + +msgid "no limit set" +msgstr "aucune limite fixée" + +msgid "for logged in users only" +msgstr "pour les utilisateurs enregistrés uniquement" + +msgid "for anonymous users only" +msgstr "pour les utilisateurs anonymes uniquement" + +msgid "Inherit from parent page" +msgstr "Hériter de la page parente" + +msgid "Deny" +msgstr "Refuser" + +msgid "Only this website" +msgstr "Uniquement ce site web" + +msgid "Allow" +msgstr "Autoriser" + +msgid "title" +msgstr "titre" + +msgid "The default title" +msgstr "Titre par défaut" + +msgid "Page Title" +msgstr "Titre de la page" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Écrase le titre affiché dans l'onglet du navigateur et dans les " +"favoris/marque-pages" + +msgid "Menu Title" +msgstr "Titre du menu" + +msgid "Overwrite what is displayed in the menu" +msgstr "Écrase le titre affiché dans le menu" + +msgid "Description meta tag" +msgstr "Balise méta de description" + +msgid "A description of the page used by search engines." +msgstr "Une description de la page utilisée par les moteurs de recherche." + +msgid "redirect" +msgstr "redirection" + +msgid "Redirects to this URL." +msgstr "Redirige vers cette URL." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Les ascendants n'appaîtront pas dans le menu" + +msgid "The template used to render the content." +msgstr "Le modèle utilisé pour l'affichage du contenu." + +msgid "page content" +msgstr "contenu de la page" + +msgid "page contents" +msgstr "contenu de la page" + +msgid "default" +msgstr "par défaut" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Identifiant unique utilisé par la balise de modèle page_url pour créer un " +"lien vers cette page" + +msgid "Mark this page as a page type" +msgstr "Définir cette page en tant que type de page" + +msgid "pages" +msgstr "pages" + +msgid "No available title" +msgstr "Aucun titre disponible" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Chemin" + +msgid "Current page" +msgstr "Page actuelle" + +msgid "Page children (immediate)" +msgstr "Descendants de la page (immédiats)" + +msgid "Page and children (immediate)" +msgstr "Page et descendants directs" + +msgid "Page descendants" +msgstr "Descendants de la page" + +msgid "Page and descendants" +msgstr "Page et descendants" + +msgid "on page level" +msgstr "au niveau de la page" + +msgid "frontend view restriction" +msgstr "restriction d'affichage client" + +msgid "Please select user or group." +msgstr "Veuillez sélectionner un utilisateur ou un groupe." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Un utilisateur ne peut pas publier une page s'il n'a pas l'autorisation de " +"modifier la page. La permission de modifier est requise." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Un utilisateur ne peut pas modifier les paramètres avancés d'une page s'il " +"n'a pas l'autorisation de modifier la page. La permission de modifier est " +"requise." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Un utilisateur ne peut pas modifier les permissions liées à une page s'il " +"n'a pas l'autorisation de modifier la page. La permission de modifier est " +"requise." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Un utilisateur ne peut pas déplacer une page s'il n'a pas l'autorisation de " +"modifier la page. La permission de modifier est requise." + +msgid "can recover any deleted page" +msgstr "peut restaurer n'importe quelle page supprimée" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"Si aucun n'est selectionné, les permissions de l'utilisateur sont valables " +"sur tous les sites." + +msgid "Page global permission" +msgstr "Permissions globales de la page" + +msgid "Pages global permissions" +msgstr "Permissions globales des pages" + +msgid "Page permission" +msgstr "Permissions de la page" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"La permission d'ajouter une page nécessite aussi l'accès aux descendants, " +"sinon les pages ajoutées ne pourront pas être modifiées par leur créateur." + +msgid "User (page)" +msgstr "Utilisateur (page)" + +msgid "Users (page)" +msgstr "Utilisateurs (page)" + +msgid "User group (page)" +msgstr "Groupe d'utilisateurs (page)" + +msgid "User groups (page)" +msgstr "Groupes d'utilisateurs (page)" + +msgid "slot" +msgstr "emplacement" + +msgid "width" +msgstr "largeur" + +msgid "Edit object" +msgstr "Modifier l’objet" + +msgid "This is an external placeholder" +msgstr "Ceci est une zone externe" + +msgid "plugin" +msgstr "bloc" + +msgid "plugins" +msgstr "blocs" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "La langue de l’interface d'administration et de la barre d’outils" + +msgid "user setting" +msgstr "paramètre utilisateur" + +msgid "user settings" +msgstr "paramètres utilisateur" + +msgid "by template" +msgstr "par modèle" + +msgid "by code" +msgstr "par code" + +msgid "static placeholder name" +msgstr "nom du bloc statique" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Nom descriptif pour identifier ce bloc statique. N'est pas visible par les " +"utilisateurs." + +msgid "placeholder code" +msgstr "code du bloc" + +msgid "To render the static placeholder in templates." +msgstr "Pour afficher les blocs statiques dans les templates." + +msgid "placeholder content" +msgstr "contenu du bloc" + +msgid "creation_method" +msgstr "creation_method" + +msgid "static placeholder" +msgstr "bloc statique" + +msgid "static placeholders" +msgstr "blocs statiques" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Un bloc statique avec le même site et le même code existe déjà" + +msgid "Advanced options" +msgstr "Paramètres avancés" + +msgid "Generic" +msgstr "Générique" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "Le %(name)s « %(obj)s » a bien été modifié." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "Il n'y a pas d'autres réglages pour ce bloc. Cliquez sur enregistrer." + +msgid "Moved" +msgstr "Déplacé" + +msgid "Changed" +msgstr "Modifié" + +msgid "Deleted" +msgstr "Supprimé" + +msgid "Added Page Translation" +msgstr "La traduction de la page a été ajoutée." + +msgid "Changed Page Translation" +msgstr "La traduction de la page a été modifiée." + +msgid "Deleted Page Translation" +msgstr "La traduction de la page a été supprimée." + +msgid "Added Plugin" +msgstr "Bloc ajouté" + +msgid "Changed Plugin" +msgstr "Bloc modifié" + +msgid "Moved Plugin" +msgstr "Bloc déplacé" + +msgid "Deleted Plugin" +msgstr "Bloc supprimé" + +msgid "Cut Plugin" +msgstr "Couper le plugin" + +msgid "Paste Plugin" +msgstr "\"Coller\" le bloc" + +msgid "Paste to Placeholder" +msgstr "Coller la zone" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Bloc ajouté au placeholder depuis le presse-papier" + +msgid "Cleared Placeholder" +msgstr "Placeholder vidé" + +msgid "Save" +msgstr "Enregistrer" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" +"Certains champs ne peuvent être modifiés puisqu'ils sont en lecture seule." + +#, python-format +msgid "Log in to administration here." +msgstr "Identifiez-vous à l'administration." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Adresse de connexion : %(login_url)s" + +msgid "Username:" +msgstr "Nom d'utilisateur :" + +msgid "Password:" +msgstr "Mot de passe :" + +msgid "Add a page" +msgstr "Ajouter une page" + +msgid "Change a page" +msgstr "Modifier une page" + +msgid "Home" +msgstr "Accueil" + +msgid "View on site" +msgstr "Voir sur le site" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Veuillez corriger l'erreur suivante." +msgstr[1] "Veuillez corriger les erreurs suivantes." +msgstr[2] "Veuillez corriger les erreurs suivantes." + +msgid "All permissions" +msgstr "Toutes les permissions" + +msgid "Loading..." +msgstr "Chargement…" + +msgid "Save and continue editing" +msgstr "Enregistrer et continuer les modifications" + +#, 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 "" +"Êtes-vous sûr de vouloir supprimer %(object_name)s \"%(escaped_object)s\"? " +"Tous les éléments liés suivants seront supprimés :" + +msgid "Yes, I’m sure" +msgstr "Oui, je suis sûr" + +msgid "No, take me back" +msgstr "Non, ramenez-moi en arrière" + +msgid "Summary" +msgstr "Résumé" + +msgid "User" +msgstr "Utilisateur" + +msgid "Group" +msgstr "Groupe" + +msgid "Can edit" +msgstr "Peut modifier" + +msgid "Can add" +msgstr "Peut ajouter" + +msgid "Can delete" +msgstr "Peut supprimer" + +msgid "Can publish" +msgstr "Peut publier" + +msgid "Can change permissions" +msgstr "Peut modifier les permissions" + +msgid "Can move" +msgstr "Peut déplacer" + +msgid "Can view" +msgstr "Peut voir" + +msgid "(global)" +msgstr "(global)" + +msgid "(current)" +msgstr "(actuel)" + +msgid "Page doesn't inherit any permissions." +msgstr "La page n'hérite d'aucune permission." + +msgid "Edit model" +msgstr "Modifier le modèle" + +msgid "Save as new" +msgstr "Enregistrer comme nouveau" + +msgid "Save and add another" +msgstr "Enregistrer et créer nouveau" + +msgid "Copy" +msgstr "Copier" + +msgid "Cut" +msgstr "Couper" + +msgid "Paste" +msgstr "Coller" + +msgid "Set as home" +msgstr "Défini comme page d′accueil" + +msgid "is restricted" +msgstr "est restreint" + +msgid "last change by" +msgstr "dernière modification par" + +msgid "last change on" +msgstr "dernière modification le" + +msgid "meta" +msgstr "méta" + +msgid "List of pages" +msgstr "Liste de pages" + +msgid "Search" +msgstr "Rechercher" + +msgid "Page Tree" +msgstr "Arborescence des pages" + +msgid "Reset filter" +msgstr "Réinitialiser le filtre" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +"Restaurer %(name)s supprimé" + +msgid "Main Navigation" +msgstr "Navigation principale" + +msgid "Options" +msgstr "Options" + +msgid "Successfully moved" +msgstr "Déplacement réussi" + +msgid "Changes within the tree might require a refresh." +msgstr "" +"Les modifications dans l'arborescence peuvent nécessiter un " +"rafraîchissement." + +msgid "Error:" +msgstr "Erreur :" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Cette page ne peut pas être copiée car une application y est attachée. " +"Consultez les Paramètres avancés de la page pour gérer les accroches " +"d'application." + +msgid "Are you sure you want to § this page?" +msgstr "Êtes-vous sûr(e) de vouloir § cette page ?" + +msgid "Reload" +msgstr "Actualiser" + +msgid "New node" +msgstr "Nouveau nœud" + +msgid "nodes" +msgstr "nœuds" + +msgid "View" +msgstr "Vue" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +"Il n'y a pas encore %(object)s.\n" +"
\n" +"Ajouter %(object)s maintenant." + +msgid "Copy options" +msgstr "Options de copie" + +msgid "Choose copy options" +msgstr "Choisissez les options de copie" + +msgid "Close" +msgstr "Fermer" + +msgid "Legend" +msgstr "Légende" + +msgid "In menu" +msgstr "Dans le menu" + +msgid "Not in menu" +msgstr "Pas dans le menu" + +msgid "View page" +msgstr "Voir la page" + +msgid "Softroot" +msgstr "Racine" + +msgid "Apphook" +msgstr "Application accrochée" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Application : %(apphook)s" + +msgid "in menu" +msgstr "dans le menu" + +msgid "not in menu" +msgstr "pas dans le menu" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Paramètres de la page (Maj+clic pour les paramètres avancés)" + +msgid "Permissions" +msgstr "Permissions" + +msgid "inherited" +msgstr "hérité" + +msgid "This page has no preview!" +msgstr "Cette page n'a pas d'aperçu !" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Il est possible que l'apphook attaché ne fournisse pas de contenu pour sa " +"racine." + +msgid "It is being redirected to:" +msgstr "En cours de redirection vers :" + +msgid "Clipboard" +msgstr "Presse-papiers" + +msgid "Add plugin" +msgstr "ajouter un bloc" + +msgid "Copy all" +msgstr "Copier tout" + +msgid "Copy from" +msgstr "Copier depuis" + +msgid "Empty all" +msgstr "Tout enlever" + +msgid "Filter plugins..." +msgstr "Filtrer les blocs…" + +msgid "Expand all" +msgstr "Tout développer" + +msgid "Collapse all" +msgstr "Tout réduire" + +msgid "You cannot add plugins to this plugin." +msgstr "Vous ne pouvez pas ajouter de plugins à ce bloc." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "Ce bloc ne peut pas être déplacé ou modifié en dehors de son parent" + +msgid "Clipboard is empty." +msgstr "Le presse-papiers est vide." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Ce bloc n'accepte pas des plugins imbriqués de ce type." + +msgid "This plugin cannot have nested plugins." +msgstr "Ce bloc ne peut pas avoir de plugins imbriqués." + +msgid "Highlight" +msgstr "Surligner" + +msgid "Available plugins" +msgstr "Blocs disponibles" + +msgid "Toggle structure" +msgstr "Afficher/masquer la structure" + +msgid "Login" +msgstr "Connexion" + +msgid "Add plugin to" +msgstr "Ajouter le bloc à" + +msgid "More" +msgstr "Plus" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Version de développement utilisant django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Annuler" + +msgid "The following error occurred:" +msgstr "L'erreur suivante est survenue:" + +msgid "Action successful." +msgstr "Action réussie !" + +msgid "Are you sure you want to delete this plugin?" +msgstr "Êtes-vous sûr de vouloir supprimer ce bloc ?" + +msgid "Are you sure you want to publish this page?" +msgstr "Êtes-vous sûr de vouloir publier cette page ?" + +msgid "Plugin will be added here" +msgstr "Le bloc sera ajouté ici" + +msgid "You have unsaved changes." +msgstr "Vous avez effectué des modifications non sauvegardées." + +msgid "Loading" +msgstr "Chargement" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Êtes-vous sûr(e) de vouloir abandonner ces modifications ?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"Le formulaire n'a pas pu être chargé. Veuillez vérifier que le serveur est " +"en fonctionnement." + +msgid "Most used" +msgstr "Fréquemment utilisé" + +msgid "Shortcuts" +msgstr "Raccourcis" + +msgid "The page was changed in the meantime, reloading..." +msgstr "La page a été entre-temps changée, rechargement..." + +msgid "CMS-wide Shortcuts" +msgstr "Raccourcis clavier du CMS" + +msgid "Bring up this help dialog" +msgstr "Afficher cette fenêtre d'aide" + +msgid "Close/cancel" +msgstr "Fermer/annuler" + +msgid "Toggle structure mode" +msgstr "Mode structure" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Passer en mode structure et surligner le bloc pointé" + +msgid "Open \"Create\" dialog" +msgstr "Ouvrir le formulaire « Créer »" + +msgid "Focus on Toolbar" +msgstr "Donner le focus à la barre d'outils" + +msgid "Focus on placeholders" +msgstr "Donner le focus aux blocs" + +msgid "Move to next/previous element" +msgstr "Se déplacer vers l'élément suivant/précédent" + +msgid "Focus on plugins of placeholder" +msgstr "Donner le focus aux blocs de placeholder" + +msgid "Edit plugin" +msgstr "Modifier le bloc" + +msgid "Open actions menu" +msgstr "Ouvrir le menu d'actions" + +msgid "Expand/collapse" +msgstr "Développer/réduire" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Échec de la connexion. Veuillez vérifier votre saisie et " +"réessayer." + +msgid "Double-click to edit" +msgstr "Double-cliquez pour modifier" + +msgid "Tap to edit" +msgstr "Appuyez pour modifier" + +msgid "Click to go back" +msgstr "Cliquez pour revenir en arrière" + +msgid "Click to go forward" +msgstr "Cliquez pour aller en avant" + +msgid "Minimize" +msgstr "Minimiser" + +msgid "Maximize" +msgstr "Maximiser" + +msgid "Placeholder not editable" +msgstr "Zone non modifiable" + +msgid "Drop a plugin here" +msgstr "Déposez un bloc ici" + +msgid "Welcome to your new django CMS installation!" +msgstr "Bienvenue dans votre nouvelle installation de django CMS !" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Version %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Construisons ensemble quelque chose de formidable !" + +msgid "Please log in" +msgstr "Veuillez vous connecter" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +"Ajouter votre première page" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Aidez au financement

\n" +"

\n" +" Votre financement profite directement au produit, principalement par le biais du\n" +" programme de bourses Django CMS!\n" +"

\n" +"

\n" +" Un moyen rapide pour vous ou votre organisation de faire un don est disponible sur\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Nous rejoindre

\n" +"

\n" +" L'association Django CMS est une organisation à but non lucratif qui finance et dirige le développement de\n" +" django CMS.\n" +"

\n" +"

\n" +" Vous pouvez nous rejoindre à titre individuel ou en tant\n" +" qu'organisation.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Contribuer

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Notes d’installation" + +msgid "Support" +msgstr "Assistance" + +msgid "Documentation" +msgstr "Documentation" + +msgid "User guide" +msgstr "Manuel d'utilisation" + +msgid "Give back" +msgstr "Contribuer" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Si vous ne voyez pas le logo de django CMS au sommet de la page, assurez-vous d'avoir correctement lié le dossier static/cms à vos dossiers statiques" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Vous voyez ce message parce que vous avez DEBUG = True dans le fichier paramètres de django et que vous n'avez pas encore ajouté de page.\n" +"

" + +msgid "Welcome to django CMS" +msgstr "Bienvenue sur django CMS" + +msgid "Add Another" +msgstr "Ajouter" + +msgid "Back" +msgstr "Retour" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" +"Veuillez choisir une option ci-dessous pour passer à l’étape suivante." + +msgid "Next" +msgstr "Suivant" + +msgid "Select what you would like to create" +msgstr "Choisissez ce que vous voulez créer." + +msgid "Unknown" +msgstr "Inconnu" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Page introuvable sur %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Une balise de modèle n'a pas pu trouver la page avec les arguments de " +"sélection « %(page_lookup)s ». L'URL de la demande était la suivante : " +"http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Deux colonnes" + +msgid "Three columns" +msgstr "Trois colonnes" + +msgid "username" +msgstr "nom d'utilisateur" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Requis. 300 caractères minimum. Lettres, nombres et caractères @/./+/-/_ " +"autorisés." + +msgid "Enter a valid username." +msgstr "Entrez un nom d'utilisateur valide." + +msgid "email address" +msgstr "adresse électronique" + +msgid "staff status" +msgstr "état de l'équipe" + +msgid "Designates whether the user can log into this admin site." +msgstr "" +"Précise si l'utilisateur peut se connecter à ce site d'administration." + +msgid "active" +msgstr "actif" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Précise si l'utilisateur doit être considéré comme actif. Décochez ceci " +"plutôt que de supprimer le compte." + +msgid "users" +msgstr "utilisateurs" + +msgid "Title Extension" +msgstr "Extension de titre" + +msgid "Page Extension" +msgstr "Extension de page" + +msgid "object ID" +msgstr "id de l'objet" + +msgid "Example1 App" +msgstr "Exemple d'application 1" + +msgid "MultilingualExample1 App" +msgstr "Exemple d'application multilingue 1" + +msgid "Example1" +msgstr "Exemple 1" + +msgid "Examples" +msgstr "Exemples" + +msgid "Extra Context" +msgstr "Contexte supplémentaire" + +msgid "Articles" +msgstr "Articles" + +msgid "Sample App" +msgstr "Exemple d'application" + +msgid "Sample App with config" +msgstr "Exemple d'Application avec configuration" + +msgid "Sample App with excluded permissions" +msgstr "Exemple d'application avec permissions exclues" + +msgid "Sample App 2" +msgstr "Exemple d'application 2" + +msgid "Sample App 3" +msgstr "Exemple d'application 2" + +msgid "Sample App Without Landing Page" +msgstr "Exemple d’application sans page d’accueil" + +msgid "Namespaced App" +msgstr "Application dans un espace de noms" + +msgid "Parent app" +msgstr "App parent" + +msgid "Child app" +msgstr "App enfant" + +msgid "Variable urls-menus App" +msgstr "Application de menus d'URL variables" + +msgid "sample root page" +msgstr "exemple de page racine" + +msgid "sample settings page" +msgstr "exemple de page de réglages" + +msgid "sample account page" +msgstr "exemple de page de compte" + +msgid "sample my profile page" +msgstr "exemple de page « mon profil »" + +msgid "Static Menu" +msgstr "Menu statique" + +msgid "Static Menu2" +msgstr "Menu statique 2" + +msgid "Static Menu3" +msgstr "Menu statique 3" + +msgid "Static Menu4" +msgstr "Menu statique" + +msgid "Category" +msgstr "Catégorie" + +msgid "Categories" +msgstr "Catégories" + +msgid "Add Category" +msgstr "Ajouter une catégorie" + +msgid "^account/$" +msgstr "^compte/$" + +msgid "Change Category" +msgstr "Modifier une catégorie" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" +"Merci d'avoir partagé un moment privilégié avec le site web aujourd'hui." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Hériter du modèle du parent le plus proche" + +msgid "UserSettings" +msgstr "Paramètres des utilisateurs" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Ajouter le bloc au placeholder « %(placeholder_label)s »" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Ajouter le bloc à %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Zone unique" + +msgid "CMS - your user account was created." +msgstr "CMS — votre compte utilisateur a été créé." + +msgid "CMS - your user account was changed." +msgstr "CMS — votre compte utilisateur a été modifié." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Cette zone contient déjà le nombre maximum de blocs (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Cette zone contient déjà le nombre maximum (%(limit)s) de blocs autorisés " +"%(plugin_name)s ." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" +"Impossible de trouver le module CMS_REQUEST_IP_RESOLVER spécifié : « {0} »." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Impossible de trouver la fonction CMS_REQUEST_IP_RESOLVER spécifiée : " +"« {0} » dans le module « {1} »." + +#, python-format +msgid "Create a new %s instance." +msgstr "Créer une nouvelle instance de %s." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Un assistant a déjà été enregistré pour le modèle : %s" diff --git a/cms/locale/fr/LC_MESSAGES/djangojs.po b/cms/locale/fr/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..a4dfc450 --- /dev/null +++ b/cms/locale/fr/LC_MESSAGES/djangojs.po @@ -0,0 +1,28 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Bertrand Bordage , 2012-2013 +# Sylvain Chiron , 2016 +# chrisglass , 2011 +# Fabian Braun , 2023 +# François Palmier , 2023 +# Sylvain Chiron , 2016 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: François Palmier , 2023\n" +"Language-Team: French (http://app.transifex.com/divio/django-cms/language/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Êtes-vous sûr·e de vouloir changer d′onglet sans enregistrer la page ?" diff --git a/cms/locale/fr_CA/LC_MESSAGES/django.po b/cms/locale/fr_CA/LC_MESSAGES/django.po new file mode 100644 index 00000000..4e5b7939 --- /dev/null +++ b/cms/locale/fr_CA/LC_MESSAGES/django.po @@ -0,0 +1,2265 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: French (Canada) (https://app.transifex.com/divio/teams/58664/fr_CA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr_CA\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/fr_CA/LC_MESSAGES/djangojs.po b/cms/locale/fr_CA/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..e6f27e41 --- /dev/null +++ b/cms/locale/fr_CA/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: French (Canada) (http://app.transifex.com/divio/django-cms/language/fr_CA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr_CA\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/fr_FR/LC_MESSAGES/django.po b/cms/locale/fr_FR/LC_MESSAGES/django.po new file mode 100644 index 00000000..aac39d60 --- /dev/null +++ b/cms/locale/fr_FR/LC_MESSAGES/django.po @@ -0,0 +1,1983 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-05 12:20+0000\n" +"PO-Revision-Date: 2020-10-29 15:33+0000\n" +"Last-Translator: Aiky30 \n" +"Language-Team: French (France) (http://www.transifex.com/divio/django-cms/language/fr_FR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr_FR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgid "All" +msgstr "" + +msgid "Copy permissions" +msgstr "" + +msgid "Title" +msgstr "" + +msgid "The default title" +msgstr "" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "" + +msgid "Menu Title" +msgstr "" + +msgid "Overwrite what is displayed in the menu" +msgstr "" + +msgid "Page Title" +msgstr "" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "Slug must not be empty." +msgstr "" + +msgid "Page type" +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "Overwrite URL" +msgstr "" + +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#| msgid "softroot" +msgid "Soft root" +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "Redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +#| msgid "Copy options" +msgid "URL options" +msgstr "" + +#| msgid "Copy options" +msgid "Menu options" +msgstr "" + +msgid "Application" +msgstr "" + +msgid "Hook application to this page." +msgstr "" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +#| msgid "Application configurations" +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +#| msgid "Parent plugin language must be same as language!" +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +#| msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#| msgid "You do not have permission to clear this placeholder" +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +#| msgid "You do not have permission to delete this plugin" +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "You do not have permission to change this page's in_navigation status" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +#| msgid "You do not have permission to clear this placeholder" +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +#| msgid "You have no permission to move this plugin" +msgid "You have no permission to paste this plugin" +msgstr "" + +#| msgid "You have no permission to move this plugin" +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +#| msgid "You have no permission to move this plugin" +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Alias" +msgstr "" + +msgid "Create Alias" +msgstr "" + +#, python-format +msgid "" +"This is an alias reference, you can edit the content only on the %(page_title)s page." +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "" + +#| msgid "Add %(language)s Translation" +msgid "Add Translation" +msgstr "" + +#| msgid "Delete %(language)s Translation" +msgid "Delete Translation" +msgstr "" + +#| msgid "Copy all plugins from %s" +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +#| msgid "Are you sure you want copy all plugins from %s?" +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +#| msgid "Create" +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Edit this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +#, python-format +#| msgid "" +#| "(pages)s has the same url '%(url)s' as current page \"%(instance)s" +#| msgid_plural "" +#| "%(pages)s have the same url '%(url)s' as current page \"%(instance)s" +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +#| msgid "" +#| "(pages)s has the same url '%(url)s' as current page \"%(instance)s" +#| msgid_plural "" +#| "%(pages)s have the same url '%(url)s' as current page \"%(instance)s" +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#| msgid "You do not have permission to add a plugin" +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "default" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +#| msgid "Please select user or group first." +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "" + +msgid "overwrite the title (html title tag)" +msgstr "" + +msgid "overwrite the title in the menu" +msgstr "" + +msgid "description" +msgstr "" + +msgid "The text displayed in search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "" + +#, python-format +#| msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +#| msgid "Change" +msgid "Changed" +msgstr "" + +#| msgid "Delete" +msgid "Deleted" +msgstr "" + +#| msgid "Add %(language)s Translation" +msgid "Added Page Translation" +msgstr "" + +#| msgid "Delete %(language)s Translation" +msgid "Changed Page Translation" +msgstr "" + +#| msgid "Delete %(language)s Translation" +msgid "Deleted Page Translation" +msgstr "" + +#| msgid "Add plugin" +msgid "Added Plugin" +msgstr "" + +#| msgid "Change" +msgid "Changed Plugin" +msgstr "" + +#| msgid "Add plugin" +msgid "Moved Plugin" +msgstr "" + +#| msgid "Delete page" +msgid "Deleted Plugin" +msgstr "" + +#| msgid "Add plugin" +msgid "Cut Plugin" +msgstr "" + +#| msgid "Add plugin" +msgid "Paste Plugin" +msgstr "" + +#| msgid "static placeholder" +msgid "Paste to Placeholder" +msgstr "" + +#| msgid "Copied plugins to %(placeholder)s" +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#| msgid "Placeholder" +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +#| msgid "Add Page" +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +#| msgid "Save as new" +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +#| msgid "Page Title" +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "" +"\n" +" New Page\n" +" " +msgstr "" + +#| msgid "in navigation" +msgid "Main Navigation" +msgstr "" + +#| msgid "Actions" +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +#| msgid "New Page" +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +#| msgid "" +#| " JavaScript seems to be disabled so please\n" +#| " add a page manually.\n" +#| " " +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +#| msgid "published" +msgid "Published" +msgstr "" + +#| msgid "unpublished" +msgid "Unpublished" +msgstr "" + +msgid "Empty" +msgstr "" + +#| msgid "in menu" +msgid "In menu" +msgstr "" + +#| msgid "not in menu" +msgid "Not in menu" +msgstr "" + +#| msgid "New page" +msgid "View page" +msgstr "" + +#| msgid "softroot" +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +#| msgid "Page settings (SHIFT-click for advanced settings)" +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "This is a static placeholder" +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +#| msgid "Structure" +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +#| msgid "Development version using django CMS %(cms_version)s" +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occured:" +msgstr "" + +#| msgid "Action successfull... reloading." +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +#| msgid "This page has unpublished changes." +msgid "You have unsaved changes." +msgstr "" + +#| msgid "Loading..." +msgid "Loading" +msgstr "" + +#| msgid "Are you sure you want to § this page?" +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#| msgid "Notify user" +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +#| msgid "Cancel" +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +#| msgid "static placeholders" +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +#| msgid "Add plugin to placeholder" +msgid "Focus on plugins of placeholder" +msgstr "" + +#| msgid "Add plugin" +msgid "Edit plugin" +msgstr "" + +#| msgid "not in menu" +msgid "Open actions menu" +msgstr "" + +#| msgid "Expand all" +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Installation successful!" +msgstr "" + +msgid "Add your first page" +msgstr "" + +msgid "Please log in" +msgstr "" + +#, python-format +msgid "" +"\n" +" Welcome to django CMS version %(cms_version)s.\n" +" " +msgstr "" + +#, python-format +msgid "" +"\n" +" Add the first page to the system to continue.\n" +" " +msgstr "" + +#, python-format +msgid "" +"\n" +" JavaScript seems to be disabled so please\n" +" add a page manually.\n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +#| msgid "" +#| "

If you don't see the ngo CMS logo at the top, make sure\n" +#| " you linked the static/cms folder to r\n" +#| " static files.

\n" +#| "

You're seeing this message ause you have\n" +#| " DEBUG = True in your django settings e and\n" +#| " haven't added any pages yet.\n" +#| "

\n" +#| " " +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#| msgid "" +#| "

If you don't see the ngo CMS logo at the top, make sure\n" +#| " you linked the static/cms folder to r\n" +#| " static files.

\n" +#| "

You're seeing this message ause you have\n" +#| " DEBUG = True in your django settings e and\n" +#| " haven't added any pages yet.\n" +#| "

\n" +#| " " +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "no content" +msgstr "" + +#| msgid "no content" +msgid "has contents" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +#| msgid "Sample App with excluded permissions" +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +#| msgid "Sample App 2" +msgid "Sample App 3" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +#| msgid "Static Menu" +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +#| msgid "Add plugin to placeholder" +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +#| msgid "Add plugin to placeholder" +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "X Frame Options" +#~ msgstr "X Frame Options" + +#~ msgid "Whether this page can be embedded in other pages or websites" +#~ msgstr "Whether this page can be embedded in other pages or websites" + +#~ msgid "Language independent options" +#~ msgstr "Language independent options" + +#~ msgid "Publishing dates" +#~ msgstr "Publishing dates" + +#~ msgid "Change Permissions" +#~ msgstr "Change Permissions" + +#~ msgid "You do not have permission to revert this page." +#~ msgstr "You do not have permission to edit this page" + +#~ msgid "You do not have permission to publish this page" +#~ msgstr "You do not have permission to publish this page" + +#~ msgid "Page not published! A parent page is not published yet." +#~ msgstr "Page not published! A parent page is not published yet." + +#~ msgid "The content was successfully published." +#~ msgstr "The content was successfully published." + +#~ msgid "There was a problem publishing your content" +#~ msgstr "There was a problem publishing your content" + +#~ msgid "You do not have permission to unpublish this page" +#~ msgstr "You do not have permission to unpublish this page" + +#~ msgid "This page was never published" +#~ msgstr "This page was never published" + +#~ msgid "The %(language)s page \"%(page)s\" was successfully unpublished" +#~ msgstr "The %(language)s page \"%(page)s\" was successfully unpublished" + +#~ msgid "You don't have permissions to see page \"%(title)s\"" +#~ msgstr "You do not have permission to change pages." + +#~ msgid "parent must be in the same placeholder" +#~ msgstr "parent must be in the same placeholder" + +#~ msgid "parent must be in the same language as plugin_language" +#~ msgstr "parent must be in the same language as plugin_language" + +#~ msgid "Publish page changes" +#~ msgstr "Publish changes" + +#~ msgid "Publish page now" +#~ msgstr "Publish page now" + +#~ msgid "Save as Page Type" +#~ msgstr "Save as Page Type" + +#~ msgid "Unpublish page" +#~ msgstr "Unpublish page" + +#~ msgid "Publish page" +#~ msgstr "Publish page" + +#~ msgid "Are you sure you want to revert to live?" +#~ msgstr "Are you sure you want to revert to live?" + +#~ msgid "Revert to live" +#~ msgstr "Revert to live" + +#~ msgid "" +#~ "When the page should go live. Status must be \"Published\" for page to go " +#~ "live." +#~ msgstr "" +#~ "When the page should go live. Status must be \"Published\" for page to go " +#~ "live." + +#~ msgid "When to expire the page. Leave empty to never expire." +#~ msgstr "When to expire the page. Leave empty to never expire." + +#~ msgid "has url overwrite" +#~ msgstr "has url overwrite" + +#~ msgid "is published" +#~ msgstr "is published" + +#~ msgid "Basic Settings" +#~ msgstr "Basic Settings" + +#~ msgid "Preview this page in %(language)s " +#~ msgstr "Edit this page in %(language)s " + +#~ msgid "Publish" +#~ msgstr "Publish" + +#~ msgid "Unpublish" +#~ msgstr "Unpublish" + +#~ msgid "View published" +#~ msgstr "View published" + +#~ msgid "This page has unpublished changes." +#~ msgstr "This page has unpublished changes." + +#~ msgid "unpublished changes" +#~ msgstr "unpublished changes" + +#~ msgid "published" +#~ msgstr "published" + +#~ msgid "unpublished parent" +#~ msgstr "unpublished parent" + +#~ msgid "unpublished" +#~ msgstr "unpublished" + +#~ msgid "The current language of the content fields." +#~ msgstr "The current language of the content fields." + +#~ msgid "Another page with this slug already exists" +#~ msgstr "Another page with this slug already exists" + +#~ msgid "Add Page Type" +#~ msgstr "Add Page Type" + +#~ msgid "You do not have permission to change the template" +#~ msgstr "You do not have permission to change the template" + +#~ msgid "You do not have permission to change this page" +#~ msgstr "You do not have permission to change this page" + +#~ msgid "There only exists one translation for this page" +#~ msgstr "There only exists one translation for this page" + +#~ msgid "User does not have permission to add page." +#~ msgstr "User does not have permission to add page." + +#~ msgid "The site the page is accessible at." +#~ msgstr "The site the page is accessible at." + +#~ msgid "Edit page" +#~ msgstr "Edit this Page" + +#~ msgid "Toggle toolbar" +#~ msgstr "Toggle toolbar" + +#~ msgid "Invalid URL, use /my/url format." +#~ msgstr "Invalid URL, use /my/url format." + +#~ msgid "Add page permission also requires edit page permission." +#~ msgstr "Add page permission also requires edit page permission." + +#~ msgid "Recover (any) pages" +#~ msgstr "Recover (any) pages" + +#~ msgid "" +#~ "Send email notification to user about username or password change. Requires " +#~ "user email." +#~ msgstr "" +#~ "Send email notification to user about username or password change. Requires " +#~ "user email." + +#~ msgid "New password" +#~ msgstr "New password" + +#~ msgid "New password confirmation" +#~ msgstr "New password confirmation" + +#~ msgid "Email notification requires valid email address." +#~ msgstr "Email notification requires valid email address." + +#~ msgid "" +#~ "The permission to add new pages requires the permission to change pages!" +#~ msgstr "" +#~ "The permission to add new pages requires the permission to change pages!" + +#~ msgid "" +#~ "The permission to add new users requires the permission to change users!" +#~ msgstr "" +#~ "The permission to add new users requires the permission to change users!" + +#~ msgid "To add permissions you also need to edit them!" +#~ msgstr "To add permissions you also need to edit them!" + +#~ msgid "%(plugin_name)s plugin added to %(placeholder)s" +#~ msgstr "%(plugin_name)s plugin added to %(placeholder)s" + +#~ msgid "Copied plugins to %(placeholder)s" +#~ msgstr "Copied plugins to %(placeholder)s" + +#~ msgid "" +#~ "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +#~ msgstr "" +#~ "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" + +#~ msgid "" +#~ "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " +#~ "deleted." +#~ msgstr "" +#~ "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " +#~ "deleted." + +#~ msgid "All plugins in the placeholder \"%(name)s\" were deleted." +#~ msgstr "All plugins in the placeholder \"%(name)s\" were deleted." + +#~ msgid "Page reverted but slug stays the same because of url collisions." +#~ msgstr "Page reverted but slug stays the same because of url collisions." + +#~ msgid "Template changed to %s" +#~ msgstr "Template changed to %s" + +#~ msgid "Page moved" +#~ msgstr "Page moved" + +#~ msgid "Copied plugins from %(source_language)s to %(target_language)s" +#~ msgstr "Copied plugins from %(source_language)s to %(target_language)s" + +#~ msgid "The page \"%s\" was successfully reverted." +#~ msgstr "The page \"%s\" was successfully reverted." + +#~ msgid "History" +#~ msgstr "History" + +#~ msgid "Undo" +#~ msgstr "Undo" + +#~ msgid "Redo" +#~ msgstr "Redo" + +#~ msgid "View history" +#~ msgstr "View history" + +#~ msgid "" +#~ "\n" +#~ " Recover deleted %(verbose_name)s\n" +#~ " " +#~ msgstr "Recover deleted %(verbose_name)s" + +#~ msgid "Press the save button below to recover this version of the object." +#~ msgstr "Press the save button below to recover this version of the object." + +#~ msgid "Revert %(verbose_name)s" +#~ msgstr "Revert %(verbose_name)s" + +#~ msgid "Press the save button below to revert to this version of the object." +#~ msgstr "Press the save button below to revert to this version of the object." + +#~ msgid "home" +#~ msgstr "home" + +#~ msgid "softroot" +#~ msgstr "softroot" + +#~ msgid "({1}) plugin is empty. Remove it?" +#~ msgstr "({1}) plugin is empty. Remove it?" + +#~ msgid "sample second page" +#~ msgstr "sample account page" + +#~ msgid "Plugins were moved" +#~ msgstr "Plugins were moved" + +#~ msgid "Path Overflow from: '%s'" +#~ msgstr "Path Overflow from: '%s'" + +#~ msgid "" +#~ "The new node is too deep in the tree, try increasing the path.max_length " +#~ "property and UPDATE your database" +#~ msgstr "" +#~ "The new node is too deep in the tree, try increasing the path.max_length " +#~ "property and UPDATE your database" + +#~ msgid "An error occured. Please reload the page" +#~ msgstr "An error occured. Please reload the page" + +#~ msgid "Recover deleted %(name)s" +#~ msgstr "Recover deleted %(name)s" + +#~ msgid "Add %(name)s" +#~ msgstr "Add %(name)s" + +#~ msgid "Pages on:" +#~ msgstr "Pages on:" + +#~ msgid "%(counter)s result" +#~ msgid_plural "%(counter)s results" +#~ msgstr[0] "a848884d0af974a125106fa2043a5716_pl_0" +#~ msgstr[1] "a848884d0af974a125106fa2043a5716_pl_1" + +#~ msgid "%(full_result_count)s total" +#~ msgstr "%(full_result_count)s total" + +#~ msgid "Show all" +#~ msgstr "Show all" + +#~ msgid "Filter:" +#~ msgstr "Filter:" + +#~ msgid "on" +#~ msgstr "on" + +#~ msgid "off" +#~ msgstr "off" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "" +#~ "There is no page around yet.
Add page now." +#~ msgstr "" +#~ "There is no page around yet.
Add page now." + +#~ msgid "insert above" +#~ msgstr "insert above" + +#~ msgid "insert below" +#~ msgstr "insert below" + +#~ msgid "insert inside" +#~ msgstr "insert inside" + +#~ msgid "Pick an action:" +#~ msgstr "Pick an action:" + +#~ msgid "page settings" +#~ msgstr "page settings" + +#~ msgid "copy" +#~ msgstr "copy" + +#~ msgid "Add Child" +#~ msgstr "Add Child" + +#~ msgid "add" +#~ msgstr "add" + +#~ msgid "cut" +#~ msgstr "cut" + +#~ msgid "delete" +#~ msgstr "delete" + +#~ msgid "info" +#~ msgstr "info" + +#~ msgid "Information" +#~ msgstr "Information" + +#~ msgid "%(icon)s" +#~ msgstr "%(icon)s" + +#~ msgid "English" +#~ msgstr "English" + +#~ msgid "French" +#~ msgstr "French" + +#~ msgid "German" +#~ msgstr "German" + +#~ msgid "Brazilian Portuguese" +#~ msgstr "Brazilian Portuguese" + +#~ msgid "Dutch" +#~ msgstr "Dutch" + +#~ msgid "two columns" +#~ msgstr "two columns" + +#~ msgid "three columns" +#~ msgstr "three columns" + +#~ msgid "navigation examples" +#~ msgstr "navigation examples" + +#~ msgid "sidebar column" +#~ msgstr "sidebar column" + +#~ msgid "left column" +#~ msgstr "left column" + +#~ msgid "Add a link" +#~ msgstr "Add a link" + +#~ msgid "right column" +#~ msgstr "right column" diff --git a/cms/locale/fr_FR/LC_MESSAGES/djangojs.po b/cms/locale/fr_FR/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..bc3867e8 --- /dev/null +++ b/cms/locale/fr_FR/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-05 12:20+0000\n" +"PO-Revision-Date: 2018-01-11 16:38+0000\n" +"Last-Translator: Paulo Alvarado \n" +"Language-Team: French (France) (http://www.transifex.com/divio/django-cms/language/fr_FR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr_FR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/ga/LC_MESSAGES/django.po b/cms/locale/ga/LC_MESSAGES/django.po new file mode 100644 index 00000000..ee33200f --- /dev/null +++ b/cms/locale/ga/LC_MESSAGES/django.po @@ -0,0 +1,2267 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Irish (https://app.transifex.com/divio/teams/58664/ga/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ga\n" +"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/ga/LC_MESSAGES/djangojs.po b/cms/locale/ga/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..5d2ba1c7 --- /dev/null +++ b/cms/locale/ga/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Irish (http://app.transifex.com/divio/django-cms/language/ga/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ga\n" +"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/gl/LC_MESSAGES/django.po b/cms/locale/gl/LC_MESSAGES/django.po new file mode 100644 index 00000000..3703f287 --- /dev/null +++ b/cms/locale/gl/LC_MESSAGES/django.po @@ -0,0 +1,1636 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Pablo, 2025 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Galician (https://app.transifex.com/divio/teams/58664/gl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: gl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "Todo" + +msgid "Copy permissions" +msgstr "Copiar permisos" + +msgid "Slug" +msgstr "Rastro" + +msgid "The part of the title that is used in the URL" +msgstr "A parte do título que é utilizado no URL" + +msgid "Page type" +msgstr "Tipo de Páxina" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Tipos de Páxina" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Sobreescribir URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Manter este campo valeiro se o \"path\" estandar é utilizado." + +msgid "Start typing..." +msgstr "Comeza a escribir..." + +msgid "menu visibility" +msgstr "visibilidade do menú" + +msgid "limit when this page is visible in the menu" +msgstr "limitar cando esta páxina é visible no menú" + +msgid "X Frame Options" +msgstr "Opcións de X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "Aplicación" + +msgid "Hook application to this page." +msgstr "Aplicación enlazada a esta páxina" + +msgid "Application configurations" +msgstr "Configuracións de aplicación" + +msgid "A page with this reverse URL id exists already." +msgstr "Unha páxina con este id URL xa existe." + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "usuario" + +msgid "can_view" +msgstr "pode_ver" + +msgid "Add" +msgstr "Engadir" + +msgid "Change" +msgstr "Cambiar" + +msgid "Delete" +msgstr "Eliminar" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "O idioma debe ser definido nunha linguaxe soportada!" + +msgid "Parent plugin language must be same as language!" +msgstr "O idioma do plugin ten que ser o mesmo que o do plugin pai!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "Opcións avanzadas" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s obxeto con clave primaria %(key)r non existe." + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "Non ten permiso para editar esta páxina" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "Engadir Copia de Páxina" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "Erro na base de datos" + +msgid "Template not valid" +msgstr "Padrón non válido" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "O padrón foi cambiado con éxito" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "Non ten permiso para copiar estes plugins." + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "O título e plugins en %(language)s foron eliminado" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "Baleiro" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "Amosar restrición" + +msgid "View restrictions" +msgstr "Amosar restricións" + +#, python-format +msgid "Field %s not found" +msgstr "No se atopou o campo %s" + +msgid "You do not have permission to edit this item" +msgstr "Non ten permiso para editar este elemento" + +msgid "You do not have permission to add a plugin" +msgstr "Non ten permiso para engadir un plugin" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "No se atopou o plugin" + +msgid "You do not have permission to edit this plugin" +msgstr "Non ten permiso para editar este plugin" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "Non ten permiso para trasladar este plugin" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "Non ten permiso para borrar este plugin" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "O plugin %(name)s \"%(obj)s\" foi borrado con éxito." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Non pode borrar %(name)s" + +msgid "Are you sure?" +msgstr "Está seguro?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Non ten permiso para quitar este marcador de posición" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Quitouse o marcador de posición \"%(obj)s\" con éxito." + +msgid "placeholder" +msgstr "marcador de posición" + +msgid "Page permissions" +msgstr "Permisos de páxina" + +msgid "User & Group permissions" +msgstr "Permisos de Usuarios e Grupos" + +msgid "Page permissions management" +msgstr "Xestor dos permisos da páxina" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Marcador de posición" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "Estrutura" + +msgid "Content" +msgstr "Contido" + +msgid "Sites" +msgstr "Sitios" + +msgid "Admin Sites" +msgstr "Administrar Sitios" + +msgid "Administration" +msgstr "Administración" + +msgid "User settings" +msgstr "Opcións do usuario" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "Desactivar barra de ferramentas" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "Usuarios" + +#, python-format +msgid "Logout %s" +msgstr "Rematar sesión %s" + +msgid "Logout" +msgstr "Rematar sesión" + +msgid "Language" +msgstr "Lingua" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "Páxinas" + +msgid "Page" +msgstr "Páxina" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "Páxina nova" + +msgid "New Sub Page" +msgstr "Subpáxina Nova" + +msgid "Duplicate this Page" +msgstr "Duplica esta Páxina" + +msgid "Page settings" +msgstr "Opcións da páxina" + +msgid "Advanced settings" +msgstr "Opcións avanzadas" + +msgid "Templates" +msgstr "Padróns" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "Ocultar na navegación" + +msgid "Display in navigation" +msgstr "Amosar na navegación" + +msgid "Delete page" +msgstr "Eliminar páxina" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "Elixa un sito válido" + +msgid "Select a valid page" +msgstr "Elixa unha páxina válida" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "posición" + +msgid "language" +msgstr "lingua" + +msgid "plugin_name" +msgstr "nome_de_plugin" + +msgid "creation date" +msgstr "Data de creación" + +msgid "can edit" +msgstr "pode editar" + +msgid "can add" +msgstr "pode engadir" + +msgid "can delete" +msgstr "pode borrar" + +msgid "can change advanced settings" +msgstr "pode cambiar a configuración avanzada" + +msgid "can publish" +msgstr "pode publicar" + +msgid "can change permissions" +msgstr "pode cambiar permisos" + +msgid "can move" +msgstr "pode trasladar" + +msgid "view restricted" +msgstr "vista restrinxida" + +msgid "can recover pages" +msgstr "pode recuperar páxinas" + +msgid "group" +msgstr "grupo" + +msgid "sites" +msgstr "sitios" + +msgid "created by" +msgstr "creado por" + +msgid "changed by" +msgstr "cambiado por" + +msgid "publication date" +msgstr "data de publicación" + +msgid "publication end date" +msgstr "data de fin da publicación" + +msgid "in navigation" +msgstr "en navegación" + +msgid "soft root" +msgstr "raíz branda" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "menú ancorado" + +msgid "template" +msgstr "padrón" + +msgid "login required" +msgstr "require identificación" + +msgid "application" +msgstr "aplicación" + +msgid "application instance name" +msgstr "nome de instancia de aplicación" + +msgid "site" +msgstr "sitio" + +msgid "Grant on" +msgstr "Autorizado" + +msgid "page" +msgstr "páxina" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "só para usuarios identificados" + +msgid "for anonymous users only" +msgstr "só para usuarios anónimos" + +msgid "Inherit from parent page" +msgstr "Herdar da páxina pai" + +msgid "Deny" +msgstr "Denegar" + +msgid "Only this website" +msgstr "Só este sitio web" + +msgid "Allow" +msgstr "Permitir" + +msgid "title" +msgstr "título" + +msgid "The default title" +msgstr "Título por defecto" + +msgid "Page Title" +msgstr "Título da páxina" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Sobreescribe ó mostrado na parte superior do navegador ou nos bookmarks" + +msgid "Menu Title" +msgstr "Título menú" + +msgid "Overwrite what is displayed in the menu" +msgstr "Sobreescribe o mostrado no menú" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "Unha descrición da páxina usada polos motores de busca." + +msgid "redirect" +msgstr "redirixir" + +msgid "Redirects to this URL." +msgstr "Redirixir a esta URL" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Ningún antepasados se amosará no menú de navegación" + +msgid "The template used to render the content." +msgstr "O padrón usado para amosar o contido." + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "por defecto" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "páxinas" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "rastro" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "Páxina actual" + +msgid "Page children (immediate)" +msgstr "Páxina filla (inmediata)" + +msgid "Page and children (immediate)" +msgstr "Páxina e páxina filla (inmediata)" + +msgid "Page descendants" +msgstr "Descendentes da páxina" + +msgid "Page and descendants" +msgstr "Páxina e descendentes" + +msgid "on page level" +msgstr "no nivel da páxina" + +msgid "frontend view restriction" +msgstr "restrición para visualizar a interface do usuario" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "pode recuperar calquera páxina borrada" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "Permiso global da páxina" + +msgid "Pages global permissions" +msgstr "Permisos globais das páxinas" + +msgid "Page permission" +msgstr "Permiso da páxina" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Engadir permiso de páxina require tamén acceder a nenos, ou descendentes, a " +"páxina engadida doutro xeito non pode ser mudada polo seu creador." + +msgid "User (page)" +msgstr "Usuario (páxina)" + +msgid "Users (page)" +msgstr "Usuarios (páxina)" + +msgid "User group (page)" +msgstr "Grupo do usuario (páxina)" + +msgid "User groups (page)" +msgstr "Grupos do usuario (páxina)" + +msgid "slot" +msgstr "rañura" + +msgid "width" +msgstr "ancho" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "configuración de usuario" + +msgid "user settings" +msgstr "configuracións de usuario" + +msgid "by template" +msgstr "por padrón" + +msgid "by code" +msgstr "por código" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "Opcións avanzadas" + +msgid "Generic" +msgstr "Xenérico" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "Gardar" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "Nome de usuario:" + +msgid "Password:" +msgstr "Contrasinal:" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "Cambiar unha páxina" + +msgid "Home" +msgstr "Inicio" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +msgid "All permissions" +msgstr "Todos os permisos" + +msgid "Loading..." +msgstr "Cargando..." + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "Usuario" + +msgid "Group" +msgstr "Grupo" + +msgid "Can edit" +msgstr "Pode editar" + +msgid "Can add" +msgstr "Pode engadir" + +msgid "Can delete" +msgstr "Pode borrar" + +msgid "Can publish" +msgstr "Pode publicar" + +msgid "Can change permissions" +msgstr "Pode cambiar permisos" + +msgid "Can move" +msgstr "Pode trasladar" + +msgid "Can view" +msgstr "Pode ver" + +msgid "(global)" +msgstr "(global)" + +msgid "(current)" +msgstr "(actual)" + +msgid "Page doesn't inherit any permissions." +msgstr "A páxina non herda ningún permiso." + +msgid "Edit model" +msgstr "Editar modelo" + +msgid "Save as new" +msgstr "Gardar como novo" + +msgid "Save and add another" +msgstr "Gardar e engadir outro" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "Lista de páxinas" + +msgid "Search" +msgstr "Procura" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "Trasladado con éxito" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "Menú" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "Opcións de copia" + +msgid "Choose copy options" +msgstr "Elixe opcións de copia" + +msgid "Close" +msgstr "Pechar" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "Permisos" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "Esta seguro de que desexa eliminar este plugin?" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "Engadir outro" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "enderezo de correo-e" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/gl/LC_MESSAGES/djangojs.po b/cms/locale/gl/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..a164d55b --- /dev/null +++ b/cms/locale/gl/LC_MESSAGES/djangojs.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Manuel Alejandro Núñez Liz , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Manuel Alejandro Núñez Liz , 2013\n" +"Language-Team: Galician (http://app.transifex.com/divio/django-cms/language/gl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: gl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Esta seguro de que desexa cambiar o contido sen gardar primeiro a páxina?" diff --git a/cms/locale/gu/LC_MESSAGES/django.po b/cms/locale/gu/LC_MESSAGES/django.po new file mode 100644 index 00000000..be0bf86d --- /dev/null +++ b/cms/locale/gu/LC_MESSAGES/django.po @@ -0,0 +1,1632 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2022 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2022\n" +"Language-Team: Gujarati (https://app.transifex.com/divio/teams/58664/gu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: gu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "" + +msgid "Copy permissions" +msgstr "" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "" + +msgid "Page type" +msgstr "" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "" + +msgid "Keep this field empty if standard path should be used." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "Aplicació" + +msgid "Hook application to this page." +msgstr "" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "usuari" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "Llengua" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "" + +msgid "The default title" +msgstr "Títol per defecte" + +msgid "Page Title" +msgstr "" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +msgid "Menu Title" +msgstr "" + +msgid "Overwrite what is displayed in the menu" +msgstr "" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/gu/LC_MESSAGES/djangojs.po b/cms/locale/gu/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..05ccbb7a --- /dev/null +++ b/cms/locale/gu/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Gujarati (http://app.transifex.com/divio/django-cms/language/gu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: gu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/he/LC_MESSAGES/django.po b/cms/locale/he/LC_MESSAGES/django.po new file mode 100644 index 00000000..3f3ee21a --- /dev/null +++ b/cms/locale/he/LC_MESSAGES/django.po @@ -0,0 +1,1728 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2026 +# Fishfur A Banter , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fishfur A Banter , 2026\n" +"Language-Team: Hebrew (https://app.transifex.com/divio/teams/58664/he/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: he\n" +"Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;\n" + +msgid "All" +msgstr "הכול" + +msgid "Copy permissions" +msgstr "הרשאות העתקה" + +msgid "Slug" +msgstr "אסימון" + +msgid "The part of the title that is used in the URL" +msgstr "החלק מהכותרת בשימוש ב-URL" + +msgid "Page type" +msgstr "סוג דף" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "סוגי דף" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "שכתב URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "השאר תיבה זו ריקה אם נדרש שימוש ב-path סטנדרטי" + +msgid "Start typing..." +msgstr "התחל לכתוב..." + +msgid "menu visibility" +msgstr "נראות תפריט" + +msgid "limit when this page is visible in the menu" +msgstr "הגבל מתי דף זה מוצג בתפריט" + +msgid "X Frame Options" +msgstr "אפשרויות X-Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "האם ניתן להטמיע דף זה בדפים או באתרים אחרים." + +msgid "URL options" +msgstr "אפשרויות כתובת URL" + +msgid "Menu options" +msgstr "אפשרויות תפריט" + +msgid "Headers" +msgstr "כותרות" + +msgid "Application" +msgstr "יישום" + +msgid "Hook application to this page." +msgstr "חבר יישום לדף זה." + +msgid "Application configurations" +msgstr "הגדרות אפליקציה" + +msgid "A page with this reverse URL id exists already." +msgstr "כבר קיים דף עם מזהה כתובת URL הפוך זה." + +msgid "Invalid application config value" +msgstr "ערך תצורת יישום לא חוקי" + +msgid "An application instance using this configuration already exists." +msgstr "כבר קיים מופע יישום המשתמש בתצורה זו." + +msgid "An application instance with this name already exists." +msgstr "כבר קיים מופע יישום בשם זה." + +msgid "You can't move the home page inside another page" +msgstr "לא ניתן להעביר את דף הבית לתוך דף אחר" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"לא ניתן שיהיו שני דפים עם אותו slug באותה רמת דף. שנה את ה-slug של אחד הדפים" +" לפני שתנסה להעביר שוב." + +msgid "Yes" +msgstr "כן" + +msgid "No" +msgstr "לא" + +msgid "user" +msgstr "משתמש" + +msgid "can_view" +msgstr "ניתן לצפייה" + +msgid "Add" +msgstr "הוספה" + +msgid "Change" +msgstr "שינוי" + +msgid "Delete" +msgstr "מחק" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"משתמשים אינם יכולים ליצור דף בלי ההרשאות לשנות את הדף שהם יצרו. נדרשת עריכת " +"הרשאות." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"משתמשים אינם יכולים למחוק דף בלי ההרשאות לשנות את הדף שהם מנסים למחוק. נדרשת" +" עריכת הרשאות." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"משתמשים אינם יכולים לקבוע הרשאות של דף אם אין להם הרשאות לשנות דף. נדרשת " +"עריכת הרשאות." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"משתמשים אינם יכולים למחוק הרשאות של דף בלי ההרשאות לשנות דף. נדרשת עריכת " +"הרשאות." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"משתמשים אינם יכולים ליצור הרשאות לדף אם אין להם אפשרות לשנות את ההרשאות " +"שנוצרו. נדרשת עריכת הרשאות." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"משתמשים אינכם יכולים למחוק הרשאות דף בלי הרשאות לשנות הרשאות. נדרשת עריכת " +"הרשאות." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "סוג פלאגין לא חוקי '%s'" + +msgid "Language must be set to a supported language!" +msgstr "השפה חייבת להיות שפה הנתמכת על ידי המערכת!" + +msgid "Parent plugin language must be same as language!" +msgstr "שפת התוסף ההורה חייב להיות זהה לשפה!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "מציין המיקום של פלאגין האב חייב להיות זהה למציין המיקום!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "מיקום הפלאגין חייב להיות גדול מ-%(position)d" + +msgid "Translations" +msgstr "תרגומים" + +msgid "Advanced Settings" +msgstr "אפשרויות מתקדמות" + +msgid "The page is not eligible to be home." +msgstr "הדף אינו כשיר להיות דף הבית." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "האובייקט %(name)s עם המפתח הראשי %(key)r אינו קיים." + +msgid "error" +msgstr "שגיאה" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "אזהרה! אין לך הרשאות להזיז את הדף הזה. טען מחדש את הדף." + +msgid "Error! You don't have permissions to copy this page." +msgstr "שגיאה! אין לך הרשאות להעתיק דף זה." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "שגיאה! הדף שאתה מדביק אינו מתורגם לאף אחת מהשפות המוגדרות באתר היעד." + +msgid "You do not have permission to edit this page" +msgstr "אין לך הרשאה לערוך את הדף הזה" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "(כדי לשנות זאת, בטל תחילה את פרסום הגרסה המפורסמת הנוכחית של דף זה)" + +msgid "Add Translation" +msgstr "הוסף תרגום" + +msgid "Add Page Copy" +msgstr "הוסף עותק דף" + +msgid "New sub page" +msgstr "תת-דף חדש" + +msgid "New page" +msgstr "דף חדש" + +msgid "Database error" +msgstr "שגיאת מסד נתונים" + +msgid "Template not valid" +msgstr "התבנית לא חוקית" + +msgid "Placeholder selection not valid" +msgstr "בחירת מציין מיקום אינה חוקית" + +msgid "The template was successfully changed" +msgstr "התבנית שונתה בהצלחה" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "מציין המיקום '%s' אינו קיים בשפת היעד" + +msgid "You do not have permission to copy these plugins." +msgstr "אין לך הרשאה להעתיק את התוסף האלה" + +msgid "You do not have permission to delete this page" +msgstr "אין לך הרשאה למחוק דף זה" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "הכותרת והפלאגינים בשפה %(language)s נמחקו" + +msgid "Public content" +msgstr "תוכן ציבורי" + +msgid "Empty" +msgstr "ריק" + +msgid "Create Content" +msgstr "צור תוכן" + +msgid "View restriction" +msgstr "הגבלת צפייה" + +msgid "View restrictions" +msgstr "הגבלות צפייה" + +#, python-format +msgid "Field %s not found" +msgstr "השדה %s לא נמצא" + +msgid "You do not have permission to edit this item" +msgstr "אין לך הרשאה לערוך פריט זה" + +msgid "You do not have permission to add a plugin" +msgstr "אין לך הרשאה להוסיף תוספים" + +msgid "You do not have permission to copy this placeholder." +msgstr "אין לך הרשאה להעתיק מציין מיקום זה." + +msgid "Plugin not found" +msgstr "תוסף לא נמצא" + +msgid "You do not have permission to edit this plugin" +msgstr "אין לך הרשאה לערוך את התוסף הזה" + +msgid "You have no permission to paste this plugin" +msgstr "אין לך הרשאה להדביק את התוסף הזה" + +msgid "You have no permission to paste this placeholder" +msgstr "אין לך הרשאה להדביק מציין מיקום זה" + +msgid "You have no permission to move this plugin" +msgstr "אין לך הרשאה להזיז את התוסף הזה" + +msgid "You have no permission to cut this plugin" +msgstr "אין לך הרשאה לגזור פלאגין זה" + +msgid "You do not have permission to delete this plugin" +msgstr "אין לך הרשאות למחוק את התוסף הזה" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "הפלאגין %(name)s \"%(obj)s\" נמחק בהצלחה." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "לא ניתן למחוק את %(name)s" + +msgid "Are you sure?" +msgstr "האם אתה בטוח?" + +msgid "You do not have permission to clear this placeholder" +msgstr "אין לך הרשאה לרוקן מציין מיקום זה" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "מציין המיקום \"%(obj)s\" רוקן בהצלחה." + +msgid "placeholder" +msgstr "מציין מיקום" + +msgid "Page permissions" +msgstr "הרשאות דף" + +msgid "User & Group permissions" +msgstr "הרשאות משתמש וקבוצה" + +msgid "Page permissions management" +msgstr "ניהול הרשאות דף" + +msgid "Actions" +msgstr "פעולות" + +msgid "Empty content" +msgstr "תוכן ריק" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "מאפייני %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "הוסף %(object_name)s חדש" + +msgid "Add content" +msgstr "הוסף תוכן" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"התוכן עבור השפה הנוכחית השתנה. לחץ \"ביטול\" כדי לחזור לטופס ולשמור את " +"השינויים. לחץ \"אישור\" כדי לבטל את השינויים." + +#, python-format +msgid "Add %(language)s content" +msgstr "הוסף תוכן %(language)s" + +msgid "Preview" +msgstr "תצוגה מקדימה" + +msgid "Settings" +msgstr "הגדרות" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "שפה לא חוקית %(value)s. לא ניתן לעבד טופס זה. נסה לשנות שפה." + +msgid "" +msgstr "<לא צוין>" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "לא נמצא apphook רשום \"%r\"" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "מציין מיקום" + +msgid "Create" +msgstr "צור" + +msgid "Edit" +msgstr "עריכה" + +msgid "Structure" +msgstr "מבנה" + +msgid "Content" +msgstr "תוכן" + +msgid "Sites" +msgstr "אתרים" + +msgid "Admin Sites" +msgstr "אתר אדמין" + +msgid "Administration" +msgstr "ניהול" + +msgid "User settings" +msgstr "הגדרות משתמש" + +msgid "Clipboard..." +msgstr "לוח גזירים..." + +msgid "Clear clipboard" +msgstr "נקה את לוח הגזירים" + +msgid "Disable toolbar" +msgstr "השבת סרגל כלים" + +msgid "Shortcuts..." +msgstr "קיצורי דרך..." + +msgid "Users" +msgstr "משתמשים" + +#, python-format +msgid "Logout %s" +msgstr "התנתק %s" + +msgid "Logout" +msgstr "יציאת משתמש" + +msgid "Language" +msgstr "שפה" + +msgid "Delete Translation" +msgstr "מחק תרגום" + +msgid "Copy all plugins" +msgstr "העתק את כל הפלאגינים" + +#, python-format +msgid "from %s" +msgstr "מ-%s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "האם אתה בטוח שברצונך להעתיק את כל הפלאגינים מ-%s?" + +msgid "Pages" +msgstr "דפים" + +msgid "Page" +msgstr "עמוד" + +msgid "Create Page" +msgstr "צור דף" + +msgid "New Page" +msgstr "דף חדש" + +msgid "New Sub Page" +msgstr "תת-דף חדש" + +msgid "Duplicate this Page" +msgstr "שכפל דף זה" + +msgid "Page settings" +msgstr "הגדרות דף" + +msgid "Advanced settings" +msgstr "הגדרות מתקדמות" + +msgid "Templates" +msgstr "תבניות" + +msgid "Placeholders" +msgstr "מצייני מיקום" + +msgid "Hide in navigation" +msgstr "הסתר בניווט" + +msgid "Display in navigation" +msgstr "הצג בניווט" + +msgid "Delete page" +msgstr "מחק דף" + +msgid "Create a new page next to the current page." +msgstr "צור דף חדש לצד הדף הנוכחי." + +msgid "Create a page below the current page." +msgstr "צור דף מתחת לדף הנוכחי." + +msgid "Select a valid site" +msgstr "בחר אתר חוקי" + +msgid "Select a valid page" +msgstr "בחר דף חוקי" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"לדף %(conflict_page)s יש אותה כתובת '%(url)s' כמו לדף הנוכחי " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "לדף %(conflict_page)s יש אותה כתובת '%(url)s' כמו לדף הנוכחי." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "אופציונלי. אם יסופק, יתווסף אוטומטית בתוך פלאגין טקסט חדש." + +msgid "Provide a title for the new page." +msgstr "תן כותרת לדף החדש" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "השאר ריק עבור slug אוטומטי, או דרוס לפי הצורך." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "לא ניתן ליצור slug אוטומטית. אנא ספק אחד באופן ידני." + +msgid "Please provide a valid slug." +msgstr "אנא ספק slug חוקי." + +msgid "You don't have the permissions required to add a page." +msgstr "אין לך את ההרשאות הנדרשות להוספת דף." + +msgid "ID" +msgstr "מזהה" + +msgid "position" +msgstr "מיקום" + +msgid "language" +msgstr "שפה" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "תאריך יצירה" + +msgid "can edit" +msgstr "יכול לערוך" + +msgid "can add" +msgstr "יכול להוסיף" + +msgid "can delete" +msgstr "יכול למחוק" + +msgid "can change advanced settings" +msgstr "יכול לשנות הגדרות מתקדמות" + +msgid "can publish" +msgstr "יכול לפרסם" + +msgid "can change permissions" +msgstr "יכול לשנות הרשאות" + +msgid "can move" +msgstr "יכול להעביר" + +msgid "view restricted" +msgstr "צפייה מוגבלת" + +msgid "can recover pages" +msgstr "יכול לשחזר דפים" + +msgid "group" +msgstr "קבוצה" + +msgid "sites" +msgstr "אתרים" + +msgid "created by" +msgstr "נוצר על ידי" + +msgid "changed by" +msgstr "שונה על ידי" + +msgid "publication date" +msgstr "תאריך פובלקציה" + +msgid "publication end date" +msgstr "תאריך אחרון לפובליקציה" + +msgid "in navigation" +msgstr "בניווט" + +msgid "soft root" +msgstr "שורש רך" + +msgid "id" +msgstr "מזהה" + +msgid "attached menu" +msgstr "תפריט מצורף" + +msgid "template" +msgstr "תבנית" + +msgid "login required" +msgstr "נדרשת התחברות" + +msgid "application" +msgstr "יישום" + +msgid "application instance name" +msgstr "שם מופע היישום" + +msgid "site" +msgstr "אתר" + +msgid "Grant on" +msgstr "הענק על" + +msgid "page" +msgstr "עמוד" + +msgid "no limit set" +msgstr "לא הוגדרה הגבלה" + +msgid "for logged in users only" +msgstr "למשתמשים מחוברים בלבד" + +msgid "for anonymous users only" +msgstr "למשתמשים אנונימיים בלבד" + +msgid "Inherit from parent page" +msgstr "ירש מדף האב" + +msgid "Deny" +msgstr "דחה" + +msgid "Only this website" +msgstr "רק אתר זה" + +msgid "Allow" +msgstr "אפשר" + +msgid "title" +msgstr "כותרת" + +msgid "The default title" +msgstr "כותרת ברירת המחדל" + +msgid "Page Title" +msgstr "כותרת דף" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "משכתב את מה שמוצג בחלק העליון של הדפדפן או בסימניות" + +msgid "Menu Title" +msgstr "כותרת תפריט" + +msgid "Overwrite what is displayed in the menu" +msgstr "שכתב את מה שמוצג בתפריט" + +msgid "Description meta tag" +msgstr "תיאור meta tag" + +msgid "A description of the page used by search engines." +msgstr "התיאור של הדף שבו ישתמשו מנועי החיפוש" + +msgid "redirect" +msgstr "נתב מחדש" + +msgid "Redirects to this URL." +msgstr "מנתב ל-URL הבא" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "כל אבות הקדמון לא יוצגו בניווט" + +msgid "The template used to render the content." +msgstr "התבנית המשמשת לעיבוד התוכן." + +msgid "page content" +msgstr "תוכן דף" + +msgid "page contents" +msgstr "תכני דף" + +msgid "default" +msgstr "ברירת מחדל" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "מזהה ייחודי המשמש עם תג התבנית page_url לקישור לדף זה" + +msgid "Mark this page as a page type" +msgstr "סמן דף זה כסוג דף" + +msgid "pages" +msgstr "דפים" + +msgid "No available title" +msgstr "אין כותרת זמינה" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "נתיב" + +msgid "Current page" +msgstr "עמוד נוכחי" + +msgid "Page children (immediate)" +msgstr "צאצאי דף (ישירים)" + +msgid "Page and children (immediate)" +msgstr "דף וצאצאים (ישירים)" + +msgid "Page descendants" +msgstr "צאצאי דף" + +msgid "Page and descendants" +msgstr "דף וצאצאיו" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "אנא בחר משתמש או קבוצה." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"משתמשים אינם יכולים לפרסם דף בלי ההרשאות לשנות את הדף שהם מנסים למחוק. נדרשת" +" עריכת הרשאות." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"משתמשים אינם יכולים לשנות הגדרות מתקדמות של דף אם אין להם הרשאות לשנות דף. " +"נדרשת עריכת הרשאות." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"משתמשים אינם יכולים לשנות הרשאות של דף אם אין להם הרשאות לשנות את הדף. נדרשת" +" עריכת הרשאות." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"משתמשים אינם יכולים להעביר דף בלי ההרשאות לשנות את הדף. נדרשת עריכת הרשאות." + +msgid "can recover any deleted page" +msgstr "יכול לשחזר כל דף שנמחק" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "אם לא נבחר אף אחד, למשתמש יוענקו הרשאות לכל האתרים." + +msgid "Page global permission" +msgstr "הרשאה גלובלית לדף" + +msgid "Pages global permissions" +msgstr "הרשאות גלובליות לדפים" + +msgid "Page permission" +msgstr "הרשאת דף" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"הוספת הרשאת דף דורשת גם גישה לצאצאים או לצאצאים העקיפים, אחרת היוצר לא יוכל " +"לשנות את הדף שנוסף." + +msgid "User (page)" +msgstr "משתמש (דף)" + +msgid "Users (page)" +msgstr "משתמשים (דף)" + +msgid "User group (page)" +msgstr "קבוצת משתמשים (דף)" + +msgid "User groups (page)" +msgstr "קבוצות משתמשים (דף)" + +msgid "slot" +msgstr "חריץ" + +msgid "width" +msgstr "רוחב" + +msgid "Edit object" +msgstr "ערוך אובייקט" + +msgid "This is an external placeholder" +msgstr "זהו מציין מיקום חיצוני" + +msgid "plugin" +msgstr "פלאגין" + +msgid "plugins" +msgstr "פלאגינים" + +msgid "" +msgstr "<ריק>" + +msgid "The language for the admin interface and toolbar" +msgstr "השפה עבור ממשק הניהול וסרגל הכלים" + +msgid "user setting" +msgstr "הגדרת משתמש" + +msgid "user settings" +msgstr "הגדרות משתמש" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "אפשרויות מתקדמות" + +msgid "Generic" +msgstr "כללי" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" שונה בהצלחה." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "אין הגדרות נוספות עבור פלאגין זה. אנא לחץ על שמירה." + +msgid "Moved" +msgstr "הועבר" + +msgid "Changed" +msgstr "שונה" + +msgid "Deleted" +msgstr "נמחק" + +msgid "Added Page Translation" +msgstr "נוסף תרגום דף" + +msgid "Changed Page Translation" +msgstr "שונה תרגום דף" + +msgid "Deleted Page Translation" +msgstr "נמחק תרגום דף" + +msgid "Added Plugin" +msgstr "נוסף פלאגין" + +msgid "Changed Plugin" +msgstr "שונה פלאגין" + +msgid "Moved Plugin" +msgstr "הועבר פלאגין" + +msgid "Deleted Plugin" +msgstr "נמחק פלאגין" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "הדבק פלאגין" + +msgid "Paste to Placeholder" +msgstr "הדבק למציין מיקום" + +msgid "Added plugins to placeholder from clipboard" +msgstr "נוספו פלאגינים למציין המיקום מלוח הגזירים" + +msgid "Cleared Placeholder" +msgstr "מציין מיקום רוקן" + +msgid "Save" +msgstr "שמור" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "לא ניתן לשנות חלק מהשדות מכיוון שהם תוכן לקריאה בלבד." + +#, python-format +msgid "Log in to administration here." +msgstr "התחבר לניהול כאן." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "כתובת התחברות: %(login_url)s" + +msgid "Username:" +msgstr "שם משתמש:" + +msgid "Password:" +msgstr "סיסמה:" + +msgid "Add a page" +msgstr "הוסף דף" + +msgid "Change a page" +msgstr "שנה דף" + +msgid "Home" +msgstr "עמוד בית" + +msgid "View on site" +msgstr "הצג באתר" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "אנא תקן את השגיאה שלהלן." +msgstr[1] "אנא תקן את שתי השגיאות שלהלן." +msgstr[2] "אנא תקן את השגיאות שלהלן." + +msgid "All permissions" +msgstr "כל ההרשאות" + +msgid "Loading..." +msgstr "בטעינה..." + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "כן, אני בטוח" + +msgid "No, take me back" +msgstr "לא, החזר אותי" + +msgid "Summary" +msgstr "סיכום" + +msgid "User" +msgstr "משתמש" + +msgid "Group" +msgstr "קבוצה" + +msgid "Can edit" +msgstr "יכול לערוך" + +msgid "Can add" +msgstr "יכול להוסיף" + +msgid "Can delete" +msgstr "יכול למחוק" + +msgid "Can publish" +msgstr "יכול לפרסם" + +msgid "Can change permissions" +msgstr "יכול לשנות הרשאות" + +msgid "Can move" +msgstr "יכול להזיז" + +msgid "Can view" +msgstr "יכול לראות" + +msgid "(global)" +msgstr "(גלובלי)" + +msgid "(current)" +msgstr "(נוכחי)" + +msgid "Page doesn't inherit any permissions." +msgstr "הדף לא יורש הרשאות." + +msgid "Edit model" +msgstr "ערוך מודל" + +msgid "Save as new" +msgstr "שמור בשם" + +msgid "Save and add another" +msgstr "שמור והוסף עוד" + +msgid "Copy" +msgstr "העתק" + +msgid "Cut" +msgstr "גזור" + +msgid "Paste" +msgstr "הדבק" + +msgid "Set as home" +msgstr "הגדר כדף בית" + +msgid "is restricted" +msgstr "מוגבל" + +msgid "last change by" +msgstr "לאחרונה שונה על ידי" + +msgid "last change on" +msgstr "השינוי האחרון בתאריך" + +msgid "meta" +msgstr "מטא" + +msgid "List of pages" +msgstr "רשימת עמודים" + +msgid "Search" +msgstr "חפש" + +msgid "Page Tree" +msgstr "עץ הדפים" + +msgid "Reset filter" +msgstr "אפס מסנן" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" שחזר %(name)s שנמחק\n" +" " + +msgid "Main Navigation" +msgstr "ניווט ראשי" + +msgid "Options" +msgstr "אפשרויות" + +msgid "Successfully moved" +msgstr "הועבר בהצלחה" + +msgid "Changes within the tree might require a refresh." +msgstr "שינויים בתוך העץ עשויים לדרוש רענון." + +msgid "Error:" +msgstr "שגיאה:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"לא ניתן להעתיק דף זה מכיוון שמצורף אליו יישום. עיין בהגדרות המתקדמות של הדף " +"לניהול apphooks." + +msgid "Are you sure you want to § this page?" +msgstr "האם אתה בטוח שברצונך ל-§ דף זה?" + +msgid "Reload" +msgstr "טען מחדש" + +msgid "New node" +msgstr "צומת חדש" + +msgid "nodes" +msgstr "צמתים" + +msgid "View" +msgstr "הצג" + +msgid "Menu" +msgstr "תפריט" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" אין עדיין %(object)s.\n" +"
\n" +"הוסף %(object)s כעת.\n" +" " + +msgid "Copy options" +msgstr "העתק הגדרות" + +msgid "Choose copy options" +msgstr "בחר אפשרויות העתקה" + +msgid "Close" +msgstr "סגור" + +msgid "Legend" +msgstr "מקרא" + +msgid "In menu" +msgstr "בתפריט" + +msgid "Not in menu" +msgstr "לא בתפריט" + +msgid "View page" +msgstr "הצג דף" + +msgid "Softroot" +msgstr "שורש רך" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "יישום: %(apphook)s" + +msgid "in menu" +msgstr "בתפריט" + +msgid "not in menu" +msgstr "לא בתפריט" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "הגדרות דף (לחיצת SHIFT להגדרות מתקדמות)" + +msgid "Permissions" +msgstr "הרשאות" + +msgid "inherited" +msgstr "בירושה" + +msgid "This page has no preview!" +msgstr "לדף זה אין תצוגה מקדימה!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "ייתכן שה-apphook המצורף אינו מספק תוכן עבור השורש שלו." + +msgid "It is being redirected to:" +msgstr "מתבצעת הפניה אל:" + +msgid "Clipboard" +msgstr "לוח גזירים" + +msgid "Add plugin" +msgstr "הוסף פלאגין" + +msgid "Copy all" +msgstr "העתק הכול" + +msgid "Copy from" +msgstr "העתק מ-" + +msgid "Empty all" +msgstr "רוקן הכול" + +msgid "Filter plugins..." +msgstr "סנן פלאגינים..." + +msgid "Expand all" +msgstr "הרחב הכול" + +msgid "Collapse all" +msgstr "כווץ הכול" + +msgid "You cannot add plugins to this plugin." +msgstr "לא ניתן להוסיף פלאגינים לפלאגין זה." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "לא ניתן להעביר או לערוך פלאגין זה מחוץ לאב שלו" + +msgid "Clipboard is empty." +msgstr "לוח הגזירים ריק." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "פלאגין זה אינו מאפשר פלאגינים מסוג זה כפלאגינים מקוננים." + +msgid "This plugin cannot have nested plugins." +msgstr "לפלאגין זה לא יכולים להיות פלאגינים מקוננים." + +msgid "Highlight" +msgstr "הדגש" + +msgid "Available plugins" +msgstr "פלאגינים זמינים" + +msgid "Toggle structure" +msgstr "החלף מבנה" + +msgid "Login" +msgstr "התחברות" + +msgid "Add plugin to" +msgstr "הוסף פלאגין אל" + +msgid "More" +msgstr "עוד" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"גרסת פיתוח המשתמשת ב-django CMS %(cms_version)s, Django %(django_version)s, " +"Python %(python_version)s" + +msgid "Cancel" +msgstr "ביטול" + +msgid "The following error occurred:" +msgstr "אירעה השגיאה הבאה:" + +msgid "Action successful." +msgstr "הפעולה הצליחה." + +msgid "Are you sure you want to delete this plugin?" +msgstr "האם אתה בטוח שברצונך למחוק את התוסף הזה?" + +msgid "Are you sure you want to publish this page?" +msgstr "האם אתה בטוח שברצונך לפרסם דף זה?" + +msgid "Plugin will be added here" +msgstr "הפלאגין יתווסף כאן" + +msgid "You have unsaved changes." +msgstr "ישנם שינוים שלא נשמרו." + +msgid "Loading" +msgstr "טוען" + +msgid "Are you sure you want to abandon these changes?" +msgstr "האם אתה בטוח שברצונך לנטוש שינויים אלה?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "לא ניתן היה לטעון את הטופס. אנא בדוק שהשרת פועל כראוי." + +msgid "Most used" +msgstr "הנפוצים ביותר" + +msgid "Shortcuts" +msgstr "קיצורי דרך" + +msgid "The page was changed in the meantime, reloading..." +msgstr "הדף שונה בינתיים, טוען מחדש..." + +msgid "CMS-wide Shortcuts" +msgstr "קיצורי דרך בכל ה-CMS" + +msgid "Bring up this help dialog" +msgstr "הצג את דיאלוג העזרה הזה" + +msgid "Close/cancel" +msgstr "סגור/בטל" + +msgid "Toggle structure mode" +msgstr "החלף מצב מבנה" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "החלף מצב מבנה והדגש את הפלאגין שמעליו מרחפים" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "התמקד בסרגל הכלים" + +msgid "Focus on placeholders" +msgstr "התמקד במצייני המיקום" + +msgid "Move to next/previous element" +msgstr "עבור לאלמנט הבא/הקודם" + +msgid "Focus on plugins of placeholder" +msgstr "התמקד בפלאגינים של מציין המיקום" + +msgid "Edit plugin" +msgstr "ערוך תוסף" + +msgid "Open actions menu" +msgstr "פתח תפריט פעולות" + +msgid "Expand/collapse" +msgstr "הרחב/כווץ" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"ההתחברות נכשלה. אנא בדוק את פרטי הכניסה שלך ונסה שוב." + +msgid "Double-click to edit" +msgstr "לחיצה כפולה לעריכה" + +msgid "Tap to edit" +msgstr "הקש לעריכה" + +msgid "Click to go back" +msgstr "לחץ כדי לחזור אחורה" + +msgid "Click to go forward" +msgstr "לחץ כדי להתקדם" + +msgid "Minimize" +msgstr "מזער" + +msgid "Maximize" +msgstr "הגדל" + +msgid "Placeholder not editable" +msgstr "מציין המיקום אינו ניתן לעריכה" + +msgid "Drop a plugin here" +msgstr "שחרר כאן פלאגין" + +msgid "Welcome to your new django CMS installation!" +msgstr "ברוך הבא להתקנת django CMS החדשה שלך!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "גרסה %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "בוא נבנה יחד משהו נהדר!" + +msgid "Please log in" +msgstr "אנא התחבר" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" הוסף את הדף הראשון שלך\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

סיוע במימון

\n" +"

\n" +"המימון שלך מועיל ישירות למוצר, בעיקר באמצעות\n" +"תוכנית העמיתים של django CMS!\n" +"

\n" +"

\n" +"דרך מהירה עבורך או עבור הארגון שלך לתרום היא דרך\n" +"Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

הצטרפו אלינו

\n" +"

\n" +"עמותת django CMS היא ארגון ללא מטרות רווח שמממן ומכוון את פיתוחו של\n" +"django CMS.\n" +"

\n" +"

\n" +"תוכלו להצטרף הן כיחיד והן כארגון.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

תרומה

\n" +"\n" +" " + +msgid "Installation Notes" +msgstr "הערות התקנה" + +msgid "Support" +msgstr "תמיכה" + +msgid "Documentation" +msgstr "תיעוד" + +msgid "User guide" +msgstr "מדריך למשתמש" + +msgid "Give back" +msgstr "תרום בחזרה" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

אם אינך רואה את הלוגו של django CMS למעלה, ודא\n" +"שקישרת את התיקייה static/cms לקבצים הסטטיים שלך.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

אתה רואה הודעה זו מכיוון שיש לך\n" +"DEBUG = True בקובץ ההגדרות של django ועדיין\n" +"לא הוספת אף דף.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "ברוך הבא ל-django CMS" + +msgid "Add Another" +msgstr "הוסף עוד" + +msgid "Back" +msgstr "חזרה" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "אנא בחר אפשרות מלמטה כדי להמשיך לשלב הבא." + +msgid "Next" +msgstr "הבא" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "לא ידוע" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "הדף לא נמצא ב- %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"תג תבנית לא הצליח למצוא את הדף עם ארגומנטי החיפוש `%(page_lookup)s\n" +"`. כתובת הבקשה הייתה: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "שני עמודות" + +msgid "Three columns" +msgstr "שלושה עמודות" + +msgid "username" +msgstr "שם משתמש" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "חובה. 300 תווים או פחות. אותיות, מספרים והתווים @/./+/-/_" + +msgid "Enter a valid username." +msgstr "הכנס שם משתמש חוקי." + +msgid "email address" +msgstr "כתובת אימייל" + +msgid "staff status" +msgstr "סטטוס צוות" + +msgid "Designates whether the user can log into this admin site." +msgstr "מציין אם המשתמש יכול להתחבר לאתר ניהול זה." + +msgid "active" +msgstr "פעיל" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"מציין אם יש להתייחס למשתמש זה כפעיל. בטל את הבחירה במקום למחוק חשבונות." + +msgid "users" +msgstr "משתמשים" + +msgid "Title Extension" +msgstr "הרחבת כותרת" + +msgid "Page Extension" +msgstr "הרחבת דף" + +msgid "object ID" +msgstr "מזהה אובייקט" + +msgid "Example1 App" +msgstr "אפליקציית Example1" + +msgid "MultilingualExample1 App" +msgstr "אפליקציית MultilingualExample1" + +msgid "Example1" +msgstr "דוגמא1" + +msgid "Examples" +msgstr "דוגמאות" + +msgid "Extra Context" +msgstr "תוכן נוסף" + +msgid "Articles" +msgstr "מאמרים" + +msgid "Sample App" +msgstr "אפליקציה לדוגמה" + +msgid "Sample App with config" +msgstr "אפליקציה לדוגמה עם תצורה" + +msgid "Sample App with excluded permissions" +msgstr "אפליקציה לדוגמה עם הרשאות מוחרגות" + +msgid "Sample App 2" +msgstr "אפליקציה לדוגמה 2" + +msgid "Sample App 3" +msgstr "אפליקציה לדוגמה 2" + +msgid "Sample App Without Landing Page" +msgstr "אפליקציה לדוגמה ללא דף נחיתה" + +msgid "Namespaced App" +msgstr "אפליקציה עם מרחב שמות" + +msgid "Parent app" +msgstr "אפליקציית אב" + +msgid "Child app" +msgstr "אפליקציית צאצא" + +msgid "Variable urls-menus App" +msgstr "אפליקציית urls-menus משתנה" + +msgid "sample root page" +msgstr "דף שורש לדוגמה" + +msgid "sample settings page" +msgstr "דף הגדרות לדוגמה" + +msgid "sample account page" +msgstr "דף חשבון לדוגמה" + +msgid "sample my profile page" +msgstr "דף הפרופיל שלי לדוגמה" + +msgid "Static Menu" +msgstr "תפריט סטטי" + +msgid "Static Menu2" +msgstr "תפריט סטטי 2" + +msgid "Static Menu3" +msgstr "תפריט סטטי 3" + +msgid "Static Menu4" +msgstr "תפריט סטטי" + +msgid "Category" +msgstr "קטגוריה" + +msgid "Categories" +msgstr "קטגוריות" + +msgid "Add Category" +msgstr "הוסף קטגוריה" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "שנה קטגוריה" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "תודה שהקדשת זמן איכות לאתר היום." + +msgid "Inherit the template of the nearest ancestor" +msgstr "ירש את התבנית של האב הקרוב ביותר" + +msgid "UserSettings" +msgstr "הגדרות משתמש" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "הוסף פלאגין למציין המיקום \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "הוסף פלאגין אל %(plugin_name)s" + +msgid "Single placeholder" +msgstr "מציין מיקום יחיד" + +msgid "CMS - your user account was created." +msgstr "CMS - חשבון המשתמש שלך נוצר." + +msgid "CMS - your user account was changed." +msgstr "CMS - חשבון המשתמש שלך השתנה." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "למציין מיקום זה כבר יש את המספר המרבי של פלאגינים (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"למציין מיקום זה כבר יש את המספר המרבי (%(limit)s) של פלאגיני %(plugin_name)s" +" המותרים." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "לא ניתן למצוא את מודול CMS_REQUEST_IP_RESOLVER שצוין: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"לא ניתן למצוא את פונקציית CMS_REQUEST_IP_RESOLVER שצוינה: \"{0}\" במודול " +"\"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "צור מופע %s חדש." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "אשף כבר נרשם עבור המודל: %s" diff --git a/cms/locale/he/LC_MESSAGES/djangojs.po b/cms/locale/he/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..b001961f --- /dev/null +++ b/cms/locale/he/LC_MESSAGES/djangojs.po @@ -0,0 +1,26 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Daniel Braun , 2013 +# Daniel Braun , 2013 +# Fishfur A Banter , 2016 +# Fishfur A Banter , 2016 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Fishfur A Banter , 2016\n" +"Language-Team: Hebrew (http://app.transifex.com/divio/django-cms/language/he/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: he\n" +"Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "האם אתה בטוח שברצונך לשנות כרטיסיות מבלי לשמור את העמוד?" diff --git a/cms/locale/hi/LC_MESSAGES/django.po b/cms/locale/hi/LC_MESSAGES/django.po new file mode 100644 index 00000000..a35e776b --- /dev/null +++ b/cms/locale/hi/LC_MESSAGES/django.po @@ -0,0 +1,1751 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Hindi (https://app.transifex.com/divio/teams/58664/hi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "सब" + +msgid "Copy permissions" +msgstr "अनुमतियाँ प्रतिलिपि करें" + +msgid "Slug" +msgstr "स्लग" + +msgid "The part of the title that is used in the URL" +msgstr "शीर्षक है कि URL में प्रयोग किया जाता है का हिस्सा" + +msgid "Page type" +msgstr "पृष्ठ प्रकार" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "पृष्ठ प्रकार" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "अधिलेखित यूआरएल" + +msgid "Keep this field empty if standard path should be used." +msgstr "इस क्षेत्र खाली रखें अगर मानक पथ प्रयोग किया जाना चाहिए." + +msgid "Start typing..." +msgstr "टाइप करना शुरू करें..." + +msgid "menu visibility" +msgstr "मेनू दृश्यता" + +msgid "limit when this page is visible in the menu" +msgstr "सीमित करें कि यह पृष्ठ मेनू में कब दिखाई दे" + +msgid "X Frame Options" +msgstr "X फ्रेम विकल्प" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "क्या यह पृष्ठ अन्य पृष्ठों या वेबसाइटों में एम्बेड किया जा सकता है।" + +msgid "URL options" +msgstr "URL विकल्प" + +msgid "Menu options" +msgstr "मेनू विकल्प" + +msgid "Headers" +msgstr "हेडर" + +msgid "Application" +msgstr "आवेदन" + +msgid "Hook application to this page." +msgstr "हुक इस पृष्ठ पर आवेदन." + +msgid "Application configurations" +msgstr "अनुप्रयोग कॉन्फ़िगरेशन" + +msgid "A page with this reverse URL id exists already." +msgstr "इस रिवर्स यूआरएल आईडी के साथ एक पृष्ठ पहले से ही मौजूद है." + +msgid "Invalid application config value" +msgstr "अमान्य अनुप्रयोग कॉन्फ़िग मान" + +msgid "An application instance using this configuration already exists." +msgstr "" +"इस कॉन्फ़िगरेशन का उपयोग करने वाला एक अनुप्रयोग इंस्टेंस पहले से मौजूद है।" + +msgid "An application instance with this name already exists." +msgstr "इस नाम के साथ एक अनुप्रयोग इंस्टेंस पहले से मौजूद है।" + +msgid "You can't move the home page inside another page" +msgstr "आप होम पृष्ठ को किसी अन्य पृष्ठ के अंदर नहीं ले जा सकते" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"एक ही पृष्ठ स्तर पर समान स्लग वाले दो पृष्ठ नहीं हो सकते। पुनः ले जाने का " +"प्रयास करने से पहले कृपया किसी एक पृष्ठ का स्लग बदलें।" + +msgid "Yes" +msgstr "हाँ" + +msgid "No" +msgstr "नहीं" + +msgid "user" +msgstr "उपयोगकर्ता" + +msgid "can_view" +msgstr "देख सकते हैं" + +msgid "Add" +msgstr "जोड़ना" + +msgid "Change" +msgstr "बदलना" + +msgid "Delete" +msgstr "मिटाना" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"उपयोगकर्ता बनाए गए पृष्ठ को बदलने की अनुमति के बिना पृष्ठ नहीं बना सकते। " +"संपादन अनुमति आवश्यक है।" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"उपयोगकर्ता पृष्ठ को बदलने की अनुमति के बिना पृष्ठ हटा नहीं सकते। संपादन " +"अनुमति आवश्यक है।" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"उपयोगकर्ता पृष्ठ को बदलने की अनुमति के बिना पृष्ठ अनुमतियाँ सेट नहीं कर " +"सकते। संपादन अनुमति आवश्यक है।" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"उपयोगकर्ता पृष्ठ को बदलने की अनुमति के बिना पृष्ठ अनुमतियाँ हटा नहीं सकते। " +"संपादन अनुमति आवश्यक है।" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"उपयोगकर्ता बनाई गई अनुमति को बदलने की अनुमति के बिना पृष्ठ अनुमतियाँ नहीं " +"बना सकते। संपादन अनुमति आवश्यक है।" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"उपयोगकर्ता अनुमतियाँ बदलने की अनुमति के बिना पृष्ठ अनुमतियाँ हटा नहीं सकते। " +"संपादन अनुमति आवश्यक है।" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "अमान्य प्लगइन प्रकार '%s'" + +msgid "Language must be set to a supported language!" +msgstr "भाषा एक समर्थित भाषा के लिए सेट किया जाना चाहिए!" + +msgid "Parent plugin language must be same as language!" +msgstr "मूल प्लगइन की भाषा भाषा के समान होनी चाहिए!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "मूल प्लगइन का प्लेसहोल्डर प्लेसहोल्डर के समान होना चाहिए!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "प्लगइन स्थिति %(position)d से अधिक होनी चाहिए" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "उन्नत सेटिंग्स" + +msgid "The page is not eligible to be home." +msgstr "यह पृष्ठ होम बनने के योग्य नहीं है।" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr " %(name)s प्राथमिक कुंजी वस्तु के साथ एस %(key)r आर मौजूद नहीं है." + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"त्रुटि! आपके पास इस पृष्ठ को ले जाने की अनुमति नहीं है। कृपया पृष्ठ को पुनः " +"लोड करें" + +msgid "Error! You don't have permissions to copy this page." +msgstr "त्रुटि! आपके पास इस पृष्ठ की प्रतिलिपि बनाने की अनुमति नहीं है।" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"त्रुटि! जिस पृष्ठ को आप चिपका रहे हैं, वह लक्ष्य साइट द्वारा कॉन्फ़िगर की गई" +" किसी भी भाषा में अनुवादित नहीं है।" + +msgid "You do not have permission to edit this page" +msgstr "आपके पास इस पृष्ठ को संपादित करने की अनुमति नहीं है" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(इसे बदलने के लिए, पहले इस पृष्ठ के वर्तमान में प्रकाशित संस्करण को " +"अप्रकाशित करें)" + +msgid "Add Translation" +msgstr "अनुवाद जोड़ें" + +msgid "Add Page Copy" +msgstr "पृष्ठ प्रतिलिपि जोड़ें" + +msgid "New sub page" +msgstr "नया उप पृष्ठ" + +msgid "New page" +msgstr "नया पृष्ठ" + +msgid "Database error" +msgstr "डेटाबेस त्रुटि" + +msgid "Template not valid" +msgstr "टेम्पलेट मान्य नहीं है" + +msgid "Placeholder selection not valid" +msgstr "प्लेसहोल्डर चयन मान्य नहीं है" + +msgid "The template was successfully changed" +msgstr "टेम्पलेट सफलतापूर्वक बदल दिया गया" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "लक्ष्य भाषा में प्लेसहोल्डर '%s' मौजूद नहीं है" + +msgid "You do not have permission to copy these plugins." +msgstr "आपके पास इन प्लगइन्स की प्रतिलिपि बनाने की अनुमति नहीं है।" + +msgid "You do not have permission to delete this page" +msgstr "आपके पास इस पृष्ठ को हटाने की अनुमति नहीं है" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "शीर्षक और plugins भाषा %(language)s के साथ नष्ट कर दिया गया" + +msgid "Public content" +msgstr "सार्वजनिक सामग्री" + +msgid "Empty" +msgstr "खाली" + +msgid "Create Content" +msgstr "सामग्री बनाएँ" + +msgid "View restriction" +msgstr "देखने की पाबंदी" + +msgid "View restrictions" +msgstr "देखने की पाबंदियाँ" + +#, python-format +msgid "Field %s not found" +msgstr "फ़ील्ड %s नहीं मिला" + +msgid "You do not have permission to edit this item" +msgstr "आपके पास इस आइटम को संपादित करने की अनुमति नहीं है" + +msgid "You do not have permission to add a plugin" +msgstr "आपके पास प्लगइन जोड़ने की अनुमति नहीं है" + +msgid "You do not have permission to copy this placeholder." +msgstr "आपके पास इस प्लेसहोल्डर की प्रतिलिपि बनाने की अनुमति नहीं है।" + +msgid "Plugin not found" +msgstr "प्लगइन नहीं मिला" + +msgid "You do not have permission to edit this plugin" +msgstr "आपके पास इस प्लगइन को संपादित करने की अनुमति नहीं है" + +msgid "You have no permission to paste this plugin" +msgstr "आपके पास इस प्लगइन को चिपकाने की अनुमति नहीं है" + +msgid "You have no permission to paste this placeholder" +msgstr "आपके पास इस प्लेसहोल्डर को चिपकाने की अनुमति नहीं है" + +msgid "You have no permission to move this plugin" +msgstr "आपके पास इस प्लगइन को ले जाने की अनुमति नहीं है" + +msgid "You have no permission to cut this plugin" +msgstr "आपके पास इस प्लगइन को काटने की अनुमति नहीं है" + +msgid "You do not have permission to delete this plugin" +msgstr "आपके पास इस प्लगइन को हटाने की अनुमति नहीं है" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "%(name)s प्लगइन \"%(obj)s\" सफलतापूर्वक हटा दिया गया।" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "%(name)s को हटाया नहीं जा सकता" + +msgid "Are you sure?" +msgstr "क्या आप सुनिश्चित हैं?" + +msgid "You do not have permission to clear this placeholder" +msgstr "आपके पास इस प्लेसहोल्डर को साफ़ करने की अनुमति नहीं है" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "प्लेसहोल्डर \"%(obj)s\" सफलतापूर्वक साफ़ कर दिया गया।" + +msgid "placeholder" +msgstr "प्लेसहोल्डर" + +msgid "Page permissions" +msgstr "पृष्ठ अनुमति" + +msgid "User & Group permissions" +msgstr "उपयोगकर्ता और समूह की अनुमति" + +msgid "Page permissions management" +msgstr "पृष्ठ अनुमति प्रबंधन" + +msgid "Actions" +msgstr "क्रियाएँ" + +msgid "Empty content" +msgstr "खाली सामग्री" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "%(object_name)s गुण" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "नया %(object_name)s जोड़ें" + +msgid "Add content" +msgstr "सामग्री जोड़ें" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"वर्तमान भाषा की सामग्री बदल दी गई है। फ़ॉर्म पर लौटने और परिवर्तन सहेजने के " +"लिए \"रद्द करें\" पर क्लिक करें। परिवर्तन हटाने के लिए \"ठीक है\" पर क्लिक " +"करें।" + +#, python-format +msgid "Add %(language)s content" +msgstr "%(language)s सामग्री जोड़ें" + +msgid "Preview" +msgstr "पूर्वावलोकन" + +msgid "Settings" +msgstr "सेटिंग्स" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"अमान्य भाषा %(value)s। यह फ़ॉर्म संसाधित नहीं किया जा सकता। भाषा बदलकर " +"प्रयास करें।" + +msgid "" +msgstr "<अनिर्दिष्ट>" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "कोई पंजीकृत apphook \"%r\" नहीं मिला" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "प्लेसहोल्डर" + +msgid "Create" +msgstr "बनाएँ" + +msgid "Edit" +msgstr "संपादित करें" + +msgid "Structure" +msgstr "संरचना" + +msgid "Content" +msgstr "सामग्री" + +msgid "Sites" +msgstr "साइटें" + +msgid "Admin Sites" +msgstr "व्यवस्थापक साइटें" + +msgid "Administration" +msgstr "प्रशासन" + +msgid "User settings" +msgstr "उपयोगकर्ता सेटिंग्स" + +msgid "Clipboard..." +msgstr "क्लिपबोर्ड..." + +msgid "Clear clipboard" +msgstr "क्लिपबोर्ड साफ़ करें" + +msgid "Disable toolbar" +msgstr "टूलबार अक्षम करें" + +msgid "Shortcuts..." +msgstr "शॉर्टकट..." + +msgid "Users" +msgstr "उपयोगकर्ता" + +#, python-format +msgid "Logout %s" +msgstr "%s लॉगआउट" + +msgid "Logout" +msgstr "लॉगआउट" + +msgid "Language" +msgstr "भाषा" + +msgid "Delete Translation" +msgstr "अनुवाद हटाएँ" + +msgid "Copy all plugins" +msgstr "सभी प्लगइन्स की प्रतिलिपि बनाएँ" + +#, python-format +msgid "from %s" +msgstr "%s से" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "क्या आप वाकई %s से सभी प्लगइन्स की प्रतिलिपि बनाना चाहते हैं?" + +msgid "Pages" +msgstr "पृष्ठ" + +msgid "Page" +msgstr "पृष्ठ" + +msgid "Create Page" +msgstr "पृष्ठ बनाएँ" + +msgid "New Page" +msgstr "नया पृष्ठ" + +msgid "New Sub Page" +msgstr "नया उप पृष्ठ" + +msgid "Duplicate this Page" +msgstr "इस पृष्ठ की प्रतिलिपि बनाएँ" + +msgid "Page settings" +msgstr "पृष्ठ सेटिंग्स" + +msgid "Advanced settings" +msgstr "उन्नत सेटिंग्स" + +msgid "Templates" +msgstr "टेम्पलेट" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "नेविगेशन में छिपाएँ" + +msgid "Display in navigation" +msgstr "नेविगेशन में दिखाएँ" + +msgid "Delete page" +msgstr "हटाएँ पृष्ठ" + +msgid "Create a new page next to the current page." +msgstr "वर्तमान पृष्ठ के बगल में एक नया पृष्ठ बनाएँ।" + +msgid "Create a page below the current page." +msgstr "वर्तमान पृष्ठ के नीचे एक पृष्ठ बनाएँ।" + +msgid "Select a valid site" +msgstr "एक मान्य साइट चुनें" + +msgid "Select a valid page" +msgstr "एक मान्य पृष्ठ चुनें" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"पृष्ठ %(conflict_page)s का वही url '%(url)s' है जो वर्तमान पृष्ठ " +"\"%(instance)s\" का है।" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"पृष्ठ %(conflict_page)s का वही url '%(url)s' है जो वर्तमान पृष्ठ का है।" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"वैकल्पिक। यदि दिया गया, तो यह स्वतः एक नए टेक्स्ट प्लगइन में जोड़ दिया " +"जाएगा।" + +msgid "Provide a title for the new page." +msgstr "नए पृष्ठ के लिए एक शीर्षक प्रदान करें।" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "स्वचालित स्लग के लिए खाली छोड़ें, या आवश्यकतानुसार अधिलेखित करें।" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "स्लग स्वतः नहीं बनाया जा सकता। कृपया मैन्युअल रूप से एक प्रदान करें।" + +msgid "Please provide a valid slug." +msgstr "कृपया एक मान्य स्लग प्रदान करें।" + +msgid "You don't have the permissions required to add a page." +msgstr "आपके पास पृष्ठ जोड़ने के लिए आवश्यक अनुमतियाँ नहीं हैं।" + +msgid "ID" +msgstr "आईडी" + +msgid "position" +msgstr "स्थिति" + +msgid "language" +msgstr "भाषा" + +msgid "plugin_name" +msgstr "प्लगइन_नाम" + +msgid "creation date" +msgstr "निर्माण तिथि" + +msgid "can edit" +msgstr "संपादित कर सकते हैं" + +msgid "can add" +msgstr "जोड़ सकते हैं" + +msgid "can delete" +msgstr "नष्ट कर सकते हैं" + +msgid "can change advanced settings" +msgstr "उन्नत सेटिंग्स बदल सकते हैं" + +msgid "can publish" +msgstr "प्रकाशित कर सकते हैं" + +msgid "can change permissions" +msgstr "अनुमति को बदल सकते हैं" + +msgid "can move" +msgstr "कर सकते हैं हिलना" + +msgid "view restricted" +msgstr "देखना प्रतिबंधित" + +msgid "can recover pages" +msgstr "पृष्ठों को ठीक कर सकते हैं" + +msgid "group" +msgstr "समूह" + +msgid "sites" +msgstr "साइटें" + +msgid "created by" +msgstr "द्वारा निर्मित" + +msgid "changed by" +msgstr "बदल द्वारा" + +msgid "publication date" +msgstr "प्रकाशन तिथि" + +msgid "publication end date" +msgstr "प्रकाशन समाप्ति तिथि" + +msgid "in navigation" +msgstr "नेविगेशन में" + +msgid "soft root" +msgstr "नरम जड़" + +msgid "id" +msgstr "आईडी" + +msgid "attached menu" +msgstr "संलग्न मेनू" + +msgid "template" +msgstr "टेम्पलेट" + +msgid "login required" +msgstr "लॉगिन आवश्यक" + +msgid "application" +msgstr "आवेदन" + +msgid "application instance name" +msgstr "अनुप्रयोग इंस्टेंस नाम" + +msgid "site" +msgstr "साइट" + +msgid "Grant on" +msgstr "अनुदान पर" + +msgid "page" +msgstr "पृष्ठ" + +msgid "no limit set" +msgstr "कोई सीमा निर्धारित नहीं" + +msgid "for logged in users only" +msgstr "केवल लॉग इन किए हुए उपयोगकर्ताओं के लिए" + +msgid "for anonymous users only" +msgstr "केवल अनाम उपयोगकर्ताओं के लिए" + +msgid "Inherit from parent page" +msgstr "मूल पृष्ठ से विरासत में प्राप्त करें" + +msgid "Deny" +msgstr "अस्वीकार करें" + +msgid "Only this website" +msgstr "केवल यह वेबसाइट" + +msgid "Allow" +msgstr "अनुमति दें" + +msgid "title" +msgstr "शीर्षक" + +msgid "The default title" +msgstr "डिफ़ॉल्ट शीर्षक" + +msgid "Page Title" +msgstr "पृष्ठ शीर्षक" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Overwrites आपके ब्राउज़र या बुकमार्क में के शीर्ष पर प्रदर्शित होता है क्या" + +msgid "Menu Title" +msgstr "मेनू का शीर्षक" + +msgid "Overwrite what is displayed in the menu" +msgstr "अधिलेखित मेनू में क्या प्रदर्शित होता है" + +msgid "Description meta tag" +msgstr "विवरण मेटा टैग" + +msgid "A description of the page used by search engines." +msgstr "अल्पविराम से अलग कभी कभी खोज इंजन द्वारा उपयोग खोजशब्दों की एक सूची." + +msgid "redirect" +msgstr "पुनर्निर्देशित" + +msgid "Redirects to this URL." +msgstr "इस URL के लिए पुनर्निर्देश." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "सभी पूर्वजों नेविगेशन में प्रदर्शित नहीं किया जाएगा" + +msgid "The template used to render the content." +msgstr "के लिए सामग्री प्रदान करते थे खाके." + +msgid "page content" +msgstr "पृष्ठ सामग्री" + +msgid "page contents" +msgstr "पृष्ठ सामग्री" + +msgid "default" +msgstr "डिफ़ॉल्ट" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"एक विशिष्ट पहचानकर्ता जो इस पृष्ठ से लिंक करने के लिए page_url टेम्पलेटटैग " +"के साथ उपयोग किया जाता है" + +msgid "Mark this page as a page type" +msgstr "इस पृष्ठ को पृष्ठ प्रकार के रूप में चिह्नित करें" + +msgid "pages" +msgstr "पन्ने" + +msgid "No available title" +msgstr "कोई शीर्षक उपलब्ध नहीं" + +msgid "slug" +msgstr "स्लग" + +msgid "Path" +msgstr "रास्ता" + +msgid "Current page" +msgstr "वर्तमान पृष्ठ" + +msgid "Page children (immediate)" +msgstr "पृष्ठ बच्चों (तत्काल)" + +msgid "Page and children (immediate)" +msgstr "पृष्ठ और बच्चों (तत्काल)" + +msgid "Page descendants" +msgstr "वंश पृष्ठ" + +msgid "Page and descendants" +msgstr "पृष्ठ और वंश" + +msgid "on page level" +msgstr "पृष्ठ स्तर पर" + +msgid "frontend view restriction" +msgstr "फ्रंटएंड देखने की पाबंदी" + +msgid "Please select user or group." +msgstr "कृपया उपयोगकर्ता या समूह चुनें।" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"उपयोगकर्ता पृष्ठ को बदलने की अनुमति के बिना पृष्ठ प्रकाशित नहीं कर सकते। " +"संपादन अनुमति आवश्यक है।" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"उपयोगकर्ता पृष्ठ को बदलने की अनुमति के बिना पृष्ठ की उन्नत सेटिंग्स नहीं बदल" +" सकते। संपादन अनुमति आवश्यक है।" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"उपयोगकर्ता पृष्ठ को बदलने की अनुमति के बिना पृष्ठ अनुमतियाँ नहीं बदल सकते। " +"संपादन अनुमति आवश्यक है।" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"उपयोगकर्ता पृष्ठ को बदलने की अनुमति के बिना पृष्ठ को नहीं ले जा सकते। संपादन" +" अनुमति आवश्यक है।" + +msgid "can recover any deleted page" +msgstr "किसी भी नष्ट पृष्ठ की वसूली कर सकते हैं" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "अगर नहीं चुना, उपयोगकर्ता के सभी साइटों के लिए अनुमति दी गई अमीर." + +msgid "Page global permission" +msgstr "पृष्ठ वैश्विक अनुमति" + +msgid "Pages global permissions" +msgstr "पेज वैश्विक अनुमति" + +msgid "Page permission" +msgstr "पृष्ठ अनुमति" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"पृष्ठ अनुमति जोड़ें भी बच्चों, या वंश का उपयोग करने की आवश्यकता है, अन्यथा " +"पृष्ठ जोड़े अपने निर्माता से नहीं बदला जा सकता है." + +msgid "User (page)" +msgstr "उपयोगकर्ता (पृष्ठ)" + +msgid "Users (page)" +msgstr "पृष्ठ (उपयोगकर्ता)" + +msgid "User group (page)" +msgstr "उपयोगकर्ता समूह (पेज)" + +msgid "User groups (page)" +msgstr "उपयोगकर्ता समूहों (पृष्ठ)" + +msgid "slot" +msgstr "स्थान" + +msgid "width" +msgstr "चौड़ाई" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "<खाली>" + +msgid "The language for the admin interface and toolbar" +msgstr "व्यवस्थापक इंटरफ़ेस और टूलबार के लिए भाषा" + +msgid "user setting" +msgstr "उपयोगकर्ता सेटिंग" + +msgid "user settings" +msgstr "उपयोगकर्ता सेटिंग्स" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "उन्नत विकल्प" + +msgid "Generic" +msgstr "सामान्य" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" सफलतापूर्वक बदल दिया गया।" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "इस प्लगइन के लिए कोई और सेटिंग्स नहीं हैं। कृपया सहेजें दबाएँ।" + +msgid "Moved" +msgstr "स्थानांतरित किया गया" + +msgid "Changed" +msgstr "बदला गया" + +msgid "Deleted" +msgstr "हटाया गया" + +msgid "Added Page Translation" +msgstr "पृष्ठ अनुवाद जोड़ा गया" + +msgid "Changed Page Translation" +msgstr "पृष्ठ अनुवाद बदला गया" + +msgid "Deleted Page Translation" +msgstr "पृष्ठ अनुवाद हटाया गया" + +msgid "Added Plugin" +msgstr "प्लगइन जोड़ा गया" + +msgid "Changed Plugin" +msgstr "प्लगइन बदला गया" + +msgid "Moved Plugin" +msgstr "प्लगइन स्थानांतरित किया गया" + +msgid "Deleted Plugin" +msgstr "प्लगइन हटाया गया" + +msgid "Cut Plugin" +msgstr "प्लगइन काटा गया" + +msgid "Paste Plugin" +msgstr "प्लगइन चिपकाया गया" + +msgid "Paste to Placeholder" +msgstr "प्लेसहोल्डर में चिपकाएँ" + +msgid "Added plugins to placeholder from clipboard" +msgstr "क्लिपबोर्ड से प्लेसहोल्डर में प्लगइन्स जोड़े गए" + +msgid "Cleared Placeholder" +msgstr "प्लेसहोल्डर साफ़ किया गया" + +msgid "Save" +msgstr "बचाना" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "कुछ फ़ील्ड बदले नहीं जा सकते क्योंकि वे केवल-पढ़ने योग्य सामग्री हैं।" + +#, python-format +msgid "Log in to administration here." +msgstr "प्रशासन में यहाँ प्रवेश करें." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "लॉगिन url: %(login_url)s" + +msgid "Username:" +msgstr "प्रयोक्ता नाम:" + +msgid "Password:" +msgstr "पासवर्ड:" + +msgid "Add a page" +msgstr "एक पृष्ठ जोड़ें" + +msgid "Change a page" +msgstr "एक पृष्ठ को बदलें" + +msgid "Home" +msgstr "घर" + +msgid "View on site" +msgstr "देखें साइट पर" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "कृपया नीचे दी गई त्रुटि को ठीक करें।" +msgstr[1] "कृपया नीचे दी गई त्रुटियों को ठीक करें।" + +msgid "All permissions" +msgstr "सभी अनुमतियाँ" + +msgid "Loading..." +msgstr "लोड हो रहा है ..." + +msgid "Save and continue editing" +msgstr "Save और संपादन जारी" + +#, 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 "Yes, I’m sure" +msgstr "हाँ, मुझे यकीन है" + +msgid "No, take me back" +msgstr "नहीं, मुझे वापस ले चलें" + +msgid "Summary" +msgstr "सारांश" + +msgid "User" +msgstr "उपयोगकर्ता" + +msgid "Group" +msgstr "समूह" + +msgid "Can edit" +msgstr "संपादित कर सकते हैं" + +msgid "Can add" +msgstr "जोड़ सकते हैं" + +msgid "Can delete" +msgstr "नष्ट कर सकते हैं" + +msgid "Can publish" +msgstr "प्रकाशित कर सकते हैं" + +msgid "Can change permissions" +msgstr "अनुमतियाँ बदल सकते हैं" + +msgid "Can move" +msgstr "कर सकते हैं हिलना" + +msgid "Can view" +msgstr "देख सकते हैं" + +msgid "(global)" +msgstr "(वैश्विक)" + +msgid "(current)" +msgstr "(वर्तमान)" + +msgid "Page doesn't inherit any permissions." +msgstr "पृष्ठ नहीं किसी अनुमति के वारिस." + +msgid "Edit model" +msgstr "मॉडल संपादित करें" + +msgid "Save as new" +msgstr "नए के रूप में सहेजें" + +msgid "Save and add another" +msgstr "Save और दूसरा जोड़ें" + +msgid "Copy" +msgstr "नकल" + +msgid "Cut" +msgstr "काटना" + +msgid "Paste" +msgstr "चिपकाएँ" + +msgid "Set as home" +msgstr "होम के रूप में सेट करें" + +msgid "is restricted" +msgstr "प्रतिबंधित है" + +msgid "last change by" +msgstr "अंतिम परिवर्तन द्वारा" + +msgid "last change on" +msgstr "अंतिम परिवर्तन तिथि" + +msgid "meta" +msgstr "मेटा" + +msgid "List of pages" +msgstr "पृष्ठों की सूची" + +msgid "Search" +msgstr "खोजें" + +msgid "Page Tree" +msgstr "पृष्ठ वृक्ष" + +msgid "Reset filter" +msgstr "फ़िल्टर रीसेट करें" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" हटाए गए %(name)s को पुनर्स्थापित करें\n" +" " + +msgid "Main Navigation" +msgstr "मुख्य नेविगेशन" + +msgid "Options" +msgstr "विकल्प" + +msgid "Successfully moved" +msgstr "सफलतापूर्वक चला गया" + +msgid "Changes within the tree might require a refresh." +msgstr "वृक्ष के भीतर परिवर्तनों के लिए रिफ़्रेश की आवश्यकता हो सकती है।" + +msgid "Error:" +msgstr "त्रुटि:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"इस पृष्ठ की प्रतिलिपि नहीं बनाई जा सकती क्योंकि इससे एक अनुप्रयोग संलग्न है।" +" apphooks प्रबंधित करने के लिए पृष्ठ की उन्नत सेटिंग्स देखें।" + +msgid "Are you sure you want to § this page?" +msgstr "क्या आप वाकई इस पृष्ठ को § करना चाहते हैं?" + +msgid "Reload" +msgstr "पुनः लोड करें" + +msgid "New node" +msgstr "नया नोड" + +msgid "nodes" +msgstr "नोड्स" + +msgid "View" +msgstr "देखें" + +msgid "Menu" +msgstr "मेनू" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" अभी तक कोई %(object)s नहीं है।\n" +"
\n" +" अभी %(object)s जोड़ें।\n" +" " + +msgid "Copy options" +msgstr "कॉपी विकल्प" + +msgid "Choose copy options" +msgstr "नकल विकल्प चुनें" + +msgid "Close" +msgstr "बंद करें" + +msgid "Legend" +msgstr "संकेत-सूची" + +msgid "In menu" +msgstr "मेनू में" + +msgid "Not in menu" +msgstr "मेनू में नहीं" + +msgid "View page" +msgstr "पृष्ठ देखें" + +msgid "Softroot" +msgstr "सॉफ़्टरूट" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "अनुप्रयोग: %(apphook)s" + +msgid "in menu" +msgstr "मेनू में" + +msgid "not in menu" +msgstr "मेनू में नहीं" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "पृष्ठ सेटिंग्स (उन्नत सेटिंग्स के लिए SHIFT क्लिक करें)" + +msgid "Permissions" +msgstr "अनुमतियाँ" + +msgid "inherited" +msgstr "विरासत में प्राप्त" + +msgid "This page has no preview!" +msgstr "इस पृष्ठ का कोई पूर्वावलोकन नहीं है!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "संभवतः संलग्न apphook अपने रूट के लिए सामग्री प्रदान नहीं करता है।" + +msgid "It is being redirected to:" +msgstr "इसे यहाँ पुनर्निर्देशित किया जा रहा है:" + +msgid "Clipboard" +msgstr "क्लिपबोर्ड" + +msgid "Add plugin" +msgstr "प्लगइन जोड़ें" + +msgid "Copy all" +msgstr "सभी की प्रतिलिपि बनाएँ" + +msgid "Copy from" +msgstr "यहाँ से प्रतिलिपि बनाएँ" + +msgid "Empty all" +msgstr "सभी खाली करें" + +msgid "Filter plugins..." +msgstr "प्लगइन्स फ़िल्टर करें..." + +msgid "Expand all" +msgstr "सभी विस्तृत करें" + +msgid "Collapse all" +msgstr "सभी संक्षिप्त करें" + +msgid "You cannot add plugins to this plugin." +msgstr "आप इस प्लगइन में प्लगइन्स नहीं जोड़ सकते।" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"इस प्लगइन को इसके मूल के बाहर स्थानांतरित या संपादित नहीं किया जा सकता" + +msgid "Clipboard is empty." +msgstr "क्लिपबोर्ड खाली है।" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" +"यह प्लगइन इस प्रकार के प्लगइन्स को नेस्टेड प्लगइन्स के रूप में अनुमति नहीं " +"देता।" + +msgid "This plugin cannot have nested plugins." +msgstr "इस प्लगइन में नेस्टेड प्लगइन्स नहीं हो सकते।" + +msgid "Highlight" +msgstr "हाइलाइट करें" + +msgid "Available plugins" +msgstr "उपलब्ध प्लगइन्स" + +msgid "Toggle structure" +msgstr "संरचना टॉगल करें" + +msgid "Login" +msgstr "लॉगिन" + +msgid "Add plugin to" +msgstr "यहाँ प्लगइन जोड़ें" + +msgid "More" +msgstr "अधिक" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"django CMS %(cms_version)s, Django %(django_version)s, Python " +"%(python_version)s का उपयोग करने वाला विकास संस्करण" + +msgid "Cancel" +msgstr "रद्द करें" + +msgid "The following error occurred:" +msgstr "निम्नलिखित त्रुटि हुई:" + +msgid "Action successful." +msgstr "क्रिया सफल रही।" + +msgid "Are you sure you want to delete this plugin?" +msgstr "क्या आप सुनिश्चित हैं कि आप इस प्लगइन का हटाना चाहते हैं?" + +msgid "Are you sure you want to publish this page?" +msgstr "क्या आप वाकई इस पृष्ठ को प्रकाशित करना चाहते हैं?" + +msgid "Plugin will be added here" +msgstr "प्लगइन यहाँ जोड़ा जाएगा" + +msgid "You have unsaved changes." +msgstr "आपके पास असहेजे गए परिवर्तन हैं।" + +msgid "Loading" +msgstr "लोड हो रहा है" + +msgid "Are you sure you want to abandon these changes?" +msgstr "क्या आप वाकई इन परिवर्तनों को छोड़ना चाहते हैं?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "फ़ॉर्म लोड नहीं हो सका। कृपया जाँचें कि सर्वर सही ढंग से चल रहा है।" + +msgid "Most used" +msgstr "सर्वाधिक उपयोग किया गया" + +msgid "Shortcuts" +msgstr "शॉर्टकट" + +msgid "The page was changed in the meantime, reloading..." +msgstr "इस बीच पृष्ठ बदल दिया गया, पुनः लोड हो रहा है..." + +msgid "CMS-wide Shortcuts" +msgstr "CMS-व्यापी शॉर्टकट" + +msgid "Bring up this help dialog" +msgstr "यह सहायता संवाद लाएँ" + +msgid "Close/cancel" +msgstr "बंद करें/रद्द करें" + +msgid "Toggle structure mode" +msgstr "संरचना मोड टॉगल करें" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "संरचना मोड टॉगल करें और होवर किए गए प्लगइन को हाइलाइट करें" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "टूलबार पर फ़ोकस करें" + +msgid "Focus on placeholders" +msgstr "प्लेसहोल्डर्स पर फ़ोकस करें" + +msgid "Move to next/previous element" +msgstr "अगले/पिछले तत्व पर जाएँ" + +msgid "Focus on plugins of placeholder" +msgstr "प्लेसहोल्डर के प्लगइन्स पर फ़ोकस करें" + +msgid "Edit plugin" +msgstr "प्लगइन संपादित करें" + +msgid "Open actions menu" +msgstr "क्रिया मेनू खोलें" + +msgid "Expand/collapse" +msgstr "विस्तृत करें/संक्षिप्त करें" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"लॉगिन विफल रहा। कृपया अपनी साख जाँचें और पुनः प्रयास करें।" + +msgid "Double-click to edit" +msgstr "संपादित करने के लिए डबल-क्लिक करें" + +msgid "Tap to edit" +msgstr "संपादित करने के लिए टैप करें" + +msgid "Click to go back" +msgstr "पीछे जाने के लिए क्लिक करें" + +msgid "Click to go forward" +msgstr "आगे जाने के लिए क्लिक करें" + +msgid "Minimize" +msgstr "छोटा करें" + +msgid "Maximize" +msgstr "बड़ा करें" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "यहाँ एक प्लगइन छोड़ें" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "संस्करण %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "आइए मिलकर कुछ शानदार बनाएँ!" + +msgid "Please log in" +msgstr "कृपया लॉग इन करें" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" अपना पहला पृष्ठ जोड़ें\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

वित्तपोषण में मदद करें

\n" +"

\n" +" आपका वित्तपोषण सीधे उत्पाद को लाभ पहुँचाता है, मुख्य रूप से\n" +" django CMS फ़ेलोशिप कार्यक्रम के माध्यम से!\n" +"

\n" +"

\n" +" आपके या आपके संगठन के लिए दान करने का एक त्वरित तरीका है\n" +" Github प्रायोजक।\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

हमसे जुड़ें

\n" +"

\n" +" django CMS एसोसिएशन एक गैर-लाभकारी संगठन है जो django CMS के विकास को\n" +" वित्तपोषित और संचालित करता है।\n" +"

\n" +"

\n" +" आप एक व्यक्ति के रूप में या एक\n" +" संगठन के रूप में दोनों तरह से जुड़ सकते हैं।\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

योगदान करें

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "स्थापना नोट्स" + +msgid "Support" +msgstr "समर्थन" + +msgid "Documentation" +msgstr "दस्तावेज़ीकरण" + +msgid "User guide" +msgstr "उपयोगकर्ता मार्गदर्शिका" + +msgid "Give back" +msgstr "वापस दें" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

यदि आपको शीर्ष पर django CMS लोगो दिखाई नहीं देता, तो सुनिश्चित करें\n" +" कि आपने static/cms फ़ोल्डर को अपनी\n" +" स्थिर फ़ाइलों से लिंक किया है।

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

आपको यह संदेश इसलिए दिख रहा है क्योंकि आपकी\n" +" django सेटिंग्स फ़ाइल में DEBUG = True है और\n" +" आपने अभी तक कोई पृष्ठ नहीं जोड़ा है।\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "django CMS में आपका स्वागत है" + +msgid "Add Another" +msgstr "एक और जोड़ें" + +msgid "Back" +msgstr "पीछे" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "अगले चरण पर आगे बढ़ने के लिए कृपया नीचे से एक विकल्प चुनें।" + +msgid "Next" +msgstr "अगला" + +msgid "Select what you would like to create" +msgstr "चुनें कि आप क्या बनाना चाहते हैं" + +msgid "Unknown" +msgstr "अज्ञात" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "%(domain)s पर पृष्ठ नहीं मिला" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"एक टेम्पलेट टैग lookup arguments `%(page_lookup)s\n" +"` के साथ पृष्ठ नहीं ढूँढ सका। अनुरोध का URL था: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "दो स्तंभ" + +msgid "Three columns" +msgstr "तीन स्तंभ" + +msgid "username" +msgstr "उपयोगकर्ता नाम" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "आवश्यक। 300 वर्ण या उससे कम। अक्षर, संख्याएँ और @/./+/-/_ वर्ण" + +msgid "Enter a valid username." +msgstr "एक मान्य उपयोगकर्ता नाम दर्ज करें।" + +msgid "email address" +msgstr "mailto" + +msgid "staff status" +msgstr "स्टाफ़ स्थिति" + +msgid "Designates whether the user can log into this admin site." +msgstr "" +"निर्दिष्ट करता है कि क्या उपयोगकर्ता इस व्यवस्थापक साइट में लॉग इन कर सकता " +"है।" + +msgid "active" +msgstr "सक्रिय" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"निर्दिष्ट करता है कि क्या इस उपयोगकर्ता को सक्रिय माना जाना चाहिए। खातों को " +"हटाने के बजाय इसे अचयनित करें।" + +msgid "users" +msgstr "उपयोगकर्ता" + +msgid "Title Extension" +msgstr "शीर्षक एक्सटेंशन" + +msgid "Page Extension" +msgstr "पृष्ठ एक्सटेंशन" + +msgid "object ID" +msgstr "ऑब्जेक्ट आईडी" + +msgid "Example1 App" +msgstr "Example1 ऐप" + +msgid "MultilingualExample1 App" +msgstr "MultilingualExample1 ऐप" + +msgid "Example1" +msgstr "Example1" + +msgid "Examples" +msgstr "उदाहरण" + +msgid "Extra Context" +msgstr "अतिरिक्त संदर्भ" + +msgid "Articles" +msgstr "लेख" + +msgid "Sample App" +msgstr "नमूना ऐप" + +msgid "Sample App with config" +msgstr "कॉन्फ़िग के साथ नमूना ऐप" + +msgid "Sample App with excluded permissions" +msgstr "बहिष्कृत अनुमतियों के साथ नमूना ऐप" + +msgid "Sample App 2" +msgstr "नमूना ऐप 2" + +msgid "Sample App 3" +msgstr "नमूना ऐप 3" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "नेमस्पेस्ड ऐप" + +msgid "Parent app" +msgstr "मूल ऐप" + +msgid "Child app" +msgstr "चाइल्ड ऐप" + +msgid "Variable urls-menus App" +msgstr "परिवर्तनशील urls-menus ऐप" + +msgid "sample root page" +msgstr "नमूना रूट पृष्ठ" + +msgid "sample settings page" +msgstr "नमूना सेटिंग्स पृष्ठ" + +msgid "sample account page" +msgstr "नमूना खाता पृष्ठ" + +msgid "sample my profile page" +msgstr "नमूना मेरी प्रोफ़ाइल पृष्ठ" + +msgid "Static Menu" +msgstr "स्थिर मेनू" + +msgid "Static Menu2" +msgstr "स्थिर मेनू2" + +msgid "Static Menu3" +msgstr "स्थिर मेनू3" + +msgid "Static Menu4" +msgstr "स्थिर मेनू4" + +msgid "Category" +msgstr "श्रेणी" + +msgid "Categories" +msgstr "श्रेणियाँ" + +msgid "Add Category" +msgstr "श्रेणी जोड़ें" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "श्रेणी बदलें" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "आज वेब साइट के साथ कुछ बेहतरीन समय बिताने के लिए धन्यवाद।" + +msgid "Inherit the template of the nearest ancestor" +msgstr "विरासत में निकटतम पूर्वज का खाका" + +msgid "UserSettings" +msgstr "उपयोगकर्ता सेटिंग्स" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "प्लेसहोल्डर \"%(placeholder_label)s\" में प्लगइन जोड़ें" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "%(plugin_name)s में प्लगइन जोड़ें" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "सीएमएस - आपके उपयोगकर्ता खाते में बनाया गया था." + +msgid "CMS - your user account was changed." +msgstr "सीएमएस - आपके उपयोगकर्ता खाते में बदल गया था." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "इस प्लेसहोल्डर में पहले से ही प्लगइन्स की अधिकतम संख्या (%s) है।" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"इस प्लेसहोल्डर में पहले से ही अनुमत %(plugin_name)s प्लगइन्स की अधिकतम " +"संख्या (%(limit)s) है।" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "निर्दिष्ट CMS_REQUEST_IP_RESOLVER मॉड्यूल नहीं मिल सका: \"{0}\"।" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"मॉड्यूल \"{1}\" में निर्दिष्ट CMS_REQUEST_IP_RESOLVER फ़ंक्शन नहीं मिल सका: " +"\"{0}\"।" + +#, python-format +msgid "Create a new %s instance." +msgstr "एक नया %s इंस्टेंस बनाएँ।" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "मॉडल के लिए एक विज़ार्ड पहले से ही पंजीकृत है: %s" diff --git a/cms/locale/hi/LC_MESSAGES/djangojs.po b/cms/locale/hi/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..6465b7d5 --- /dev/null +++ b/cms/locale/hi/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Hindi (http://app.transifex.com/divio/django-cms/language/hi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "क्या आप सुनिश्चित हैं कि आप पृष्ठ टैब को बचाने के बिना परिवर्तन पहली करना चाहते हैं?" diff --git a/cms/locale/hr/LC_MESSAGES/django.po b/cms/locale/hr/LC_MESSAGES/django.po new file mode 100644 index 00000000..452b869b --- /dev/null +++ b/cms/locale/hr/LC_MESSAGES/django.po @@ -0,0 +1,1762 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Dino Ilic , 2022 +# Aleks Acimovic, 2026 +# Damir , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Croatian (https://app.transifex.com/divio/teams/58664/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hr\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" + +msgid "All" +msgstr "Sve" + +msgid "Copy permissions" +msgstr "Iskopiraj ovlasti" + +msgid "Slug" +msgstr "Slug" + +msgid "The part of the title that is used in the URL" +msgstr "Dio naslova koji je korišten u URL-u" + +msgid "Page type" +msgstr "Tip stranice" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Tipovi stranica" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Pregazi URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Ostavite ovo polje prazno ako treba koristiti standardnu putanju." + +msgid "Start typing..." +msgstr "Započnite pisati..." + +msgid "menu visibility" +msgstr "vidljivost izbornika" + +msgid "limit when this page is visible in the menu" +msgstr "ograniči kada je ova stranica vidljiva u izborniku" + +msgid "X Frame Options" +msgstr "X Frame opcije" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Može li se ova stranica ugraditi u druge stranice ili web-mjesta." + +msgid "URL options" +msgstr "URL mogućnosti" + +msgid "Menu options" +msgstr "Mogućnosti izbornika" + +msgid "Headers" +msgstr "Zaglavlja" + +msgid "Application" +msgstr "Aplikacija" + +msgid "Hook application to this page." +msgstr "Zakači aplikaciju za ovu stranicu." + +msgid "Application configurations" +msgstr "Postavke aplikacije" + +msgid "A page with this reverse URL id exists already." +msgstr "Stranica sa zadatim inverznim URL-om već postoji." + +msgid "Invalid application config value" +msgstr "Neispravna vrijednost za postavku aplikacije." + +msgid "An application instance using this configuration already exists." +msgstr "Aplikacija koja koristi ovu konfiguraciju već postoji." + +msgid "An application instance with this name already exists." +msgstr "Aplikacija s ovim imenom već postoji." + +msgid "You can't move the home page inside another page" +msgstr "" +"Početna stranica ne može se premjestiti kao dijete neke druge stranice." + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Ne možete imati dvije stranice s istim slugom na istoj razini. Promijenite " +"slug jedne od stranica prije ponovnog pokušaja premještanja." + +msgid "Yes" +msgstr "Da" + +msgid "No" +msgstr "Ne" + +msgid "user" +msgstr "korisnik" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "Dodaj" + +msgid "Change" +msgstr "Izmijeni" + +msgid "Delete" +msgstr "Izbriši" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Korisnicima nije dozvoljeno stvaranje stranice bez ovlasti za uređivanje " +"stvorene stranice. Uredite tražene ovlasti." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Korisnicima nije dozvoljeno brisanje stranice bez ovlasti za uređivanje " +"stranice. Uredite tražene ovlasti." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Korisnicima nije dozvoljeno postavljanje ovlasti bez ovlasti za uređivanje " +"stranice. Uredite tražene ovlasti." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Korisnicima nije dozvoljeno brisanje ovlasti stranice bez ovlasti za " +"uređivanje stranice. Uredite tražene ovlasti." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Korisnicima nije dozvoljeno dodavanje ovlasti stranice bez ovlasti za " +"uređivanje dodane ovlasti. Uredite tražene ovlasti." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Korisnicima nije dozvoljeno brisanje ovlasti stranice bez ovlasti za " +"uređivanje ovlasti. Uredite tražene ovlasti." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Neispravan tip plugina '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Jezik mora biti postavljen na jedan od podržanih!" + +msgid "Parent plugin language must be same as language!" +msgstr "Jezik nadređenog plugina mora biti isti." + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Roditelj plugina mora biti u istom placeholderu kao i plugin!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Pozicija plugina mora biti veća od %(position)d" + +msgid "Translations" +msgstr "Prijevodi" + +msgid "Advanced Settings" +msgstr "Napredne postavke" + +msgid "The page is not eligible to be home." +msgstr "Stranica nije raspoloživa za postavljanje u ulogu početne stranice." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "objekt %(name)s sa primarnim ključem %(key)r ne postoji." + +msgid "error" +msgstr "greška" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Pogreška! Nemate ovlasti premjestiti ovu stranicu. Molim, ponovno učitajte " +"stranicu." + +msgid "Error! You don't have permissions to copy this page." +msgstr "Greška! Nemate ovlasti za kopiranje ove stranice." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Greška! Stranica koju želite zalijepiti nije prevedena na nijedan jezik koji" +" je konfiguriran za odredišno sjedište." + +msgid "You do not have permission to edit this page" +msgstr "Nemate ovlasti za uređivanje ove stranice" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(da biste to promijenili, prvo poništite objavu trenutno objavljene verzije " +"ove stranice)" + +msgid "Add Translation" +msgstr "Dodaj prijevod" + +msgid "Add Page Copy" +msgstr "Dodaj kopiju stranice" + +msgid "New sub page" +msgstr "Nova podstranica" + +msgid "New page" +msgstr "Nova stranica" + +msgid "Database error" +msgstr "Greška baze podataka" + +msgid "Template not valid" +msgstr "Predložak nije valjan" + +msgid "Placeholder selection not valid" +msgstr "Odabir placeholdera nije ispravan" + +msgid "The template was successfully changed" +msgstr "Predložak je uspješno promijenjen" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Placeholder '%s' ne postoji u ciljnom jeziku" + +msgid "You do not have permission to copy these plugins." +msgstr "Nemate ovlasti za kopiranje ovih pluginova." + +msgid "You do not have permission to delete this page" +msgstr "Nemate ovlasti za brisanje ove stranice" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Naslov i plugin na jeziku %(language)s je obrisan" + +msgid "Public content" +msgstr "Javni sadržaj" + +msgid "Empty" +msgstr "Prazno" + +msgid "Create Content" +msgstr "Izradite sadržaj" + +msgid "View restriction" +msgstr "Ograničenja pregleda" + +msgid "View restrictions" +msgstr "Ograničenja pregleda" + +#, python-format +msgid "Field %s not found" +msgstr "Polje %s nije pronađeno" + +msgid "You do not have permission to edit this item" +msgstr "Nemate ovlasti za uređivanje ove stavke" + +msgid "You do not have permission to add a plugin" +msgstr "Nemate ovlasti dodati plugin" + +msgid "You do not have permission to copy this placeholder." +msgstr "Nemate ovlasti za kopiranje placeholdera" + +msgid "Plugin not found" +msgstr "Plugin nije pronađen" + +msgid "You do not have permission to edit this plugin" +msgstr "Nemate ovlasti za uređivanje ovog plugina" + +msgid "You have no permission to paste this plugin" +msgstr "Nemate ovlasti za zalijepiti ovaj plugin" + +msgid "You have no permission to paste this placeholder" +msgstr "Nemate ovlasti za zalijepiti ovaj placeholder" + +msgid "You have no permission to move this plugin" +msgstr "Nemate ovlasti za premještanje ovog plugina" + +msgid "You have no permission to cut this plugin" +msgstr "Nemate ovlasti za izrezati ovaj plugin" + +msgid "You do not have permission to delete this plugin" +msgstr "Nemate ovlasti za brisanje ovog plugina" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "Za plugin %(name)s objekt \"%(obj)s\" je uspješno obrisan." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Ne može se obrisati %(name)s" + +msgid "Are you sure?" +msgstr "Da li ste sigurni?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Nemate ovlasti za brisanje sadržaja ovog placeholdera" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Sadržaj placeholdera \"%(obj)s\" je uspješno obrisan." + +msgid "placeholder" +msgstr "placeholder" + +msgid "Page permissions" +msgstr "Ovlasti nad stranicom" + +msgid "User & Group permissions" +msgstr "Ovlasti korisnika i grupe" + +msgid "Page permissions management" +msgstr "Upravljanje ovlastima nad stranicom" + +msgid "Actions" +msgstr "Akcije" + +msgid "Empty content" +msgstr "Prazan sadržaj" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Svojstva %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Dodaj novi %(object_name)s" + +msgid "Add content" +msgstr "Dodaj sadržaj" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Sadržaj trenutnog jezika je izmijenjen. Odaberite \"Odustani\" kako bi se " +"vratili na formular i spremili promjene. Odaberite \"OK\" kako bi odbacili " +"promjene." + +#, python-format +msgid "Add %(language)s content" +msgstr "Dodaj %(language)s sadržaj" + +msgid "Preview" +msgstr "Pregled" + +msgid "Settings" +msgstr "Postavke" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Nevažeći jezik %(value)s. Ovaj formular ne može se provesti. Pokušajte " +"promijeniti jezike." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Nema registriranog apphooka \"%r\"" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Placeholder" + +msgid "Create" +msgstr "Stvori" + +msgid "Edit" +msgstr "Uredi" + +msgid "Structure" +msgstr "Struktura" + +msgid "Content" +msgstr "Sadržaj" + +msgid "Sites" +msgstr "Sjedišta" + +msgid "Admin Sites" +msgstr "Administracijske stranice" + +msgid "Administration" +msgstr "Administracija" + +msgid "User settings" +msgstr "Postavke za korisnika" + +msgid "Clipboard..." +msgstr "Međumemorija..." + +msgid "Clear clipboard" +msgstr "Isprazni međumemoriju" + +msgid "Disable toolbar" +msgstr "Deaktivirajte alatnu traku" + +msgid "Shortcuts..." +msgstr "Kratice..." + +msgid "Users" +msgstr "Korisnici" + +#, python-format +msgid "Logout %s" +msgstr "Odjavi %s" + +msgid "Logout" +msgstr "Odjavi se" + +msgid "Language" +msgstr "Jezik" + +msgid "Delete Translation" +msgstr "Izbriši prijevod" + +msgid "Copy all plugins" +msgstr "Kopiraj sve pluginove" + +#, python-format +msgid "from %s" +msgstr "iz %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Da li ste sigurni da želite kopirati sve pluginove sa %s?" + +msgid "Pages" +msgstr "Stranice" + +msgid "Page" +msgstr "Stranica" + +msgid "Create Page" +msgstr "Stvori stranicu" + +msgid "New Page" +msgstr "Nova stranica" + +msgid "New Sub Page" +msgstr "Nova podstranica" + +msgid "Duplicate this Page" +msgstr "Dupliciraj stranicu" + +msgid "Page settings" +msgstr "Postavke za stranicu" + +msgid "Advanced settings" +msgstr "Napredne postavke" + +msgid "Templates" +msgstr "Predlošci" + +msgid "Placeholders" +msgstr "Placeholderi" + +msgid "Hide in navigation" +msgstr "Sakrij u navigaciji" + +msgid "Display in navigation" +msgstr "Prikaži u navigaciji" + +msgid "Delete page" +msgstr "Izbriši stranicu" + +msgid "Create a new page next to the current page." +msgstr "Izradi novu stranicu uz trenutnu stranicu." + +msgid "Create a page below the current page." +msgstr "Izradi stranicu kao dijete trenutne stranice." + +msgid "Select a valid site" +msgstr "Izaberite ispravnu web stranicu" + +msgid "Select a valid page" +msgstr "Izaberite ispravnu stranicu" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"Stranica %(conflict_page)s ima isti url '%(url)s' kao trenutna stranica " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"Stranica %(conflict_page)s ima isti url '%(url)s' kao trenutna stranica." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "Opcionalno. Ako je definirano, biti će dodano u novi tekst plugin." + +msgid "Provide a title for the new page." +msgstr "Definirajte naziv za novu stranicu." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "Ostavite prazno za automatski slug ili upišite slug." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "Nemoguće je automatski kreirati slug. Molimo upišite ga ručno." + +msgid "Please provide a valid slug." +msgstr "Molimo dodajte ispravan slug." + +msgid "You don't have the permissions required to add a page." +msgstr "Nemate ovlasti dodati stranicu." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "pozicija" + +msgid "language" +msgstr "jezik" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "datum kreiranja" + +msgid "can edit" +msgstr "može uređivati" + +msgid "can add" +msgstr "može dodati" + +msgid "can delete" +msgstr "može brisati" + +msgid "can change advanced settings" +msgstr "može mijenjati napredne postavke" + +msgid "can publish" +msgstr "može objavljivati" + +msgid "can change permissions" +msgstr "može mijenjati ovlasti" + +msgid "can move" +msgstr "može premještati" + +msgid "view restricted" +msgstr "pregled nije dozvoljen" + +msgid "can recover pages" +msgstr "može povratiti stranicu" + +msgid "group" +msgstr "grupa" + +msgid "sites" +msgstr "stranice" + +msgid "created by" +msgstr "stvorio" + +msgid "changed by" +msgstr "promijenio" + +msgid "publication date" +msgstr "datum objavljivanja" + +msgid "publication end date" +msgstr "datum okončanja objave" + +msgid "in navigation" +msgstr "u navigaciji" + +msgid "soft root" +msgstr "soft root" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "povezan izbornik" + +msgid "template" +msgstr "predložak" + +msgid "login required" +msgstr "potrebno prijavljivanje" + +msgid "application" +msgstr "aplikacija" + +msgid "application instance name" +msgstr "Naziv aplikacije" + +msgid "site" +msgstr "sjedište" + +msgid "Grant on" +msgstr "Postavi ovlasti za" + +msgid "page" +msgstr "stranica" + +msgid "no limit set" +msgstr "nije postavljen limit" + +msgid "for logged in users only" +msgstr "samo za prijavljene korisnike" + +msgid "for anonymous users only" +msgstr "samo za anonimne korisnike" + +msgid "Inherit from parent page" +msgstr "Nasljeđeno od nadređene stranice" + +msgid "Deny" +msgstr "Zabrani" + +msgid "Only this website" +msgstr "Samo ovo sjedište" + +msgid "Allow" +msgstr "Dozvoli" + +msgid "title" +msgstr "Naslov" + +msgid "The default title" +msgstr "Uobičajeni naslov" + +msgid "Page Title" +msgstr "Naslov stranice" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "Prepisati će ono što je prikazano u vrhu preglednika i u oznakama." + +msgid "Menu Title" +msgstr "Naslov izbornika" + +msgid "Overwrite what is displayed in the menu" +msgstr "Pregazi ono što je prikazano u meniju." + +msgid "Description meta tag" +msgstr "Opis meta tag" + +msgid "A description of the page used by search engines." +msgstr "" +"Popis ključnih riječi, razadvojenih zarezima, koje koriste pojedine " +"tražilice." + +msgid "redirect" +msgstr "preusmjeravanje" + +msgid "Redirects to this URL." +msgstr "Izvedi redirekciju na ovaj URL." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "svi preci neće biti prikazani u navigaciji" + +msgid "The template used to render the content." +msgstr " predložak korišten za prikaz sadržaja" + +msgid "page content" +msgstr "sadržaj stranica" + +msgid "page contents" +msgstr "sadržaji stranica" + +msgid "default" +msgstr "uobičajenoa" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Jedinstveni identifikator korišten sa page_url templatetag-om za povezivanje" +" s ovom stranicom" + +msgid "Mark this page as a page type" +msgstr "Označi ovu stranicu kao tip stranice" + +msgid "pages" +msgstr "stranice" + +msgid "No available title" +msgstr "Nema dostupnog naslova" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Putanja" + +msgid "Current page" +msgstr "trenutna stranica" + +msgid "Page children (immediate)" +msgstr "potomci stranice (neposredni)" + +msgid "Page and children (immediate)" +msgstr "stranica i potomci (neposredni)" + +msgid "Page descendants" +msgstr "potomci stranice" + +msgid "Page and descendants" +msgstr "stranica i potomci" + +msgid "on page level" +msgstr "na nivou stranice" + +msgid "frontend view restriction" +msgstr "zabrana prikaza na frontendu" + +msgid "Please select user or group." +msgstr "Molimo izaberite korisnika ili grupu." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Korisnicima nije dozvoljeno objavljivanje stranice bez ovlasti za uređivanje" +" stranice. Uredite tražene ovlasti." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Korisnicima nije dozvoljeno postavljanje naprednih postavki bez ovlasti za " +"uređivanje stranice. Uredite tražene ovlasti." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Korisnicima nije dozvoljeno postavljanje ovlasti za stranicu bez ovlasti za " +"uređivanje stranice. Uredite tražene ovlasti." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Korisnicima nije dozvoljeno premještanje stranice bez ovlasti za uređivanje " +"stranice. Uredite tražene ovlasti." + +msgid "can recover any deleted page" +msgstr "može povratiti bilo koju obrisanu stranicu" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "Ako ništa nije selektirano, korisnik je ima ovlasti za sve stranice." + +msgid "Page global permission" +msgstr "Globalne ovlasti za stranicu" + +msgid "Pages global permissions" +msgstr "Globalne ovlasti nad stranicama" + +msgid "Page permission" +msgstr "Ovlasti stranice" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Privilegije za dodavanje stranice također zahtjeva pravo pristupa djeci ili " +"potomcima. U suprotnom, stranica se neće moći mijenjati od strane njenog " +"tvorca." + +msgid "User (page)" +msgstr "Korisnik (stranica)" + +msgid "Users (page)" +msgstr "Korisnici (stranica)" + +msgid "User group (page)" +msgstr "Grupa korisnika (stranica)" + +msgid "User groups (page)" +msgstr "Grupe korisnika (stranica)" + +msgid "slot" +msgstr "prorez" + +msgid "width" +msgstr "širina" + +msgid "Edit object" +msgstr "Uredi objekt" + +msgid "This is an external placeholder" +msgstr "Ovo je vanjski placeholder" + +msgid "plugin" +msgstr "plugin" + +msgid "plugins" +msgstr "pluginovi" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Jezik za administratorsko sučelje i alatnu traku" + +msgid "user setting" +msgstr "korisnička postavka" + +msgid "user settings" +msgstr "korisničke postavke" + +msgid "by template" +msgstr "prema predlošku" + +msgid "by code" +msgstr "prema kôdu" + +msgid "static placeholder name" +msgstr "ime statičkog placeholdera" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Opisno ime za identifikaciju ovog statičkog placeholdera. Ne prikazuje se " +"korisnicima." + +msgid "placeholder code" +msgstr "kôd placeholdera" + +msgid "To render the static placeholder in templates." +msgstr "Za prikaz statičkog placeholdera u predlošcima." + +msgid "placeholder content" +msgstr "sadržaj placeholdera" + +msgid "creation_method" +msgstr "creation_method" + +msgid "static placeholder" +msgstr "statički placeholder" + +msgid "static placeholders" +msgstr "statički placeholderi" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Statički placeholder s istim kôdom za isto sjedište već postoji" + +msgid "Advanced options" +msgstr "Napredna svojstva" + +msgid "Generic" +msgstr "Generičko" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" je/su uspješno uređen/i." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "Nema dodatnih postavki za ovaj plugin. Pritisnite Spremi." + +msgid "Moved" +msgstr "Premješten" + +msgid "Changed" +msgstr "Promijenjeno" + +msgid "Deleted" +msgstr "Obrisan" + +msgid "Added Page Translation" +msgstr "Dodan prijevod strtanice" + +msgid "Changed Page Translation" +msgstr "Izmijenjen prijevod strtanice" + +msgid "Deleted Page Translation" +msgstr "Obrisan prijevod strtanice" + +msgid "Added Plugin" +msgstr "Dodan plugin" + +msgid "Changed Plugin" +msgstr "Izmijenjen plugin" + +msgid "Moved Plugin" +msgstr "Premješten plugin" + +msgid "Deleted Plugin" +msgstr "Obrisan plugin" + +msgid "Cut Plugin" +msgstr "Izreži plugin" + +msgid "Paste Plugin" +msgstr "Zalijepi plugin" + +msgid "Paste to Placeholder" +msgstr "Zalijepi u placeholder" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Dodani pluginovi iz međuspremnika u placeholder" + +msgid "Cleared Placeholder" +msgstr "Ispražnjen placeholder" + +msgid "Save" +msgstr "Spremi" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" +"Neka polja nije moguće izmijeniti jer su sadržaj koji je samo za čitanje." + +#, python-format +msgid "Log in to administration here." +msgstr "Ovdje se prijavite u administraciju.ovde" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Url za prijavu: %(login_url)s" + +msgid "Username:" +msgstr "Korisničko ime:" + +msgid "Password:" +msgstr "Lozinka:" + +msgid "Add a page" +msgstr "Dodaj stranicu" + +msgid "Change a page" +msgstr "Promijeni stranicu" + +msgid "Home" +msgstr "Početna" + +msgid "View on site" +msgstr "Prikaži na web stranici" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Molimo ispravite navedenu grešku." +msgstr[1] "Molimo ispravite navedene greške." +msgstr[2] "Molimo ispravite navedene greške." + +msgid "All permissions" +msgstr "Sve ovlasti" + +msgid "Loading..." +msgstr "Učitavanje..." + +msgid "Save and continue editing" +msgstr "Spremi i nastavi uređivanje" + +#, 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 "" +"Jeste li sigurni da želite izbrisati %(object_name)s \"%(escaped_object)s\"?" +" Sve sljedeće povezane stavke bit će izbrisane:" + +msgid "Yes, I’m sure" +msgstr "Da, siguran sam" + +msgid "No, take me back" +msgstr "Ne, vrati me natrag" + +msgid "Summary" +msgstr "Sažetak" + +msgid "User" +msgstr "korisnik" + +msgid "Group" +msgstr "Grupa" + +msgid "Can edit" +msgstr "Može mijenjati" + +msgid "Can add" +msgstr "Može dodavati" + +msgid "Can delete" +msgstr "Može brisati" + +msgid "Can publish" +msgstr "Može objavljivati" + +msgid "Can change permissions" +msgstr "Može mijenjati ovlasti" + +msgid "Can move" +msgstr "Može premjestiti" + +msgid "Can view" +msgstr "Može gledati" + +msgid "(global)" +msgstr "(globalni)" + +msgid "(current)" +msgstr "(tekući)" + +msgid "Page doesn't inherit any permissions." +msgstr "Stranica ne nasljeđuje niti jedno pravo pristupa" + +msgid "Edit model" +msgstr "Uredi model" + +msgid "Save as new" +msgstr "Spremi kao novi" + +msgid "Save and add another" +msgstr "Spremi i dodaj još" + +msgid "Copy" +msgstr "Kopiraj" + +msgid "Cut" +msgstr "Izreži" + +msgid "Paste" +msgstr "Zalijepi" + +msgid "Set as home" +msgstr "Postavi kao početno" + +msgid "is restricted" +msgstr "ograničeno" + +msgid "last change by" +msgstr "zadnja promjena od" + +msgid "last change on" +msgstr "zadnja promjena" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Popis stranica" + +msgid "Search" +msgstr "Pretraživanje" + +msgid "Page Tree" +msgstr "Stablo stranica" + +msgid "Reset filter" +msgstr "Resetiraj filtar" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Vrati obrisano %(name)s\n" +" " + +msgid "Main Navigation" +msgstr "Osnovna navigacija" + +msgid "Options" +msgstr "Opcije" + +msgid "Successfully moved" +msgstr "Uspješno premješteno" + +msgid "Changes within the tree might require a refresh." +msgstr "Promjene u stablu bi mogle zahtijevati osvježavanje." + +msgid "Error:" +msgstr "Greška:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Ova stranica ne može biti kopirana zato što ima pridruženu aplikaciju. " +"Pogledajte napredne postavke stranice kako bi upravljali pridruženim " +"aplikacijama." + +msgid "Are you sure you want to § this page?" +msgstr "Da li ste sigurni da želite § ovu stranicu?" + +msgid "Reload" +msgstr "Ponovno učitaj" + +msgid "New node" +msgstr "Novi čvor" + +msgid "nodes" +msgstr "čvorovi" + +msgid "View" +msgstr "Pogled" + +msgid "Menu" +msgstr "Izborni" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Trenutno ne postoji %(object)s.\n" +"
\n" +" Dodaj %(object)s sada.\n" +" " + +msgid "Copy options" +msgstr "Opcija kopiranja" + +msgid "Choose copy options" +msgstr "Izaberite opcije kopiranja" + +msgid "Close" +msgstr "Zatvori" + +msgid "Legend" +msgstr "Legenda" + +msgid "In menu" +msgstr "U izborniku" + +msgid "Not in menu" +msgstr "Nije u izborniku" + +msgid "View page" +msgstr "Pogledaj stranicu" + +msgid "Softroot" +msgstr "Softroot" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Aplikacija: %(apphook)s" + +msgid "in menu" +msgstr "u izborniku" + +msgid "not in menu" +msgstr "nije u izborniku" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Postavke stranice (SHIFT klik za napredne postavke)" + +msgid "Permissions" +msgstr "Ovlasti" + +msgid "inherited" +msgstr "naslijeđeno" + +msgid "This page has no preview!" +msgstr "Ova stranica nema pregled!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "Moguće je da povezani apphook nema sadržaj za svoj root." + +msgid "It is being redirected to:" +msgstr "Preusmjerena je na:" + +msgid "Clipboard" +msgstr "Međumemorija" + +msgid "Add plugin" +msgstr "Dodaj plugin" + +msgid "Copy all" +msgstr "Kopiraj sve" + +msgid "Copy from" +msgstr "Kopiraj iz" + +msgid "Empty all" +msgstr "Obriši sve" + +msgid "Filter plugins..." +msgstr "Filtriraj pluginove..." + +msgid "Expand all" +msgstr "Proširi sve" + +msgid "Collapse all" +msgstr "Sažmi sve" + +msgid "You cannot add plugins to this plugin." +msgstr "Ne možete dodavati pluginove u ovaj plugin." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"Ovaj plugin ne može biti premješten niti uređivan izvan svog roditelja." + +msgid "Clipboard is empty." +msgstr "Međumemorija je prazna" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Ovaj plugin ne omogućava pluginove ovog tipa kao djecu." + +msgid "This plugin cannot have nested plugins." +msgstr "Ovaj plugin ne može imati djecu." + +msgid "Highlight" +msgstr "Označi" + +msgid "Available plugins" +msgstr "Dostupni pluginovi" + +msgid "Toggle structure" +msgstr "Prebaci na strukturu" + +msgid "Login" +msgstr "Prijavi se" + +msgid "Add plugin to" +msgstr "Dodaj plugin u" + +msgid "More" +msgstr "Više" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Razvojna verzija koristi django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Odustani" + +msgid "The following error occurred:" +msgstr "Došlo je do sljedeće pogreške:" + +msgid "Action successful." +msgstr "Akcija uspješna." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Da li ste sigurni da želite izbrisati ovaj plugin?" + +msgid "Are you sure you want to publish this page?" +msgstr "Da li želite objaviti ovu stranicu?" + +msgid "Plugin will be added here" +msgstr "Plugin će biti dodan ovdje" + +msgid "You have unsaved changes." +msgstr "Imate promjene koje još nisu spremljene." + +msgid "Loading" +msgstr "Učitavanje" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Da li ste sigurni da ne želite spremiti ove promjene?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"Formular ne može biti učitan. Molimo provjerite ako poslužitelj radi " +"ispravno." + +msgid "Most used" +msgstr "Najkorištenije" + +msgid "Shortcuts" +msgstr "Kratice" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Stranica je u međuvremenu promijenjena, ponovno učitavam..." + +msgid "CMS-wide Shortcuts" +msgstr "Prečaci CMS-a" + +msgid "Bring up this help dialog" +msgstr "Prikaži ovaj dijalog za pomoć" + +msgid "Close/cancel" +msgstr "Zatvori/Odustani" + +msgid "Toggle structure mode" +msgstr "Prebaci u prikaz strukture" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" +"Prebaci u prikaz strukture i označi plugin iznad kojeg se nalazi pokazivač" + +msgid "Open \"Create\" dialog" +msgstr "Otvori dijalog za izradu" + +msgid "Focus on Toolbar" +msgstr "Fokusiraj na toolbar" + +msgid "Focus on placeholders" +msgstr "Fokusiraj na placholdere" + +msgid "Move to next/previous element" +msgstr "Premjesti u sljedeći/prethodni element" + +msgid "Focus on plugins of placeholder" +msgstr "Fokusiraj na pluginove placeholdera" + +msgid "Edit plugin" +msgstr "Uredi plugin" + +msgid "Open actions menu" +msgstr "Otvori izbornik akcija" + +msgid "Expand/collapse" +msgstr "Proširi/sažmi" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Prijava neuspješna. Molim provjerite pristupne podatke i " +"pokušajte ponovno." + +msgid "Double-click to edit" +msgstr "Dvostruki klik za uređivanje" + +msgid "Tap to edit" +msgstr "Tap za uređivanje" + +msgid "Click to go back" +msgstr "Klik za povratak" + +msgid "Click to go forward" +msgstr "Klik za naprijed" + +msgid "Minimize" +msgstr "Minimiziraj" + +msgid "Maximize" +msgstr "Maksimiziraj" + +msgid "Placeholder not editable" +msgstr "Placeholder se ne može uređivati" + +msgid "Drop a plugin here" +msgstr "Ispusti plugin ovdje" + +msgid "Welcome to your new django CMS installation!" +msgstr "Dobrodošli u vašu novu instalaciju django CMS-a!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Verzija %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Izgradimo zajedno nešto sjajno!" + +msgid "Please log in" +msgstr "Molimo prijavite se" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Dodajte svoju prvu stranicu\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Pomozite financiranju

\n" +"

\n" +" Vaše financiranje izravno koristi proizvodu, prvenstveno kroz\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" Brz način za vas ili vašu organizaciju da donirate jest putem\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Pridružite nam se

\n" +"

\n" +" django CMS Association neprofitna je organizacija koja financira i usmjerava razvoj\n" +" django CMS-a.\n" +"

\n" +"

\n" +" Možete se pridružiti kao pojedinac ili kao\n" +" organizacija.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Doprinesite

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Zabilješke za instalaciju" + +msgid "Support" +msgstr "Podrška" + +msgid "Documentation" +msgstr "Dokumentacija" + +msgid "User guide" +msgstr "Korisnički priručnik" + +msgid "Give back" +msgstr "Uzvratite" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Ako ne vidite django CMS logo na vrhu, osigurajte\n" +" vezu na static/cms direktorij u vašim\n" +" static datotekama.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Vidite ovu stranicu zato što imate\n" +" DEBUG = True django u postavkama i\n" +" niste još dodali nijednu stranicu.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Dobrodošli u django CMS" + +msgid "Add Another" +msgstr "Dodaj još" + +msgid "Back" +msgstr "Povratak" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" +"Molimo odaberite jednu opciju od ispod ponuđenih kako bi nastavili na " +"sljedeći korak." + +msgid "Next" +msgstr "Sljedeći" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Nepoznato" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Stranica nije pronađena na %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Template tag ne može pronaći stranicu sa parametrima `%(page_lookup)s `. URL" +" je bio: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Dva stupca" + +msgid "Three columns" +msgstr "Tri stupca" + +msgid "username" +msgstr "korisničko ime" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "Obavezno. 300 znakova ili manje. Slova, znamenke i @/./+/-/_" + +msgid "Enter a valid username." +msgstr "Unesite valjano korisničko ime" + +msgid "email address" +msgstr "email adresa" + +msgid "staff status" +msgstr "status osoblja" + +msgid "Designates whether the user can log into this admin site." +msgstr "" +"Označava da li se korisnik može prijaviti na ovu administracijsku stranicu." + +msgid "active" +msgstr "aktivan" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Označava da li je ovaj korisnik aktivan. Odznačite ovo polje umjesto " +"brisanja korisničkog računa." + +msgid "users" +msgstr "korisnici" + +msgid "Title Extension" +msgstr "Ekstenzija naslova" + +msgid "Page Extension" +msgstr "Ekstenzija stranice" + +msgid "object ID" +msgstr "ID objekta" + +msgid "Example1 App" +msgstr "Primjer1 App" + +msgid "MultilingualExample1 App" +msgstr "VišejezičniPrimjer1 App" + +msgid "Example1" +msgstr "Primjer1" + +msgid "Examples" +msgstr "Primjeri" + +msgid "Extra Context" +msgstr "Dodatni Kontekst" + +msgid "Articles" +msgstr "Članci" + +msgid "Sample App" +msgstr "Ogledna Aplikacija" + +msgid "Sample App with config" +msgstr "Ogledna aplikacija sa konfiguracijom" + +msgid "Sample App with excluded permissions" +msgstr "Primjer aplikacije bez uključenih ovlasti" + +msgid "Sample App 2" +msgstr "Ogledna Aplikacija 2" + +msgid "Sample App 3" +msgstr "Ogledna Aplikacija 2" + +msgid "Sample App Without Landing Page" +msgstr "Primjer aplikacije bez odredišne stranice" + +msgid "Namespaced App" +msgstr "Aplikacija sa prostorom imena" + +msgid "Parent app" +msgstr "Roditeljska aplikacija" + +msgid "Child app" +msgstr "Aplikacija dijete" + +msgid "Variable urls-menus App" +msgstr "Variable urls-menus App" + +msgid "sample root page" +msgstr "ogledna korijenska stranica" + +msgid "sample settings page" +msgstr "ogledna stranica postavki" + +msgid "sample account page" +msgstr "ogledna stranica korisničkih računa" + +msgid "sample my profile page" +msgstr "ogledna stranica osobnog profila" + +msgid "Static Menu" +msgstr "Statički Izbornik" + +msgid "Static Menu2" +msgstr "Statički Izbornik2" + +msgid "Static Menu3" +msgstr "Static Menu3" + +msgid "Static Menu4" +msgstr "Statički Izbornik" + +msgid "Category" +msgstr "Kategorija" + +msgid "Categories" +msgstr "Kategorije" + +msgid "Add Category" +msgstr "Dodaj kategoriju" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Promijeni kategoriju" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Zahvaljujemo na provedenom vremenu na stranicama danas." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Nasljedi predložak najbližeg pretka" + +msgid "UserSettings" +msgstr "UserSettings" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Dodaj plugin u placeholder \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Dodaj plugin u %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Jedan placeholder" + +msgid "CMS - your user account was created." +msgstr "CMS - Vaš korisnički račun je kreiran." + +msgid "CMS - your user account was changed." +msgstr "CMS - Vaš korisnički račun je promjenjen." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Ovaj placeholder već ima najveći mogući broj pluginova (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Ovaj placeholder veći ima najveći dozvoljeni broj (%(limit)s) pluginova " +"%(plugin_name)s." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Ne može se pronaći specificirani CMS_REQUEST_IP_RESOLVER modul: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Ne može se pronaći specificirana CMS_REQUEST_IP_RESOLVER funkcija: \"{0}\" u" +" modulu \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Izradi novu %s instancu." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Čarobnjak je već registriran za model: %s" diff --git a/cms/locale/hr/LC_MESSAGES/djangojs.po b/cms/locale/hr/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..68a70269 --- /dev/null +++ b/cms/locale/hr/LC_MESSAGES/djangojs.po @@ -0,0 +1,24 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# legendri , 2012 +# legendri , 2012 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: legendri , 2012\n" +"Language-Team: Croatian (http://app.transifex.com/divio/django-cms/language/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hr\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" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Jeste li ste sigurni da želite promjeniti tab prije nego što spremite stranicu?" diff --git a/cms/locale/hu/LC_MESSAGES/django.po b/cms/locale/hu/LC_MESSAGES/django.po new file mode 100644 index 00000000..a9990652 --- /dev/null +++ b/cms/locale/hu/LC_MESSAGES/django.po @@ -0,0 +1,1772 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Tibor Balogh, 2025 +# Alexander Blomberg, 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Hungarian (https://app.transifex.com/divio/teams/58664/hu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "Mind" + +msgid "Copy permissions" +msgstr "Jogok másolása" + +msgid "Slug" +msgstr "URL aliasz" + +msgid "The part of the title that is used in the URL" +msgstr "A cím része, ami az URL-ben használandó" + +msgid "Page type" +msgstr "Oldal típus" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Oldal típusok" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "URL felülírása" + +msgid "Keep this field empty if standard path should be used." +msgstr "" +"Hagyja ezt a mezőt üresen, ha az alapértelmezett útvonalat kívánja használni" +" " + +msgid "Start typing..." +msgstr "Kezdj el gépelni..." + +msgid "menu visibility" +msgstr "menü láthatósága" + +msgid "limit when this page is visible in the menu" +msgstr "korlátozza, hogy mikor jelenjen meg ez az oldal a menüben" + +msgid "X Frame Options" +msgstr "X Frame opciók" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Beágyazható-e ez az oldal más oldalakba vagy weboldalakba." + +msgid "URL options" +msgstr "URL beállítások" + +msgid "Menu options" +msgstr "Menü beállítások" + +msgid "Headers" +msgstr "Fejlécek" + +msgid "Application" +msgstr "Alkalmazás" + +msgid "Hook application to this page." +msgstr "Alkalmazás csatolása az oldalhoz" + +msgid "Application configurations" +msgstr "Alkalmazás konfigurációk" + +msgid "A page with this reverse URL id exists already." +msgstr "Az adott URL azonosítóval már létezik oldal." + +msgid "Invalid application config value" +msgstr "Érvénytelen alkalmazáskonfigurációs érték" + +msgid "An application instance using this configuration already exists." +msgstr "Már létezik ezt a konfigurációt használó alkalmazáspéldány." + +msgid "An application instance with this name already exists." +msgstr "Már létezik ilyen nevű alkalmazáspéldány." + +msgid "You can't move the home page inside another page" +msgstr "A kezdőlapot nem helyezheti át másik oldalra" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Nem lehet két oldal ugyanazzal az URL aliasszal ugyanazon az oldalszinten. " +"Az újbóli mozgatás előtt módosítsa az egyik oldal URL aliaszát." + +msgid "Yes" +msgstr "Igen" + +msgid "No" +msgstr "Nem" + +msgid "user" +msgstr "felhasználó" + +msgid "can_view" +msgstr "megtekinthető" + +msgid "Add" +msgstr "Új" + +msgid "Change" +msgstr "Módosítás" + +msgid "Delete" +msgstr "Törlés" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"A felhasználók nem hozhatnak létre oldalt a létrehozott oldal módosítására " +"vonatkozó jogosultság nélkül. Szerkesztési jogosultság szükséges." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"A felhasználók nem törölhetnek oldalt az oldal módosítására vonatkozó " +"jogosultság nélkül. Szerkesztési jogosultság szükséges." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"A felhasználók nem állíthatnak be oldaljogosultságokat az oldal módosítására" +" vonatkozó jogosultság nélkül. Szerkesztési jogosultság szükséges." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"A felhasználók nem törölhetnek oldaljogosultságokat az oldal módosítására " +"vonatkozó jogosultság nélkül. Szerkesztési jogosultság szükséges." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"A felhasználók nem hozhatnak létre oldaljogosultságokat a létrehozott " +"jogosultság módosítására vonatkozó jogosultság nélkül. Szerkesztési " +"jogosultság szükséges." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"A felhasználók nem törölhetnek oldaljogosultságokat a jogosultságok " +"módosítására vonatkozó jogosultság nélkül. Szerkesztési jogosultság " +"szükséges." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Érvénytelen plugin típus: '%s'" + +msgid "Language must be set to a supported language!" +msgstr "A beállított nyelvnek támogatott nyelvnek kell lennie!" + +msgid "Parent plugin language must be same as language!" +msgstr "A nyelvnek meg kell egyeznie a szülő plugin nyelvével!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "A szülő plugin helyének meg kell egyeznie a hellyel!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "A plugin pozíciójának nagyobbnak kell lennie, mint %(position)d" + +msgid "Translations" +msgstr "Fordítások" + +msgid "Advanced Settings" +msgstr "További beállítások" + +msgid "The page is not eligible to be home." +msgstr "Az oldal nem használható kezőlapként." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s objektum %(key)r elsődleges kulccsal nem létezik." + +msgid "error" +msgstr "hiba" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "Hiba! Nincs jogosultságod az oldal mozgatásához. Frissítsd az oldalt!" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Hiba! Nincs engedélye az oldal másolására." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Hiba! A beillesztendő oldal nincs lefordítva a célwebhely által konfigurált " +"nyelvek egyikére sem." + +msgid "You do not have permission to edit this page" +msgstr "Nincs jogosultsága az oldal szerkesztéséhez" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(a módosításához először vonja vissza az oldal jelenleg közzétett verzióját)" + +msgid "Add Translation" +msgstr "Fordítás hozzáadása" + +msgid "Add Page Copy" +msgstr "Oldal másolat hozzáadása" + +msgid "New sub page" +msgstr "Új aloldal" + +msgid "New page" +msgstr "Új oldal" + +msgid "Database error" +msgstr "Adatbázis hiba" + +msgid "Template not valid" +msgstr "Érvénytelen sablon" + +msgid "Placeholder selection not valid" +msgstr "A hely kiválasztása érvénytelen" + +msgid "The template was successfully changed" +msgstr "A sablon sikeresen megváltozott" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "A(z) '%s' hely nem létezik a célnyelven" + +msgid "You do not have permission to copy these plugins." +msgstr "Nincs jogosultsága ezen pluginek másolásához." + +msgid "You do not have permission to delete this page" +msgstr "Nincs engedélye az oldal törlésére" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "%(language)s nyelvű cím és plugin már létezik" + +msgid "Public content" +msgstr "Nyilvános tartalom" + +msgid "Empty" +msgstr "Üres" + +msgid "Create Content" +msgstr "Tartalom létrehozása" + +msgid "View restriction" +msgstr "Nézet korlátozás" + +msgid "View restrictions" +msgstr "Nézet korlátozások" + +#, python-format +msgid "Field %s not found" +msgstr "A mező nem található: %s" + +msgid "You do not have permission to edit this item" +msgstr "Nincs jogosultsága az elem szerkesztéséhez" + +msgid "You do not have permission to add a plugin" +msgstr "Nincs jogosultsága plugin hozzáadásához." + +msgid "You do not have permission to copy this placeholder." +msgstr "Nincs engedélye ennek a helyőrzőnek a másolására." + +msgid "Plugin not found" +msgstr "Plugin nem található" + +msgid "You do not have permission to edit this plugin" +msgstr "Nincs jogosultsága a plugin szerkesztéséhez" + +msgid "You have no permission to paste this plugin" +msgstr "Nincs jogosultsága ennek a pluginnek a beillesztéséhez" + +msgid "You have no permission to paste this placeholder" +msgstr "Nincs jogosultsága ennek a helynek a beillesztéséhez" + +msgid "You have no permission to move this plugin" +msgstr "Nincs jogosultsága a plugin mozgatásához" + +msgid "You have no permission to cut this plugin" +msgstr "Nincs jogosultsága ennek a pluginnek a kivágásához" + +msgid "You do not have permission to delete this plugin" +msgstr "Nincs jogosultsága a plugin törléséhez" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "A %(name)s plugin \"%(obj)s\" sikeres törölve." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Nem törölhetők %(name)s" + +msgid "Are you sure?" +msgstr "Biztos benne?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Nincs jogosultsága ennek a helynek a törléséhez." + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "A \"%(obj)s\" hely sikeresen törölve." + +msgid "placeholder" +msgstr "hely" + +msgid "Page permissions" +msgstr "Oldal jogai" + +msgid "User & Group permissions" +msgstr "Felhasználó és Csoport jogok" + +msgid "Page permissions management" +msgstr "Oldal jogainak kezelése" + +msgid "Actions" +msgstr "Műveletek" + +msgid "Empty content" +msgstr "Üres tartalom" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "%(object_name)s tulajdonságai" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Új %(object_name)s hozzáadása" + +msgid "Add content" +msgstr "Tartalom hozzáadása" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Az aktuális nyelv tartalma megváltozott. Kattintson a \"Mégse\" gombra, hogy" +" visszatérjen az űrlaphoz és mentse a módosításokat. Kattintson az \"OK\" " +"gombra a módosítások elvetéséhez." + +#, python-format +msgid "Add %(language)s content" +msgstr "%(language)s nyelvű tartalom hozzáadása" + +msgid "Preview" +msgstr "Előnézet" + +msgid "Settings" +msgstr "Beállítások" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Érvénytelen nyelv: %(value)s. Ezt az űrlapot nem lehet feldolgozni. " +"Próbáljon nyelvet váltani." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Nem található regisztrált alkalmazás (apphook): \"%r\"" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Hely" + +msgid "Create" +msgstr "Létrehoz" + +msgid "Edit" +msgstr "Szerkesztés" + +msgid "Structure" +msgstr "Struktúra" + +msgid "Content" +msgstr "Tartalom" + +msgid "Sites" +msgstr "Webhely" + +msgid "Admin Sites" +msgstr "Admin Felület" + +msgid "Administration" +msgstr "Adminisztráció" + +msgid "User settings" +msgstr "Felhasználó beállításai" + +msgid "Clipboard..." +msgstr "Vágólap..." + +msgid "Clear clipboard" +msgstr "Vágólap kiürítése" + +msgid "Disable toolbar" +msgstr "Eszköztár letiltása" + +msgid "Shortcuts..." +msgstr "Gyorsbillentyűk..." + +msgid "Users" +msgstr "Felhasználó" + +#, python-format +msgid "Logout %s" +msgstr "Kijelentkezés %s" + +msgid "Logout" +msgstr "Kilépés" + +msgid "Language" +msgstr "Nyelv" + +msgid "Delete Translation" +msgstr "Fordítás törlése" + +msgid "Copy all plugins" +msgstr "Összes plugin másolása" + +#, python-format +msgid "from %s" +msgstr "innen: %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Biztosan átmásolja az összes plugint innen: %s?" + +msgid "Pages" +msgstr "Oldalak" + +msgid "Page" +msgstr "Oldal" + +msgid "Create Page" +msgstr "Oldal létrehozása" + +msgid "New Page" +msgstr "Új oldal" + +msgid "New Sub Page" +msgstr "Új aloldal" + +msgid "Duplicate this Page" +msgstr "Oldal megduplázása" + +msgid "Page settings" +msgstr "Oldal beállításai" + +msgid "Advanced settings" +msgstr "További beállítások" + +msgid "Templates" +msgstr "Sablonok" + +msgid "Placeholders" +msgstr "Helyek" + +msgid "Hide in navigation" +msgstr "Elrejtés a navigációban" + +msgid "Display in navigation" +msgstr "Megjelenítés a navigációban" + +msgid "Delete page" +msgstr "törlés kérése" + +msgid "Create a new page next to the current page." +msgstr "Hozzon létre egy új oldalt az aktuális oldal mellé." + +msgid "Create a page below the current page." +msgstr "Hozzon létre egy oldalt az aktuális oldal alatt." + +msgid "Select a valid site" +msgstr "Válasszon egy érvényes webhelyet" + +msgid "Select a valid page" +msgstr "Válasszon egy érvényes oldalt" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"A(z) %(conflict_page)s oldalnak ugyanaz az URL-je ('%(url)s'), mint az " +"aktuális \"%(instance)s\" oldalnak." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"A(z) %(conflict_page)s oldalnak ugyanaz az URL-je ('%(url)s'), mint az " +"aktuális oldalnak." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Opcionális. Ha meg van adva, automatikusan hozzáadódik egy új szöveg " +"pluginhez." + +msgid "Provide a title for the new page." +msgstr "Adjon meg egy címet az új oldalhoz." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" +"Hagyja üresen az automatikus URL aliaszhoz, vagy írja felül szükség szerint." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" +"Nem lehet automatikusan létrehozni az URL aliaszt. Adjon meg egyet kézzel." + +msgid "Please provide a valid slug." +msgstr "Adjon meg egy érvényes URL aliaszt." + +msgid "You don't have the permissions required to add a page." +msgstr "Nincs meg a szükséges jogosultsága oldal hozzáadásához." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "pozíció" + +msgid "language" +msgstr "nyelv" + +msgid "plugin_name" +msgstr "plugin_neve" + +msgid "creation date" +msgstr "létrehozás dátuma" + +msgid "can edit" +msgstr "szerkeszthet?" + +msgid "can add" +msgstr "hozzáadhat?" + +msgid "can delete" +msgstr "törölhet?" + +msgid "can change advanced settings" +msgstr "további beállításokat módosíthatja?" + +msgid "can publish" +msgstr "publikálhat?" + +msgid "can change permissions" +msgstr "hozzáférési jogokat módosíthat?" + +msgid "can move" +msgstr "mozgathat?" + +msgid "view restricted" +msgstr "a nézet korlátozott" + +msgid "can recover pages" +msgstr "vissza állíthat oldalakat?" + +msgid "group" +msgstr "csoport" + +msgid "sites" +msgstr "szájt" + +msgid "created by" +msgstr "létrehozva" + +msgid "changed by" +msgstr "mádosítva" + +msgid "publication date" +msgstr "publikálás dátuma" + +msgid "publication end date" +msgstr "publikusság vége" + +msgid "in navigation" +msgstr "navigációban szerepel" + +msgid "soft root" +msgstr "Gyenge gyökér" + +msgid "id" +msgstr "azonosító" + +msgid "attached menu" +msgstr "kapcsolódó menü" + +msgid "template" +msgstr "sablon" + +msgid "login required" +msgstr "bejelentkezés szükséges" + +msgid "application" +msgstr "alkalmazás" + +msgid "application instance name" +msgstr "alkalmazás példány neve" + +msgid "site" +msgstr "webhely" + +msgid "Grant on" +msgstr "Engedélyezés" + +msgid "page" +msgstr "oldal" + +msgid "no limit set" +msgstr "nincs korlát beállítva" + +msgid "for logged in users only" +msgstr "csak bejelentkezett felhasználók számára" + +msgid "for anonymous users only" +msgstr "csak névtelen felhasználók számára" + +msgid "Inherit from parent page" +msgstr "A szülő oldal beállításai szerint" + +msgid "Deny" +msgstr "Tiltás" + +msgid "Only this website" +msgstr "Csak ezen az oldalon" + +msgid "Allow" +msgstr "Engedélyezés" + +msgid "title" +msgstr "cím" + +msgid "The default title" +msgstr "Alapértelmezett cím" + +msgid "Page Title" +msgstr "Oldal Cím" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "Felülírja a title tag-ben megjelenő címet" + +msgid "Menu Title" +msgstr "Menü Cím" + +msgid "Overwrite what is displayed in the menu" +msgstr "Felülírja a menüben megjelenő címet" + +msgid "Description meta tag" +msgstr "\"Description\" meta tag" + +msgid "A description of the page used by search engines." +msgstr "Keresők által használt leírás az oldalról" + +msgid "redirect" +msgstr "átirányítás" + +msgid "Redirects to this URL." +msgstr "Átirányítás erre az URL-re." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Nem minden ős fog látszani a navigációban." + +msgid "The template used to render the content." +msgstr "A tartalom megjelenítéséhez használt sablon." + +msgid "page content" +msgstr "oldal tartalom" + +msgid "page contents" +msgstr "oldal tartalmak" + +msgid "default" +msgstr "alapértelmezett" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Egyedi azonosító, amelyet az url-ben használunk ennek az oldalnak a " +"hivatkozásánál." + +msgid "Mark this page as a page type" +msgstr "Jelölje meg ezt az oldalt oldal típusként" + +msgid "pages" +msgstr "oldalak" + +msgid "No available title" +msgstr "Nincs elérhető cím" + +msgid "slug" +msgstr "URL aliasz" + +msgid "Path" +msgstr "Útvonal" + +msgid "Current page" +msgstr "Aktuális oldal" + +msgid "Page children (immediate)" +msgstr "Oldal közvetlen gyerekei" + +msgid "Page and children (immediate)" +msgstr "Oldal és közvetlen gyerekei" + +msgid "Page descendants" +msgstr "Oldal leszármazottai" + +msgid "Page and descendants" +msgstr "Oldal és leszérmazottai" + +msgid "on page level" +msgstr "oldal szinten" + +msgid "frontend view restriction" +msgstr "frontend nézet korlátozás" + +msgid "Please select user or group." +msgstr "Kérjük, válasszon felhasználót vagy csoportot." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"A felhasználók nem tehetnek közzé oldalt az oldal módosítására vonatkozó " +"jogosultság nélkül. Szerkesztési jogosultság szükséges." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"A felhasználók nem módosíthatják az oldal további beállításait az oldal " +"módosítására vonatkozó jogosultság nélkül. Szerkesztési jogosultság " +"szükséges." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"A felhasználók nem módosíthatják az oldal jogosultságait az oldal " +"módosítására vonatkozó jogosultság nélkül. Szerkesztési jogosultság " +"szükséges." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"A felhasználók nem mozgathatnak oldalt az oldal módosítására vonatkozó " +"jogosultság nélkül. Szerkesztési jogosultság szükséges." + +msgid "can recover any deleted page" +msgstr "bármelyik törölt oldalt visszaállíthatja?" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"Ha egyiket sem jelöli ki, akkor a felhasználónak mindegyik webhelyhez lesz " +"hozzáférése." + +msgid "Page global permission" +msgstr "Oldal globális jogosultság" + +msgid "Pages global permissions" +msgstr "Oldal globális jogosultságok" + +msgid "Page permission" +msgstr "Oldal jogosultság" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Az oldal létrehozása jogosultság igényli a gyermekekhez és leszármazottakhoz" +" való hozzáférést is, egyébként a létrehozott oldalt az oldal készítője nem " +"tudja majd szerkeszteni." + +msgid "User (page)" +msgstr "Felhasználó (oldal)" + +msgid "Users (page)" +msgstr "Felhasználók (oldal)" + +msgid "User group (page)" +msgstr "Felhasználó csoport (oldal)" + +msgid "User groups (page)" +msgstr "Felhasználó csoportok (oldal)" + +msgid "slot" +msgstr "horgony" + +msgid "width" +msgstr "szélesség" + +msgid "Edit object" +msgstr "Objektum szerkesztése" + +msgid "This is an external placeholder" +msgstr "Ez egy külső hely" + +msgid "plugin" +msgstr "plugin" + +msgid "plugins" +msgstr "pluginek" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Az admin felület és az eszköz sor nyelve" + +msgid "user setting" +msgstr "felhasználó beállítás" + +msgid "user settings" +msgstr "felhasználó beállítások" + +msgid "by template" +msgstr "sablon szerint" + +msgid "by code" +msgstr "kód szerint" + +msgid "static placeholder name" +msgstr "statikus helyőrző neve" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Leíró név, amely segítségével azonosítja a helyőrzőt. A látogatók számára " +"nem jelenik meg." + +msgid "placeholder code" +msgstr "helyőrző kódja" + +msgid "To render the static placeholder in templates." +msgstr "Sablonokban használt statikus helyőrzők megjelenítéséhez." + +msgid "placeholder content" +msgstr "helyőrző tartalma" + +msgid "creation_method" +msgstr "létrehozás módja" + +msgid "static placeholder" +msgstr "statikus helyőrző" + +msgid "static placeholders" +msgstr "statikus helyőrzők" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Már létezik statikus helyőrző ugyanazzal a webhellyel és kóddal" + +msgid "Advanced options" +msgstr "További beállítások" + +msgid "Generic" +msgstr "Álltalános" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "A(z) %(name)s \"%(obj)s\" sikeresen módosítva." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" +"Ennek a bővítménynek nincs több beállítása. Kérem, nyomja meg a mentés " +"gombot." + +msgid "Moved" +msgstr "Mozgatva" + +msgid "Changed" +msgstr "Megváltozott" + +msgid "Deleted" +msgstr "Törölve" + +msgid "Added Page Translation" +msgstr "Oldalfordítás hozzáadva" + +msgid "Changed Page Translation" +msgstr "Oldalfordítás módosítva" + +msgid "Deleted Page Translation" +msgstr "Oldalfordítás törölve" + +msgid "Added Plugin" +msgstr "Plugin hozzáadva" + +msgid "Changed Plugin" +msgstr "Plugin módosítva" + +msgid "Moved Plugin" +msgstr "Plugin mozgatva" + +msgid "Deleted Plugin" +msgstr "Plugin törölve" + +msgid "Cut Plugin" +msgstr "Plugin kivágva" + +msgid "Paste Plugin" +msgstr "Plugin beillesztve" + +msgid "Paste to Placeholder" +msgstr "Beillesztés a helyre" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Pluginek hozzáadva a helyhez a vágólapról" + +msgid "Cleared Placeholder" +msgstr "Hely kiürítve" + +msgid "Save" +msgstr "Mentés" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "Néhány mező nem módosítható, mert csak olvasható tartalom." + +#, python-format +msgid "Log in to administration here." +msgstr "" +"Az adminisztrációs felületre ezen a linken " +"jelentkezhet be." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Bejeletkezési url: %(login_url)s" + +msgid "Username:" +msgstr "Felhasználói név:" + +msgid "Password:" +msgstr "Jelszó:" + +msgid "Add a page" +msgstr "Oldal hozzáadása" + +msgid "Change a page" +msgstr "Oldal megváltoztatása" + +msgid "Home" +msgstr "Kezdőlap" + +msgid "View on site" +msgstr "Megtekintés az oldalon" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Kérem, javítsa az alábbi hibát." +msgstr[1] "Kérem, javítsa az alábbi hibákat." + +msgid "All permissions" +msgstr "Minden jogosultság" + +msgid "Loading..." +msgstr "Betöltés..." + +msgid "Save and continue editing" +msgstr "Mentés és szerkesztés folytatása" + +#, 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 "" +"Biztosan törli a(z) %(object_name)s \"%(escaped_object)s\" elemet? A " +"következő kapcsolódó elemek mind törlésre kerülnek:" + +msgid "Yes, I’m sure" +msgstr "Igen, biztos vagyok benne" + +msgid "No, take me back" +msgstr "Nem, vissza" + +msgid "Summary" +msgstr "Összefoglaló" + +msgid "User" +msgstr "Felhasználó" + +msgid "Group" +msgstr "Csoport" + +msgid "Can edit" +msgstr "Szerkesztheti" + +msgid "Can add" +msgstr "Hozzáadhat" + +msgid "Can delete" +msgstr "Törölhet" + +msgid "Can publish" +msgstr "Publikálhat" + +msgid "Can change permissions" +msgstr "Hozzáférési jogokat módosíthat" + +msgid "Can move" +msgstr "Mozgathat" + +msgid "Can view" +msgstr "Megtekintheti" + +msgid "(global)" +msgstr "(globális)" + +msgid "(current)" +msgstr "(jelenlegi)" + +msgid "Page doesn't inherit any permissions." +msgstr "Az oldalhoz nincs beállítva jogosultság." + +msgid "Edit model" +msgstr "Modell szerkesztése" + +msgid "Save as new" +msgstr "Mentés újként" + +msgid "Save and add another" +msgstr "Mentés új hozzáadása" + +msgid "Copy" +msgstr "Másolás" + +msgid "Cut" +msgstr "Kivágás" + +msgid "Paste" +msgstr "Beillesztés" + +msgid "Set as home" +msgstr "Beállítás kezdőlapként" + +msgid "is restricted" +msgstr "korlátozott" + +msgid "last change by" +msgstr "utoljára módosította:" + +msgid "last change on" +msgstr "utolsó módosítás:" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Oldalak listája" + +msgid "Search" +msgstr "Keresés" + +msgid "Page Tree" +msgstr "Oldalfa" + +msgid "Reset filter" +msgstr "Szűrő visszaállítása" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Törölt %(name)s visszaállítása\n" +" " + +msgid "Main Navigation" +msgstr "Fő Navigáció" + +msgid "Options" +msgstr "Opciók" + +msgid "Successfully moved" +msgstr "Áthelyezés sikeres" + +msgid "Changes within the tree might require a refresh." +msgstr "A fastruktúra változásait szükséges lehet frissíteni." + +msgid "Error:" +msgstr "Hiba:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Ezt az oldalt nem lehet másolni, mert alkalmazás van hozzá csatolva. Az " +"alkalmazások (apphook) kezeléséhez tekintse meg az oldal további " +"beállításait." + +msgid "Are you sure you want to § this page?" +msgstr "Biztosan § szeretné ezt az oldalt?" + +msgid "Reload" +msgstr "Újratöltés" + +msgid "New node" +msgstr "Új csomópont" + +msgid "nodes" +msgstr "csomópontok" + +msgid "View" +msgstr "Nézet" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Még nincs %(object)s.\n" +"
\n" +" %(object)s hozzáadása most.\n" +" " + +msgid "Copy options" +msgstr "Beállítások másolása" + +msgid "Choose copy options" +msgstr "Válasszon a másolási lehetőségek közül" + +msgid "Close" +msgstr "Bezárás" + +msgid "Legend" +msgstr "Jelmagyarázat" + +msgid "In menu" +msgstr "A menüben" + +msgid "Not in menu" +msgstr "Nincs a menüben" + +msgid "View page" +msgstr "Oldal megtekintése" + +msgid "Softroot" +msgstr "Lágy gyökér" + +msgid "Apphook" +msgstr "Alkalmazás (apphook)" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Alkalmazás: %(apphook)s" + +msgid "in menu" +msgstr "menüben" + +msgid "not in menu" +msgstr "nincs a menüben" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Oldalbeállítások (SHIFT kattintás a speciális beállításokért)" + +msgid "Permissions" +msgstr "Jogosultságok" + +msgid "inherited" +msgstr "örökölt" + +msgid "This page has no preview!" +msgstr "Ennek az oldalnak nincs előnézete!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Lehetséges, hogy a csatolt alkalmazás (apphook) nem biztosít tartalmat a " +"gyökeréhez." + +msgid "It is being redirected to:" +msgstr "Az oldal átkerült a következő címre:" + +msgid "Clipboard" +msgstr "Vágólap" + +msgid "Add plugin" +msgstr "Bővítmény hozzáadása" + +msgid "Copy all" +msgstr "Összes másolása" + +msgid "Copy from" +msgstr "másolás innen:" + +msgid "Empty all" +msgstr "Összes törlése" + +msgid "Filter plugins..." +msgstr "Beépülő modulok szűrése..." + +msgid "Expand all" +msgstr "Az összes kibontása" + +msgid "Collapse all" +msgstr "Összes bezárása" + +msgid "You cannot add plugins to this plugin." +msgstr "Nem adhat hozzá bővítményeket ehhez a bővítményhez." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"Ez a bővítmény nem helyezhető át vagy szerkeszthető a szülőjén kívülre" + +msgid "Clipboard is empty." +msgstr "A vágólap üres." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Ez a bővítmény nem engedélyezi az ilyen típusú beépülő modulokat." + +msgid "This plugin cannot have nested plugins." +msgstr "Ennek a beépülő modulnak nem lehetnek beágyazott bővítményei." + +msgid "Highlight" +msgstr "Kiemelés" + +msgid "Available plugins" +msgstr "Elérhető bővítmények" + +msgid "Toggle structure" +msgstr "Struktúra átkapcsolása" + +msgid "Login" +msgstr "Belépés" + +msgid "Add plugin to" +msgstr "Bővítmény hozzáadása ehhez" + +msgid "More" +msgstr "Továbbiak" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"A fejlesztési verzió django CMS %(cms_version)s, Django %(django_version)s, " +"Python  %(python_version)s használatával" + +msgid "Cancel" +msgstr "Mégsem" + +msgid "The following error occurred:" +msgstr "A következő hiba történt:" + +msgid "Action successful." +msgstr "Az művelet sikeres." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Biztosan törölni szeretné a plugint?" + +msgid "Are you sure you want to publish this page?" +msgstr "Biztos, hogy közzé kívánja tenni ezt az oldalt?" + +msgid "Plugin will be added here" +msgstr "A beépülő modul ide lesz hozzáadva" + +msgid "You have unsaved changes." +msgstr "Vannak nem mentett módosításaid." + +msgid "Loading" +msgstr "Betöltés" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Biztosan elveti ezeket a változtatásokat?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"Nem sikerült betölteni az űrlapot. Ellenőrizd, hogy a szerver megfelelően " +"működik-e." + +msgid "Most used" +msgstr "Legtöbbet használt" + +msgid "Shortcuts" +msgstr "Gyorsbillentyűk" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Az oldal időközben megváltozott, újratöltés..." + +msgid "CMS-wide Shortcuts" +msgstr "CMS-re kiterjedő gyorsbillentyűk" + +msgid "Bring up this help dialog" +msgstr "Nyissa meg ezt a súgó párbeszédpanelt" + +msgid "Close/cancel" +msgstr "Bezárás/megszakítás" + +msgid "Toggle structure mode" +msgstr "Szerkezetmódra váltás" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" +"Váltsd át a szerkezeti módot, és jelöld ki a fölé mutató beépülő modult" + +msgid "Open \"Create\" dialog" +msgstr "Nyissa meg a \"Létrehozás\" párbeszédpanelt" + +msgid "Focus on Toolbar" +msgstr "Fókusz az Eszköztárra" + +msgid "Focus on placeholders" +msgstr "Fokuszáljon a helyőrzőkre" + +msgid "Move to next/previous element" +msgstr "Ugrás a következő/előző elemre" + +msgid "Focus on plugins of placeholder" +msgstr "Koncentráljon a helyőrző beépülő moduljaira" + +msgid "Edit plugin" +msgstr "Beépülő modul szerkesztése" + +msgid "Open actions menu" +msgstr "A műveletek menü megnyitása" + +msgid "Expand/collapse" +msgstr "Kibontás/összecsukás" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Sikertelen belépés. Ellenőrizd az adatokat és próbáld újra." + +msgid "Double-click to edit" +msgstr "Dupla kattintás a szerkesztéshez" + +msgid "Tap to edit" +msgstr "A szerkesztéshez koppintson" + +msgid "Click to go back" +msgstr "Kattintson a visszalépéshez" + +msgid "Click to go forward" +msgstr "Kattintson a továbblépéshez" + +msgid "Minimize" +msgstr "Minimalizálás" + +msgid "Maximize" +msgstr "Maximalizálás" + +msgid "Placeholder not editable" +msgstr "A hely nem szerkeszthető" + +msgid "Drop a plugin here" +msgstr "Húzz egy plugint ide" + +msgid "Welcome to your new django CMS installation!" +msgstr "Üdvözöljük az új django CMS telepítésében!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "%(cms_version)s verzió" + +msgid "Let’s build something great together!" +msgstr "Építsünk együtt valami nagyszerűt!" + +msgid "Please log in" +msgstr "Kérlek jelentkezz be" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Adja hozzá az első oldalát\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Támogatás

\n" +"

\n" +" A támogatása közvetlenül a terméket szolgálja, főként a\n" +" django CMS Fellowship Program révén!\n" +"

\n" +"

\n" +" Ön vagy a szervezete számára egy gyors adományozási lehetőség a\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Csatlakozzon hozzánk

\n" +"

\n" +" A django CMS Association egy non-profit szervezet, amely a django CMS fejlesztését finanszírozza és\n" +" irányítja.\n" +"

\n" +"

\n" +" Csatlakozhat akár magánszemélyként, akár\n" +" szervezetként.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Közreműködés

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Telepítési Megjegyzések" + +msgid "Support" +msgstr "Támogatás" + +msgid "Documentation" +msgstr "Dokumentáció" + +msgid "User guide" +msgstr "Felhasználói kézikönyv" + +msgid "Give back" +msgstr "Adjon vissza" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Ha nem látja a django CMS logót a tetején, ellenőrizze,\n" +" hogy a static/cms mappát hozzákapcsolta-e a\n" +" statikus fájljaihoz.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Azért látja ezt az üzenetet, mert\n" +" DEBUG = True van a django beállítások fájljában, és\n" +" még nem adott hozzá egyetlen oldalt sem.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Üdvözöljük a django CMS-ben" + +msgid "Add Another" +msgstr "Új hozzáadása" + +msgid "Back" +msgstr "Vissza" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" +"Kérjük, válasszon egy lehetőséget az alábbiak közül a következő lépéshez." + +msgid "Next" +msgstr "Tovább" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Ismeretlen" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Az oldal nem található itt: %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"A template tag nem találja az oldalt a következő argumentumokkal: `%(page_lookup)s`.\n" +"A kérésben szereplő URL: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Két oszlop" + +msgid "Three columns" +msgstr "Három oszlop" + +msgid "username" +msgstr "felhasználónév" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Kötelező. 300 karakter vagy kevesebb. Betűk, számok és @/./+/-/_ karakterek" + +msgid "Enter a valid username." +msgstr "Adjon meg egy érvényes felhasználónevet." + +msgid "email address" +msgstr "email cím" + +msgid "staff status" +msgstr "személyzeti státusz" + +msgid "Designates whether the user can log into this admin site." +msgstr "" +"Megadja, hogy a felhasználó bejelentkezhet-e erre az adminisztrációs " +"webhelyre." + +msgid "active" +msgstr "aktív" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Megadja, hogy a felhasználót aktívként kell-e kezelni. A fiókok törlése " +"helyett szüntesse meg ennek a kijelölését." + +msgid "users" +msgstr "felhasználók" + +msgid "Title Extension" +msgstr "Cím kiterjesztés" + +msgid "Page Extension" +msgstr "Oldal kiterjesztés" + +msgid "object ID" +msgstr "objektum AZ" + +msgid "Example1 App" +msgstr "Példa1 Alkalmazás" + +msgid "MultilingualExample1 App" +msgstr "Többnyelvű Példa 1 Alkalmazás" + +msgid "Example1" +msgstr "Példa1" + +msgid "Examples" +msgstr "Példák" + +msgid "Extra Context" +msgstr "Extra Tartalom" + +msgid "Articles" +msgstr "Cikkek" + +msgid "Sample App" +msgstr "Példa Alkalmazás" + +msgid "Sample App with config" +msgstr "Mintaalkalmazás konfigurációval" + +msgid "Sample App with excluded permissions" +msgstr "Mintaalkalmazás kizárt jogosultságokkal" + +msgid "Sample App 2" +msgstr "Példa alkalmazás 2" + +msgid "Sample App 3" +msgstr "Példa alkalmazás 2" + +msgid "Sample App Without Landing Page" +msgstr "Minta alkalmazás kezdőoldal nélkül" + +msgid "Namespaced App" +msgstr "Névtér App" + +msgid "Parent app" +msgstr "Szülő alkalmazás" + +msgid "Child app" +msgstr "Gyerek alkalmazás" + +msgid "Variable urls-menus App" +msgstr "Változó URL-menük Alkalmazás" + +msgid "sample root page" +msgstr "példa kezdő oldal" + +msgid "sample settings page" +msgstr "példa beállítás oldal" + +msgid "sample account page" +msgstr "példa fiók oldal" + +msgid "sample my profile page" +msgstr "példa saját profil oldal" + +msgid "Static Menu" +msgstr "Statikus menü" + +msgid "Static Menu2" +msgstr "Statikus menü 2" + +msgid "Static Menu3" +msgstr "Statikus menü 3" + +msgid "Static Menu4" +msgstr "Statikus menü" + +msgid "Category" +msgstr "Kategória" + +msgid "Categories" +msgstr "Kategóriák" + +msgid "Add Category" +msgstr "Kategória hozzáadása" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Kategória megváltoztatása" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Köszönjük, hogy minőségi időt töltöttél ma a Webhelyen." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Örökli a templátot a közvetlen őstől" + +msgid "UserSettings" +msgstr "FelhasználóBeállítások" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Beépülő modul hozzáadása a helyőrzőhöz \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Bővítmény hozzáadása ehhez %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Egyetlen hely" + +msgid "CMS - your user account was created." +msgstr "CMS - a felhasználói fiókod létrejött." + +msgid "CMS - your user account was changed." +msgstr "CMS - a felhasználói fiókod megváltozott.." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Ezen a helyen elérte a pluginek száma a maximálisat (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Ezen a helyen a megengedett %(plugin_name)s bővítmények száma elérte a " +"maximális mennyiséget (%(limit)s)." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Nem található a megadott CMS_REQUEST_IP_RESOLVER modul: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Nem található a megadott CMS_REQUEST_IP_RESOLVER függvény: \"{0}\" a \"{1}\"" +" modulban." + +#, python-format +msgid "Create a new %s instance." +msgstr "Hozzon létre egy új %s példányt." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Már regisztráltak egy varázslót a következő modellhez: %s" diff --git a/cms/locale/hu/LC_MESSAGES/djangojs.po b/cms/locale/hu/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..75b89511 --- /dev/null +++ b/cms/locale/hu/LC_MESSAGES/djangojs.po @@ -0,0 +1,25 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# fazekasda , 2012 +# fazekasda , 2012 +# Szabo L. , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Szabo L. , 2013\n" +"Language-Team: Hungarian (http://app.transifex.com/divio/django-cms/language/hu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Biztosan meg szeretné változtatni a füleket még mielőtt elmentené az oldalt?" diff --git a/cms/locale/id/LC_MESSAGES/django.po b/cms/locale/id/LC_MESSAGES/django.po new file mode 100644 index 00000000..34c2a365 --- /dev/null +++ b/cms/locale/id/LC_MESSAGES/django.po @@ -0,0 +1,1757 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Prasasto Adi , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Indonesian (https://app.transifex.com/divio/teams/58664/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "All" +msgstr "Semua" + +msgid "Copy permissions" +msgstr "Izin menyalin" + +msgid "Slug" +msgstr "Slug" + +msgid "The part of the title that is used in the URL" +msgstr "Bagian dari judul yang digunakan di dalam URL" + +msgid "Page type" +msgstr "Tipe halaman" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Tipe Halaman" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Mengganti URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Biarkan kolom ini kosong jika path standar harus digunakan." + +msgid "Start typing..." +msgstr "Mulai mengetik..." + +msgid "menu visibility" +msgstr "visibilitas menu" + +msgid "limit when this page is visible in the menu" +msgstr "batasi kapan halaman ini terlihat di menu" + +msgid "X Frame Options" +msgstr "Opsi X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Apakah halaman ini dapat disematkan di halaman atau situs web lain." + +msgid "URL options" +msgstr "Opsi URL" + +msgid "Menu options" +msgstr "Opsi Menu" + +msgid "Headers" +msgstr "Header" + +msgid "Application" +msgstr "Aplikasi" + +msgid "Hook application to this page." +msgstr "Hubungkan aplikasi ke halaman ini." + +msgid "Application configurations" +msgstr "Konfigurasi aplikasi" + +msgid "A page with this reverse URL id exists already." +msgstr "Halaman dengan id reverse URL ini sudah ada." + +msgid "Invalid application config value" +msgstr "Nilai konfigurasi aplikasi tidak valid" + +msgid "An application instance using this configuration already exists." +msgstr "Instans aplikasi yang menggunakan konfigurasi ini sudah ada." + +msgid "An application instance with this name already exists." +msgstr "Instans aplikasi dengan nama ini sudah ada." + +msgid "You can't move the home page inside another page" +msgstr "Anda tidak dapat memindahkan halaman beranda ke dalam halaman lain" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Anda tidak dapat memiliki dua halaman dengan slug yang sama pada tingkat " +"halaman yang sama. Harap ubah slug salah satu halaman sebelum mencoba " +"memindahkan lagi." + +msgid "Yes" +msgstr "Ya" + +msgid "No" +msgstr "Tidak" + +msgid "user" +msgstr "pengguna" + +msgid "can_view" +msgstr "dapat melihat" + +msgid "Add" +msgstr "Tambah" + +msgid "Change" +msgstr "Ubah" + +msgid "Delete" +msgstr "Hapus" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Pengguna tidak dapat membuat halaman tanpa izin untuk mengubah halaman yang " +"dibuat. Diperlukan penyuntingan izin." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Pengguna tidak dapat menghapus halaman tanpa izin untuk mengubah halaman. " +"Diperlukan penyuntingan izin." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Pengguna tidak dapat mengatur perizinan halaman tanpa izin untuk mengubah " +"halaman. Diperlukan penyuntingan izin." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Pengguna tidak dapat menghapus perizinan halaman tanpa izin untuk mengubah " +"halaman. Diperlukan penyuntingan izin." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Pengguna tidak dapat membuat perizinan halaman tanpa izin untuk mengubah " +"izin yang dibuat. Diperlukan penyuntingan izin." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Pengguna tidak dapat menghapus perizinan halaman tanpa izin untuk mengubah " +"perizinan. Diperlukan penyuntingan izin." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Tipe plugin '%s' tidak valid" + +msgid "Language must be set to a supported language!" +msgstr "Bahasa harus diatur ke bahasa yang didukung!" + +msgid "Parent plugin language must be same as language!" +msgstr "Bahasa plugin induk harus sama dengan bahasa!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Placeholder plugin induk harus sama dengan placeholder!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Posisi plugin harus lebih besar dari %(position)d" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "Pengaturan Lanjutan" + +msgid "The page is not eligible to be home." +msgstr "Halaman ini tidak memenuhi syarat untuk menjadi beranda." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Objek %(name)s dengan primary key %(key)r tidak ada." + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Kesalahan! Anda tidak memiliki izin untuk memindahkan halaman ini. Silahkan " +"memuat kembali halaman ini" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Kesalahan! Anda tidak memiliki izin untuk menyalin halaman ini." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Kesalahan! Halaman yang Anda tempel tidak diterjemahkan ke salah satu bahasa" +" yang dikonfigurasi oleh situs tujuan." + +msgid "You do not have permission to edit this page" +msgstr "Anda tidak memiliki izin untuk menyunting halaman ini" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(untuk mengubahnya, terlebih dahulu batalkan penerbitan versi halaman ini " +"yang saat ini diterbitkan)" + +msgid "Add Translation" +msgstr "Tambah Terjemahan" + +msgid "Add Page Copy" +msgstr "Tambah Salinan Halaman" + +msgid "New sub page" +msgstr "Subhalaman baru" + +msgid "New page" +msgstr "Halaman baru" + +msgid "Database error" +msgstr "Kesalahan basis data" + +msgid "Template not valid" +msgstr "Template tidak valid" + +msgid "Placeholder selection not valid" +msgstr "Pemilihan placeholder tidak valid" + +msgid "The template was successfully changed" +msgstr "Template berhasil diganti" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Placeholder '%s' tidak ada dalam bahasa target" + +msgid "You do not have permission to copy these plugins." +msgstr "Anda tidak memiliki izin untuk menyalin plugin ini." + +msgid "You do not have permission to delete this page" +msgstr "Anda tidak memiliki izin untuk menghapus halaman ini" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Judul dan plugin dengan bahasa %(language)s telah dihapus" + +msgid "Public content" +msgstr "Konten publik" + +msgid "Empty" +msgstr "Kosong" + +msgid "Create Content" +msgstr "Buat Konten" + +msgid "View restriction" +msgstr "Pembatasan tampilan" + +msgid "View restrictions" +msgstr "Pembatasan tampilan" + +#, python-format +msgid "Field %s not found" +msgstr "Kolom %s tidak ditemukan" + +msgid "You do not have permission to edit this item" +msgstr "Anda tidak memiliki izin untuk menyunting item ini" + +msgid "You do not have permission to add a plugin" +msgstr "Anda tidak memiliki izin untuk menambahkan plugin" + +msgid "You do not have permission to copy this placeholder." +msgstr "Anda tidak memiliki izin untuk menyalin placeholder ini." + +msgid "Plugin not found" +msgstr "Plugin tidak ditemukan" + +msgid "You do not have permission to edit this plugin" +msgstr "Anda tidak memiliki izin untuk menyunting plugin ini" + +msgid "You have no permission to paste this plugin" +msgstr "Anda tidak memiliki izin untuk menempel plugin ini" + +msgid "You have no permission to paste this placeholder" +msgstr "Anda tidak memiliki izin untuk menempel placeholder ini" + +msgid "You have no permission to move this plugin" +msgstr "Anda tidak memiliki izin untuk memindahkan plugin ini" + +msgid "You have no permission to cut this plugin" +msgstr "Anda tidak memiliki izin untuk memotong plugin ini" + +msgid "You do not have permission to delete this plugin" +msgstr "Anda tidak memiliki izin untuk menghapus plugin ini" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "Plugin %(name)s \"%(obj)s\" berhasil dihapus." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Tidak dapat menghapus %(name)s" + +msgid "Are you sure?" +msgstr "Anda yakin?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Anda tidak memiliki izin untuk mengosongkan placeholder ini" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Placeholder \"%(obj)s\" berhasil dikosongkan." + +msgid "placeholder" +msgstr "placeholder" + +msgid "Page permissions" +msgstr "Izin halaman" + +msgid "User & Group permissions" +msgstr "Izin Pengguna & Grup" + +msgid "Page permissions management" +msgstr "Pengelolaan izin halaman" + +msgid "Actions" +msgstr "Tindakan" + +msgid "Empty content" +msgstr "Konten kosong" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Properti %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Tambah %(object_name)s baru" + +msgid "Add content" +msgstr "Tambah konten" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Konten untuk bahasa saat ini telah diubah. Klik \"Batal\" untuk kembali ke " +"formulir dan menyimpan perubahan. Klik \"OK\" untuk membuang perubahan." + +#, python-format +msgid "Add %(language)s content" +msgstr "Tambah konten %(language)s" + +msgid "Preview" +msgstr "Pratinjau" + +msgid "Settings" +msgstr "Pengaturan" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Bahasa %(value)s tidak valid. Formulir ini tidak dapat diproses. Coba ganti " +"bahasa." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Tidak ditemukan apphook terdaftar \"%r\"" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Placeholder" + +msgid "Create" +msgstr "Buat" + +msgid "Edit" +msgstr "Sunting" + +msgid "Structure" +msgstr "Struktur" + +msgid "Content" +msgstr "Konten" + +msgid "Sites" +msgstr "Situs" + +msgid "Admin Sites" +msgstr "Situs Admin" + +msgid "Administration" +msgstr "Administrasi" + +msgid "User settings" +msgstr "Pengaturan pengguna" + +msgid "Clipboard..." +msgstr "Papan klip..." + +msgid "Clear clipboard" +msgstr "Bersihkan papan klip" + +msgid "Disable toolbar" +msgstr "Nonaktifkan bilah alat" + +msgid "Shortcuts..." +msgstr "Pintasan..." + +msgid "Users" +msgstr "Pengguna" + +#, python-format +msgid "Logout %s" +msgstr "Keluar %s" + +msgid "Logout" +msgstr "Keluar" + +msgid "Language" +msgstr "Bahasa" + +msgid "Delete Translation" +msgstr "Hapus Terjemahan" + +msgid "Copy all plugins" +msgstr "Salin semua plugin" + +#, python-format +msgid "from %s" +msgstr "dari %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Apakah Anda yakin ingin menyalin semua plugin dari %s?" + +msgid "Pages" +msgstr "Halaman" + +msgid "Page" +msgstr "Halaman" + +msgid "Create Page" +msgstr "Buat Halaman" + +msgid "New Page" +msgstr "Halaman Baru" + +msgid "New Sub Page" +msgstr "Subhalaman Baru" + +msgid "Duplicate this Page" +msgstr "Duplikasikan Halaman Ini" + +msgid "Page settings" +msgstr "Pengaturan halaman" + +msgid "Advanced settings" +msgstr "Pengaturan lanjutan" + +msgid "Templates" +msgstr "Template" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "Sembunyikan di navigasi" + +msgid "Display in navigation" +msgstr "Tampilkan di navigasi" + +msgid "Delete page" +msgstr "Hapus halaman" + +msgid "Create a new page next to the current page." +msgstr "Buat halaman baru di samping halaman saat ini." + +msgid "Create a page below the current page." +msgstr "Buat halaman di bawah halaman saat ini." + +msgid "Select a valid site" +msgstr "Pilih situs yang valid" + +msgid "Select a valid page" +msgstr "Pilih halaman yang valid" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"Halaman %(conflict_page)s memiliki url '%(url)s' yang sama dengan halaman " +"saat ini \"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"Halaman %(conflict_page)s memiliki url '%(url)s' yang sama dengan halaman " +"saat ini." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Opsional. Jika diisi, akan ditambahkan secara otomatis ke dalam plugin teks " +"baru." + +msgid "Provide a title for the new page." +msgstr "Berikan judul untuk halaman baru." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "Biarkan kosong untuk slug otomatis, atau ganti sesuai kebutuhan." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" +"Tidak dapat membuat slug secara otomatis. Harap masukkan secara manual." + +msgid "Please provide a valid slug." +msgstr "Harap masukkan slug yang valid." + +msgid "You don't have the permissions required to add a page." +msgstr "Anda tidak memiliki izin yang diperlukan untuk menambahkan halaman." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "posisi" + +msgid "language" +msgstr "bahasa" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "tanggal pembuatan" + +msgid "can edit" +msgstr "dapat menyunting" + +msgid "can add" +msgstr "dapat menambah" + +msgid "can delete" +msgstr "dapat menghapus" + +msgid "can change advanced settings" +msgstr "dapat mengubah pengaturan lanjutan" + +msgid "can publish" +msgstr "dapat menerbitkan" + +msgid "can change permissions" +msgstr "dapat mengubah izin" + +msgid "can move" +msgstr "dapat memindahkan" + +msgid "view restricted" +msgstr "tampilan dibatasi" + +msgid "can recover pages" +msgstr "dapat memulihkan halaman" + +msgid "group" +msgstr "grup" + +msgid "sites" +msgstr "situs" + +msgid "created by" +msgstr "dibuat oleh" + +msgid "changed by" +msgstr "diubah oleh" + +msgid "publication date" +msgstr "tanggal penerbitan" + +msgid "publication end date" +msgstr "tanggal berakhir penerbitan" + +msgid "in navigation" +msgstr "di navigasi" + +msgid "soft root" +msgstr "akar lunak" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "menu terlampir" + +msgid "template" +msgstr "template" + +msgid "login required" +msgstr "perlu masuk" + +msgid "application" +msgstr "aplikasi" + +msgid "application instance name" +msgstr "nama instans aplikasi" + +msgid "site" +msgstr "situs" + +msgid "Grant on" +msgstr "Berikan pada" + +msgid "page" +msgstr "halaman" + +msgid "no limit set" +msgstr "tidak ada batas yang diatur" + +msgid "for logged in users only" +msgstr "hanya untuk pengguna yang masuk" + +msgid "for anonymous users only" +msgstr "hanya untuk pengguna anonim" + +msgid "Inherit from parent page" +msgstr "Warisi dari halaman induk" + +msgid "Deny" +msgstr "Tolak" + +msgid "Only this website" +msgstr "Hanya situs web ini" + +msgid "Allow" +msgstr "Izinkan" + +msgid "title" +msgstr "judul" + +msgid "The default title" +msgstr "Judul default" + +msgid "Page Title" +msgstr "Judul Halaman" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Mengganti apa yang terpampang di atas browser anda atau di dalam bookmarks" + +msgid "Menu Title" +msgstr "Judul Menu" + +msgid "Overwrite what is displayed in the menu" +msgstr "Mengganti apa yang tertulis di menu" + +msgid "Description meta tag" +msgstr "Deskripsi meta tag" + +msgid "A description of the page used by search engines." +msgstr "Deskripsi dari halaman yang digunakan oleh mesin pencari." + +msgid "redirect" +msgstr "pengalihan" + +msgid "Redirects to this URL." +msgstr "Mengalihkan ke URL ini." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Semua leluhur tidak akan ditampilkan di navigasi" + +msgid "The template used to render the content." +msgstr "Template yang digunakan untuk merender konten." + +msgid "page content" +msgstr "konten halaman" + +msgid "page contents" +msgstr "konten halaman" + +msgid "default" +msgstr "bawaan" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Pengenal unik yang digunakan dengan templatetag page_url untuk menautkan ke " +"halaman ini" + +msgid "Mark this page as a page type" +msgstr "Tandai halaman ini sebagai tipe halaman" + +msgid "pages" +msgstr "halaman" + +msgid "No available title" +msgstr "Tidak ada judul yang tersedia" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Jalur" + +msgid "Current page" +msgstr "Halaman saat ini" + +msgid "Page children (immediate)" +msgstr "Anak halaman (langsung)" + +msgid "Page and children (immediate)" +msgstr "Halaman dan anak (langsung)" + +msgid "Page descendants" +msgstr "Keturunan halaman" + +msgid "Page and descendants" +msgstr "Halaman dan keturunan" + +msgid "on page level" +msgstr "pada tingkat halaman" + +msgid "frontend view restriction" +msgstr "pembatasan tampilan frontend" + +msgid "Please select user or group." +msgstr "Harap pilih pengguna atau grup." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Pengguna tidak dapat menerbitkan halaman tanpa izin untuk mengubah halaman. " +"Izin penyuntingan diperlukan." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Pengguna tidak dapat mengubah pengaturan lanjutan halaman tanpa izin untuk " +"mengubah halaman. Izin penyuntingan diperlukan." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Pengguna tidak dapat mengubah izin halaman tanpa izin untuk mengubah " +"halaman. Izin penyuntingan diperlukan." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Pengguna tidak dapat memindahkan halaman tanpa izin untuk mengubah halaman. " +"Izin penyuntingan diperlukan." + +msgid "can recover any deleted page" +msgstr "dapat memulihkan halaman yang dihapus" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "Jika tidak ada yang dipilih, pengguna diberi izin untuk semua situs." + +msgid "Page global permission" +msgstr "Izin global halaman" + +msgid "Pages global permissions" +msgstr "Izin global halaman" + +msgid "Page permission" +msgstr "Izin halaman" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Penambahan izin halaman juga memerlukan akses ke anak, atau keturunan, jika " +"tidak halaman yang ditambahkan tidak dapat diubah oleh pembuatnya." + +msgid "User (page)" +msgstr "Pengguna (halaman)" + +msgid "Users (page)" +msgstr "Pengguna (halaman)" + +msgid "User group (page)" +msgstr "Grup pengguna (halaman)" + +msgid "User groups (page)" +msgstr "Grup pengguna (halaman)" + +msgid "slot" +msgstr "slot" + +msgid "width" +msgstr "lebar" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Bahasa untuk antarmuka admin dan bilah alat" + +msgid "user setting" +msgstr "pengaturan pengguna" + +msgid "user settings" +msgstr "pengaturan pengguna" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "Opsi lanjutan" + +msgid "Generic" +msgstr "Generik" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" berhasil diubah." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" +"Tidak ada pengaturan lebih lanjut untuk plugin ini. Silakan tekan simpan." + +msgid "Moved" +msgstr "Dipindahkan" + +msgid "Changed" +msgstr "Diubah" + +msgid "Deleted" +msgstr "Dihapus" + +msgid "Added Page Translation" +msgstr "Terjemahan Halaman Ditambahkan" + +msgid "Changed Page Translation" +msgstr "Terjemahan Halaman Diubah" + +msgid "Deleted Page Translation" +msgstr "Terjemahan Halaman Dihapus" + +msgid "Added Plugin" +msgstr "Plugin Ditambahkan" + +msgid "Changed Plugin" +msgstr "Plugin Diubah" + +msgid "Moved Plugin" +msgstr "Plugin Dipindahkan" + +msgid "Deleted Plugin" +msgstr "Plugin Dihapus" + +msgid "Cut Plugin" +msgstr "Plugin Dipotong" + +msgid "Paste Plugin" +msgstr "Tempel Plugin" + +msgid "Paste to Placeholder" +msgstr "Tempel ke Placeholder" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Plugin ditambahkan ke placeholder dari papan klip" + +msgid "Cleared Placeholder" +msgstr "Placeholder Dikosongkan" + +msgid "Save" +msgstr "Simpan" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "Beberapa kolom tidak dapat diubah karena merupakan konten hanya-baca." + +#, python-format +msgid "Log in to administration here." +msgstr "Masuk ke administrasi di sini." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "URL masuk: %(login_url)s" + +msgid "Username:" +msgstr "Nama pengguna:" + +msgid "Password:" +msgstr "Kata sandi:" + +msgid "Add a page" +msgstr "Tambah halaman" + +msgid "Change a page" +msgstr "Ubah halaman" + +msgid "Home" +msgstr "Beranda" + +msgid "View on site" +msgstr "Lihat di situs" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Harap perbaiki kesalahan di bawah ini." + +msgid "All permissions" +msgstr "Semua izin" + +msgid "Loading..." +msgstr "Memuat..." + +msgid "Save and continue editing" +msgstr "Simpan dan lanjutkan penyuntingan" + +#, 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 "" +"Apakah Anda yakin ingin menghapus %(object_name)s \"%(escaped_object)s\"? " +"Semua item terkait berikut akan dihapus:" + +msgid "Yes, I’m sure" +msgstr "Ya, saya yakin" + +msgid "No, take me back" +msgstr "Tidak, kembalikan saya" + +msgid "Summary" +msgstr "Ringkasan" + +msgid "User" +msgstr "Pengguna" + +msgid "Group" +msgstr "Grup" + +msgid "Can edit" +msgstr "Dapat menyunting" + +msgid "Can add" +msgstr "Dapat menambah" + +msgid "Can delete" +msgstr "Dapat menghapus" + +msgid "Can publish" +msgstr "Dapat menerbitkan" + +msgid "Can change permissions" +msgstr "Dapat mengubah izin" + +msgid "Can move" +msgstr "Dapat memindahkan" + +msgid "Can view" +msgstr "Dapat melihat" + +msgid "(global)" +msgstr "(global)" + +msgid "(current)" +msgstr "(saat ini)" + +msgid "Page doesn't inherit any permissions." +msgstr "Halaman tidak mewarisi izin apa pun." + +msgid "Edit model" +msgstr "Sunting model" + +msgid "Save as new" +msgstr "Simpan sebagai baru" + +msgid "Save and add another" +msgstr "Simpan dan tambah lainnya" + +msgid "Copy" +msgstr "Salin" + +msgid "Cut" +msgstr "Potong" + +msgid "Paste" +msgstr "Tempel" + +msgid "Set as home" +msgstr "Atur sebagai beranda" + +msgid "is restricted" +msgstr "dibatasi" + +msgid "last change by" +msgstr "perubahan terakhir oleh" + +msgid "last change on" +msgstr "perubahan terakhir pada" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Daftar halaman" + +msgid "Search" +msgstr "Cari" + +msgid "Page Tree" +msgstr "Pohon Halaman" + +msgid "Reset filter" +msgstr "Atur ulang filter" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Pulihkan %(name)s yang dihapus\n" +" " + +msgid "Main Navigation" +msgstr "Navigasi Utama" + +msgid "Options" +msgstr "Opsi" + +msgid "Successfully moved" +msgstr "Berhasil dipindahkan" + +msgid "Changes within the tree might require a refresh." +msgstr "Perubahan dalam pohon mungkin memerlukan penyegaran." + +msgid "Error:" +msgstr "Kesalahan:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Halaman ini tidak dapat disalin karena ada aplikasi yang terlampir. Lihat " +"Pengaturan lanjutan halaman untuk mengelola apphook." + +msgid "Are you sure you want to § this page?" +msgstr "Apakah Anda yakin ingin § halaman ini?" + +msgid "Reload" +msgstr "Muat ulang" + +msgid "New node" +msgstr "Node baru" + +msgid "nodes" +msgstr "node" + +msgid "View" +msgstr "Lihat" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Belum ada %(object)s.\n" +"
\n" +" Tambah %(object)s sekarang.\n" +" " + +msgid "Copy options" +msgstr "Opsi penyalinan" + +msgid "Choose copy options" +msgstr "Pilih opsi penyalinan" + +msgid "Close" +msgstr "Tutup" + +msgid "Legend" +msgstr "Legenda" + +msgid "In menu" +msgstr "Di menu" + +msgid "Not in menu" +msgstr "Tidak di menu" + +msgid "View page" +msgstr "Lihat halaman" + +msgid "Softroot" +msgstr "Akar lunak" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Aplikasi: %(apphook)s" + +msgid "in menu" +msgstr "di menu" + +msgid "not in menu" +msgstr "tidak di menu" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Pengaturan halaman (klik SHIFT untuk pengaturan lanjutan)" + +msgid "Permissions" +msgstr "Izin" + +msgid "inherited" +msgstr "diwarisi" + +msgid "This page has no preview!" +msgstr "Halaman ini tidak memiliki pratinjau!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Kemungkinan apphook yang terlampir tidak menyediakan konten untuk root-nya." + +msgid "It is being redirected to:" +msgstr "Sedang dialihkan ke:" + +msgid "Clipboard" +msgstr "Papan klip" + +msgid "Add plugin" +msgstr "Tambah plugin" + +msgid "Copy all" +msgstr "Salin semua" + +msgid "Copy from" +msgstr "Salin dari" + +msgid "Empty all" +msgstr "Kosongkan semua" + +msgid "Filter plugins..." +msgstr "Filter plugin..." + +msgid "Expand all" +msgstr "Bentangkan semua" + +msgid "Collapse all" +msgstr "Ciutkan semua" + +msgid "You cannot add plugins to this plugin." +msgstr "Anda tidak dapat menambahkan plugin ke plugin ini." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "Plugin ini tidak dapat dipindahkan atau disunting di luar induknya" + +msgid "Clipboard is empty." +msgstr "Papan klip kosong." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" +"Plugin ini tidak mengizinkan plugin tipe ini sebagai plugin bersarang." + +msgid "This plugin cannot have nested plugins." +msgstr "Plugin ini tidak dapat memiliki plugin bersarang." + +msgid "Highlight" +msgstr "Sorot" + +msgid "Available plugins" +msgstr "Plugin yang tersedia" + +msgid "Toggle structure" +msgstr "Alihkan struktur" + +msgid "Login" +msgstr "Masuk" + +msgid "Add plugin to" +msgstr "Tambah plugin ke" + +msgid "More" +msgstr "Lainnya" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Versi pengembangan menggunakan django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Batal" + +msgid "The following error occurred:" +msgstr "Kesalahan berikut terjadi:" + +msgid "Action successful." +msgstr "Tindakan berhasil." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Apakah Anda yakin ingin menghapus plugin ini?" + +msgid "Are you sure you want to publish this page?" +msgstr "Apakah Anda yakin ingin menerbitkan halaman ini?" + +msgid "Plugin will be added here" +msgstr "Plugin akan ditambahkan di sini" + +msgid "You have unsaved changes." +msgstr "Anda memiliki perubahan yang belum disimpan." + +msgid "Loading" +msgstr "Memuat" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Apakah Anda yakin ingin membuang perubahan ini?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"Formulir tidak dapat dimuat. Harap periksa bahwa server berjalan dengan " +"benar." + +msgid "Most used" +msgstr "Paling sering digunakan" + +msgid "Shortcuts" +msgstr "Pintasan" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Halaman telah diubah sementara itu, memuat ulang..." + +msgid "CMS-wide Shortcuts" +msgstr "Pintasan seluruh CMS" + +msgid "Bring up this help dialog" +msgstr "Tampilkan dialog bantuan ini" + +msgid "Close/cancel" +msgstr "Tutup/batal" + +msgid "Toggle structure mode" +msgstr "Alihkan mode struktur" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Alihkan mode struktur dan sorot plugin yang ditunjuk kursor" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "Fokus pada Bilah Alat" + +msgid "Focus on placeholders" +msgstr "Fokus pada placeholder" + +msgid "Move to next/previous element" +msgstr "Pindah ke elemen berikutnya/sebelumnya" + +msgid "Focus on plugins of placeholder" +msgstr "Fokus pada plugin placeholder" + +msgid "Edit plugin" +msgstr "Sunting plugin" + +msgid "Open actions menu" +msgstr "Buka menu tindakan" + +msgid "Expand/collapse" +msgstr "Bentangkan/ciutkan" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Gagal masuk. Harap periksa kredensial Anda dan coba lagi." + +msgid "Double-click to edit" +msgstr "Klik dua kali untuk menyunting" + +msgid "Tap to edit" +msgstr "Ketuk untuk menyunting" + +msgid "Click to go back" +msgstr "Klik untuk kembali" + +msgid "Click to go forward" +msgstr "Klik untuk maju" + +msgid "Minimize" +msgstr "Perkecil" + +msgid "Maximize" +msgstr "Perbesar" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "Letakkan plugin di sini" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Versi %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Mari bangun sesuatu yang hebat bersama!" + +msgid "Please log in" +msgstr "Harap masuk" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Tambah halaman pertama Anda\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Bantu Pendanaan

\n" +"

\n" +" Pendanaan Anda secara langsung bermanfaat bagi produk, terutama melalui\n" +" Program Fellowship django CMS!\n" +"

\n" +"

\n" +" Cara cepat bagi Anda atau organisasi Anda untuk berdonasi adalah melalui\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Bergabunglah Dengan Kami

\n" +"

\n" +" django CMS Association adalah organisasi nirlaba yang mendanai dan mengarahkan pengembangan\n" +" django CMS.\n" +"

\n" +"

\n" +" Anda dapat bergabung baik sebagai individu maupun sebagai\n" +" organisasi.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Berkontribusi

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Catatan Instalasi" + +msgid "Support" +msgstr "Dukungan" + +msgid "Documentation" +msgstr "Dokumentasi" + +msgid "User guide" +msgstr "Panduan pengguna" + +msgid "Give back" +msgstr "Beri kembali" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Jika Anda tidak melihat logo django CMS di bagian atas, pastikan\n" +" Anda menautkan folder static/cms ke\n" +" berkas statis Anda.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Anda melihat pesan ini karena Anda memiliki\n" +" DEBUG = True di berkas pengaturan django Anda dan\n" +" belum menambahkan halaman apa pun.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Selamat datang di django CMS" + +msgid "Add Another" +msgstr "Tambah Lainnya" + +msgid "Back" +msgstr "Kembali" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" +"Harap pilih opsi di bawah ini untuk melanjutkan ke langkah berikutnya." + +msgid "Next" +msgstr "Berikutnya" + +msgid "Select what you would like to create" +msgstr "Pilih apa yang ingin Anda buat" + +msgid "Unknown" +msgstr "Tidak diketahui" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Halaman tidak ditemukan di %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Sebuah template tag tidak dapat menemukan halaman dengan argumen pencarian `%(page_lookup)s\n" +"`. URL dari permintaan adalah: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Dua kolom" + +msgid "Three columns" +msgstr "Tiga kolom" + +msgid "username" +msgstr "nama pengguna" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "Wajib. 300 karakter atau kurang. Huruf, angka, dan karakter @/./+/-/_" + +msgid "Enter a valid username." +msgstr "Masukkan nama pengguna yang valid." + +msgid "email address" +msgstr "alamat email" + +msgid "staff status" +msgstr "status staf" + +msgid "Designates whether the user can log into this admin site." +msgstr "Menentukan apakah pengguna dapat masuk ke situs admin ini." + +msgid "active" +msgstr "aktif" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Menentukan apakah pengguna ini harus diperlakukan sebagai aktif. Batal pilih" +" ini alih-alih menghapus akun." + +msgid "users" +msgstr "pengguna" + +msgid "Title Extension" +msgstr "Ekstensi Judul" + +msgid "Page Extension" +msgstr "Ekstensi Halaman" + +msgid "object ID" +msgstr "ID objek" + +msgid "Example1 App" +msgstr "Aplikasi Example1" + +msgid "MultilingualExample1 App" +msgstr "Aplikasi MultilingualExample1" + +msgid "Example1" +msgstr "Example1" + +msgid "Examples" +msgstr "Contoh" + +msgid "Extra Context" +msgstr "Konteks Tambahan" + +msgid "Articles" +msgstr "Artikel" + +msgid "Sample App" +msgstr "Aplikasi Contoh" + +msgid "Sample App with config" +msgstr "Aplikasi Contoh dengan konfigurasi" + +msgid "Sample App with excluded permissions" +msgstr "Aplikasi Contoh dengan izin yang dikecualikan" + +msgid "Sample App 2" +msgstr "Aplikasi Contoh 2" + +msgid "Sample App 3" +msgstr "Aplikasi Contoh 3" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "Aplikasi Ber-namespace" + +msgid "Parent app" +msgstr "Aplikasi induk" + +msgid "Child app" +msgstr "Aplikasi anak" + +msgid "Variable urls-menus App" +msgstr "Aplikasi urls-menus Variabel" + +msgid "sample root page" +msgstr "contoh halaman root" + +msgid "sample settings page" +msgstr "contoh halaman pengaturan" + +msgid "sample account page" +msgstr "contoh halaman akun" + +msgid "sample my profile page" +msgstr "contoh halaman profil saya" + +msgid "Static Menu" +msgstr "Menu Statis" + +msgid "Static Menu2" +msgstr "Menu Statis2" + +msgid "Static Menu3" +msgstr "Menu Statis3" + +msgid "Static Menu4" +msgstr "Menu Statis4" + +msgid "Category" +msgstr "Kategori" + +msgid "Categories" +msgstr "Kategori" + +msgid "Add Category" +msgstr "Tambah Kategori" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Ubah Kategori" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" +"Terima kasih telah meluangkan waktu berkualitas bersama situs web ini hari " +"ini." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Warisi template dari leluhur terdekat" + +msgid "UserSettings" +msgstr "UserSettings" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Tambah plugin ke placeholder \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Tambah plugin ke %(plugin_name)s" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "CMS - akun pengguna Anda telah dibuat." + +msgid "CMS - your user account was changed." +msgstr "CMS - akun pengguna Anda telah diubah." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Placeholder ini sudah memiliki jumlah plugin maksimum (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Placeholder ini sudah memiliki jumlah maksimum (%(limit)s) plugin " +"%(plugin_name)s yang diizinkan." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" +"Tidak dapat menemukan modul CMS_REQUEST_IP_RESOLVER yang ditentukan: " +"\"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Tidak dapat menemukan fungsi CMS_REQUEST_IP_RESOLVER yang ditentukan: " +"\"{0}\" di modul \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Buat instans %s baru." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Sebuah wizard sudah terdaftar untuk model: %s" diff --git a/cms/locale/id/LC_MESSAGES/djangojs.po b/cms/locale/id/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..6239bea4 --- /dev/null +++ b/cms/locale/id/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Indonesian (http://app.transifex.com/divio/django-cms/language/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Apakah Anda yakin ingin mengganti tab tanpa menyimpan halaman terlebih dahulu?" diff --git a/cms/locale/is/LC_MESSAGES/django.po b/cms/locale/is/LC_MESSAGES/django.po new file mode 100644 index 00000000..65061452 --- /dev/null +++ b/cms/locale/is/LC_MESSAGES/django.po @@ -0,0 +1,1634 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2022 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2022\n" +"Language-Team: Icelandic (https://app.transifex.com/divio/teams/58664/is/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: is\n" +"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n" + +msgid "All" +msgstr "Allt" + +msgid "Copy permissions" +msgstr "Afrita réttindi" + +msgid "Slug" +msgstr "Skot" + +msgid "The part of the title that is used in the URL" +msgstr "Hluti titilsins sem er notaður í URL slóðinni." + +msgid "Page type" +msgstr "" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Yfirskrifa URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Haltu þessum reit tómum ef stöðluð slóð skal vera notuð." + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "sýnileiki valmyndar" + +msgid "limit when this page is visible in the menu" +msgstr "takmarka hvenær þessi síða birtist í valmyndinni." + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "Forrit" + +msgid "Hook application to this page." +msgstr "Krækja forrit við þessa síðu." + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "notandi" + +msgid "can_view" +msgstr "má_skoða" + +msgid "Add" +msgstr "Bæta við" + +msgid "Change" +msgstr "Breyta" + +msgid "Delete" +msgstr "Eyða" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "Valið tungumál verður að vera stutt af kerfinu!" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "Ítarlegar Stillingar" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s hlutur með frumlykilinn %(key)r er ekkki til." + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Villa! Þú hefur ekki réttindi til að færa þessa síðu. Vinsamlega endurhladdu" +" síðuna." + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "Gagnagrunns villa" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "Skoða takmörkun" + +msgid "View restrictions" +msgstr "Skoða takmarkanir" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "Ertu viss?" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "Réttindi síðu" + +msgid "User & Group permissions" +msgstr "Réttindi Notanda og Hópa" + +msgid "Page permissions management" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "Forsýning" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "Skrá út" + +msgid "Language" +msgstr "Tungmál" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "Síða" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "Veldu gilda síðu" + +msgid "Select a valid page" +msgstr "Veldu gilda síðu" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "staðsetning" + +msgid "language" +msgstr "tungumál" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "stofnað dagsetning" + +msgid "can edit" +msgstr "getur breytt" + +msgid "can add" +msgstr "getur bætt við" + +msgid "can delete" +msgstr "getur eytt" + +msgid "can change advanced settings" +msgstr "getur breytt ítarlegum stillingum" + +msgid "can publish" +msgstr "getur birt" + +msgid "can change permissions" +msgstr "getur breytt réttindum" + +msgid "can move" +msgstr "getur fært" + +msgid "view restricted" +msgstr "Skoða takmarkað" + +msgid "can recover pages" +msgstr "getur endurheimt síður" + +msgid "group" +msgstr "hópur" + +msgid "sites" +msgstr "síður" + +msgid "created by" +msgstr "stofnað af" + +msgid "changed by" +msgstr "breytt af" + +msgid "publication date" +msgstr "dagsetning birtingar" + +msgid "publication end date" +msgstr "lokadagsetning birtingar" + +msgid "in navigation" +msgstr "í valmynd" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "áföst valmynd" + +msgid "template" +msgstr "sniðmát" + +msgid "login required" +msgstr "þarfnast innskráningar" + +msgid "application" +msgstr "forrit" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "síða" + +msgid "Grant on" +msgstr "Leyfa á" + +msgid "page" +msgstr "síða" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "eingöngu fyrir innskráða notendur" + +msgid "for anonymous users only" +msgstr "eingöngu fyrir nafnlausa notendur" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "titill" + +msgid "The default title" +msgstr "Sjálfgefinn titill" + +msgid "Page Title" +msgstr "Titill síðu" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "Yfirskrifar hvað er birt efst í vafranum eða í bókamerkjum" + +msgid "Menu Title" +msgstr "Titill Valmyndar" + +msgid "Overwrite what is displayed in the menu" +msgstr "Yfirskrifa hvað er birt í valmyndinni" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "redirect" +msgstr "endursenda" + +msgid "Redirects to this URL." +msgstr "Endurvísir á þetta URL" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "Sniðmátið notað til að birta efnið." + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "sjálfgefið" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "síður" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "skot" + +msgid "Path" +msgstr "Slóð" + +msgid "Current page" +msgstr "Núverandi síða" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "getur endurheimt eyddar síður" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "Ef ekkert er valið hefur notandi veitt réttindi fyrir allar síður." + +msgid "Page global permission" +msgstr "Víðvær réttindi síðu" + +msgid "Pages global permissions" +msgstr "Víðvær réttindi síðna" + +msgid "Page permission" +msgstr "Réttindi síðu" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "Notandi (síða)" + +msgid "Users (page)" +msgstr "Notendur (síða)" + +msgid "User group (page)" +msgstr "Notandahópur (síða)" + +msgid "User groups (page)" +msgstr "Notendahópar (síða)" + +msgid "slot" +msgstr "skot" + +msgid "width" +msgstr "breidd" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "Ítarlegar stillingar" + +msgid "Generic" +msgstr "Almennt" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "Vista" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "Innskráning kerfisstjórnar here." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Innskráningar slóð: %(login_url)s" + +msgid "Username:" +msgstr "Notandanafn:" + +msgid "Password:" +msgstr "Lykilorð:" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "Breyta síðu" + +msgid "Home" +msgstr "Heim" + +msgid "View on site" +msgstr "Skoða á síðu" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Vinsamlega leiðréttu villuna fyrir neðan." +msgstr[1] "Vinsamlega leiðréttu villurnar fyrir neðan." + +msgid "All permissions" +msgstr "Öll réttindi" + +msgid "Loading..." +msgstr "Hleður..." + +msgid "Save and continue editing" +msgstr "Vista og halda áfram breytingum" + +#, 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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "Notandi" + +msgid "Group" +msgstr "Hópur" + +msgid "Can edit" +msgstr "Getur breytt" + +msgid "Can add" +msgstr "Getur bætt við" + +msgid "Can delete" +msgstr "Getur eytt" + +msgid "Can publish" +msgstr "Getur birt" + +msgid "Can change permissions" +msgstr "Getur breytt leyfum" + +msgid "Can move" +msgstr "Getur fært" + +msgid "Can view" +msgstr "Getur skoðað" + +msgid "(global)" +msgstr "(altækt)" + +msgid "(current)" +msgstr "(núverandi)" + +msgid "Page doesn't inherit any permissions." +msgstr "Síða erfir engin réttindi." + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "Vista sem nýtt" + +msgid "Save and add another" +msgstr "Vista og bæta við annarri" + +msgid "Copy" +msgstr "Afrita" + +msgid "Cut" +msgstr "Klippa" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "Listi síðna" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "Tókst að færa" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "Afrita valmöguleika" + +msgid "Choose copy options" +msgstr "Veldu afritunar stillingar" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "Íbætur í boði" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "Skrá inn" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "Hætta við" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "Ertu viss um að þú viljir eyða þessari íbót." + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "Bæta við öðrum" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Síða fannst ekki á %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "netfang" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "Auka samhengi" + +msgid "Articles" +msgstr "Greinar" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "CMS - notandaaðgangurinn þinn var stofnaður." + +msgid "CMS - your user account was changed." +msgstr "CMS - notandaaðganginum var breytt." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/is/LC_MESSAGES/djangojs.po b/cms/locale/is/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..7c2933f2 --- /dev/null +++ b/cms/locale/is/LC_MESSAGES/djangojs.po @@ -0,0 +1,24 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Hannes Baldursson , 2013 +# Hannes Baldursson , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Hannes Baldursson , 2013\n" +"Language-Team: Icelandic (http://app.transifex.com/divio/django-cms/language/is/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: is\n" +"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Ertu viss um að þú viljir breyta flipum án þess að vista síðuna fyrst?" diff --git a/cms/locale/is_IS/LC_MESSAGES/django.po b/cms/locale/is_IS/LC_MESSAGES/django.po new file mode 100644 index 00000000..9494d0a9 --- /dev/null +++ b/cms/locale/is_IS/LC_MESSAGES/django.po @@ -0,0 +1,2264 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Icelandic (Iceland) (https://app.transifex.com/divio/teams/58664/is_IS/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: is_IS\n" +"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/is_IS/LC_MESSAGES/djangojs.po b/cms/locale/is_IS/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..5b2e7fdb --- /dev/null +++ b/cms/locale/is_IS/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Icelandic (Iceland) (http://app.transifex.com/divio/django-cms/language/is_IS/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: is_IS\n" +"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/it/LC_MESSAGES/django.po b/cms/locale/it/LC_MESSAGES/django.po new file mode 100644 index 00000000..9f06bca1 --- /dev/null +++ b/cms/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,1764 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Marco Badan , 2022 +# giammi , 2023 +# Raffaella Suardini, 2024 +# Stefano Brentegani , 2025 +# Leonardo Cavallucci, 2026 +# geobaldi , 2026 +# yakky , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Italian (https://app.transifex.com/divio/teams/58664/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "All" +msgstr "Tutti" + +msgid "Copy permissions" +msgstr "Copia i permessi" + +msgid "Slug" +msgstr "Slug" + +msgid "The part of the title that is used in the URL" +msgstr "La parte del titolo che viene utilizzata nell'URL" + +msgid "Page type" +msgstr "Tipo di pagina" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Tipi Pagina" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Sovrascrive l'URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Lascia questo campo vuoto per utilizzare il percorso standard." + +msgid "Start typing..." +msgstr "Scrivi qui..." + +msgid "menu visibility" +msgstr "visibilità menu" + +msgid "limit when this page is visible in the menu" +msgstr "limita visibilità della pagina nel menu" + +msgid "X Frame Options" +msgstr "Opzioni X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" +"Indica se questa pagina può essere incorporata in altre pagine o siti web." + +msgid "URL options" +msgstr "Opzioni URL" + +msgid "Menu options" +msgstr "Opzioni menù" + +msgid "Headers" +msgstr "Intestazioni" + +msgid "Application" +msgstr "Applicazione" + +msgid "Hook application to this page." +msgstr "Aggancia l'applicazione a questa pagina." + +msgid "Application configurations" +msgstr "Configurazioni applicazione" + +msgid "A page with this reverse URL id exists already." +msgstr "Esiste già una pagina con questo reverse URL id." + +msgid "Invalid application config value" +msgstr "Valore della configurazione non valido" + +msgid "An application instance using this configuration already exists." +msgstr "" +"Esiste già un'istanza di applicazione che usa la stessa configurazione." + +msgid "An application instance with this name already exists." +msgstr "Esiste già un'istanza di applicazione con lo stesso nome." + +msgid "You can't move the home page inside another page" +msgstr "Non è possibile spostare la home page sotto un'atra pagina" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Non puoi avere due pagine con lo stesso slug allo stesso livello di pagina. " +"Modifica lo slug di una delle pagine prima di provare a spostarla di nuovo." + +msgid "Yes" +msgstr "Sì" + +msgid "No" +msgstr "No" + +msgid "user" +msgstr "utente" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "Aggiungi" + +msgid "Change" +msgstr "Modifica" + +msgid "Delete" +msgstr "Elimina" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Gli utenti non possono creare una pagina senza i permessi per modificare la " +"pagina creata. Modifica i permessi relativi." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Gli utenti non possono cancellare una pagina senza i permessi per modificare" +" la pagina stessa. Modifica i permessi relativi." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Gli utenti non possono impostare i permessi di una pagina senza i permessi " +"per modificare la pagina stessa. Modifica i permessi relativi." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Gli utenti non possono cancellare i permessi di una pagina senza i permessi " +"per modificare la pagina stessa. Modifica i permessi relativi." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Gli utenti non possono creare i permessi di una pagina senza i permessi per " +"modificare il permesso stesso. Modifica i permessi relativi." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Gli utenti non possono cancellare i permessi di una pagina senza i permessi " +"per modificare i permessi stessi. Modifica i permessi relativi." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Tipo plugin '%s' non valido" + +msgid "Language must be set to a supported language!" +msgstr "La lingua deve essere scelta tra le lingue supportate!" + +msgid "Parent plugin language must be same as language!" +msgstr "Il linguaggio del plugin di livello superiore deve essere lo stesso!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Il placeholder del plugin genitore deve essere identico!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "La posizione del Plugin deve essere maggiore di %(position)d" + +msgid "Translations" +msgstr "Traduzioni" + +msgid "Advanced Settings" +msgstr "Impostazioni avanzate" + +msgid "The page is not eligible to be home." +msgstr "La pagina non può essere impostata come home" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "L'oggetto %(name)s con chiave primaria %(key)r non esiste." + +msgid "error" +msgstr "errore" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Errore! Non hai il permesso per spostare questa pagina. Ricarica la pagina" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Errore! Non hai il permesso di copiare questa pagina" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Errore! la pagina che stai incollando non è tradotta in nessuna delle lingue" +" configurate sul sito di destinazione" + +msgid "You do not have permission to edit this page" +msgstr "Non hai i permessi per modificare questa pagina" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(per modificarlo, annulla prima la pubblicazione della versione attualmente " +"pubblicata di questa pagina)" + +msgid "Add Translation" +msgstr "Aggiungi traduzione" + +msgid "Add Page Copy" +msgstr "Aggiungi Copia Pagina" + +msgid "New sub page" +msgstr "Nuova sottopagina" + +msgid "New page" +msgstr "Nuova pagina" + +msgid "Database error" +msgstr "Errore del database" + +msgid "Template not valid" +msgstr "Template invalido" + +msgid "Placeholder selection not valid" +msgstr "Selezione del placeholder non valida" + +msgid "The template was successfully changed" +msgstr "Il template è stato modificato con successo" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Il placeholder '%s' non esiste nella lingua di destinazione" + +msgid "You do not have permission to copy these plugins." +msgstr "Non hai i permessi per copiare questi plugin." + +msgid "You do not have permission to delete this page" +msgstr "Non hai i permessi per cancellare questa pagina" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Il titolo e i plugin con lingua %(language)s sono stati eliminati" + +msgid "Public content" +msgstr "Contenuto pubblico" + +msgid "Empty" +msgstr "Vuoto" + +msgid "Create Content" +msgstr "Crea contenuto" + +msgid "View restriction" +msgstr "Restrizione di visualizzazione" + +msgid "View restrictions" +msgstr "Restrizioni di visualizzazione" + +#, python-format +msgid "Field %s not found" +msgstr "Campo %s non trovato" + +msgid "You do not have permission to edit this item" +msgstr "Non hai i permessi per modificare questo elemento" + +msgid "You do not have permission to add a plugin" +msgstr "Non sei autorizzato/a ad aggiungere un plugin" + +msgid "You do not have permission to copy this placeholder." +msgstr "Non hai il permesso di copiare questo metacarattere." + +msgid "Plugin not found" +msgstr "Plugin non trovato" + +msgid "You do not have permission to edit this plugin" +msgstr "Non hai i permessi per modificare questo plugin" + +msgid "You have no permission to paste this plugin" +msgstr "Non hai i permessi per incollare questo plugin" + +msgid "You have no permission to paste this placeholder" +msgstr "Non hai il permesso di incollare questo metacarattere" + +msgid "You have no permission to move this plugin" +msgstr "Non hai i permessi per spostare questo plugin" + +msgid "You have no permission to cut this plugin" +msgstr "Non hai il permesso di tagliare questo plugin." + +msgid "You do not have permission to delete this plugin" +msgstr "Non hai le autorizzazni per rimuovere questo plugin" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "Plugin %(name)s \"%(obj)s\" rimosso con successo." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Non è possibile rimuovere %(name)s" + +msgid "Are you sure?" +msgstr "Sei sicuro?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Non hai i permessi per svuotare questo placeholder" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Placeholder \"%(obj)s\" svuotato con successo." + +msgid "placeholder" +msgstr "placeholder" + +msgid "Page permissions" +msgstr "Pagina permessi" + +msgid "User & Group permissions" +msgstr "Permessi utenti e gruppi" + +msgid "Page permissions management" +msgstr "Pagina di gestione dei permessi" + +msgid "Actions" +msgstr "Azioni" + +msgid "Empty content" +msgstr "Contenuto vuoto" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Proprietà %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Aggiungi un nuovo%(object_name)s" + +msgid "Add content" +msgstr "Aggiungi contenuto" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Il contenuto nella lingua corrente è stato modificato. Fai clic su " +"\"Annulla\" per tornare al form e salvare le modifiche. Fai clic su \"OK\" " +"per annullare le modifiche." + +#, python-format +msgid "Add %(language)s content" +msgstr "Aggiunto contenuto %(language)s" + +msgid "Preview" +msgstr "Anteprima" + +msgid "Settings" +msgstr "Impostazioni" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Lingua %(value)s non valida. Questo modulo non può essere elaborato. Prova a" +" cambiare lingua." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Nessun apphook \"%r\" registrato trovato" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Segnaposto" + +msgid "Create" +msgstr "Crea" + +msgid "Edit" +msgstr "Modifica" + +msgid "Structure" +msgstr "Struttura" + +msgid "Content" +msgstr "Contenuto" + +msgid "Sites" +msgstr "Siti" + +msgid "Admin Sites" +msgstr "Siti di amministrazione" + +msgid "Administration" +msgstr "Amministrazione" + +msgid "User settings" +msgstr "Impostazioni utente" + +msgid "Clipboard..." +msgstr "Appunti..." + +msgid "Clear clipboard" +msgstr "Cancella appunti" + +msgid "Disable toolbar" +msgstr "Disattiva toolbar" + +msgid "Shortcuts..." +msgstr "Scorciatoie..." + +msgid "Users" +msgstr "Utenti" + +#, python-format +msgid "Logout %s" +msgstr "Esci %s" + +msgid "Logout" +msgstr "Logout" + +msgid "Language" +msgstr "Lingua" + +msgid "Delete Translation" +msgstr "Elimina traduzione" + +msgid "Copy all plugins" +msgstr "Copia tutti i plugin" + +#, python-format +msgid "from %s" +msgstr "da %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Sei sicuro di volere copiare tutti i plugins da %s?" + +msgid "Pages" +msgstr "Pagine" + +msgid "Page" +msgstr "Pagina" + +msgid "Create Page" +msgstr "Crea pagina" + +msgid "New Page" +msgstr "Nuova Pagina" + +msgid "New Sub Page" +msgstr "Nuova Sottopagina" + +msgid "Duplicate this Page" +msgstr "Duplica questa Pagina" + +msgid "Page settings" +msgstr "Impostazioni pagina" + +msgid "Advanced settings" +msgstr "Impostazioni avanzate" + +msgid "Templates" +msgstr "Template" + +msgid "Placeholders" +msgstr "Placeholder" + +msgid "Hide in navigation" +msgstr "Nascosta in navigazione" + +msgid "Display in navigation" +msgstr "Visibile in navigazione" + +msgid "Delete page" +msgstr "Elimina pagina" + +msgid "Create a new page next to the current page." +msgstr "Crea una nuova pagina a fianco della pagina corrente." + +msgid "Create a page below the current page." +msgstr "Crea una pagina all'interno della pagina corrente." + +msgid "Select a valid site" +msgstr "Seleziona un sito valido" + +msgid "Select a valid page" +msgstr "Seleziona una pagina valida" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"La pagina %(conflict_page)s ha lo stesso URL '%(url)s' della pagina " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"La pagina %(conflict_page)s ha lo stesso URL '%(url)s' as della pagina " +"corrente." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "Facoltativo. Se inserito, sarà inserito come nuovo plugin di testo." + +msgid "Provide a title for the new page." +msgstr "Inserisci un titolo per la nuova pagina." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" +"Lascia vuoto per slug automatico, o inserisci a seconda delle necessità." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" +"Impossibile creare automaticamente uno slug. Forniscine uno manualmente." + +msgid "Please provide a valid slug." +msgstr "Fornisci uno slug valido." + +msgid "You don't have the permissions required to add a page." +msgstr "Non hai i permessi necessari per aggiungere una pagina." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "posizione" + +msgid "language" +msgstr "lingua" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "data di creazione" + +msgid "can edit" +msgstr "può modificare" + +msgid "can add" +msgstr "può aggiungere" + +msgid "can delete" +msgstr "può eliminare" + +msgid "can change advanced settings" +msgstr "può modificare le impostazioni avanzate" + +msgid "can publish" +msgstr "può pubblicare" + +msgid "can change permissions" +msgstr "può cambiare i permessi" + +msgid "can move" +msgstr "può spostare" + +msgid "view restricted" +msgstr "vista limitata" + +msgid "can recover pages" +msgstr "può recuperare le pagine" + +msgid "group" +msgstr "gruppo" + +msgid "sites" +msgstr "siti" + +msgid "created by" +msgstr "creato da" + +msgid "changed by" +msgstr "modificato da" + +msgid "publication date" +msgstr "data di pubblicazione" + +msgid "publication end date" +msgstr "data fine pubblicazione" + +msgid "in navigation" +msgstr "in navigazione" + +msgid "soft root" +msgstr "soft root" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "menu allegato" + +msgid "template" +msgstr "template" + +msgid "login required" +msgstr "è richiesto il login" + +msgid "application" +msgstr "applicazione" + +msgid "application instance name" +msgstr "nome dell'istanza dell'applicazione" + +msgid "site" +msgstr "sito" + +msgid "Grant on" +msgstr "Concesso su" + +msgid "page" +msgstr "pagina" + +msgid "no limit set" +msgstr "nessun limite impostato" + +msgid "for logged in users only" +msgstr "solo per utenti che hanno eseguito il login" + +msgid "for anonymous users only" +msgstr "solo per utenti anonimi" + +msgid "Inherit from parent page" +msgstr "Eredita dalla pagina di livello superiore" + +msgid "Deny" +msgstr "Nega" + +msgid "Only this website" +msgstr "Solo questo sito" + +msgid "Allow" +msgstr "Consenti" + +msgid "title" +msgstr "titolo" + +msgid "The default title" +msgstr "Titolo predefinito" + +msgid "Page Title" +msgstr "Titolo pagina" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Sovrascrive ciò che viene visualizzato nella parte superiore del browser o " +"nei Preferiti" + +msgid "Menu Title" +msgstr "Titolo menu" + +msgid "Overwrite what is displayed in the menu" +msgstr "Sovrascrive ciò che viene visualizzato nel menu" + +msgid "Description meta tag" +msgstr "Meta Tag Descrizione" + +msgid "A description of the page used by search engines." +msgstr "Una descrizione della pagina, talvolta usata dai motori di ricerca." + +msgid "redirect" +msgstr "redirect" + +msgid "Redirects to this URL." +msgstr "Reindirizza a questo URL." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" +"Tutti gli antenati non verranno visualizzati nella barra di navigazione" + +msgid "The template used to render the content." +msgstr "Il template utilizzato per il rendering del contenuto." + +msgid "page content" +msgstr "contenuto della pagina" + +msgid "page contents" +msgstr "contenuti della pagina" + +msgid "default" +msgstr "predefinito" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Identificativo univoco usato con il templatetag page_url per riferirsi a " +"questa pagina" + +msgid "Mark this page as a page type" +msgstr "Contrassegna questa pagina come tipo di pagina" + +msgid "pages" +msgstr "pagine" + +msgid "No available title" +msgstr "Nessun titolo disponibile" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Percorso" + +msgid "Current page" +msgstr "Pagina corrente" + +msgid "Page children (immediate)" +msgstr "Pagina figlio (immediato)" + +msgid "Page and children (immediate)" +msgstr "Pagina e figli (immediati)" + +msgid "Page descendants" +msgstr "Pagina discendente" + +msgid "Page and descendants" +msgstr "Pagina e discendenti" + +msgid "on page level" +msgstr "il livello di pagina" + +msgid "frontend view restriction" +msgstr "Restrizione visualizzazione frontend" + +msgid "Please select user or group." +msgstr "Sei pregato di selezionare un utente o un gruppo." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Gli utenti non possono pubblicare una pagina senza i permessi per modificare" +" la pagina. Modifica i permessi relativi." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Gli utenti non possono modificare le impostazioni avanzate senza i permessi " +"per modificare la pagina. Modifica i permessi relativi." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Gli utenti non possono modificare i permessi di una pagina senza i permessi " +"per modificare la pagina stessa. Modifica i permessi relativi." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Gli utenti non possono spostare una pagina senza i permessi per modificare " +"la pagina stessa. Modifica i permessi relativi." + +msgid "can recover any deleted page" +msgstr "può recuperare qualsiasi pagina cancellata" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "Se non selezionato, l'utente ha i permessi estesi a tutti i siti." + +msgid "Page global permission" +msgstr "Permesso globale per la pagina" + +msgid "Pages global permissions" +msgstr "Permessi globali per le pagine" + +msgid "Page permission" +msgstr "Autorizzazioni sulla pagina" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Il permesso \"Aggiungi pagina\" richiede anche l'accesso ai figli o " +"discendenti, altrimenti la pagina aggiunta non potrà essere modificata dal " +"suo creatore." + +msgid "User (page)" +msgstr "Utente (pagina)" + +msgid "Users (page)" +msgstr "Utenti (pagina)" + +msgid "User group (page)" +msgstr "Gruppo utenti (pagina)" + +msgid "User groups (page)" +msgstr "Gruppi utenti (pagina)" + +msgid "slot" +msgstr "slot" + +msgid "width" +msgstr "larghezza" + +msgid "Edit object" +msgstr "Modifica oggetto" + +msgid "This is an external placeholder" +msgstr "Questo è un placeholder esterno" + +msgid "plugin" +msgstr "plugin" + +msgid "plugins" +msgstr "plugin" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "La lingua usata per l'interfaccia di amministrazione e la toolbar" + +msgid "user setting" +msgstr "impostazione utente" + +msgid "user settings" +msgstr "impostazioni utente" + +msgid "by template" +msgstr "per template" + +msgid "by code" +msgstr "per codice" + +msgid "static placeholder name" +msgstr "Nome segnaposto statico" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Un nome descrittivo per identificare questo segnaposto statico. Non visibile" +" agli utenti." + +msgid "placeholder code" +msgstr "Codice segnaposto" + +msgid "To render the static placeholder in templates." +msgstr "Per riportare il segnaposto statico nei template." + +msgid "placeholder content" +msgstr "Contenuto del segnaposto" + +msgid "creation_method" +msgstr "Metodo di creazione" + +msgid "static placeholder" +msgstr "segnaposto statico" + +msgid "static placeholders" +msgstr "segnaposto statici" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" +"Esiste già un segnaposto statico con lo stesso codice per lo stesso sito" + +msgid "Advanced options" +msgstr "Opzioni avanzate" + +msgid "Generic" +msgstr "Generico" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "Il %(name)s \"%(obj)s\" è stato modificato con successo." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "Questo plugin non prevede altre impostazioni. Premi salva." + +msgid "Moved" +msgstr "Spostato" + +msgid "Changed" +msgstr "Modificata" + +msgid "Deleted" +msgstr "Cancellato" + +msgid "Added Page Translation" +msgstr "Aggiunta Traduzione Pagina" + +msgid "Changed Page Translation" +msgstr "Modificata Traduzione Pagina" + +msgid "Deleted Page Translation" +msgstr "Cancellata Traduzione Pagina" + +msgid "Added Plugin" +msgstr "Aggiungi Plugin" + +msgid "Changed Plugin" +msgstr "Plugin Modificato" + +msgid "Moved Plugin" +msgstr "Plugin Spostato" + +msgid "Deleted Plugin" +msgstr "Plugin Cancellato" + +msgid "Cut Plugin" +msgstr "Taglia plugin" + +msgid "Paste Plugin" +msgstr "Incolla Plugin" + +msgid "Paste to Placeholder" +msgstr "Incolla da Segnaposto" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Aggiunto un plugin al segnaposto dagli appunti" + +msgid "Cleared Placeholder" +msgstr "Svuotato Segnaposto" + +msgid "Save" +msgstr "Salva" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "Alcuni campi non possono essere modificati perché sono read-only" + +#, python-format +msgid "Log in to administration here." +msgstr "" +"Accedi alla pagina d'amministrazione da qui." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "URL login: %(login_url)s" + +msgid "Username:" +msgstr "Nome utente:" + +msgid "Password:" +msgstr "Password:" + +msgid "Add a page" +msgstr "Aggiungi una pagina" + +msgid "Change a page" +msgstr "Modifica una pagina" + +msgid "Home" +msgstr "Home" + +msgid "View on site" +msgstr "Vedi sul sito" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Per favore correggi l'errore sottostante." +msgstr[1] "Per favore correggi gli errori sottostanti." +msgstr[2] "Per favore correggi gli errori sottostanti." + +msgid "All permissions" +msgstr "Tutti i permessi" + +msgid "Loading..." +msgstr "Caricamento in corso..." + +msgid "Save and continue editing" +msgstr "Salva e continua le modifiche" + +#, 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 "" +"Sei sicuro di voler eliminare %(object_name)s \"%(escaped_object)s\"? Tutti " +"i seguenti elementi correlati verranno eliminati:" + +msgid "Yes, I’m sure" +msgstr "Sì, sono sicuro" + +msgid "No, take me back" +msgstr "No, torna indietro" + +msgid "Summary" +msgstr "Riepilogo" + +msgid "User" +msgstr "Utente" + +msgid "Group" +msgstr "Gruppo" + +msgid "Can edit" +msgstr "Può apportare modifiche" + +msgid "Can add" +msgstr "Può aggiungere" + +msgid "Can delete" +msgstr "Può eliminare" + +msgid "Can publish" +msgstr "Può pubblicare" + +msgid "Can change permissions" +msgstr "Può cambiare i permessi" + +msgid "Can move" +msgstr "Può spostare" + +msgid "Can view" +msgstr "Può visualizzare" + +msgid "(global)" +msgstr "(globale)" + +msgid "(current)" +msgstr "(corrente)" + +msgid "Page doesn't inherit any permissions." +msgstr "La pagina non eredita permessi." + +msgid "Edit model" +msgstr "Modifica modello" + +msgid "Save as new" +msgstr "Salva come nuovo" + +msgid "Save and add another" +msgstr "Salva e aggiungi un altro" + +msgid "Copy" +msgstr "Copia" + +msgid "Cut" +msgstr "Taglia" + +msgid "Paste" +msgstr "Incolla" + +msgid "Set as home" +msgstr "Imposta come home" + +msgid "is restricted" +msgstr "è limitata" + +msgid "last change by" +msgstr "ultima modifica di" + +msgid "last change on" +msgstr "ultima modifica il" + +msgid "meta" +msgstr "Meta" + +msgid "List of pages" +msgstr "Elenco pagine" + +msgid "Search" +msgstr "Cerca" + +msgid "Page Tree" +msgstr "Albero delle pagine" + +msgid "Reset filter" +msgstr "Annulla filtro" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Recupera %(name)s cancellato\n" +" " + +msgid "Main Navigation" +msgstr "Navigazione principale" + +msgid "Options" +msgstr "Opzioni" + +msgid "Successfully moved" +msgstr "Spostato con successo" + +msgid "Changes within the tree might require a refresh." +msgstr "" +"Per modifiche all'interno dell'albero potrebbe essere necessario ricaricare." + +msgid "Error:" +msgstr "Errore:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Questa pagina non può essere copiata perché è collegata ad un'applicazione. " +"Vai nelle impostazioni avanzate della pagina per gestire l'apphook." + +msgid "Are you sure you want to § this page?" +msgstr "Confermi di voler § questa pagina?" + +msgid "Reload" +msgstr "Ricarica" + +msgid "New node" +msgstr "Nuovo nodo" + +msgid "nodes" +msgstr "nodi" + +msgid "View" +msgstr "Vedi" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Non è presente alcun %(object)s \n" +"
\n" +" Add %(object)s now.\n" +" " + +msgid "Copy options" +msgstr "Copia opzioni" + +msgid "Choose copy options" +msgstr "Seleziona opzioni di copia" + +msgid "Close" +msgstr "Chiudi" + +msgid "Legend" +msgstr "Legenda" + +msgid "In menu" +msgstr "In navigazione" + +msgid "Not in menu" +msgstr "Non in navigazione" + +msgid "View page" +msgstr "Visualizza pagina" + +msgid "Softroot" +msgstr "Softroot" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Applicazione: %(apphook)s" + +msgid "in menu" +msgstr "Nei menu" + +msgid "not in menu" +msgstr "non nel menu" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Impostazioni pagina (Maiusc-clic per impostazioni avanzate)" + +msgid "Permissions" +msgstr "Permessi" + +msgid "inherited" +msgstr "ereditato" + +msgid "This page has no preview!" +msgstr "Questa pagina non ha un'anteprima!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Probabilmente l'apphook allegato non fornisce contenuto per la sua root." + +msgid "It is being redirected to:" +msgstr "Redirezione a:" + +msgid "Clipboard" +msgstr "Appunti" + +msgid "Add plugin" +msgstr "Aggiungi plugin" + +msgid "Copy all" +msgstr "Copia tutti" + +msgid "Copy from" +msgstr "Copia da" + +msgid "Empty all" +msgstr "Svuota tutti" + +msgid "Filter plugins..." +msgstr "Filtra plugin..." + +msgid "Expand all" +msgstr "Espandi tutti" + +msgid "Collapse all" +msgstr "Chiudi tutti" + +msgid "You cannot add plugins to this plugin." +msgstr "Non è possibile aggiungere plugin a questo plugin." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"Questo plugin non può essere spostato o modificato fuori dal suo contenitore" + +msgid "Clipboard is empty." +msgstr "Non ci sono appunti." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Il plugin non permette di inserire plugin del tipo corrente." + +msgid "This plugin cannot have nested plugins." +msgstr "Questo plugin non può contenere plugin." + +msgid "Highlight" +msgstr "Evidenzia" + +msgid "Available plugins" +msgstr "Plugin disponibili" + +msgid "Toggle structure" +msgstr "Attiva struttura" + +msgid "Login" +msgstr "Accedi" + +msgid "Add plugin to" +msgstr "Aggiungi plugin a" + +msgid "More" +msgstr "approfondisci" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Versione di sviluppo basata django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Annulla" + +msgid "The following error occurred:" +msgstr "Si è verificato il seguente errore:" + +msgid "Action successful." +msgstr "Azione eseguita con successo." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Sei sicuro di voler eliminare questo plugin?" + +msgid "Are you sure you want to publish this page?" +msgstr "Sei sicuro di voler pubblicare questa pagina?" + +msgid "Plugin will be added here" +msgstr "Il plugin sarà aggiunto qui" + +msgid "You have unsaved changes." +msgstr "Ci sono modifiche non salvate." + +msgid "Loading" +msgstr "Caricamento in corso" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Sicuro di voler annullare queste modifiche?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "Il form non può essere caricato. Controlla che il server sia attivo." + +msgid "Most used" +msgstr "Più usato" + +msgid "Shortcuts" +msgstr "Scorciatoie" + +msgid "The page was changed in the meantime, reloading..." +msgstr "La pagina è cambiata nel frattempo, aggiornamento in corso ..." + +msgid "CMS-wide Shortcuts" +msgstr "Scorciatoie a livello di CMS" + +msgid "Bring up this help dialog" +msgstr "Attiva questa finestra di aiuto" + +msgid "Close/cancel" +msgstr "Chiudi/annulla" + +msgid "Toggle structure mode" +msgstr "Attiva modalità struttura" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Attiva la modalità struttura e evidenzia il plugin selezionato" + +msgid "Open \"Create\" dialog" +msgstr "Apri finestra \"Crea\"" + +msgid "Focus on Toolbar" +msgstr "Focus sulla toolbar" + +msgid "Focus on placeholders" +msgstr "Focus sui segnaposto" + +msgid "Move to next/previous element" +msgstr "Vai all'elemento successivo/precedente" + +msgid "Focus on plugins of placeholder" +msgstr "Focus sui plugin del segnaposto" + +msgid "Edit plugin" +msgstr "Modifica plugin" + +msgid "Open actions menu" +msgstr "Apri il menù delle azioni" + +msgid "Expand/collapse" +msgstr "Espandi/chiudi" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Login fallito. Per favore, verifica le credenziali e " +"riprova." + +msgid "Double-click to edit" +msgstr "Doppio clic per modificare" + +msgid "Tap to edit" +msgstr "Tap per modificare" + +msgid "Click to go back" +msgstr "Click per tornare indietro" + +msgid "Click to go forward" +msgstr "Click per andare avanti" + +msgid "Minimize" +msgstr "Riduci" + +msgid "Maximize" +msgstr "Ingrandisci" + +msgid "Placeholder not editable" +msgstr "Placeholder non modificabile" + +msgid "Drop a plugin here" +msgstr "Rilascia un plugin qui" + +msgid "Welcome to your new django CMS installation!" +msgstr "Benvenuto nella tua nuova installazione di django CMS!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Versione %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Costruiamo insieme qualcosa di straordinario!" + +msgid "Please log in" +msgstr "Accedi" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Aggiungi la tua prima pagina\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Aiuta il finanziamento

\n" +"

\n" +" Il tuo finanziamento va direttamente a beneficio del prodotto, principalmente attraverso il\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" Un modo rapido per donare, sia per te che per la tua organizzazione, è tramite\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Unisciti a noi

\n" +"

\n" +" La django CMS Association è un'organizzazione senza scopo di lucro che finanzia e guida lo sviluppo di\n" +" django CMS.\n" +"

\n" +"

\n" +" Puoi aderire sia come singolo individuo sia come\n" +" organizzazione.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Contribuisci

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Note di installazione" + +msgid "Support" +msgstr "Supporto" + +msgid "Documentation" +msgstr "Documentazione" + +msgid "User guide" +msgstr "Guida per l'utente" + +msgid "Give back" +msgstr "Restituisci" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Se non vedi il logo di django CMS in cima alla pagina, verifica di aver collegato la cartella static/cms alla cartella degli static file

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Vedi questo messaggio perchê è impostato \n" +" DEBUG = True nei setting di Django e non sono state ancora aggiunte pagine.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Benvenuto in django CMS" + +msgid "Add Another" +msgstr "Aggiungi un altro" + +msgid "Back" +msgstr "Indietro" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "Seleziona un'opzione fra quelle presenti per procedere." + +msgid "Next" +msgstr "Avanti" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Sconosciuto" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Pagina non trovata su %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Un template tag non può trovare la pagina con argomenti di lookup `%(page_lookup)s `. \n" +"L'URL della richiesta era: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Due colonne" + +msgid "Three columns" +msgstr "Tre colonne" + +msgid "username" +msgstr "nome utente" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" + +msgid "Enter a valid username." +msgstr "Inserisci un nome utente valido" + +msgid "email address" +msgstr "indirizzo e-mail" + +msgid "staff status" +msgstr "utente staff" + +msgid "Designates whether the user can log into this admin site." +msgstr "Stabilisce se l'utente può accedere a questo sito amministrativo." + +msgid "active" +msgstr "attivo" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Stabilisce se l'utente può essere considerato attivo. Deseleziona questo " +"selettore piuttosto che cancellare gli account." + +msgid "users" +msgstr "utenti" + +msgid "Title Extension" +msgstr "Estensione del titolo" + +msgid "Page Extension" +msgstr "Estensione della pagina" + +msgid "object ID" +msgstr "ID oggetto" + +msgid "Example1 App" +msgstr "App di Esempio 1" + +msgid "MultilingualExample1 App" +msgstr "App di Esempio multilingua" + +msgid "Example1" +msgstr "Esempio1" + +msgid "Examples" +msgstr "Esempi" + +msgid "Extra Context" +msgstr "Context aggiuntivo" + +msgid "Articles" +msgstr "Articoli" + +msgid "Sample App" +msgstr "App d'esempio" + +msgid "Sample App with config" +msgstr "App di esempio con configurazione" + +msgid "Sample App with excluded permissions" +msgstr "App di prova con permessi esclusi" + +msgid "Sample App 2" +msgstr "App di esempio 2" + +msgid "Sample App 3" +msgstr "App di esempio 2" + +msgid "Sample App Without Landing Page" +msgstr "App di esempio senza landing page" + +msgid "Namespaced App" +msgstr "App con namespace" + +msgid "Parent app" +msgstr "Parent app" + +msgid "Child app" +msgstr "Child app" + +msgid "Variable urls-menus App" +msgstr "Variable urls-menus App" + +msgid "sample root page" +msgstr "Pagina root d'esempio" + +msgid "sample settings page" +msgstr "Pagina impostazioni d'esempio" + +msgid "sample account page" +msgstr "Pagina account d'esempio" + +msgid "sample my profile page" +msgstr "Pagina profilo d'esempio" + +msgid "Static Menu" +msgstr "Menu statico" + +msgid "Static Menu2" +msgstr "Menu2 statico" + +msgid "Static Menu3" +msgstr "Static Menu3" + +msgid "Static Menu4" +msgstr "Menu statico" + +msgid "Category" +msgstr "Categoria" + +msgid "Categories" +msgstr "Categorie" + +msgid "Add Category" +msgstr "Aggiungi categoria" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Modifica categoria" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Grazie per aver speso del tempo sul sito" + +msgid "Inherit the template of the nearest ancestor" +msgstr "Eredita il modello dell'antenato più vicino" + +msgid "UserSettings" +msgstr "UserSettings" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Aggiungi plugin al segnaposto \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Aggiungi plugin a %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Placeholder singolo" + +msgid "CMS - your user account was created." +msgstr "CMS - Il tuo account utente è stato creato." + +msgid "CMS - your user account was changed." +msgstr "CMS - Il tuo account utente è stato modificato." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Questo placeholder contiene già il numero massimo di plugin (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Questo placeholder contiene già il numero massimo contentito (%(limit)s) di " +"plugin %(plugin_name)s." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Impossibile trovare il seguente modulo CMS_REQUEST_IP_RESOLVER: \"{0}\"" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Impossibile trovare la seguente funzione CMS_REQUEST_IP_RESOLVER: \"{0}\" " +"nel modulo \"{1}\"" + +#, python-format +msgid "Create a new %s instance." +msgstr "Crea una nuova istanza di %s." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "E' già stato registrato uno wizard per il model: %s" diff --git a/cms/locale/it/LC_MESSAGES/djangojs.po b/cms/locale/it/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..57cd363b --- /dev/null +++ b/cms/locale/it/LC_MESSAGES/djangojs.po @@ -0,0 +1,30 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# yakky , 2015 +# Leonardo Cavallucci, 2023 +# Leonardo Cavallucci, 2023 +# Marco Barberis , 2011 +# Stefano Brentegani , 2013 +# Stefano Brentegani , 2011 +# Stefano Brentegani , 2011,2013,2015 +# yakky , 2015 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky , 2015\n" +"Language-Team: Italian (http://app.transifex.com/divio/django-cms/language/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Vuoi davvero cambiare scheda senza salvare prima la pagina?" diff --git a/cms/locale/ja/LC_MESSAGES/django.po b/cms/locale/ja/LC_MESSAGES/django.po new file mode 100644 index 00000000..0900c965 --- /dev/null +++ b/cms/locale/ja/LC_MESSAGES/django.po @@ -0,0 +1,1691 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Paulo Alvarado , 2023 +# Fabian Braun , 2026 +# tenomoto , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: tenomoto , 2026\n" +"Language-Team: Japanese (https://app.transifex.com/divio/teams/58664/ja/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "All" +msgstr "すべて" + +msgid "Copy permissions" +msgstr "権限をコピー" + +msgid "Slug" +msgstr "スラグ" + +msgid "The part of the title that is used in the URL" +msgstr "URLに使うタイトルの一部" + +msgid "Page type" +msgstr "ページタイプ" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "ページタイプ" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "上書きURL" + +msgid "Keep this field empty if standard path should be used." +msgstr "標準のパスを使う場合は、このフィールドを空のままにしてください。" + +msgid "Start typing..." +msgstr "入力を始めます..." + +msgid "menu visibility" +msgstr "メニューの可視性" + +msgid "limit when this page is visible in the menu" +msgstr "このページをメニューに表示するタイミングを制限します" + +msgid "X Frame Options" +msgstr "X Frame オプション" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "このページを他のページやウェブサイトに埋め込めるかどうか。" + +msgid "URL options" +msgstr "URLオプション" + +msgid "Menu options" +msgstr "メニューオプション" + +msgid "Headers" +msgstr "ヘッダ" + +msgid "Application" +msgstr "アプリケーション" + +msgid "Hook application to this page." +msgstr "アプリケーションをこのページに関連付けます。" + +msgid "Application configurations" +msgstr "アプリケーション設定" + +msgid "A page with this reverse URL id exists already." +msgstr "この逆引きURLを持っているページが存在します。" + +msgid "Invalid application config value" +msgstr "不正なアプリケーション設定値" + +msgid "An application instance using this configuration already exists." +msgstr "この設定を使用しているアプリケーションインスタンスが既に存在します。" + +msgid "An application instance with this name already exists." +msgstr "この名前のアプリケーションインスタンスが既に存在します。" + +msgid "You can't move the home page inside another page" +msgstr "ホームページを他のページの中に移動することはできません。" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "同じページ階層に同じスラグを持つ2つのページを置くことはできません。再度移動する前に、いずれかのページのスラグを変更してください。" + +msgid "Yes" +msgstr "はい" + +msgid "No" +msgstr "いいえ" + +msgid "user" +msgstr "ユーザ" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "追加" + +msgid "Change" +msgstr "変更" + +msgid "Delete" +msgstr "削除" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "作成されたページの変更権限がないのでユーザはページを作成できません。編集権限が必要です。" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "ページの変更権限がないのでユーザはページを削除できません。編集権限が必要です。" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "ページの変更権限がないのでユーザはページの権限を設定できません。編集権限が必要です。" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "ユーザはページの変更権限なしにページの権限を削除できません。編集権限が必要です。" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "ユーザは作成された権限を変更する権限なしにページの権限を作成できません。編集権限が必要です。" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "権限を変更する権限がないのでユーザはページの権限を削除できません。編集権限が必要です。" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "不正なプラグインタイプ '%s'" + +msgid "Language must be set to a supported language!" +msgstr "「言語」に、サポートする言語をセットしてください!" + +msgid "Parent plugin language must be same as language!" +msgstr "親プラグインの言語は言語と同じでなければなりません。" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "親プラグインのプレースホルダはプレースホルダと同じでなくてはなりません。" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "プラグインの位置は %(position)d より大きくなければなりません。" + +msgid "Translations" +msgstr "翻訳" + +msgid "Advanced Settings" +msgstr "詳細設定" + +msgid "The page is not eligible to be home." +msgstr "このページはホームにすることができません。" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "プライマリキーが %(key)r であるようなオブジェクト %(name)s がありません。" + +msgid "error" +msgstr "エラー" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "エラー!このページを移動する権限がありません。ページを再読み込みしてください。" + +msgid "Error! You don't have permissions to copy this page." +msgstr "エラー! このページをコピーする権限がありません。" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "エラー! 貼り付けようとしているページは、対象サイトで設定されているいずれの言語にも翻訳されていません。" + +msgid "You do not have permission to edit this page" +msgstr "このページを変更する権限がありません。" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "(変更するには、まずこのページの現在公開されているバージョンを非公開にしてください)" + +msgid "Add Translation" +msgstr "翻訳を追加" + +msgid "Add Page Copy" +msgstr "ページコピー追加" + +msgid "New sub page" +msgstr "新しいサブページ" + +msgid "New page" +msgstr "新しいページ" + +msgid "Database error" +msgstr "データベースエラー" + +msgid "Template not valid" +msgstr "テンプレートが正しくありません。" + +msgid "Placeholder selection not valid" +msgstr "プレースホルダの選択が正しくありません。" + +msgid "The template was successfully changed" +msgstr "テンプレートを変更しました。" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "プレースホルダ '%s' は対象言語に存在しません。" + +msgid "You do not have permission to copy these plugins." +msgstr "プラグインをコピーする権限がありません。" + +msgid "You do not have permission to delete this page" +msgstr "このページを削除する権限がありません。" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "%(language)s 版のタイトルとプラグインを削除しました。" + +msgid "Public content" +msgstr "公開コンテンツ" + +msgid "Empty" +msgstr "空" + +msgid "Create Content" +msgstr "コンテンツを作成" + +msgid "View restriction" +msgstr "表示制限" + +msgid "View restrictions" +msgstr "表示制限" + +#, python-format +msgid "Field %s not found" +msgstr "フィールド%sが見つかりません。" + +msgid "You do not have permission to edit this item" +msgstr "これを編集する権限がありません。" + +msgid "You do not have permission to add a plugin" +msgstr "プラグインを追加する権限がありません。" + +msgid "You do not have permission to copy this placeholder." +msgstr "このプレースホルダをコピーする権限がありません。" + +msgid "Plugin not found" +msgstr "プラグインが見つかりません。" + +msgid "You do not have permission to edit this plugin" +msgstr "このプラグインを編集する権限がありません" + +msgid "You have no permission to paste this plugin" +msgstr "このプラグインをペーストする権限がありません。" + +msgid "You have no permission to paste this placeholder" +msgstr "このプレースホルダをペーストする権限がありません。" + +msgid "You have no permission to move this plugin" +msgstr "このプラグインを移動する権限がありません。" + +msgid "You have no permission to cut this plugin" +msgstr "このプラグインをカットする権限がありません。" + +msgid "You do not have permission to delete this plugin" +msgstr "このプラグインを削除する権限がありません。" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "%(name)s プラグイン \"%(obj)s\" を無事削除しました。" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "%(name)s を削除できません。" + +msgid "Are you sure?" +msgstr "続けてもよろしいですか?" + +msgid "You do not have permission to clear this placeholder" +msgstr "このプレースホルダをクリアする権限がありません。" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "プレースホルダ \"%(obj)s\" を無事クリアしました。" + +msgid "placeholder" +msgstr "プレースホルダ" + +msgid "Page permissions" +msgstr "ページ権限" + +msgid "User & Group permissions" +msgstr "ユーザとグループ権限" + +msgid "Page permissions management" +msgstr "ページ権限管理" + +msgid "Actions" +msgstr "アクション" + +msgid "Empty content" +msgstr "コンテンツが空です" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "%(object_name)s のプロパティ" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "新しい %(object_name)s を追加" + +msgid "Add content" +msgstr "コンテンツを追加" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"現在の言語のコンテンツが変更されました。「キャンセル」をクリックするとフォームに戻り変更を保存できます。「OK」をクリックすると変更を破棄します。" + +#, python-format +msgid "Add %(language)s content" +msgstr "%(language)s のコンテンツを追加" + +msgid "Preview" +msgstr "プレビュー" + +msgid "Settings" +msgstr "設定" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "不正な言語 %(value)s。このフォームは処理できません。言語を変更してください。" + +msgid "" +msgstr "<未指定>" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "登録されたapphook \"%r\" が見つかりません。" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "プレースホルダ" + +msgid "Create" +msgstr "作成" + +msgid "Edit" +msgstr "編集" + +msgid "Structure" +msgstr "ストラクチャ" + +msgid "Content" +msgstr "コンテンツ" + +msgid "Sites" +msgstr "サイト" + +msgid "Admin Sites" +msgstr "管理サイト" + +msgid "Administration" +msgstr "管理" + +msgid "User settings" +msgstr "ユーザー設定" + +msgid "Clipboard..." +msgstr "クリップボード" + +msgid "Clear clipboard" +msgstr "クリップボードをクリアする" + +msgid "Disable toolbar" +msgstr "ツールバー非表示" + +msgid "Shortcuts..." +msgstr "ショートカット..." + +msgid "Users" +msgstr "ユーザー" + +#, python-format +msgid "Logout %s" +msgstr "ログアウト %s" + +msgid "Logout" +msgstr "ログアウト" + +msgid "Language" +msgstr "言語" + +msgid "Delete Translation" +msgstr "翻訳を削除" + +msgid "Copy all plugins" +msgstr "全てのプラグインをコピー" + +#, python-format +msgid "from %s" +msgstr "%s から" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "%s から全てのプラグインをコピーしてもよいですか?" + +msgid "Pages" +msgstr "ページ" + +msgid "Page" +msgstr "ページ" + +msgid "Create Page" +msgstr "ページ作成" + +msgid "New Page" +msgstr "新しいページ" + +msgid "New Sub Page" +msgstr "新しいサブページ" + +msgid "Duplicate this Page" +msgstr "ページ複本" + +msgid "Page settings" +msgstr "ページ設定" + +msgid "Advanced settings" +msgstr "詳細設定" + +msgid "Templates" +msgstr "テンプレート" + +msgid "Placeholders" +msgstr "プレースホルダ" + +msgid "Hide in navigation" +msgstr "ナビゲーションに表示しない" + +msgid "Display in navigation" +msgstr "ナビゲーションに表示する" + +msgid "Delete page" +msgstr "ページを削除する" + +msgid "Create a new page next to the current page." +msgstr "現在のページの隣に新しいページを作成する。" + +msgid "Create a page below the current page." +msgstr "現在のページの下に新しいページを作成する。" + +msgid "Select a valid site" +msgstr "有効なサイトを選択してください" + +msgid "Select a valid page" +msgstr "有効なページを選択してください" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "ページ %(conflict_page)s は現在のページ \"%(instance)s\" と同じURL '%(url)s' を持っています。" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "ページ %(conflict_page)s は現在のページと同じURL '%(url)s' を持っています。" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "省略可能。入力されれば、テキストプラグイン内に自動的に追加。" + +msgid "Provide a title for the new page." +msgstr "新しいページのタイトルを設定する。" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "空欄のままで自動スラグを使うか必要に応じて上書きする。" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "スラグを自動的に作成できません。手動で入力してください。" + +msgid "Please provide a valid slug." +msgstr "有効なスラグを入力してください。" + +msgid "You don't have the permissions required to add a page." +msgstr "ページを追加するために必要な権限がありません。" + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "位置" + +msgid "language" +msgstr "言語" + +msgid "plugin_name" +msgstr "プラグイン名" + +msgid "creation date" +msgstr "作成日" + +msgid "can edit" +msgstr "編集可能" + +msgid "can add" +msgstr "追加可能" + +msgid "can delete" +msgstr "削除可能" + +msgid "can change advanced settings" +msgstr "詳細設定を変更可能" + +msgid "can publish" +msgstr "公開可能" + +msgid "can change permissions" +msgstr "権限変更可能" + +msgid "can move" +msgstr "移動可能" + +msgid "view restricted" +msgstr "表示制限する" + +msgid "can recover pages" +msgstr "ページ復元可能" + +msgid "group" +msgstr "グループ" + +msgid "sites" +msgstr "サイト" + +msgid "created by" +msgstr "作成者" + +msgid "changed by" +msgstr "変更者" + +msgid "publication date" +msgstr "公開日時" + +msgid "publication end date" +msgstr "公開終了日次" + +msgid "in navigation" +msgstr "メニューに表示" + +msgid "soft root" +msgstr "ソフトルート" + +msgid "id" +msgstr "ID" + +msgid "attached menu" +msgstr "アタッチメニュー" + +msgid "template" +msgstr "テンプレート" + +msgid "login required" +msgstr "ログインが必要" + +msgid "application" +msgstr "アプリケーション" + +msgid "application instance name" +msgstr "アプリケーションインスタンス名" + +msgid "site" +msgstr "サイト" + +msgid "Grant on" +msgstr "権限を付与" + +msgid "page" +msgstr "ページ" + +msgid "no limit set" +msgstr "制限なし" + +msgid "for logged in users only" +msgstr "ログインユーザー用" + +msgid "for anonymous users only" +msgstr "匿名ユーザー用" + +msgid "Inherit from parent page" +msgstr "親ページから継承" + +msgid "Deny" +msgstr "否定" + +msgid "Only this website" +msgstr "このウェブサイトのみ" + +msgid "Allow" +msgstr "肯定" + +msgid "title" +msgstr "タイトル" + +msgid "The default title" +msgstr "デフォルトタイトル" + +msgid "Page Title" +msgstr "ページタイトル" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "ブラウザのタイトルやブックマークに表示されているタイトルを上書きします" + +msgid "Menu Title" +msgstr "メニュータイトル" + +msgid "Overwrite what is displayed in the menu" +msgstr "メニューに表示されているテキストを上書きします" + +msgid "Description meta tag" +msgstr "メタタグの記述" + +msgid "A description of the page used by search engines." +msgstr "検索エンジンが利用する記述。" + +msgid "redirect" +msgstr "リダイレクト" + +msgid "Redirects to this URL." +msgstr "このURLにリダイレクトします。" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "ソフトルートを指定すると、上の階層がナビゲーションに表示されなくなります。" + +msgid "The template used to render the content." +msgstr "コンテンツのレンダリングに使うテンプレートです。" + +msgid "page content" +msgstr "ページコンテンツ" + +msgid "page contents" +msgstr "ページコンテンツ" + +msgid "default" +msgstr "デフォルト" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "page_url テンプレートタグでこのページをリンクする時に使う、一意な識別子です。" + +msgid "Mark this page as a page type" +msgstr "このページをページタイプとしてマークする" + +msgid "pages" +msgstr "ページ" + +msgid "No available title" +msgstr "利用可能なタイトルがありません" + +msgid "slug" +msgstr "スラグ" + +msgid "Path" +msgstr "パス" + +msgid "Current page" +msgstr "現在のページ" + +msgid "Page children (immediate)" +msgstr "このページの(直接の)子ページ" + +msgid "Page and children (immediate)" +msgstr "このページと(直接の)子ページ" + +msgid "Page descendants" +msgstr "このページの配下のページ全て" + +msgid "Page and descendants" +msgstr "このページと配下のページ全て" + +msgid "on page level" +msgstr "ページレベルの権限です" + +msgid "frontend view restriction" +msgstr "フロントエンドで表示制限します" + +msgid "Please select user or group." +msgstr "ユーザかグループを選択してください。" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "ユーザはページを変更する権限なしにページを公開できません。編集権限が必要です。" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "ユーザはページを変更する権限なしに高度な設定を変更できません。編集権限が必要です。" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "ユーザはページを変更する権限なしにページ権限を変更できません。編集権限が必要です。" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "ユーザはページの変更権限なしにページを移動できません。編集権限が必要です。" + +msgid "can recover any deleted page" +msgstr "削除されたページを復元できます" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "何も選択しなければ、該当ユーザは全てのサイトでの権限を獲得します。" + +msgid "Page global permission" +msgstr "ページグロバール権限" + +msgid "Pages global permissions" +msgstr "ページグロバール権限" + +msgid "Page permission" +msgstr "ページ権限" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"ページ追加権限を付与する場合、子ページやその配下へのアクセス権限も付与してください。さもないと、作成者が追加したページを編集できなくなります。" + +msgid "User (page)" +msgstr "ユーザ (ページ)" + +msgid "Users (page)" +msgstr "ユーザ (ページ)" + +msgid "User group (page)" +msgstr "ユーザ グループ(ページ)" + +msgid "User groups (page)" +msgstr "ユーザ グループ(ページ)" + +msgid "slot" +msgstr "スロット" + +msgid "width" +msgstr "幅" + +msgid "Edit object" +msgstr "オブジェクトを編集" + +msgid "This is an external placeholder" +msgstr "これは外部プレースホルダです" + +msgid "plugin" +msgstr "プラグイン" + +msgid "plugins" +msgstr "プラグイン" + +msgid "" +msgstr "<空>" + +msgid "The language for the admin interface and toolbar" +msgstr "管理インタフェースとツールバーの言語" + +msgid "user setting" +msgstr "ユーザー設定" + +msgid "user settings" +msgstr "ユーザー設定" + +msgid "by template" +msgstr "テンプレートから" + +msgid "by code" +msgstr "コードから" + +msgid "static placeholder name" +msgstr "固定プレースホルダ名" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "この固定プレースホルダを識別できるような名前です。ユーザには表示されません。" + +msgid "placeholder code" +msgstr "プレースホルダコード" + +msgid "To render the static placeholder in templates." +msgstr "テンプレートで固定プレースホルダを展開します。" + +msgid "placeholder content" +msgstr "プレースホルダの内容" + +msgid "creation_method" +msgstr "作成メソッド" + +msgid "static placeholder" +msgstr "固定プレースホルダ" + +msgid "static placeholders" +msgstr "固定プレースホルダ" + +msgid "A static placeholder with the same site and code already exists" +msgstr "同じサイトとコードの固定プレースホルダが既に存在します。" + +msgid "Advanced options" +msgstr "詳細設定" + +msgid "Generic" +msgstr "ジェネリック" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s プラグイン \"%(obj)s\" を無事変更しました。" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "このプラグインにこれ以上設定する項目はありません。保存を押してください。" + +msgid "Moved" +msgstr "移動しました" + +msgid "Changed" +msgstr "変更済" + +msgid "Deleted" +msgstr "削除しました" + +msgid "Added Page Translation" +msgstr "ページ翻訳を追加しました" + +msgid "Changed Page Translation" +msgstr "ページ翻訳を変更しました" + +msgid "Deleted Page Translation" +msgstr "ページ翻訳を削除しました" + +msgid "Added Plugin" +msgstr "プラグインを追加しました" + +msgid "Changed Plugin" +msgstr "プラグインを変更しました" + +msgid "Moved Plugin" +msgstr "プラグインを移動しました" + +msgid "Deleted Plugin" +msgstr "プラグインを削除しました" + +msgid "Cut Plugin" +msgstr "プラグインを切り取り" + +msgid "Paste Plugin" +msgstr "プラグインを貼り付けました" + +msgid "Paste to Placeholder" +msgstr "プレースホルダに貼り付け" + +msgid "Added plugins to placeholder from clipboard" +msgstr "クリップボードからプレースホルダにプラグインを追加しました" + +msgid "Cleared Placeholder" +msgstr "プレースホルダをクリアしました" + +msgid "Save" +msgstr "保存" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "一部のフィールドは読み取り専用コンテンツのため変更できません。" + +#, python-format +msgid "Log in to administration here." +msgstr "ここ から管理ページにログインしてください。" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "ログインURL: %(login_url)s" + +msgid "Username:" +msgstr "ユーザ名" + +msgid "Password:" +msgstr "パスワード" + +msgid "Add a page" +msgstr "ページを追加" + +msgid "Change a page" +msgstr "ページを変更" + +msgid "Home" +msgstr "ホーム" + +msgid "View on site" +msgstr "サイトで確認" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "以下のエラーを修正してください。" + +msgid "All permissions" +msgstr "全パーミッション" + +msgid "Loading..." +msgstr "読込中..." + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "はい、削除します" + +msgid "No, take me back" +msgstr "いいえ、戻ります" + +msgid "Summary" +msgstr "概要" + +msgid "User" +msgstr "ユーザ" + +msgid "Group" +msgstr "グループ" + +msgid "Can edit" +msgstr "編集可能" + +msgid "Can add" +msgstr "追加可能" + +msgid "Can delete" +msgstr "削除可能" + +msgid "Can publish" +msgstr "公開可能" + +msgid "Can change permissions" +msgstr "権限変更可能" + +msgid "Can move" +msgstr "移動可能" + +msgid "Can view" +msgstr "閲覧可能" + +msgid "(global)" +msgstr "(全ページ)" + +msgid "(current)" +msgstr "(現在のページ)" + +msgid "Page doesn't inherit any permissions." +msgstr "このページの継承している権限はありません。" + +msgid "Edit model" +msgstr "モデルを編集" + +msgid "Save as new" +msgstr "新規保存" + +msgid "Save and add another" +msgstr "保存してもう一つ追加" + +msgid "Copy" +msgstr "コピー" + +msgid "Cut" +msgstr "カット" + +msgid "Paste" +msgstr "ペースト" + +msgid "Set as home" +msgstr "ホームに設定" + +msgid "is restricted" +msgstr "制限あり" + +msgid "last change by" +msgstr "最終変更者" + +msgid "last change on" +msgstr "最終変更日" + +msgid "meta" +msgstr "メタ" + +msgid "List of pages" +msgstr "ページの一覧" + +msgid "Search" +msgstr "検索" + +msgid "Page Tree" +msgstr "ページ木" + +msgid "Reset filter" +msgstr "フィルタをリセット" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +"削除された %(name)s を復元" + +msgid "Main Navigation" +msgstr "主ナビゲーション" + +msgid "Options" +msgstr "オプション" + +msgid "Successfully moved" +msgstr "移動しました" + +msgid "Changes within the tree might require a refresh." +msgstr "木の内部の変更には再読み込みが必要です。" + +msgid "Error:" +msgstr "エラー: " + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "このページはアプリケーションを伴わないのでコピーできません。apphookを操作するにはページの高度な設定を確認してください。" + +msgid "Are you sure you want to § this page?" +msgstr "このページを § して良いですか。" + +msgid "Reload" +msgstr "再読み込み" + +msgid "New node" +msgstr "新しいノード" + +msgid "nodes" +msgstr "ノード" + +msgid "View" +msgstr "ビュー" + +msgid "Menu" +msgstr "メニュー" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" %(object)s はまだありません。\n" +"
\n" +" 今すぐ %(object)s を追加してください。\n" +" " + +msgid "Copy options" +msgstr "コピーオプション" + +msgid "Choose copy options" +msgstr "コピーオプションを選んでください" + +msgid "Close" +msgstr "閉じる" + +msgid "Legend" +msgstr "凡例" + +msgid "In menu" +msgstr "メニューの中" + +msgid "Not in menu" +msgstr "メニューになし" + +msgid "View page" +msgstr "ページを閲覧" + +msgid "Softroot" +msgstr "ソフトルート" + +msgid "Apphook" +msgstr "アプリケーションフック" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "アプリケーション: %(apphook)s" + +msgid "in menu" +msgstr "メニューにあり" + +msgid "not in menu" +msgstr "メニューになし" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "ページ設定 (SHIFTクリックして高度な設定)" + +msgid "Permissions" +msgstr "権限" + +msgid "inherited" +msgstr "継承" + +msgid "This page has no preview!" +msgstr "このページはプレビューがありません。" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "アタッチされたapphookがルートのコンテンツを提供していない可能性があります。" + +msgid "It is being redirected to:" +msgstr "リダイレクト中" + +msgid "Clipboard" +msgstr "クリップボード" + +msgid "Add plugin" +msgstr "プラグインを追加する" + +msgid "Copy all" +msgstr "全てコピー" + +msgid "Copy from" +msgstr "コピーの起源" + +msgid "Empty all" +msgstr "全て空にする" + +msgid "Filter plugins..." +msgstr "プラグインをフィルタ..." + +msgid "Expand all" +msgstr "全てを展開" + +msgid "Collapse all" +msgstr "すべて折り畳む" + +msgid "You cannot add plugins to this plugin." +msgstr "このプラグインにはプラグインを追加できません。" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "このプラグインは親の外に移動したり編集したりできません" + +msgid "Clipboard is empty." +msgstr "クリップボードは空です。" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "このプラグインはこの種のプラグインを入れ子プラグインとすることはできません。" + +msgid "This plugin cannot have nested plugins." +msgstr "このプラグインは入れ子プラグインを持つことはできません。" + +msgid "Highlight" +msgstr "ハイライト" + +msgid "Available plugins" +msgstr "利用可能なプラグイン" + +msgid "Toggle structure" +msgstr "構造を切り替え" + +msgid "Login" +msgstr "ログイン" + +msgid "Add plugin to" +msgstr "にプラグインを追加する" + +msgid "More" +msgstr "詳しく" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Django CMS %(cms_version)s, Django %(django_version)s と Python " +"%(python_version)s を使った開発バージョン" + +msgid "Cancel" +msgstr "キャンセル" + +msgid "The following error occurred:" +msgstr "次のエラーが発生:" + +msgid "Action successful." +msgstr "アクションが成功しました。" + +msgid "Are you sure you want to delete this plugin?" +msgstr "本当にこのプラグインを削除しますか?" + +msgid "Are you sure you want to publish this page?" +msgstr "本当にこのページを公開しますか。" + +msgid "Plugin will be added here" +msgstr "プラグインはこちらに追加されます" + +msgid "You have unsaved changes." +msgstr "保存していない変更があります。" + +msgid "Loading" +msgstr "読み込み中" + +msgid "Are you sure you want to abandon these changes?" +msgstr "本当に変更を中止しても構いませんか。" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "フォームを読み込みできませんでした。サーバが正しく動作しているか確認してください。" + +msgid "Most used" +msgstr "よく使う" + +msgid "Shortcuts" +msgstr "ショートカット" + +msgid "The page was changed in the meantime, reloading..." +msgstr "その間にページが変更されました。再読み込みしています..." + +msgid "CMS-wide Shortcuts" +msgstr "CMS全体のショートカット" + +msgid "Bring up this help dialog" +msgstr "このヘルプダイアログを表示する" + +msgid "Close/cancel" +msgstr "閉じる/キャンセル" + +msgid "Toggle structure mode" +msgstr "構成モードを切り替える" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "構成モードを切り替え hovered-over プラグインをハイライトする" + +msgid "Open \"Create\" dialog" +msgstr "「作成」ダイアログを開く" + +msgid "Focus on Toolbar" +msgstr "ツールバーにフォーカスする" + +msgid "Focus on placeholders" +msgstr "プレースホルダにフォーカスする" + +msgid "Move to next/previous element" +msgstr "次/前の要素に移動する" + +msgid "Focus on plugins of placeholder" +msgstr "プレースホルダのプラグインにフォーカス" + +msgid "Edit plugin" +msgstr "プラグインを編集" + +msgid "Open actions menu" +msgstr "アクションメニューを開く" + +msgid "Expand/collapse" +msgstr "開く/閉じる" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "ログインできません。 パスワードなどが正しいかチェックして、やり直してください。" + +msgid "Double-click to edit" +msgstr "ダブルクリックして編集" + +msgid "Tap to edit" +msgstr "タップして編集" + +msgid "Click to go back" +msgstr "クリックして戻る" + +msgid "Click to go forward" +msgstr "クリックして進む" + +msgid "Minimize" +msgstr "最小化" + +msgid "Maximize" +msgstr "最大化" + +msgid "Placeholder not editable" +msgstr "プレースホルダは編集できません" + +msgid "Drop a plugin here" +msgstr "ここにプラグインをドロップ" + +msgid "Welcome to your new django CMS installation!" +msgstr "新しい django CMS インストールへようこそ!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "バージョン %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "一緒に素晴らしいものを作りましょう!" + +msgid "Please log in" +msgstr "ログインして下さい" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" 最初のページを追加\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

資金援助のお願い

\n" +"

\n" +" あなたの資金援助は、主に\n" +" django CMS フェローシッププログラムを通じて、製品に直接役立ちます!\n" +"

\n" +"

\n" +" あなた個人または組織が手軽に寄付するには\n" +" Github Sponsors をご利用ください。\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

参加しませんか

\n" +"

\n" +" django CMS Association は、django CMS の開発に資金を提供し、その方向性を導く非営利団体です。\n" +"

\n" +"

\n" +" 個人としても組織としても参加できます。\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

貢献する

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "インストールのメモ" + +msgid "Support" +msgstr "サポート" + +msgid "Documentation" +msgstr "ドキュメント" + +msgid "User guide" +msgstr "ユーザガイド" + +msgid "Give back" +msgstr "貢献する" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

上部に django CMS のロゴが表示されない場合は、\n" +" static/cms フォルダが\n" +" 静的ファイルにリンクされていることを確認してください。

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

このメッセージが表示されているのは、django の設定ファイルに\n" +" DEBUG = True が設定されており、\n" +" まだページが追加されていないためです。\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "django CMSにようこそ" + +msgid "Add Another" +msgstr "もう一つ追加" + +msgid "Back" +msgstr "戻る" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "次のステップに進むため以下のオプションから1つ選んでください。" + +msgid "Next" +msgstr "次" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "不明" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "%(domain)s 上にページがありません" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"テンプレートタグは、引数 `%(page_lookup)s` に該当するページを見つけられませんでした。\n" +"リクエストのURLは http://%(host)s%(path)s です" + +msgid "Two columns" +msgstr "2コラム" + +msgid "Three columns" +msgstr "3コラム" + +msgid "username" +msgstr "ユーザ名" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "必須。300文字以下の英数字及び記号(@/./+/-/_)" + +msgid "Enter a valid username." +msgstr "有効なユーザ名を入力してください。" + +msgid "email address" +msgstr "メール" + +msgid "staff status" +msgstr "スタッフの地位" + +msgid "Designates whether the user can log into this admin site." +msgstr "ユーザがこの管理者サイトにユーザがログインできるか示す" + +msgid "active" +msgstr "アクティブ" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "ユーザかアクティブと扱われるべきか示す。これの選択を外してアカウントさくじを回避する" + +msgid "users" +msgstr "ユーザ" + +msgid "Title Extension" +msgstr "タイトル機能拡張" + +msgid "Page Extension" +msgstr "ページ機能拡張" + +msgid "object ID" +msgstr "オプジェクトiD" + +msgid "Example1 App" +msgstr "例1アプリケーション" + +msgid "MultilingualExample1 App" +msgstr "多言語例1アプリケーション" + +msgid "Example1" +msgstr "例1" + +msgid "Examples" +msgstr "例" + +msgid "Extra Context" +msgstr "追加コンテンツ" + +msgid "Articles" +msgstr "記事" + +msgid "Sample App" +msgstr "サンプルアプリ" + +msgid "Sample App with config" +msgstr "設定付きサンプルアプリ" + +msgid "Sample App with excluded permissions" +msgstr "拡大した権限を使うアプリケーションの見本" + +msgid "Sample App 2" +msgstr "サンプルアプリ2" + +msgid "Sample App 3" +msgstr "Sample App 3" + +msgid "Sample App Without Landing Page" +msgstr "ランディングページなしのサンプルアプリ" + +msgid "Namespaced App" +msgstr "ネームスペースつきアプリ" + +msgid "Parent app" +msgstr "親アプリケーション" + +msgid "Child app" +msgstr "子アプリケーション" + +msgid "Variable urls-menus App" +msgstr "変数URLメニーアプリケーション" + +msgid "sample root page" +msgstr "サンプルルートページ" + +msgid "sample settings page" +msgstr "サンプル設定ページ" + +msgid "sample account page" +msgstr "サンプルアカウントページ" + +msgid "sample my profile page" +msgstr "サンプルマイプロファイルページ" + +msgid "Static Menu" +msgstr "固定メニュー" + +msgid "Static Menu2" +msgstr "固定メニュー2" + +msgid "Static Menu3" +msgstr "固定メニュー3" + +msgid "Static Menu4" +msgstr "固定メニュー4" + +msgid "Category" +msgstr "カテゴリー" + +msgid "Categories" +msgstr "カテゴリー" + +msgid "Add Category" +msgstr "カテゴリーを追加" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "カテゴリーを変更" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "本日は貴重なお時間をこのサイトにお使いいただきありがうとございます。" + +msgid "Inherit the template of the nearest ancestor" +msgstr "最も近い祖先のテンプレートを継承" + +msgid "UserSettings" +msgstr "ユーザ設定" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "プースホルダ #%(placeholder_label)s\" にプラグインを追加" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "%(plugin_name)s にプラグインを追加" + +msgid "Single placeholder" +msgstr "単一プレースホルダ" + +msgid "CMS - your user account was created." +msgstr "CMS - アカウントが作成されました。" + +msgid "CMS - your user account was changed." +msgstr "CMS - アカウントが変更されました。" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "このプレースホルダには、プラグインが上限 (%s) まで入っています。" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "このプレースホルダには、プラグイン %(plugin_name)s が上限 (%(limit)s) まで入っています。" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "指定された CMS_REQUEST_IP_RESOLVERモジュール: \"{0}\" が見つかりません。" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "指定された\"CMS_REQUEST_IP_RESOLVER\" 関数 \"{0}\"がモジュールに見つかりません\"{1}\"。" + +#, python-format +msgid "Create a new %s instance." +msgstr "新しい%sインスタンスを作成する。" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "モデル \"%s\" についてウィーザードか゜既に登録されています。" diff --git a/cms/locale/ja/LC_MESSAGES/djangojs.po b/cms/locale/ja/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..30802dc1 --- /dev/null +++ b/cms/locale/ja/LC_MESSAGES/djangojs.po @@ -0,0 +1,24 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Jonas Obrist , 2011 +# Yasushi Masuda , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Yasushi Masuda , 2013\n" +"Language-Team: Japanese (http://app.transifex.com/divio/django-cms/language/ja/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "先にページを保存しないままタブを変更しますが、よいですか??" diff --git a/cms/locale/ka/LC_MESSAGES/django.po b/cms/locale/ka/LC_MESSAGES/django.po new file mode 100644 index 00000000..b83a6441 --- /dev/null +++ b/cms/locale/ka/LC_MESSAGES/django.po @@ -0,0 +1,1632 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2022 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2022\n" +"Language-Team: Georgian (https://app.transifex.com/divio/teams/58664/ka/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ka\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +msgid "All" +msgstr "ყველა" + +msgid "Copy permissions" +msgstr "უფლებების კოპირება" + +msgid "Slug" +msgstr "სლაგი" + +msgid "The part of the title that is used in the URL" +msgstr "" + +msgid "Page type" +msgstr "" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "" + +msgid "Keep this field empty if standard path should be used." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "აპლიკაცია" + +msgid "Hook application to this page." +msgstr "" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "მომხმარებელი" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "დამატება" + +msgid "Change" +msgstr "შეცვლა" + +msgid "Delete" +msgstr "წაშლა" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "მონაცემთა ბაზის შეცდომა" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "დარწმუნებული ხართ?" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "გვერდის უფლებები" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "გამოსვლა" + +msgid "Language" +msgstr "ენა" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "გვერდი" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "პოზიცია" + +msgid "language" +msgstr "ენა" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "შექმნის თარიღი" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "ჯგუფი" + +msgid "sites" +msgstr "საიტები" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "გამოქვეყნების თარიღი" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "ნავიგაციაში" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "შაბლონი" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "აპლიკაცია" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "საიტი" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "გვერდი" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "სათაური" + +msgid "The default title" +msgstr "" + +msgid "Page Title" +msgstr "გვერდის სათაური" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +msgid "Menu Title" +msgstr "" + +msgid "Overwrite what is displayed in the menu" +msgstr "" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "redirect" +msgstr "გადამისამართება" + +msgid "Redirects to this URL." +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "სლაგი" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "მომხმარებელი (გვერდი)" + +msgid "Users (page)" +msgstr "მომხმარებლები (გვერდი)" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "სიგანე" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "დამატებითი პარამეტრები" + +msgid "Generic" +msgstr "" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "შენახვა" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "მომხმარებლის სახელი:" + +msgid "Password:" +msgstr "პაროლი:" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "მომხმარებელი" + +msgid "Group" +msgstr "ჯგუფი" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "კოპირება" + +msgid "Cut" +msgstr "ამოჭრა" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "გვერდების სია" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "შესვლა" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "დარწმუნებული ხართ, რომ გსურთ წაშალოთ ეს პლაგინი?" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "ელ. ფოსტის მისამართი" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/ka/LC_MESSAGES/djangojs.po b/cms/locale/ka/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..dd086a13 --- /dev/null +++ b/cms/locale/ka/LC_MESSAGES/djangojs.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# André Bouatchidzé , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: André Bouatchidzé , 2013\n" +"Language-Team: Georgian (http://app.transifex.com/divio/django-cms/language/ka/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ka\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/kk/LC_MESSAGES/django.po b/cms/locale/kk/LC_MESSAGES/django.po new file mode 100644 index 00000000..8d4d02c6 --- /dev/null +++ b/cms/locale/kk/LC_MESSAGES/django.po @@ -0,0 +1,1632 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2022 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2022\n" +"Language-Team: Kazakh (https://app.transifex.com/divio/teams/58664/kk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: kk\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +msgid "All" +msgstr "" + +msgid "Copy permissions" +msgstr "" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "Тақырып бөлігі URL ішінде қолданылады" + +msgid "Page type" +msgstr "" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "URL қайта жазу" + +msgid "Keep this field empty if standard path should be used." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "Қосымша" + +msgid "Hook application to this page." +msgstr "" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "Тіл" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "тақырып" + +msgid "The default title" +msgstr "Келісілген тақырып" + +msgid "Page Title" +msgstr "Беттің тақырыбы" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +msgid "Menu Title" +msgstr "Мәзір тақырыбы" + +msgid "Overwrite what is displayed in the menu" +msgstr "Мәзір көріністерін қайта жазу" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "ені" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "Кеңейтілген нұсқаулар" + +msgid "Generic" +msgstr "" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/kk/LC_MESSAGES/djangojs.po b/cms/locale/kk/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..682d4f98 --- /dev/null +++ b/cms/locale/kk/LC_MESSAGES/djangojs.po @@ -0,0 +1,24 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# tonukok , 2014 +# tonukok , 2014 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: tonukok , 2014\n" +"Language-Team: Kazakh (http://app.transifex.com/divio/django-cms/language/kk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: kk\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Парақшаларды сақтамай тұрып, терезелерді өзгерткіңіз келеді ме?" diff --git a/cms/locale/km/LC_MESSAGES/django.po b/cms/locale/km/LC_MESSAGES/django.po new file mode 100644 index 00000000..bbb6ee9d --- /dev/null +++ b/cms/locale/km/LC_MESSAGES/django.po @@ -0,0 +1,1633 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2022 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2022\n" +"Language-Team: Khmer (https://app.transifex.com/divio/teams/58664/km/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: km\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "All" +msgstr "ទាំង​អស់" + +msgid "Copy permissions" +msgstr "ចម្លង​សិទ្ធិ" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "" + +msgid "Page type" +msgstr "" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "ជំនួស​ពី​លើ URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "កម្មវិធី" + +msgid "Hook application to this page." +msgstr "ភ្ជាប់​កម្មវិធី​ទៅ​កាន់​ទំព័រ​នេះ។" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "អ្ន​ក​ប្រើ" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "បន្ថែម" + +msgid "Change" +msgstr "ផ្លាស់​ប្ដូរ" + +msgid "Delete" +msgstr "លុប" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "ភាសា ត្រូវ​តែ​បាន​កំណត់​ទៅ​ជា​ភាសា​ដែល​បាន​គាំទ្រ!" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "ការ​កំណត់​កម្រិត​ខ្ពស់" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "បណ្ដុំ​ទិន្នន័យ មាន​បញ្ហា" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "តើ​អ្នក​ប្រាកដ​ហើយឬ?" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "សិទ្ធិ​ទំព័រ" + +msgid "User & Group permissions" +msgstr "សិទ្ធិ​របស់ អ្នក​ប្រើ​ប្រាស់ និង ក្រុម​អ្នក​ប្រើ​ប្រាស់" + +msgid "Page permissions management" +msgstr "ការ​គ្រប់​គ្រង​សិទ្ធិ​របស់​ទំព័រ" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "មើល​ជា​មុន" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "ចាក​ចេញ" + +msgid "Language" +msgstr "ភាសា" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "ទំព័រ" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "លុប​ទំព័រ" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "ទី​តាំង" + +msgid "language" +msgstr "ភាសា" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "កាល​បរិច្ឆេទ​នៃ​ការ​បង្កើត" + +msgid "can edit" +msgstr "អាច​កែ​បាន" + +msgid "can add" +msgstr "អាច​បន្ថែម" + +msgid "can delete" +msgstr "អាច​លុប" + +msgid "can change advanced settings" +msgstr "អាច​ប្ដូរ​ការ​កំណត់​កម្រិត​ខ្ពស់" + +msgid "can publish" +msgstr "អាច​ផ្សាយ" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "អាច​ផ្លាស់​ទី" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "អាច​ស្ដារ​ទំព័រ" + +msgid "group" +msgstr "ក្រុម" + +msgid "sites" +msgstr "បណ្ដាញ" + +msgid "created by" +msgstr "បាន​បង្កើត​ដោយ" + +msgid "changed by" +msgstr "បាន​ផ្លាស់​ប្ដូរ​ដោយ" + +msgid "publication date" +msgstr "កាល​បរិច្ឆេទ​ការ​បោះ​ពុម្ព​ផ្សាយ" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "ពុម្ព​រូប​រាង" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "កម្មវិធី" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "បណ្ដាញ" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "ទំព័រ" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "ចំណង​ជើង" + +msgid "The default title" +msgstr "ចំណង​ជើង​លំនាំ​ដើម" + +msgid "Page Title" +msgstr "ចំណង​ជើង​ទំព័រ" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"ជំនួស​ពី​លើ អ្វី​ដែល​បាន​បង្ហាញ​នៅ​ផ្នែក​កំពូល​នៃ​កម្មវិធី​រុក​រក​របស់​អ្នក " +"ឬ នៅ​ក្នុង​សៀវភៅ​កត់​ចំណាំ" + +msgid "Menu Title" +msgstr "ចំណង​ជើង​ម៉ឺនុយ" + +msgid "Overwrite what is displayed in the menu" +msgstr "ជំនួស​ពី​លើ ឯកសារ​ដែល​បាន​បង្ហាញ​នៅ​ក្នុង​ម៉ឺនុយ" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "ប្ដូរ​ទិស​ដៅ​ទៅ​កាន់ URL មួយ​នេះ។" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "លំនាំ​ដើម" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "ទំព័រ" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "ផ្លូវ" + +msgid "Current page" +msgstr "ទំព័រ​បច្ចុប្បន្ន" + +msgid "Page children (immediate)" +msgstr "កូន​ទំព័រ (ភ្លាមៗ)" + +msgid "Page and children (immediate)" +msgstr "ទំព័រ និង កូន​ទំព័រ (ភ្លាមៗ)" + +msgid "Page descendants" +msgstr "តាមលំដាប់ទំព័រចុះ" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "អាច​ស្ដារ​ទំព័រ​និមួយៗ ដែល​បាន​លុប" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "សិទ្ធិ​ទំព័រ" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "អ្នក​ប្រើ (ទំព័រ)" + +msgid "Users (page)" +msgstr "អ្នក​ប្រើ (ទំព័រ)" + +msgid "User group (page)" +msgstr "ក្រុម​អ្នក​ប្រើ (ទំព័រ)" + +msgid "User groups (page)" +msgstr "ក្រុម​អ្នក​ប្រើ (ទំព័រ)" + +msgid "slot" +msgstr "ចន្លោះ" + +msgid "width" +msgstr "ទទឹង" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "ជម្រើស​កម្រិត​ខ្ពស់" + +msgid "Generic" +msgstr "" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "រក្សា​ទុក" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "ឈ្មោះ​ប្រើ​ប្រាស់៖" + +msgid "Password:" +msgstr "ពាក្យ​សម្ងាត់៖" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "ប្ដូរ​ទំព័រ" + +msgid "Home" +msgstr "ទំព័រ​មុខ" + +msgid "View on site" +msgstr "មើល​នៅ​លើ​បណ្ដាញ" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "សូម​កែ​សម្រួល​បញ្ហា​ខាង​ក្រោម។" + +msgid "All permissions" +msgstr "សិទ្ធិ​ទាំង​អស់" + +msgid "Loading..." +msgstr "កំពុង​ផ្ទុក..." + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "អ្នក​ប្រើ" + +msgid "Group" +msgstr "ក្រុម" + +msgid "Can edit" +msgstr "អាច​កែប្រែ" + +msgid "Can add" +msgstr "អាច​បន្ថែម" + +msgid "Can delete" +msgstr "អាច​លុប" + +msgid "Can publish" +msgstr "អាច​ផ្សាយ" + +msgid "Can change permissions" +msgstr "អាច​ប្ដូរ​សិទ្ធិ" + +msgid "Can move" +msgstr "អាច​ផ្លាស់​ទី" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "(សកល)" + +msgid "(current)" +msgstr "(បច្ចុប្បន្ន)" + +msgid "Page doesn't inherit any permissions." +msgstr "ទំព័រ​មិន​ត្រូវ​បាន​ទទួល​សិទ្ធិ​អ្វី​ទេ។" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "រក្សាទុកថ្មី" + +msgid "Save and add another" +msgstr "រក្សាទុករូចបន្ថែមទៀត" + +msgid "Copy" +msgstr "ចម្លង" + +msgid "Cut" +msgstr "កាត់" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "បញ្ជី​ទំព័រ" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "បាន​ផ្លាស់​ទី​ដោយ​ជោគ​ជ័យ" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "ជម្រើស​ក្នុង​ការ​ចម្លង" + +msgid "Choose copy options" +msgstr "រើស​ជម្រើស​នៃ​ការ​ចម្លង" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "តើ​អ្នក​ប្រាកដ​ថា​ចង់​លុប កម្មវិធី​បន្ថែម មួយ​នេះ?" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "បន្ថែម​មួយ​ផ្សេង​ទៀត" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "mailto" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "CMS - គណនី​ប្រើ​ប្រាស់​របស់​អ្នក ត្រូវ​បាន​បង្កើត​ហើយ។" + +msgid "CMS - your user account was changed." +msgstr "CMS - គណនី​ប្រើ​ប្រាស់​របស់​អ្នក ត្រូវ​បាន​ផ្លាស់​ប្ដូរ​ហើយ។" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/km/LC_MESSAGES/djangojs.po b/cms/locale/km/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..ebc6fd39 --- /dev/null +++ b/cms/locale/km/LC_MESSAGES/djangojs.po @@ -0,0 +1,24 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Sovichet Tep, 2011 +# Sovichet Tep, 2011 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Sovichet Tep, 2011\n" +"Language-Team: Khmer (http://app.transifex.com/divio/django-cms/language/km/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: km\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "តើ​ប្រាកដ​ថា​ចង់​ប្ដូរ ផ្ទាំង ដោយ​មិន​មាន​ការ​រក្សា​ទុក​ទំព័រ​ជា​មុន​ឬ?" diff --git a/cms/locale/ko/LC_MESSAGES/django.po b/cms/locale/ko/LC_MESSAGES/django.po new file mode 100644 index 00000000..b6cfaaed --- /dev/null +++ b/cms/locale/ko/LC_MESSAGES/django.po @@ -0,0 +1,1704 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Александр, 2022 +# Song M. Kim , 2025 +# Fabian Braun , 2026 +# Yeri Choi, 2026 +# MinJi Park, 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: MinJi Park, 2026\n" +"Language-Team: Korean (https://app.transifex.com/divio/teams/58664/ko/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "All" +msgstr "전부" + +msgid "Copy permissions" +msgstr "복사 허가" + +msgid "Slug" +msgstr "슬러그" + +msgid "The part of the title that is used in the URL" +msgstr "URL에 사용된 제목의 일부" + +msgid "Page type" +msgstr "페이지 타입" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "페이지 타입들" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "URL을 덮어 씌움니다" + +msgid "Keep this field empty if standard path should be used." +msgstr "표준 경로를 사용해야만 하는 경우에는 이 필드를 비워 두세요." + +msgid "Start typing..." +msgstr "입력 시작..." + +msgid "menu visibility" +msgstr "메뉴 가시성" + +msgid "limit when this page is visible in the menu" +msgstr "페이지가 메뉴에서 보여질 때만 제한함" + +msgid "X Frame Options" +msgstr "X 프레임 옵션들" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "이 페이지는 다른 페이지들이나 웹 사이트들에 탑재될 수 있습니다." + +msgid "URL options" +msgstr "URL 옵션들" + +msgid "Menu options" +msgstr "메뉴 옵션들" + +msgid "Headers" +msgstr "헤더들" + +msgid "Application" +msgstr "어플리케이션" + +msgid "Hook application to this page." +msgstr "이 페이지로 어플리케이션을 걸어 주세요." + +msgid "Application configurations" +msgstr "앱 구성" + +msgid "A page with this reverse URL id exists already." +msgstr "이 역방향 URL 매핑을 가진 페이지가 이미 존재합니다." + +msgid "Invalid application config value" +msgstr "잘못된 앱 구성 값" + +msgid "An application instance using this configuration already exists." +msgstr "이 설정을 사용하는 응용 프로그램이 이미 존재합니다." + +msgid "An application instance with this name already exists." +msgstr "이 이름을 가진 응용 프로그램이 이미 존재 합니다. " + +msgid "You can't move the home page inside another page" +msgstr "홈페이지를 다른 페이지 안으로 이동할 수 없습니다." + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"동일한 페이지 수준에서 동일한 슬러그를 가진 페이지 두 개를 가질 수 없습니다. 다시 이동하기 전에 두 페이지 중 하나의 슬러그를 " +"변경하세요." + +msgid "Yes" +msgstr "네" + +msgid "No" +msgstr "아니오" + +msgid "user" +msgstr "사용자" + +msgid "can_view" +msgstr "조회_가능" + +msgid "Add" +msgstr "추가" + +msgid "Change" +msgstr "변경" + +msgid "Delete" +msgstr "삭제" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"사용자는 생성된 페이지 변경 권한 없이 페이지를 생성할 수 없습니다. \n" +"수정 권한이 필요합니다." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"사용자는 페이지 변경 권한 없이 페이지를 삭제할 수 없습니다. \n" +"수정 권한이 필요합니다. " + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"사용자는 페이지 변경 권한 없이 페이지 권한을 설정할 수 없습니다. \n" +"수정 권한이 필요합니다. " + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "페이지 변경 권한이 없으면 사용자는 페이지 권한을 삭제할 수 없습니다. 편집 권한이 필요합니다." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "사용자는 생성된 권한을 변경할 권한이 없으면 페이지 권한을 생성할 수 없습니다. 편집 권한이 필요합니다." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "페이지 변경 권한이 없으면 사용자는 페이지 권한을 삭제할 수 없습니다. 편집 권한이 필요합니다." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "'%s' 플러그인 형식은 유효하지 않습니다." + +msgid "Language must be set to a supported language!" +msgstr "지원 가능한 언어로 설정되어야 합니다!" + +msgid "Parent plugin language must be same as language!" +msgstr "상위 플러그인의 언어는 기본 언어와 동일해야 합니다!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "상위 플러그인의 언어는 기본 언어와 반드시 동일해야 합니다!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "플러그인 위치는 %(position)d보다 커야 합니다." + +msgid "Translations" +msgstr "번역" + +msgid "Advanced Settings" +msgstr "고급 설정" + +msgid "The page is not eligible to be home." +msgstr "해당 페이지는 홈페이지가 될 자격이 없습니다." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr " 기본 키(primary key)가 %(key)r인 %(name)s 객체가 존재하지 않습니다." + +msgid "error" +msgstr "오류" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "오류입니다! 당신은 이 페이지를 이동할 수 있는 권한이 없습니다. 페이지를 다시 로드해주세요." + +msgid "Error! You don't have permissions to copy this page." +msgstr "오류입니다! 당신은 이 페이지를 복사할 권한이 없습니다." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "오류입니다! 붙여넣으신 페이지는 타겟 사이트에서 설정된 언어 중 어느 언어로도 번역되어 있지 않습니다." + +msgid "You do not have permission to edit this page" +msgstr "이 페이지를 수정할 권한이 없습니다" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "(변경하려면 먼저 현재 게시된 이 페이지의 버전을 게시 취소하세요)" + +msgid "Add Translation" +msgstr "번역 추가하기" + +msgid "Add Page Copy" +msgstr "페이지 복사본 추가" + +msgid "New sub page" +msgstr "새 하위 페이지" + +msgid "New page" +msgstr "새 페이지" + +msgid "Database error" +msgstr "데이터베이스 오류" + +msgid "Template not valid" +msgstr "템플릿이 잘못됨" + +msgid "Placeholder selection not valid" +msgstr "플레이스홀더 선택이 잘못되었습니다" + +msgid "The template was successfully changed" +msgstr "템플릿이 잘 바뀌었습니다." + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "대상 언어에 플레이스홀더 '%s'이/가 존재하지 않습니다" + +msgid "You do not have permission to copy these plugins." +msgstr "이 플러그인을 복사할 권한이 없습니다." + +msgid "You do not have permission to delete this page" +msgstr "이 페이지를 삭제할 권한이 없습니다." + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "%(language)s 언어의 제목과 플러그인은 삭제 되었습니다." + +msgid "Public content" +msgstr "공개 콘텐츠" + +msgid "Empty" +msgstr "없음" + +msgid "Create Content" +msgstr "콘텐츠 만들기" + +msgid "View restriction" +msgstr "제한 보기" + +msgid "View restrictions" +msgstr "제한들을 보기" + +#, python-format +msgid "Field %s not found" +msgstr "필드 %s를 찾지 못했습니다." + +msgid "You do not have permission to edit this item" +msgstr "이 아이템을 수정할 권한이 없습니다." + +msgid "You do not have permission to add a plugin" +msgstr "플러그인을 추가할 권한이 없습니다." + +msgid "You do not have permission to copy this placeholder." +msgstr "이 플레이스홀더를 복사할 권한이 없습니다." + +msgid "Plugin not found" +msgstr "플러그인이 발견되지 않습니다." + +msgid "You do not have permission to edit this plugin" +msgstr "이 플러그인을 수정할 권한이 없습니다" + +msgid "You have no permission to paste this plugin" +msgstr "이 플러그인을 복사할 권한이 없습니다." + +msgid "You have no permission to paste this placeholder" +msgstr "이 플레이스홀더를 복사할 권한이 없습니다." + +msgid "You have no permission to move this plugin" +msgstr "이 플러그인을 이동할 권한이 없습니다." + +msgid "You have no permission to cut this plugin" +msgstr "이 플러그인을 잘라낼 권한이 없습니다." + +msgid "You do not have permission to delete this plugin" +msgstr "이 플러그인을 삭제할 권한이 없습니다." + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr " %(name)s 플러그인 \"%(obj)s\" 이 잘 삭제되었습니다." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "%(name)s 을 삭제할 수 없습니다." + +msgid "Are you sure?" +msgstr "확실합니까 ?" + +msgid "You do not have permission to clear this placeholder" +msgstr "이 플레이스홀더를 삭제할 권한이 없습니다." + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "\"%(obj)s\" 플레이스홀더가 성공적으로 삭제되었습니다." + +msgid "placeholder" +msgstr "플레이스홀더" + +msgid "Page permissions" +msgstr "페이지 권한" + +msgid "User & Group permissions" +msgstr "사용자 & 그룹 권한" + +msgid "Page permissions management" +msgstr "페이지 권한 관리" + +msgid "Actions" +msgstr "활동들" + +msgid "Empty content" +msgstr "빈 콘텐츠" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "%(object_name)s의 속성들 " + +#, python-format +msgid "Add new %(object_name)s" +msgstr "새로운 %(object_name)s을/를 추가하기" + +msgid "Add content" +msgstr "콘텐츠 추가하기" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"현재 언어에 대한 콘텐츠가 변경되었습니다. 변경 사항을 저장하려면 \"취소\"를 클릭하여 양식으로 돌아가십시오. 변경 사항을 취소하려면 " +"\"확인\"을 클릭하십시오." + +#, python-format +msgid "Add %(language)s content" +msgstr "%(language)s 콘텐츠 추가하기 " + +msgid "Preview" +msgstr "미리보기" + +msgid "Settings" +msgstr "설정들" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "%(value)s는 잘못된 언어입니다. 이 양식을 처리할 수 없습니다. 언어를 변경해 보세요." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "등록된 앱훅 \"%r\"을/를 찾을 수 없습니다." + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "플레이스홀더" + +msgid "Create" +msgstr "만들기" + +msgid "Edit" +msgstr "수정" + +msgid "Structure" +msgstr "구조" + +msgid "Content" +msgstr "내용" + +msgid "Sites" +msgstr "사이트들" + +msgid "Admin Sites" +msgstr "관리 사이트들" + +msgid "Administration" +msgstr "관리" + +msgid "User settings" +msgstr "사용자 설정들" + +msgid "Clipboard..." +msgstr "클립보드..." + +msgid "Clear clipboard" +msgstr "클립보드 지우기" + +msgid "Disable toolbar" +msgstr "툴바 비활성화하기" + +msgid "Shortcuts..." +msgstr "단축키들..." + +msgid "Users" +msgstr "사용자들" + +#, python-format +msgid "Logout %s" +msgstr "%s 로그아웃하기" + +msgid "Logout" +msgstr "로그아웃" + +msgid "Language" +msgstr "언어" + +msgid "Delete Translation" +msgstr "번역 삭제하기" + +msgid "Copy all plugins" +msgstr "모든 플러그인들을 복사하기" + +#, python-format +msgid "from %s" +msgstr "%s부터" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "정말 %s의 모든 플러그인들을 복사하시겠습니까?" + +msgid "Pages" +msgstr "페이지들" + +msgid "Page" +msgstr "페이지" + +msgid "Create Page" +msgstr "페이지 생성하기" + +msgid "New Page" +msgstr "새 페이지" + +msgid "New Sub Page" +msgstr "새 하위 페이지" + +msgid "Duplicate this Page" +msgstr "이 페이지 복제" + +msgid "Page settings" +msgstr "페이지 설정들" + +msgid "Advanced settings" +msgstr "고급 설정" + +msgid "Templates" +msgstr "템플릿" + +msgid "Placeholders" +msgstr "플레이스홀더" + +msgid "Hide in navigation" +msgstr "탐색 중에 숨기기" + +msgid "Display in navigation" +msgstr "탐색 중에 표시하기" + +msgid "Delete page" +msgstr "페이지 삭제" + +msgid "Create a new page next to the current page." +msgstr "현재 페이지 옆에 새 페이지 생성하기" + +msgid "Create a page below the current page." +msgstr "현재 페이지 아래에 새로운 페이지 생성하기" + +msgid "Select a valid site" +msgstr "유효한 사이트를 선택하세요." + +msgid "Select a valid page" +msgstr "유효한 페이지를 선택하세요." + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"페이지 %(conflict_page)s은 현재 페이지 \"%(instance)s\"와 동일한 url '%(url)s'을 가지고 있습니다." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "%(conflict_page)s페이지의 url은 현재 페이지와 동일한 '%(url)s'입니다." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "선택 사항입니다. 제공될 경우 새 텍스트 플러그인에 자동으로 추가됩니다." + +msgid "Provide a title for the new page." +msgstr "새 페이지의 제목을 입력하세요." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "자동 슬러그 생성을 위해 비워 두거나, 필요에 따라 수동으로 수정하십시오." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "슬러그를 자동으로 생성할 수 없습니다. 수동으로 입력해 주세요." + +msgid "Please provide a valid slug." +msgstr "유효한 슬러그를 입력해 주세요." + +msgid "You don't have the permissions required to add a page." +msgstr "페이지를 추가하는 데 필요한 권한이 없습니다." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "위치" + +msgid "language" +msgstr "언어" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "생성일" + +msgid "can edit" +msgstr "수정 가능" + +msgid "can add" +msgstr "추가 가능" + +msgid "can delete" +msgstr "삭제 가능" + +msgid "can change advanced settings" +msgstr "고급 설정 변경 가능" + +msgid "can publish" +msgstr "게시 가능" + +msgid "can change permissions" +msgstr "권한 수정 가능" + +msgid "can move" +msgstr "이동 가능" + +msgid "view restricted" +msgstr "보기 제한" + +msgid "can recover pages" +msgstr "페이지 복구 가능" + +msgid "group" +msgstr "그룹" + +msgid "sites" +msgstr "사이트들" + +msgid "created by" +msgstr "만든 이" + +msgid "changed by" +msgstr "수정한 이" + +msgid "publication date" +msgstr "발행 날짜" + +msgid "publication end date" +msgstr "발행 마지막 날짜" + +msgid "in navigation" +msgstr "탐색중" + +msgid "soft root" +msgstr "소프트 루팅" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "첨부된 메뉴" + +msgid "template" +msgstr "템플릿" + +msgid "login required" +msgstr "로그인이 필요함" + +msgid "application" +msgstr "애플리케이션" + +msgid "application instance name" +msgstr "애플리케이션 인스턴스 이름" + +msgid "site" +msgstr "사이트" + +msgid "Grant on" +msgstr "~에 대한 권한 부여" + +msgid "page" +msgstr "페이지" + +msgid "no limit set" +msgstr "설정된 제한 없음" + +msgid "for logged in users only" +msgstr "로그인한 사용자 전용" + +msgid "for anonymous users only" +msgstr "익명 사용자 전용" + +msgid "Inherit from parent page" +msgstr "상위 페이지에서 상속 받음" + +msgid "Deny" +msgstr "거부" + +msgid "Only this website" +msgstr "오직 이 웹사이트만" + +msgid "Allow" +msgstr "허가" + +msgid "title" +msgstr "제목" + +msgid "The default title" +msgstr "기본 제목" + +msgid "Page Title" +msgstr "페이지 제목" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "당신의 블라우져 가장 상단이나 북마크에 표시되어 있는 것을 덮어 씌웁니다" + +msgid "Menu Title" +msgstr "메뉴 제목" + +msgid "Overwrite what is displayed in the menu" +msgstr "메뉴에 표시된 것을 덮어 씌웁니다" + +msgid "Description meta tag" +msgstr "설명 메타 태그 " + +msgid "A description of the page used by search engines." +msgstr "검색 엔진들에서 사용되어지는 페이지에 관한 설명" + +msgid "redirect" +msgstr "리다이렉트" + +msgid "Redirects to this URL." +msgstr "이 URL로 리다이렉트" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "모든 상위 항목이 탐색 메뉴에 표시되지는 않을 것입니다." + +msgid "The template used to render the content." +msgstr "콘텐츠를 렌더링하는 데 사용되는 템플릿입니다." + +msgid "page content" +msgstr "페이지 콘텐츠" + +msgid "page contents" +msgstr "페이지 콘텐츠들" + +msgid "default" +msgstr "기본" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "이 페이지로 연결하기 위해 page_url 템플릿 태그와 함께 사용되는 고유 식별자입니다." + +msgid "Mark this page as a page type" +msgstr "이 페이지를 페이지 유형으로 표시하세요." + +msgid "pages" +msgstr "페이지들" + +msgid "No available title" +msgstr "제목 없음" + +msgid "slug" +msgstr "슬러그" + +msgid "Path" +msgstr "경로" + +msgid "Current page" +msgstr "현재 페이지" + +msgid "Page children (immediate)" +msgstr "(직계) 하위 페이지" + +msgid "Page and children (immediate)" +msgstr "현재 페이지 및 (직계) 하위 페이지" + +msgid "Page descendants" +msgstr "하위 페이지들" + +msgid "Page and descendants" +msgstr "페이지와 하위 페이지들" + +msgid "on page level" +msgstr "페이지 레벨에서" + +msgid "frontend view restriction" +msgstr "프런트엔드 보기 제한" + +msgid "Please select user or group." +msgstr "사용자 또는 그룹을 선택하십시오." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "사용자는 페이지 수정 권한이 없으면 페이지를 게시할 수 없습니다. 편집 권한이 필요합니다." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "페이지 변경 권한이 없으면 사용자는 페이지 고급 설정을 변경할 수 없습니다. 편집 권한이 필요합니다." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "사용자는 페이지 변경 권한이 없으면 페이지 권한을 변경할 수 없습니다. 편집 권한이 필요합니다." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "페이지 변경 권한이 없으면 사용자는 페이지를 이동할 수 없습니다. 편집 권한이 필요합니다." + +msgid "can recover any deleted page" +msgstr "삭제된 페이지는 모두 복구할 수 있습니다." + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "아무것도 선택하지 않으면, 사용자는 모든 사이트에 부여된 권한들을 가집니다." + +msgid "Page global permission" +msgstr "전체적인 페이지 권한" + +msgid "Pages global permissions" +msgstr "전체적인 페이지 권한들" + +msgid "Page permission" +msgstr "페이지 권한" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "페이지 추가 권한은 자식이나 후손에 대한 액세스도 필요하며, 그렇지 않으면 추가된 페이지는 작성자가 변경할 수 없습니다." + +msgid "User (page)" +msgstr "사용자 (페이지)" + +msgid "Users (page)" +msgstr "사용자들 (페이지)" + +msgid "User group (page)" +msgstr "사용자 그룹 (페이지)" + +msgid "User groups (page)" +msgstr "사용자 그룹들 (페이지)" + +msgid "slot" +msgstr "슬롯" + +msgid "width" +msgstr "너비" + +msgid "Edit object" +msgstr "객체 수정" + +msgid "This is an external placeholder" +msgstr "이것은 외부 플레이스홀더입니다" + +msgid "plugin" +msgstr "플러그인" + +msgid "plugins" +msgstr "플러그인" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "관리 인터페이스 및 툴바의 언어" + +msgid "user setting" +msgstr "사용자 설정" + +msgid "user settings" +msgstr "사용자 설정들" + +msgid "by template" +msgstr "템플릿에 의해" + +msgid "by code" +msgstr "코드에 의해" + +msgid "static placeholder name" +msgstr "정적 플레이스홀더 이름" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "이 정적 자리 표시자를 식별하기 위한 설명적인 이름입니다. 사용자에게는 표시되지 않습니다." + +msgid "placeholder code" +msgstr "플레이스홀더 코드" + +msgid "To render the static placeholder in templates." +msgstr "템플릿의 정적 플레이스홀더를 렌더링" + +msgid "placeholder content" +msgstr "플레이스홀더 내용" + +msgid "creation_method" +msgstr "생성_메서드" + +msgid "static placeholder" +msgstr "정적 플레이스홀더" + +msgid "static placeholders" +msgstr "정적 플레이스홀더들" + +msgid "A static placeholder with the same site and code already exists" +msgstr "동일한 사이트 및 코드를 가진 정적 플레이스홀더가 이미 존재합니다. " + +msgid "Advanced options" +msgstr "고급 옵션" + +msgid "Generic" +msgstr "일반적인" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\"가 성공적으로 변경되었습니다." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "더 이상 이 플러그인을 위한 설정이 없습니다. 저장하기를 누르세요." + +msgid "Moved" +msgstr "이동됨" + +msgid "Changed" +msgstr "변경됨" + +msgid "Deleted" +msgstr "삭제됨" + +msgid "Added Page Translation" +msgstr "추가된 페이지 번역" + +msgid "Changed Page Translation" +msgstr "변경된 페이지 번역" + +msgid "Deleted Page Translation" +msgstr "삭제된 페이지 번역" + +msgid "Added Plugin" +msgstr "추가된 플러그인" + +msgid "Changed Plugin" +msgstr "번경된 플러그인" + +msgid "Moved Plugin" +msgstr "이동된 플러그인" + +msgid "Deleted Plugin" +msgstr "삭제된 플러그인" + +msgid "Cut Plugin" +msgstr "플러그인 잘라내기" + +msgid "Paste Plugin" +msgstr "플러그인 붙여넣기" + +msgid "Paste to Placeholder" +msgstr "플레이스홀더에 붙여넣기" + +msgid "Added plugins to placeholder from clipboard" +msgstr "클립보드에서 가져온 플러그인을 플레이스홀더에 추가했습니다." + +msgid "Cleared Placeholder" +msgstr "플레이스홀더를 비웠습니다." + +msgid "Save" +msgstr "저장" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "일부 필드는 읽기 전용 콘텐츠이므로 변경할 수 없습니다." + +#, python-format +msgid "Log in to administration here." +msgstr "관리자 에 로그인하려면 를 클릭하세요." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "로그인 주소: %(login_url)s" + +msgid "Username:" +msgstr "사용자 이름:" + +msgid "Password:" +msgstr "비밀번호:" + +msgid "Add a page" +msgstr "페이지 추가하기" + +msgid "Change a page" +msgstr "페이지 수정하기" + +msgid "Home" +msgstr "홈" + +msgid "View on site" +msgstr "사이트에서 보기" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "아래 오류를 수정하세요." + +msgid "All permissions" +msgstr "모든 권한들" + +msgid "Loading..." +msgstr "로딩 중..." + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "네, 확실해요." + +msgid "No, take me back" +msgstr "아니요, 이전으로 돌아가 주세요" + +msgid "Summary" +msgstr "요약" + +msgid "User" +msgstr "사용자" + +msgid "Group" +msgstr "그룹" + +msgid "Can edit" +msgstr "수정 가능" + +msgid "Can add" +msgstr "추가 가능" + +msgid "Can delete" +msgstr "삭제 가능" + +msgid "Can publish" +msgstr "게시 가능" + +msgid "Can change permissions" +msgstr "권한들을 변경할 수 있습니다" + +msgid "Can move" +msgstr "이동 가능" + +msgid "Can view" +msgstr "보기 가능" + +msgid "(global)" +msgstr "(글로벌)" + +msgid "(current)" +msgstr "(현재의)" + +msgid "Page doesn't inherit any permissions." +msgstr "페이지는 어떤 권한도 상속받지 않습니다." + +msgid "Edit model" +msgstr "모델 수정" + +msgid "Save as new" +msgstr "다른 이름으로 저장" + +msgid "Save and add another" +msgstr "저장 후 다른 항목 추가" + +msgid "Copy" +msgstr "복사" + +msgid "Cut" +msgstr "잘라내기" + +msgid "Paste" +msgstr "붙여넣기" + +msgid "Set as home" +msgstr "홈으로 설정하기" + +msgid "is restricted" +msgstr "제한된" + +msgid "last change by" +msgstr "마지막 변경자:" + +msgid "last change on" +msgstr "마지막 변경일:" + +msgid "meta" +msgstr "메타" + +msgid "List of pages" +msgstr "페이지들의 목록" + +msgid "Search" +msgstr "검색" + +msgid "Page Tree" +msgstr "페이지 트리" + +msgid "Reset filter" +msgstr "필터 재설정" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" 삭제된 %(name)s를 복원하세요\n" +" " + +msgid "Main Navigation" +msgstr "주요 탐색 메뉴" + +msgid "Options" +msgstr "옵션들" + +msgid "Successfully moved" +msgstr "잘 옮겨짐" + +msgid "Changes within the tree might require a refresh." +msgstr "트리 구조의 변경으로 인해 새로 고침이 필요할 수 있습니다." + +msgid "Error:" +msgstr "오류:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "이 페이지에는 애플리케이션이 연결되어 있으므로 복사할 수 없습니다. 앱훅을 관리하려면 페이지의 고급 설정을 참조하세요." + +msgid "Are you sure you want to § this page?" +msgstr "이 페이지를 § 하기 원하십니까 ?" + +msgid "Reload" +msgstr "새로고침" + +msgid "New node" +msgstr "새 노드" + +msgid "nodes" +msgstr "노드들" + +msgid "View" +msgstr "보기" + +msgid "Menu" +msgstr "메뉴" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" 아직 %(object)s이 없습니다. \n" +"
\n" +" 지금 %(object)s를 추가하세요.\n" +" " + +msgid "Copy options" +msgstr "옵션 복사" + +msgid "Choose copy options" +msgstr "옵션 복사를 선택하세요." + +msgid "Close" +msgstr "종료" + +msgid "Legend" +msgstr "범례" + +msgid "In menu" +msgstr "메뉴에 있습니다" + +msgid "Not in menu" +msgstr "메뉴에 없습니다" + +msgid "View page" +msgstr "페이지 보기" + +msgid "Softroot" +msgstr "소프트루트" + +msgid "Apphook" +msgstr "앱훅" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "적용: %(apphook)s" + +msgid "in menu" +msgstr "메뉴에 있습니다" + +msgid "not in menu" +msgstr "메뉴에 없습니다" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "페이지 설정 (고급 설정을 보려면 Shift 키를 누른 상태에서 클릭하세요)" + +msgid "Permissions" +msgstr "권한들" + +msgid "inherited" +msgstr "상속받은" + +msgid "This page has no preview!" +msgstr "이 페이지는 미리보기가 없습니다!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "첨부된 앱훅이 루트에 콘텐츠를 제공하지 않을 가능성이 있습니다." + +msgid "It is being redirected to:" +msgstr "다음으로 리디렉션됩니다:" + +msgid "Clipboard" +msgstr "클립보드" + +msgid "Add plugin" +msgstr "플러그인 추가" + +msgid "Copy all" +msgstr "모두 복사" + +msgid "Copy from" +msgstr "~에서 복사" + +msgid "Empty all" +msgstr "모두 비우기" + +msgid "Filter plugins..." +msgstr "필터 플러그인들..." + +msgid "Expand all" +msgstr "모두 펼치기" + +msgid "Collapse all" +msgstr "모두 접기" + +msgid "You cannot add plugins to this plugin." +msgstr "이 플러그인에는 다른 플러그인을 추가할 수 없습니다." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "이 플러그인은 상위 플러그인 외부로 이동하거나 편집할 수 없습니다." + +msgid "Clipboard is empty." +msgstr "클립보드가 비어 있습니다." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "이 플러그인은 이러한 유형의 플러그인을 중첩 플러그인으로 허용하지 않습니다." + +msgid "This plugin cannot have nested plugins." +msgstr "이 플러그인은 중첩된 플러그인을 가질 수 없습니다." + +msgid "Highlight" +msgstr "하이라이트" + +msgid "Available plugins" +msgstr "사용 가능한 플러그인들" + +msgid "Toggle structure" +msgstr "토글 구조" + +msgid "Login" +msgstr "로그인" + +msgid "Add plugin to" +msgstr "~에 플러그인 추가" + +msgid "More" +msgstr "더" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Django CMS %(cms_version)s, Django %(django_version)s, Python " +"%(python_version)s을 사용한 개발 버전" + +msgid "Cancel" +msgstr "취소" + +msgid "The following error occurred:" +msgstr "다음과 같은 오류가 발생했습니다:" + +msgid "Action successful." +msgstr "작업이 성공적으로 완료되었습니다." + +msgid "Are you sure you want to delete this plugin?" +msgstr "이 플러그인을 정말로 삭제하시겠습니까?" + +msgid "Are you sure you want to publish this page?" +msgstr "이 페이지를 정말로 게시하시겠습니까?" + +msgid "Plugin will be added here" +msgstr "플러그인이 여기에 추가될 예정입니다." + +msgid "You have unsaved changes." +msgstr "저장되지 않은 변경 사항이 있습니다." + +msgid "Loading" +msgstr "로딩 중" + +msgid "Are you sure you want to abandon these changes?" +msgstr "이러한 변경 사항을 정말로 포기하시겠습니까?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "폼을 불러올 수 없습니다. 서버가 정상적으로 실행 중인지 확인해 주세요." + +msgid "Most used" +msgstr "가장 많이 사용된" + +msgid "Shortcuts" +msgstr "단축키들" + +msgid "The page was changed in the meantime, reloading..." +msgstr "페이지가 변경되었습니다. 새로 고침 중입니다..." + +msgid "CMS-wide Shortcuts" +msgstr "CMS 전체 범위에서 적용되는 단축키들" + +msgid "Bring up this help dialog" +msgstr "이 도움말 대화 상자를 표시하세요" + +msgid "Close/cancel" +msgstr "닫기/취소" + +msgid "Toggle structure mode" +msgstr "토글 구조 모드" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "구조 모드를 전환하고 마우스 오버된 플러그인을 강조 표시합니다." + +msgid "Open \"Create\" dialog" +msgstr "\"생성\" 대화상자 열기" + +msgid "Focus on Toolbar" +msgstr "툴바에 포커스" + +msgid "Focus on placeholders" +msgstr "플레이스홀더들에 포커스" + +msgid "Move to next/previous element" +msgstr "다음/이전 요소로 이동" + +msgid "Focus on plugins of placeholder" +msgstr "플레이스홀더 플러그인에 집중하세요" + +msgid "Edit plugin" +msgstr "플러그인 수정" + +msgid "Open actions menu" +msgstr "작업 메뉴 열기" + +msgid "Expand/collapse" +msgstr "펼치기/접기" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "로그인에 실패했습니다. 자격 증명을 확인하고 다시 시도해 주세요." + +msgid "Double-click to edit" +msgstr "더블 클릭하여 편집하세요" + +msgid "Tap to edit" +msgstr "탭하여 편집하세요" + +msgid "Click to go back" +msgstr "뒤로 가기 위해 클릭하세요" + +msgid "Click to go forward" +msgstr "이전으로 가기 위해 클릭하세요" + +msgid "Minimize" +msgstr "최소화" + +msgid "Maximize" +msgstr "최대화" + +msgid "Placeholder not editable" +msgstr "플레이스홀더를 수정할 수 없습니다" + +msgid "Drop a plugin here" +msgstr "여기에 플러그인을 드롭하세요" + +msgid "Welcome to your new django CMS installation!" +msgstr "새로운 django CMS 설치를 환영합니다!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "%(cms_version)s 버전" + +msgid "Let’s build something great together!" +msgstr "우리 함께 멋진 것을 만들어 봅시다!" + +msgid "Please log in" +msgstr "로그인해 주세요" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" 첫 페이지를추가하세요 \n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

후원 지

\n" +"

\n" +" 여러분의 후원은 주로\n" +" django CMS 펠로우십 프로그램을 통해 제품 개발에 직접적인 도움이 됩니다!\n" +"

\n" +"

\n" +" 개인 또는 소속 기관에서 간편하게 후원하실 수 있는 방법은 다음과 같습니다.\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

함께하세요

\n" +"

\n" +" django CMS 협회는 django CMS 개발에 자금을 지원하고 방향을 제시하는 비영리 단체입니다.\n" +"

\n" +"

\n" +" 당신은 개인 또는 단체로 참여할 수 있습니다..\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

기여

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "설치 참고 사항" + +msgid "Support" +msgstr "지원" + +msgid "Documentation" +msgstr "문서화" + +msgid "User guide" +msgstr "사용자 가이드" + +msgid "Give back" +msgstr "돌려주기" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

상단에 Django CMS 로고가 보이지 않으면\n" +" static/cms 폴더를 당신의 정적 폴더에 연결했는지 확인하세요.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

이 메시지가 표시되는 이유는\n" +" 당신의 Django 설정 파일이 DEBUG = True 로 설정되어 있고\n" +" 아직 페이지를 추가하지 않았기 때문입니다.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "django CMS에 오신 것을 환영합니다" + +msgid "Add Another" +msgstr "다른 항목을 추가하세요" + +msgid "Back" +msgstr "돌아가기" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "다음 단계로 진행하려면 아래 옵션 중 하나를 선택하십시오." + +msgid "Next" +msgstr "다음" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "알 수 없음" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "%(domain)s 에서 페이지가 발견되지 않음" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"템플릿 태그가 조회 인수 `%(page_lookup)s` 를 사용하여 페이지를 찾을 수 없습니다.\n" +"요청 URL은 다음과 같습니다: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "두 개의 열" + +msgid "Three columns" +msgstr "세 개의 열" + +msgid "username" +msgstr "사용자 이름" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "필수 입력 사항입니다. 300자 이내로 작성해야 합니다. 문자, 숫자 및 @/./+/-/_ 문자를 사용할 수 있습니다." + +msgid "Enter a valid username." +msgstr "유효한 사용자 이름을 입력하세요." + +msgid "email address" +msgstr "이메일 주소" + +msgid "staff status" +msgstr "직원 현황" + +msgid "Designates whether the user can log into this admin site." +msgstr "사용자가 이 관리자 사이트에 로그인할 수 있는지 여부를 지정합니다." + +msgid "active" +msgstr "동작 중" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "이 사용자를 활성 상태로 유지할지 여부를 지정합니다. 계정을 삭제하는 대신 이 옵션을 선택 해제하십시오." + +msgid "users" +msgstr "사용자들" + +msgid "Title Extension" +msgstr "타이틀 확장" + +msgid "Page Extension" +msgstr "페이지 확장" + +msgid "object ID" +msgstr "객체 ID" + +msgid "Example1 App" +msgstr "Example1 App" + +msgid "MultilingualExample1 App" +msgstr "MultilingualExample1 App" + +msgid "Example1" +msgstr "Example1" + +msgid "Examples" +msgstr "예제들" + +msgid "Extra Context" +msgstr "부가 정보" + +msgid "Articles" +msgstr "조항들" + +msgid "Sample App" +msgstr "샘플 앱" + +msgid "Sample App with config" +msgstr "설정이 포함된 샘플 앱" + +msgid "Sample App with excluded permissions" +msgstr "권한이 제외된 샘플 앱" + +msgid "Sample App 2" +msgstr "샘플 앱 2" + +msgid "Sample App 3" +msgstr "Sample App 3" + +msgid "Sample App Without Landing Page" +msgstr "랜딩 페이지가 없는 샘플 앱" + +msgid "Namespaced App" +msgstr "네임스페이스 앱" + +msgid "Parent app" +msgstr "상위 앱" + +msgid "Child app" +msgstr "하위 앱" + +msgid "Variable urls-menus App" +msgstr "가변 URL 메뉴 앱" + +msgid "sample root page" +msgstr "샘플 루트 페이지" + +msgid "sample settings page" +msgstr "샘플 설정 페이지" + +msgid "sample account page" +msgstr "샘플 계정 페이지" + +msgid "sample my profile page" +msgstr "내 프로필 페이지 샘플" + +msgid "Static Menu" +msgstr "정적 메뉴" + +msgid "Static Menu2" +msgstr "정적 메뉴2" + +msgid "Static Menu3" +msgstr "정적 메뉴3" + +msgid "Static Menu4" +msgstr "Static Menu4" + +msgid "Category" +msgstr "카테고리" + +msgid "Categories" +msgstr "카테고리들" + +msgid "Add Category" +msgstr "카테고리 추가" + +msgid "^account/$" +msgstr "^계정/$" + +msgid "Change Category" +msgstr "카테고리 변경" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "오늘 저희 웹사이트를 방문해 주셔서 감사합니다." + +msgid "Inherit the template of the nearest ancestor" +msgstr "가장 가까운 상위의 템플릿을 상속합니다." + +msgid "UserSettings" +msgstr "사용자 설정" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "플레이스홀더 \"%(placeholder_label)s\"에 플러그인 추가" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "%(plugin_name)s에 플러그인 추가" + +msgid "Single placeholder" +msgstr "단일 플레이스홀더" + +msgid "CMS - your user account was created." +msgstr "CMS - 사용자 계정이 생성되었습니다." + +msgid "CMS - your user account was changed." +msgstr "CMS - 사용자 계정이 수정되었습니다." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "이 플레이스홀더는 이미 최대 플러그인 수(%s)를 가지고 있습니다." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "이 플레이스홀더는 이미 허용된 %(plugin_name)s 플러그인의 최대 개수(%(limit)s)를 가지고 있습니다." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "지정된 CMS_REQUEST_IP_RESOLVER 모듈을 찾을 수 없습니다: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "지정된 CMS_REQUEST_IP_RESOLVER 함수 \"{0}\"를 모듈 \"{1}\"에서 찾을 수 없습니다." + +#, python-format +msgid "Create a new %s instance." +msgstr "새 %s 인스턴스를 생성합니다." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "해당 모델에 대해 이미 마법사가 등록되었습니다: %s" diff --git a/cms/locale/ko/LC_MESSAGES/djangojs.po b/cms/locale/ko/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..a061d70b --- /dev/null +++ b/cms/locale/ko/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Korean (http://app.transifex.com/divio/django-cms/language/ko/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/ko_KR/LC_MESSAGES/django.po b/cms/locale/ko_KR/LC_MESSAGES/django.po new file mode 100644 index 00000000..59c263cb --- /dev/null +++ b/cms/locale/ko_KR/LC_MESSAGES/django.po @@ -0,0 +1,1635 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# daeyong , 2025 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Korean (Korea) (https://app.transifex.com/divio/teams/58664/ko_KR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko_KR\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "All" +msgstr "모두" + +msgid "Copy permissions" +msgstr "권한 복사" + +msgid "Slug" +msgstr "슬러그" + +msgid "The part of the title that is used in the URL" +msgstr "URL 에서 사용되는 제목의 일부분" + +msgid "Page type" +msgstr "페이지 종류" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "페이지 종류들" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "URL을 덮어 씀" + +msgid "Keep this field empty if standard path should be used." +msgstr "기본 경로가 사용되면 이 항목을 비워 둠" + +msgid "Start typing..." +msgstr "타이핑 시작..." + +msgid "menu visibility" +msgstr "메뉴 가시성" + +msgid "limit when this page is visible in the menu" +msgstr "페이지가 메뉴에서 보여질 때만 제한 함" + +msgid "X Frame Options" +msgstr "X Frame 옵션" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "어플리케이션" + +msgid "Hook application to this page." +msgstr "이 페이지에 어플리케이션을 연결" + +msgid "Application configurations" +msgstr "응용프로그램 설정" + +msgid "A page with this reverse URL id exists already." +msgstr "이 URL id 가 이미 존재하는 페이지" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "이 설정을 사용하는 응용 프로그램이 이미 존재합니다." + +msgid "An application instance with this name already exists." +msgstr "이 이름을 가진 응용 프로그램이 이미 존재 합니다. " + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "사용자" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "추가" + +msgid "Change" +msgstr "수정" + +msgid "Delete" +msgstr "삭제" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "지원 가능한 언어로 설정되어야 합니다!" + +msgid "Parent plugin language must be same as language!" +msgstr "부모 플러그인 언어가 언어와 같아야 합니다." + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "고급 설정" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "프라이머리 키 %(key)r 를 가진 %(name)s 가 존재하지 않음." + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "에러! 이 페이지를 이동 할 수있는 권한이 없습니다.페이지를 다시로드하십시오" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "이 페이지를 수정할 권한이 없습니다" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "페이지 복사본 추가" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "데이터베이스 오류" + +msgid "Template not valid" +msgstr "템플릿이 잘못 됨" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "템플릿이 잘 바뀌었습니다." + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "플러그인을 복사할 권한이 없습니다" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "%(language)s 언어의 제목과 플러그인은 삭제 되었음" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "없음" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "보기 제한" + +msgid "View restrictions" +msgstr "보기 제한" + +#, python-format +msgid "Field %s not found" +msgstr "필드 %s를 찾지 못했습니다" + +msgid "You do not have permission to edit this item" +msgstr "이 페이지를 수정할 권한이 없습니다" + +msgid "You do not have permission to add a plugin" +msgstr "플러그인을 추가할 권한이 없습니다" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "플러그인을 찾지 못했습니다" + +msgid "You do not have permission to edit this plugin" +msgstr "이 플러그인을 수정할 권한이 없습니다" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "이 플러그인을 이동 할 권한이 없습니다" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "이 플러그인을 삭제 할 권한이 없습니다" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr " %(name)s 플러그인 \"%(obj)s\" 이 잘 삭제되었습니다." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "%(name)s 을 삭제할 수 없습니다." + +msgid "Are you sure?" +msgstr "확실 합니까 ?" + +msgid "You do not have permission to clear this placeholder" +msgstr "이 영역을 삭제할 권한이 없습니다" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "\"%(obj)s 영역이 잘 삭제되었습니다." + +msgid "placeholder" +msgstr "영역" + +msgid "Page permissions" +msgstr "페이지 권한" + +msgid "User & Group permissions" +msgstr "사용자 & 그룹 권한" + +msgid "Page permissions management" +msgstr "페이지 권한 관리" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "영역" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "수정" + +msgid "Structure" +msgstr "구조" + +msgid "Content" +msgstr "내용" + +msgid "Sites" +msgstr "사이트들" + +msgid "Admin Sites" +msgstr "관리 사이트" + +msgid "Administration" +msgstr "관리" + +msgid "User settings" +msgstr "사용자 설정" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "툴바 비활성화" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "사용자" + +#, python-format +msgid "Logout %s" +msgstr "로그아웃 %s" + +msgid "Logout" +msgstr "로그아웃" + +msgid "Language" +msgstr "언어" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "페이지" + +msgid "Page" +msgstr "페이지" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "새 페이지" + +msgid "New Sub Page" +msgstr "새 아래 페이지" + +msgid "Duplicate this Page" +msgstr "이 페이지 복제" + +msgid "Page settings" +msgstr "페이지 설정" + +msgid "Advanced settings" +msgstr "고급 설정" + +msgid "Templates" +msgstr "템플릿" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "탐색중에 숨김" + +msgid "Display in navigation" +msgstr "탐색중에 표시" + +msgid "Delete page" +msgstr "삭제 요청" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "유효한 사이트를 선택하세요" + +msgid "Select a valid page" +msgstr "유효한 페이지를 선택하세요" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "위치" + +msgid "language" +msgstr "언어" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "만든 날짜" + +msgid "can edit" +msgstr "수정 가능" + +msgid "can add" +msgstr "수정 가능" + +msgid "can delete" +msgstr "삭제 가능" + +msgid "can change advanced settings" +msgstr "고급 설정 변경 가능" + +msgid "can publish" +msgstr "게시 가능" + +msgid "can change permissions" +msgstr "권한 수정 가능" + +msgid "can move" +msgstr "이동 가능" + +msgid "view restricted" +msgstr "제한된 보기" + +msgid "can recover pages" +msgstr "페이지 복구 가능" + +msgid "group" +msgstr "그룹" + +msgid "sites" +msgstr "사이트들" + +msgid "created by" +msgstr "만든 이" + +msgid "changed by" +msgstr "수정한 이" + +msgid "publication date" +msgstr "발행 날짜" + +msgid "publication end date" +msgstr "발행 마지막 날짜" + +msgid "in navigation" +msgstr "탐색중" + +msgid "soft root" +msgstr "soft root" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "첨부된 메뉴" + +msgid "template" +msgstr "템플릿" + +msgid "login required" +msgstr "로그인이 필요함" + +msgid "application" +msgstr "어플리케이션" + +msgid "application instance name" +msgstr "응용 프로그램 이름" + +msgid "site" +msgstr "사이트" + +msgid "Grant on" +msgstr "허가" + +msgid "page" +msgstr "페이지" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "로그인한 사용자만" + +msgid "for anonymous users only" +msgstr "모르는 사용자만" + +msgid "Inherit from parent page" +msgstr "부모 페이지에서 상속" + +msgid "Deny" +msgstr "거부" + +msgid "Only this website" +msgstr "오직 이 웹사이트만" + +msgid "Allow" +msgstr "허가" + +msgid "title" +msgstr "제목" + +msgid "The default title" +msgstr "기본 제목" + +msgid "Page Title" +msgstr "페이지 제목" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "브라우져 창이나 북마크에 표시되는 것을 덮어 씀" + +msgid "Menu Title" +msgstr "메뉴 제목" + +msgid "Overwrite what is displayed in the menu" +msgstr "메뉴에 표시되는 것을 덮어 씀" + +msgid "Description meta tag" +msgstr "메타 태그 설명" + +msgid "A description of the page used by search engines." +msgstr "검색 엔진에 의해 사용되는 쉼표로 구분 된 키워드 목록입니다." + +msgid "redirect" +msgstr "리다이렉트" + +msgid "Redirects to this URL." +msgstr "이 URL 로 리다이렉트" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "모든 상위 항목은 탐색중에 표시되지 않음." + +msgid "The template used to render the content." +msgstr "콘텐츠를 렌더링하는 데 사용되는 템플릿" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "기본" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "이 페이지에 링크하는 page_url templatetag에 사용되는 고유 식별자" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "페이지" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "슬러그" + +msgid "Path" +msgstr "경로" + +msgid "Current page" +msgstr "현재 페이지" + +msgid "Page children (immediate)" +msgstr "자식 페이지(즉시)" + +msgid "Page and children (immediate)" +msgstr "페이지와 자식 페이지(즉시)" + +msgid "Page descendants" +msgstr "하위 페이지" + +msgid "Page and descendants" +msgstr "페이지와 하위 페이지" + +msgid "on page level" +msgstr "페이지 레벨에서" + +msgid "frontend view restriction" +msgstr "앞단 보기 제한" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "지워진 페이지 복구 가능" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "아무것도 선택하지 않으면, 사용자는 모든 사이트에 부여 된 권한을 가짐" + +msgid "Page global permission" +msgstr "전체적인 페이지 권한" + +msgid "Pages global permissions" +msgstr "전체적인 페이지 권한" + +msgid "Page permission" +msgstr "페이지 권한" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "페이지 추가 권한은 하위 페이지에 대한 접근을 요구함, 그렇지 않으면 추가된 페이지는 만든이가 바꿀 수 없음." + +msgid "User (page)" +msgstr "사용자 (페이지)" + +msgid "Users (page)" +msgstr "사용자들 (페이지)" + +msgid "User group (page)" +msgstr "사용자 그룹 (페이지)" + +msgid "User groups (page)" +msgstr "사용자 그룹 (페이지)" + +msgid "slot" +msgstr "항목" + +msgid "width" +msgstr "넓이" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "관리 인터페이스 및 툴바의 언어" + +msgid "user setting" +msgstr "사용자 설정" + +msgid "user settings" +msgstr "사용자 설정" + +msgid "by template" +msgstr "템플릿에 의한" + +msgid "by code" +msgstr "코드에 의한" + +msgid "static placeholder name" +msgstr "정적 영역 이름" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "설명이 잘된 이름은 이 정적 영역을 식별합니다. 사용자에게 표시되지 않습니다." + +msgid "placeholder code" +msgstr "영역 코드" + +msgid "To render the static placeholder in templates." +msgstr "템플리트에 있는 정적 영역을 렌더링" + +msgid "placeholder content" +msgstr "영역 내용" + +msgid "creation_method" +msgstr "creation_method" + +msgid "static placeholder" +msgstr "정적 영역" + +msgid "static placeholders" +msgstr "정적 영역들" + +msgid "A static placeholder with the same site and code already exists" +msgstr "같은 사이트와 코드의 정적 영역이 이미 존재 합니다." + +msgid "Advanced options" +msgstr "고급 옵션" + +msgid "Generic" +msgstr "일반적인" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "더 이상 이 플러그인을 위한 설정이 없습니다. 저장하기를 누르세요" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "저장" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "관리자로 로그인 함 여기." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "로그인 주소: %(login_url)s" + +msgid "Username:" +msgstr "사용자" + +msgid "Password:" +msgstr "비밀번호" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "페이지 수정" + +msgid "Home" +msgstr "홈" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "아래 오류를 수정하세요." + +msgid "All permissions" +msgstr "모든 권한" + +msgid "Loading..." +msgstr "로딩중..." + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "사용자" + +msgid "Group" +msgstr "그룹" + +msgid "Can edit" +msgstr "수정 가능" + +msgid "Can add" +msgstr "수정 가능" + +msgid "Can delete" +msgstr "삭제 가능" + +msgid "Can publish" +msgstr "게시 가능" + +msgid "Can change permissions" +msgstr "권한 수정 가능" + +msgid "Can move" +msgstr "이동 가능" + +msgid "Can view" +msgstr "보기 가능" + +msgid "(global)" +msgstr "(전역)" + +msgid "(current)" +msgstr "(현재)" + +msgid "Page doesn't inherit any permissions." +msgstr "페이지가 사용 권한을 상속하지 않습니다." + +msgid "Edit model" +msgstr "모델 수정" + +msgid "Save as new" +msgstr "새이름으로 저장" + +msgid "Save and add another" +msgstr "저장 후 추가" + +msgid "Copy" +msgstr "복사" + +msgid "Cut" +msgstr "잘라내기" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "제한된" + +msgid "last change by" +msgstr "마지막 변경" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "페이지 항목" + +msgid "Search" +msgstr "검색" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "잘 옮겨짐" + +msgid "Changes within the tree might require a refresh." +msgstr "트리에 있는 변화들은 새로 고침이 필요로 합니다." + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "이 페이지를 § 하기 원하십니까 ?" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "메뉴" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "옵션 복사" + +msgid "Choose copy options" +msgstr "옵션 복사를 선택" + +msgid "Close" +msgstr "종료" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Application: %(apphook)s" + +msgid "in menu" +msgstr "메뉴에서" + +msgid "not in menu" +msgstr "메뉴에 없습니다" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "권한" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "이 페이지는 미리보기가 없습니다!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "리다이렉트됨:" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "모두 복사" + +msgid "Copy from" +msgstr "복사" + +msgid "Empty all" +msgstr "모두 비우기" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "사용가능한 플러그인" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "취소" + +msgid "The following error occurred:" +msgstr "아래 에러 발생:" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "이 플러그 인을 지우시겠습니까 ?" + +msgid "Are you sure you want to publish this page?" +msgstr "이 페이지를 발행하기 원하십니까 ?" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "로그인 실패. 비밀번호를 확인후에 다시 시도하세요." + +msgid "Double-click to edit" +msgstr "더블클릭으로 수정하기" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "여기에 플러그인을 놓기" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "계속 추가" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "%(domain)s 에서 페이지가 발견되지 않음" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"'%(page_lookup)s' 로 페이지를 찾을 수 없습니다. .요구한 URL: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "두 줄" + +msgid "Three columns" +msgstr "세 줄" + +msgid "username" +msgstr "사용자" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "300 자보다 적은 글자나 숫자를 넣으세요." + +msgid "Enter a valid username." +msgstr "적합한 사용자이름을 입력하시오." + +msgid "email address" +msgstr "이메일 주소" + +msgid "staff status" +msgstr "스탭 상태" + +msgid "Designates whether the user can log into this admin site." +msgstr "유저가 이 관리 사이트에 들어올 수 있는지를 나타내는." + +msgid "active" +msgstr "동작중" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"이 사용자가 현재 활성상태인지를 나타낸다.\n" +"계정을 제거하지말고 이것을 선택해제하면 비활성된다." + +msgid "users" +msgstr "사용자" + +msgid "Title Extension" +msgstr "타이틀 확장" + +msgid "Page Extension" +msgstr "페이지 확장" + +msgid "object ID" +msgstr "오브젝트 아이디" + +msgid "Example1 App" +msgstr "Example1 앱" + +msgid "MultilingualExample1 App" +msgstr "MultilingualExample1 App" + +msgid "Example1" +msgstr "Example1" + +msgid "Examples" +msgstr "예제들" + +msgid "Extra Context" +msgstr "추가 항목" + +msgid "Articles" +msgstr "기사" + +msgid "Sample App" +msgstr "같은 어플리케이션" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "권한이 제거된 Sample App" + +msgid "Sample App 2" +msgstr "예제 어플리케이션 2" + +msgid "Sample App 3" +msgstr "예제 어플리케이션 2" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "같은 이름 공간의 어플리케이션" + +msgid "Parent app" +msgstr "부모 앱" + +msgid "Child app" +msgstr "자식 앱" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "같은 시작 페이지" + +msgid "sample settings page" +msgstr "같은 설정 페이지" + +msgid "sample account page" +msgstr "같은 계정 페이지" + +msgid "sample my profile page" +msgstr "같은 내 프로파일 페이지" + +msgid "Static Menu" +msgstr "정적 메뉴" + +msgid "Static Menu2" +msgstr "정적 메뉴2" + +msgid "Static Menu3" +msgstr "정적 메뉴3" + +msgid "Static Menu4" +msgstr "정적 메뉴" + +msgid "Category" +msgstr "카테고리" + +msgid "Categories" +msgstr "카테고리" + +msgid "Add Category" +msgstr "카테고리 추가" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "카테고리 수정" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "오늘 이 웹사이트를 방문에 주셔서 감사합니다." + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "CMS - 사용자가 만들어졌습니다." + +msgid "CMS - your user account was changed." +msgstr "CMS - 사용자가 수정되었습니다." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "이 영역은 이미 플러그인의 최대 수 (%s)를 가지고 있음." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "이 영역은 이미 %(plugin_name)s 플러그인의 최대 수 (%(limit)s) 가 있습니다." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/ko_KR/LC_MESSAGES/djangojs.po b/cms/locale/ko_KR/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..8d09440b --- /dev/null +++ b/cms/locale/ko_KR/LC_MESSAGES/djangojs.po @@ -0,0 +1,24 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# daeyong , 2013 +# daeyong , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: daeyong , 2013\n" +"Language-Team: Korean (Korea) (http://app.transifex.com/divio/django-cms/language/ko_KR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko_KR\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "첫 페이지를 저장하지 않고 탭을 변경 하시겠습니까?" diff --git a/cms/locale/ku_IQ/LC_MESSAGES/django.po b/cms/locale/ku_IQ/LC_MESSAGES/django.po new file mode 100644 index 00000000..ae35478d --- /dev/null +++ b/cms/locale/ku_IQ/LC_MESSAGES/django.po @@ -0,0 +1,1640 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2022 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2022\n" +"Language-Team: Kurdish (Iraq) (https://app.transifex.com/divio/teams/58664/ku_IQ/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ku_IQ\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "هەموو" + +msgid "Copy permissions" +msgstr "مؤڵەتی لەبەرگرتنەوە" + +msgid "Slug" +msgstr " بەستەر" + +msgid "The part of the title that is used in the URL" +msgstr "ئەو بەشەی ناونیشان کە لە بەستەردا بەکاردێت" + +msgid "Page type" +msgstr "" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "ئەدرەسی نووسین" + +msgid "Keep this field empty if standard path should be used." +msgstr "ئەم خانەیە بە بەتاڵی جێبهێڵە گەر پێویستە ڕێرەوی ئاسایی بەکاربێت " + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "دەرکەوتنی پێڕست" + +msgid "limit when this page is visible in the menu" +msgstr "سنووردارکردن لە کاتێکا ئەم پەرەیە دەرکەوتبێت لە پێڕستدا" + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "بەرنامە" + +msgid "Hook application to this page." +msgstr "بەستەری بەرنامە بۆ ئەم پەڕەیە" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "پەڕەیەک بە هەمان ناسەرەوەی ئەدرەس بوونی هەیە" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "بەکارهێنەر" + +msgid "can_view" +msgstr "توانای پشاندان" + +msgid "Add" +msgstr "زیادکردن" + +msgid "Change" +msgstr "گۆڕین" + +msgid "Delete" +msgstr "سڕینەوە" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "زمان پیویستە بگۆڕدرەت بۆ زمانەکی پشتیگری کراو" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "ڕێکخستنە پێشکەوتووەکان" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s object with primary key %(key)r does not exist." + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "هەڵە لە بنکەی زانیاری" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "سڕدرانەوە %(language)s ناونیسان و پێوەکراوەکانی زمان" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "پیشاندانی سنوورەکان" + +msgid "View restrictions" +msgstr "پیشاندانی سنوورەکان" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "دڵنیایت؟" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "مؤڵەتەکانی پەڕە" + +msgid "User & Group permissions" +msgstr "مؤڵەتەکانی بەکارهێنەرو کۆمەڵە" + +msgid "Page permissions management" +msgstr "بەڕێوەبەرایەتی مۆڵەتەکانی پەڕە " + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "پێشبینین" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "چوونە دەرەوە" + +msgid "Language" +msgstr "زمان" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "پەڕە" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "داواکاری سڕینەوە" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "مالپەرێکی شیاو دەستنیشان بکە" + +msgid "Select a valid page" +msgstr "پەرەیەکی شیاو دەسنیشان بکە" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "شوێن" + +msgid "language" +msgstr "زمان" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "رۆژی دروستکردن" + +msgid "can edit" +msgstr "توانای دەستکاری بکرێت" + +msgid "can add" +msgstr "ئەتوانرێت زیاد بکرێت" + +msgid "can delete" +msgstr "ئەتوانرێت بسڕدرێتەوە" + +msgid "can change advanced settings" +msgstr "ئەتوانرێت گۆڕانکاری لە " + +msgid "can publish" +msgstr "توانای بڵاوکردنەوە" + +msgid "can change permissions" +msgstr "توانای گۆڕینی مؤڵەتەکان" + +msgid "can move" +msgstr "توانای گواستنەوە" + +msgid "view restricted" +msgstr "پیشاندانی سنوورەکان" + +msgid "can recover pages" +msgstr "توانای بەدەست ستنەوەی پەڕە" + +msgid "group" +msgstr "کۆمەڵە" + +msgid "sites" +msgstr "شوێنەکان" + +msgid "created by" +msgstr "دروستکراوە لەلایەن" + +msgid "changed by" +msgstr "گۆڕدراوە لەلایەن" + +msgid "publication date" +msgstr "ڕۆژی بڵاوکردنەوە" + +msgid "publication end date" +msgstr "دواڕۆژی بڵاوکردنەوە" + +msgid "in navigation" +msgstr "لە وێبگەڕدایە" + +msgid "soft root" +msgstr "ڕەگ" + +msgid "id" +msgstr "ناسەرەوە" + +msgid "attached menu" +msgstr "پێڕستی هاوپێچکراو" + +msgid "template" +msgstr "قاڵب" + +msgid "login required" +msgstr "چوونە ژوورەوەی پێویستە" + +msgid "application" +msgstr "بەرنامە" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "ماڵپەر" + +msgid "Grant on" +msgstr "پێبەخشراوە لە" + +msgid "page" +msgstr "پەڕە" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "تەنها بۆ بەکارهێنەرە هاتووە ژوورەکانە " + +msgid "for anonymous users only" +msgstr "تەنها بۆ بەکارهێنەرە نە ناسراوەکانە" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "ناونیشان" + +msgid "The default title" +msgstr "ناونیشانی بەردەوام" + +msgid "Page Title" +msgstr "ناونیشانی پەڕە" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "ئەو نووسینانەی پیشان ئەدرێن لە بەشی سەرەوەی پەڕە یا لە نیشانەکاندا" + +msgid "Menu Title" +msgstr "ناونیشانی پێڕست" + +msgid "Overwrite what is displayed in the menu" +msgstr "ئەو نووسینانەی پیشان ئەدرێن لە پێڕست" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" +"خشتەی ئەو کۆمایەنەی کا کلیلە ووشەکان لەیەکتر جیا دەکاتەوە - هەندێک جار لە " +"لایەن بزوێنەری گەڕانەوە بەکاردێت - " + +msgid "redirect" +msgstr "ئاڕاستەکردن" + +msgid "Redirects to this URL." +msgstr "ئارەستەکردن بۆ ئەم ئەدرەسە" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "هەموو پێشینەکان پیشان نادرێن لە ڕێنیشاندەری وێبگەڕەکەدا" + +msgid "The template used to render the content." +msgstr "ئەو قاڵبەی بەکاردێت بۆ نەخشاندنی ناوەڕۆک " + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "بنەڕەت" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "پەڕەکان" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "بەستەر" + +msgid "Path" +msgstr "ڕێڕەو" + +msgid "Current page" +msgstr "پەڕەی هەنووکەیی" + +msgid "Page children (immediate)" +msgstr "(immediate)پەڕە نەوەکان" + +msgid "Page and children (immediate)" +msgstr "پەڕەو نەوەکان" + +msgid "Page descendants" +msgstr "لقەکانی پەرە" + +msgid "Page and descendants" +msgstr "پەڕە و لقەکان" + +msgid "on page level" +msgstr "لە ئاستی پەڕە" + +msgid "frontend view restriction" +msgstr "پیساندانی بەشی پێشەوەی سنوورەکان" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "توانای بەدەست خستنەوەی هەر پەڕەیەکئ سڕدراوە" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"ئەگەر هیچ هەڵبژاردنەک دیاری نەکردوە ،بەکارهێنەر مؤڵەتی هەموو شوێنەکانی پێ " +"بەخشراوە" + +msgid "Page global permission" +msgstr "مؤڵەتی گشتی پەڕە " + +msgid "Pages global permissions" +msgstr "مؤڵەتی گشتی پەڕەکان " + +msgid "Page permission" +msgstr "مؤڵەتی پەڕە" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"زیادکردنی مۆڵەت بۆ پەڕە پێویستی بە گەشتن بە لقەکان هەیە بە پێچەوانەوە پەڕەی " +"زیادکراو ناگۆڕدرێت لە لایەن دروستەکەرەکەیەوە" + +msgid "User (page)" +msgstr "بەکارهێنەر(پەڕ)ە" + +msgid "Users (page)" +msgstr "بەکارهێنەران(پەڕ)ە" + +msgid "User group (page)" +msgstr "کۆمەڵەی بەکارهێنەر(پەڕ)ە" + +msgid "User groups (page)" +msgstr "کۆمەڵەکانی بەکارهێنەر(پەڕ)ە" + +msgid "slot" +msgstr "قلیش" + +msgid "width" +msgstr "پانی" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "<بەتاڵ>" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "هەڵبژاردنە پێشکەوتووەکان" + +msgid "Generic" +msgstr "گشتی" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "پاشەکەوتکردن" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "لێرەچوونەژوورەوە بۆ بەڕێوەبردن" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "ناوی بەکارهێنەر" + +msgid "Password:" +msgstr "تێپەرە ووشە" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "گۆڕینی پەڕە" + +msgid "Home" +msgstr "سەرەتا" + +msgid "View on site" +msgstr "پیشاندان لە ماڵپەر" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Please correct the errors below." +msgstr[1] "Please correct the errors below." + +msgid "All permissions" +msgstr "هەموو مؤڵەتەکان" + +msgid "Loading..." +msgstr "ئامادەکردن..." + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "بەکارهێنەر" + +msgid "Group" +msgstr "کۆمەلە" + +msgid "Can edit" +msgstr "توانای دەستکاری کردن" + +msgid "Can add" +msgstr "توانای زیادکردن" + +msgid "Can delete" +msgstr "توانای سرینەوە" + +msgid "Can publish" +msgstr "توانای بڵاوکردنەوە" + +msgid "Can change permissions" +msgstr "توانای گؤڕینی مۆڵەت" + +msgid "Can move" +msgstr "توانای گواستنەوە" + +msgid "Can view" +msgstr "توانای پیشاندان" + +msgid "(global)" +msgstr "(گشتگیر)" + +msgid "(current)" +msgstr "(هەنووکە)" + +msgid "Page doesn't inherit any permissions." +msgstr "پەڕگە هیچ مۆڵەتێکی بە میرات وەرنەگرتووە" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "پاشەکەوتکردن وەک بەشێکی نوێ" + +msgid "Save and add another" +msgstr "پاسەکەوتکردن و زیادکردنی یەکێکی تر" + +msgid "Copy" +msgstr "لەبەرگرتنەوە" + +msgid "Cut" +msgstr "بڕین" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "لیستی پەرەکان" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "بە سەرکەوتووی گواسترایەوە" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +"
Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "هەڵبژاردنەکانی لەبەرگرتنەوە" + +msgid "Choose copy options" +msgstr "هەڵبژاردنەکانی لەبەرگرتنەوە دەستنیشان بکە" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "پێوەکراوا بەردەستەکان" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "چوونە ژوورەوە" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "پاشگەزبوونەوە" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "دڵنیایت لە سڕینەوەی ئەم پێوەکراوە؟" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "زیادکردنی یەکێکی تر" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr " %(domain)s پەرە نە دۆزرایەوە لە " + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "ئەدرەسی پۆستی ئەلیکترۆنی" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "بە میرات وەرگرتن لە نزیکترین باوان" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "هەژماری بەکارهێنەرەکەت دروستکرا " + +msgid "CMS - your user account was changed." +msgstr "هەژماری بەکارهێنەرەکەت گۆڕدرا" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/ku_IQ/LC_MESSAGES/djangojs.po b/cms/locale/ku_IQ/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..04aed585 --- /dev/null +++ b/cms/locale/ku_IQ/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Kurdish (Iraq) (http://app.transifex.com/divio/django-cms/language/ku_IQ/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ku_IQ\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/ky/LC_MESSAGES/django.po b/cms/locale/ky/LC_MESSAGES/django.po new file mode 100644 index 00000000..ff73f014 --- /dev/null +++ b/cms/locale/ky/LC_MESSAGES/django.po @@ -0,0 +1,1634 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2022 +# Soyuzbek orozbek uulu , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Soyuzbek orozbek uulu , 2026\n" +"Language-Team: Kyrgyz (https://app.transifex.com/divio/teams/58664/ky/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ky\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "All" +msgstr "Баары" + +msgid "Copy permissions" +msgstr "Жеткилерди көчүрүү" + +msgid "Slug" +msgstr "Слаг" + +msgid "The part of the title that is used in the URL" +msgstr "Баштыктын бир бөлүгү УРЛ да колдонулат" + +msgid "Page type" +msgstr "Барак тиби" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Барак типтери" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Урл ду кайрадан жазуу" + +msgid "Keep this field empty if standard path should be used." +msgstr "стандарт жол колдонулуп атса бул талааны бош кармаңыз." + +msgid "Start typing..." +msgstr "Тере баштаңыз..." + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "X Frame параметрлери" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "Колдонмо" + +msgid "Hook application to this page." +msgstr "Колдомону бул баракка илүү." + +msgid "Application configurations" +msgstr "Колдонмо тууралоосу" + +msgid "A page with this reverse URL id exists already." +msgstr "Бул тескери УРЛдун ID боюнча барак мурдатан эле бар." + +msgid "Invalid application config value" +msgstr "Туура эмес колдонмо конфиг мааниси" + +msgid "An application instance using this configuration already exists." +msgstr "Бул конфиг менен колдонмо мурдатан эле бар." + +msgid "An application instance with this name already exists." +msgstr "Бул ат менен колдонмо мурдатан эле бар." + +msgid "You can't move the home page inside another page" +msgstr "Сиз башкы бетти башка барактын ичине жылдыра албайсыз" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "Ооба" + +msgid "No" +msgstr "Жок" + +msgid "user" +msgstr "колдонуучу" + +msgid "can_view" +msgstr "көрө_алат" + +msgid "Add" +msgstr "Кошуу" + +msgid "Change" +msgstr "Өзгөртүү" + +msgid "Delete" +msgstr "Өчүрүү" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Колдонуучулар өзгөртүү жеткиси жок болсо барактады кошо албайт. Керектүү " +"жеткилерди кошуңуз." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "Тил" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "" + +msgid "The default title" +msgstr "Орнотулган баштык" + +msgid "Page Title" +msgstr "Барак баштыгы" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "броузердин жогорусунда көрүнгөндү же бетбелгини кайрадан жазып салат." + +msgid "Menu Title" +msgstr "Меню баштыгы" + +msgid "Overwrite what is displayed in the menu" +msgstr "Менюда эмне көрсөтүлөрүн кайрадан жазыңыз" + +msgid "Description meta tag" +msgstr "Ачыктоочу мета тег" + +msgid "A description of the page used by search engines." +msgstr "Издөө энжиндери колдонгон барактын ачыктоосу." + +msgid "redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "Бул УРЛга бурулат." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "эни" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/ky/LC_MESSAGES/djangojs.po b/cms/locale/ky/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..8bc56ff8 --- /dev/null +++ b/cms/locale/ky/LC_MESSAGES/djangojs.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Soyuzbek orozbek uulu , 2020 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Soyuzbek orozbek uulu , 2020\n" +"Language-Team: Kyrgyz (http://app.transifex.com/divio/django-cms/language/ky/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ky\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Сиз чындап эле баракты сактабай туруп жарлыктарды өзгөртүүнү каалап атасызбы?" diff --git a/cms/locale/lt/LC_MESSAGES/django.po b/cms/locale/lt/LC_MESSAGES/django.po new file mode 100644 index 00000000..9eab8694 --- /dev/null +++ b/cms/locale/lt/LC_MESSAGES/django.po @@ -0,0 +1,1765 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Matas Dailyda , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Lithuanian (https://app.transifex.com/divio/teams/58664/lt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n" + +msgid "All" +msgstr "Visi" + +msgid "Copy permissions" +msgstr "Kopijuoti teises" + +msgid "Slug" +msgstr "Nuoroda" + +msgid "The part of the title that is used in the URL" +msgstr "Pavadinimo dalis, kuri yra naudojama URL" + +msgid "Page type" +msgstr "Puslapio tipas" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Puslapio tipai" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Perrašyti URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Palikite šį lauką tuščią jeigu bus naudojamas standartinis kelias." + +msgid "Start typing..." +msgstr "Pradėkite rašyti..." + +msgid "menu visibility" +msgstr "meniu matomumas" + +msgid "limit when this page is visible in the menu" +msgstr "apriboti, kada šis puslapis yra matomas meniu" + +msgid "X Frame Options" +msgstr "X Frame nustatymai" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Ar šis puslapis gali būti įterptas į kitus puslapius ar svetaines." + +msgid "URL options" +msgstr "URL parinktys" + +msgid "Menu options" +msgstr "Meniu parinktys" + +msgid "Headers" +msgstr "Antraštės" + +msgid "Application" +msgstr "Aplikacija" + +msgid "Hook application to this page." +msgstr "Prikabinti aplikaciją šiam puslapiui." + +msgid "Application configurations" +msgstr "Aplikacijų nustatymai" + +msgid "A page with this reverse URL id exists already." +msgstr "Puslapis su tokia nuoroda jau egzistuoja." + +msgid "Invalid application config value" +msgstr "Netinkama aplikacijos konfigūracijos reikšmė" + +msgid "An application instance using this configuration already exists." +msgstr "Aplikacijos objektas naudojantis šiuos nustatymus jau egzistuoja." + +msgid "An application instance with this name already exists." +msgstr "Aplikacijos objektas su tokiu pavadinimu jau egzistuoja." + +msgid "You can't move the home page inside another page" +msgstr "Negalima įkelti pradinio puslapio į kitą puslapį" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Negali būti dviejų puslapių su ta pačia nuoroda tame pačiame puslapio " +"lygyje. Pakeiskite vieno iš puslapių nuorodą prieš bandydami perkelti dar " +"kartą." + +msgid "Yes" +msgstr "Taip" + +msgid "No" +msgstr "Ne" + +msgid "user" +msgstr "vartotojas" + +msgid "can_view" +msgstr "gali peržiūrėti" + +msgid "Add" +msgstr "Pridėti" + +msgid "Change" +msgstr "Pakeisti" + +msgid "Delete" +msgstr "Pašalinti" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Vartotojai negali sukurti puslapio be leidimų keisti sukurtą puslapį. " +"Reikalingi redagavimo leidimai." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Vartotojai negali ištrinti puslapio be leidimų keisti puslapį. Reikalingi " +"redagavimo leidimai." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Vartotojai negali nustatyti puslapio leidimų be leidimo keisti puslapį. " +"Reikalingas redagavimo leidimas." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Vartotojai negali ištrinti puslapio leidimų be leidimo keisti puslapį. " +"Reikalingas redagavimo leidimas." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Vartotojai negali sukurti puslapio leidimų be leidimo keisti sukurtus " +"leidimus. Reikalingas redagavimo leidimas." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Vartotojai negali ištrinti puslapio leidimų be leidimo keisti leidimus. " +"Reikalingas redagavimo leidimas." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Negalimas įskiepio tipas '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Kalba turi būti nustatyta į palaikomą kalbą!" + +msgid "Parent plugin language must be same as language!" +msgstr "Pradinio įskiepio kalba turi būti tokia pati!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" +"Pradinio įskiepo rezervuota vieta turi būti tokia pati kaip rezervuota " +"vieta!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Įskiepio pozicija turi būti didesnė nei %(position)d" + +msgid "Translations" +msgstr "Vertimai" + +msgid "Advanced Settings" +msgstr "Papildomi nustatymai" + +msgid "The page is not eligible to be home." +msgstr "Šis puslapis negali būti pradiniu puslapiu." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s objektas su pirminiu raktu %(key)r neegzistuoja." + +msgid "error" +msgstr "klaida" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "Klaida! Jūs neturite teisių perkelti šį puslapį. Perkraukite puslapį" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Klaida! Jūs neturite teisių kopijuoti šio puslapio." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Klaida! Puslapis kurį bandote įkopijuoti nėra išverstas jokiomis kalbomis " +"kurios sukonfigūruotos pasirinktame tinklalapyje." + +msgid "You do not have permission to edit this page" +msgstr "Jūs neturite teisės redaguoti šio puslapio" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(norėdami tai pakeisti, pirma nuimkite nuo publikavimo dabar publikuotą šio " +"puslapio versiją)" + +msgid "Add Translation" +msgstr "Pridėti vertimą" + +msgid "Add Page Copy" +msgstr "Pridėti puslapio kopiją" + +msgid "New sub page" +msgstr "Naujas vidinis puslapis" + +msgid "New page" +msgstr "Naujas puslapis" + +msgid "Database error" +msgstr "Duomenų bazės klaida" + +msgid "Template not valid" +msgstr "Blogas šablonas" + +msgid "Placeholder selection not valid" +msgstr "Netinkamas rezervuotos vietos pasirinkimas" + +msgid "The template was successfully changed" +msgstr "Šablonas buvo sėkmingai pakeistas" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Rezervuota vieta '%s' neegzistuoja paskirties kalboje" + +msgid "You do not have permission to copy these plugins." +msgstr "Jūs neturite teisių kopijuoti šių įskiepių" + +msgid "You do not have permission to delete this page" +msgstr "Jūs neturite teisės pašalinti šio puslapio" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Pavadinimas ir įskiepiai su %(language)s kalbomis buvo pašalinti" + +msgid "Public content" +msgstr "Viešas turinys" + +msgid "Empty" +msgstr "Valyti" + +msgid "Create Content" +msgstr "Sukurti turinį" + +msgid "View restriction" +msgstr "Peržiūrėjimo apribojimas" + +msgid "View restrictions" +msgstr "Peržiūrėjimo apribojimai" + +#, python-format +msgid "Field %s not found" +msgstr "Laukas %s nerastas" + +msgid "You do not have permission to edit this item" +msgstr "Jūs neturite teisės redaguoti šio objekto" + +msgid "You do not have permission to add a plugin" +msgstr "Jūs neturite teisės prideti įskiepį" + +msgid "You do not have permission to copy this placeholder." +msgstr "Jūs neturite teisės kopijuoti šios rezervuotos vietos" + +msgid "Plugin not found" +msgstr "Įskiepis nerastas" + +msgid "You do not have permission to edit this plugin" +msgstr "Jūs neturite teisės redaguoti šio įskiepio" + +msgid "You have no permission to paste this plugin" +msgstr "Jūs neturite teisės įkopijuoti šio įskiepio" + +msgid "You have no permission to paste this placeholder" +msgstr "Jūs neturite teisės įkopijuoti šios rezervuotos vietos" + +msgid "You have no permission to move this plugin" +msgstr "Jūs neturite teisės perkelti šio įskiepio" + +msgid "You have no permission to cut this plugin" +msgstr "Jūs neturite teisės iškirpti šio įskiepio" + +msgid "You do not have permission to delete this plugin" +msgstr "Jūs neturite teisės pašalinti šio įskiepio" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "Įskiepis %(name)s \"%(obj)s\" buvo sėkmingai pašalintas." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Negalima pašalinti %(name)s" + +msgid "Are you sure?" +msgstr "Ar jūs esate tikri?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Jūs neturite teisiės išvalyti šios rezervuotos vietos" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Rezervuota vieta \"%(obj)s\" buvo sėkmingai išvalyta." + +msgid "placeholder" +msgstr "rezervuota vieta" + +msgid "Page permissions" +msgstr "Puslapio teisės" + +msgid "User & Group permissions" +msgstr "Vartotojo ir grupės teisės" + +msgid "Page permissions management" +msgstr "Puslapio teisių valdymas" + +msgid "Actions" +msgstr "Veiksmai" + +msgid "Empty content" +msgstr "Tuščias turinys" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "%(object_name)s savybės" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Pridėti naują %(object_name)s" + +msgid "Add content" +msgstr "Pridėti turinį" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Dabartinės kalbos turinys buvo pakeistas. Spustelėkite \"Atšaukti\", kad " +"grįžtumėte į formą ir išsaugotumėte pakeitimus. Spustelėkite \"Gerai\", kad " +"atmestumėte pakeitimus." + +#, python-format +msgid "Add %(language)s content" +msgstr "Pridėti %(language)s turinį" + +msgid "Preview" +msgstr "Peržiūra" + +msgid "Settings" +msgstr "Nustatymai" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Netinkama kalba %(value)s. Šios formos apdoroti negalima. Pabandykite " +"pakeisti kalbą." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Nerasta registruota aplikacija \"%r\"" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Rezervuota vieta" + +msgid "Create" +msgstr "Kurti" + +msgid "Edit" +msgstr "Redaguoti" + +msgid "Structure" +msgstr "Struktūra" + +msgid "Content" +msgstr "Turinys" + +msgid "Sites" +msgstr "Tinklalapiai" + +msgid "Admin Sites" +msgstr "Administravimo puslapiai" + +msgid "Administration" +msgstr "Administravimo panelė" + +msgid "User settings" +msgstr "Vartotojo nustatymai" + +msgid "Clipboard..." +msgstr "Iškarpinė..." + +msgid "Clear clipboard" +msgstr "Išvalyti iškarpinę" + +msgid "Disable toolbar" +msgstr "Išjungti įrankių juostą" + +msgid "Shortcuts..." +msgstr "Nuorodos..." + +msgid "Users" +msgstr "Vartotojai" + +#, python-format +msgid "Logout %s" +msgstr "Atsijungti %s" + +msgid "Logout" +msgstr "Atsijungti" + +msgid "Language" +msgstr "Kalba" + +msgid "Delete Translation" +msgstr "Pašalinti vertimą" + +msgid "Copy all plugins" +msgstr "Kopijuoti visus įskiepius" + +#, python-format +msgid "from %s" +msgstr "iš %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Ar tikrai norite kopijuoti visus įskiepius iš %s?" + +msgid "Pages" +msgstr "Puslapiai" + +msgid "Page" +msgstr "Puslapis" + +msgid "Create Page" +msgstr "Kurti puslapį" + +msgid "New Page" +msgstr "Naujas puslapis" + +msgid "New Sub Page" +msgstr "Naujas vidinis puslapis" + +msgid "Duplicate this Page" +msgstr "Dublikuoti šį puslapį" + +msgid "Page settings" +msgstr "Puslapio nustatymai" + +msgid "Advanced settings" +msgstr "Papildomi nustatymai" + +msgid "Templates" +msgstr "Šablonai" + +msgid "Placeholders" +msgstr "Rezervuotos vietos" + +msgid "Hide in navigation" +msgstr "Paslėpti navigacijoje" + +msgid "Display in navigation" +msgstr "Atvaizduoti navigacijoje" + +msgid "Delete page" +msgstr "Pašalinti puslapį" + +msgid "Create a new page next to the current page." +msgstr "Kurti naują puslapį šalia dabartinio puslapio." + +msgid "Create a page below the current page." +msgstr "Kurti puslapį žemiau dabartinio puslapio." + +msgid "Select a valid site" +msgstr "Pasirinkite tinkamą svetainę" + +msgid "Select a valid page" +msgstr "Pasirinkite tinkamą puslapį" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"Puslapis %(conflict_page)s turi tą patį url '%(url)s' kaip dabartinis " +"puslapis \"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"Puslapis %(conflict_page)s turi tą patį url '%(url)s' kaip dabartinis " +"puslapis." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Nebūtina. Jei suvestas, bus automatiškai pridėtas prie naujo teksto " +"įskiepio." + +msgid "Provide a title for the new page." +msgstr "Sukurkite antraštę naujam puslapiui." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" +"Palikti tuščią kad nuoroda būtų sugeneruota automatiškai, arba galite " +"pakeisti kaip Jums reikia." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "Nepavyksta automatiškai sukurti nuorodos. Įveskite ją rankiniu būdu." + +msgid "Please provide a valid slug." +msgstr "Įveskite tinkamą nuorodą." + +msgid "You don't have the permissions required to add a page." +msgstr "Jūs neturite teisių reikalingų norint pridėti puslapį." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "pozicija" + +msgid "language" +msgstr "kalba" + +msgid "plugin_name" +msgstr "įskiepio pavadinimas" + +msgid "creation date" +msgstr "sukūrimo data" + +msgid "can edit" +msgstr "gali redaguoti" + +msgid "can add" +msgstr "gali pridėti" + +msgid "can delete" +msgstr "gali pašalinti" + +msgid "can change advanced settings" +msgstr "gali keisti papildomus nustatymus" + +msgid "can publish" +msgstr "gali publikuoti" + +msgid "can change permissions" +msgstr "gali keisti teises" + +msgid "can move" +msgstr "gali perkelti" + +msgid "view restricted" +msgstr "peržiūrėjimas apribotas" + +msgid "can recover pages" +msgstr "gali grąžinti puslapius" + +msgid "group" +msgstr "grupė" + +msgid "sites" +msgstr "tinklalapiai" + +msgid "created by" +msgstr "sukūrė" + +msgid "changed by" +msgstr "redagavo" + +msgid "publication date" +msgstr "publikavimo data" + +msgid "publication end date" +msgstr "publikavimo pabaigos datą" + +msgid "in navigation" +msgstr "yra navigacijoje" + +msgid "soft root" +msgstr "soft root" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "prikabintas meniu" + +msgid "template" +msgstr "šablonas" + +msgid "login required" +msgstr "būtinas prisijungimas" + +msgid "application" +msgstr "aplikacija" + +msgid "application instance name" +msgstr "aplikacijos objekto pavadinimas" + +msgid "site" +msgstr "tinklalapis" + +msgid "Grant on" +msgstr "Suteikti" + +msgid "page" +msgstr "puslapis" + +msgid "no limit set" +msgstr "apribojimas nenustatytas" + +msgid "for logged in users only" +msgstr "tik prisijungusiems vartotojams" + +msgid "for anonymous users only" +msgstr "tik neregistruotiems lankytojams" + +msgid "Inherit from parent page" +msgstr "Paveldėti iš pirminio puslapio" + +msgid "Deny" +msgstr "Atmesti" + +msgid "Only this website" +msgstr "Tik šis tinklalapis" + +msgid "Allow" +msgstr "Leisti" + +msgid "title" +msgstr "pavadinimas" + +msgid "The default title" +msgstr "Numatytasis pavadinimas" + +msgid "Page Title" +msgstr "Puslapio pavadinimas" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Perrašo tai kas atvaizduojama jūsų naršyklės viršutinėje juostoje ar " +"naršyklės žymėse (bookmarks)" + +msgid "Menu Title" +msgstr "Meniu pavadinimas" + +msgid "Overwrite what is displayed in the menu" +msgstr "Perrašyti tai kas atvaizduojama meniu" + +msgid "Description meta tag" +msgstr "Aprašymo meta žymenys" + +msgid "A description of the page used by search engines." +msgstr "Puslapio aprašymas naudojamas paieškos sistemose." + +msgid "redirect" +msgstr "nukreipti" + +msgid "Redirects to this URL." +msgstr "Nukreipia į šį puslapį." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Visi pirminiai elementai nebus atvaizduojami navigacijoje" + +msgid "The template used to render the content." +msgstr "Šablonas naudojamas turinio atvaizdavimui." + +msgid "page content" +msgstr "puslapio turinys" + +msgid "page contents" +msgstr "puslapių turiniai" + +msgid "default" +msgstr "pagrindinis" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Unikalus identifikatorius, naudojamas su page_url templatetag nukreipiant į " +"šį puslapį" + +msgid "Mark this page as a page type" +msgstr "Pažymėti šį puslapį kaip puslapio tipą" + +msgid "pages" +msgstr "puslapiai" + +msgid "No available title" +msgstr "Nėra prieinamo pavadinimo" + +msgid "slug" +msgstr "nuoroda" + +msgid "Path" +msgstr "Kelias" + +msgid "Current page" +msgstr "Dabartinis puslapis" + +msgid "Page children (immediate)" +msgstr "Puslapio vidiniai elementai (tiesioginiai)" + +msgid "Page and children (immediate)" +msgstr "Puslapis ir vidiniai elementai (tiesioginiai)" + +msgid "Page descendants" +msgstr "Puslapio palikuonys" + +msgid "Page and descendants" +msgstr "Puslapis ir palikuonys" + +msgid "on page level" +msgstr "puslapio lygyje" + +msgid "frontend view restriction" +msgstr "peržiūrėjimo apribojimas" + +msgid "Please select user or group." +msgstr "Pasirinkite vartotoją arba grupę." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Vartotojai negali publikuoti puslapio be leidimų keisti puslapį. Reikalingi " +"redagavimo leidimai." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Vartotojai negali keisti puslapio išplėstinių nustatymų be leidimo keisti " +"puslapį. Reikalingi redagavimo leidimai." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Vartotojai negali keisti puslapio leidimų be leidimo keisti puslapį. " +"Reikalingi redagavimo leidimai." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Vartotojai negali perkelti puslapio be leidimų keisti puslapį. Reikalingi " +"redagavimo leidimai." + +msgid "can recover any deleted page" +msgstr "gali grąžinti bet kokį pašalintą puslapį" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"Jeigu niekas nepasirinkta, vartotojui bus suteiktos teisės visiems " +"tinklalapiams." + +msgid "Page global permission" +msgstr "Globalios puslapio teisės" + +msgid "Pages global permissions" +msgstr "Globalios puslapių teisės" + +msgid "Page permission" +msgstr "Puslapio teisės" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Puslapio pridėjimo teisė taip pat reikalauja prieigos prie vidinių elementų," +" kitaip pridėto puslapio nebus galima redaguoti." + +msgid "User (page)" +msgstr "Vartotojas (puslapis)" + +msgid "Users (page)" +msgstr "Vartotojai (puslapis)" + +msgid "User group (page)" +msgstr "Vartotojo grupė (puslapis)" + +msgid "User groups (page)" +msgstr "Vartotojo grupės (puslapis)" + +msgid "slot" +msgstr "lizdas" + +msgid "width" +msgstr "plotis" + +msgid "Edit object" +msgstr "Redaguoti objektą" + +msgid "This is an external placeholder" +msgstr "Tai išorinė rezervuota vieta" + +msgid "plugin" +msgstr "įskiepis" + +msgid "plugins" +msgstr "įskiepiai" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Kalba administravimo sąsajai ir įrankių juostai" + +msgid "user setting" +msgstr "vartotojo nustatymas" + +msgid "user settings" +msgstr "vartotojo nustatymai" + +msgid "by template" +msgstr "pagal šabloną" + +msgid "by code" +msgstr "pagal kodą" + +msgid "static placeholder name" +msgstr "statinės rezervuotos vietos pavadinimas" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Apibudinantis pavadinimas atpažinti šią statinę rezervuotą vietą. Nerodoma " +"vartotojams." + +msgid "placeholder code" +msgstr "rezervuotos vietos kodas" + +msgid "To render the static placeholder in templates." +msgstr "Atvaizduoti statinę rezervuotą vietą šablonuose." + +msgid "placeholder content" +msgstr "rezervuotos vietos turinys" + +msgid "creation_method" +msgstr "sukūrimo metodas" + +msgid "static placeholder" +msgstr "statinė rezervuota vieta" + +msgid "static placeholders" +msgstr "statinės rezervuotos vietos" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" +"Statinė rezervuota vieta su tuo pačiu tinklalapiu ir kodu jau egzistuoja" + +msgid "Advanced options" +msgstr "Papildomi nustatymai" + +msgid "Generic" +msgstr "Bendrasis" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" buvo sėkmingai pakeistas." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "Daugiau nustatymų šiam įskiepiui nėra. Spauskite išsaugoti." + +msgid "Moved" +msgstr "Perkelta" + +msgid "Changed" +msgstr "Pakeistas" + +msgid "Deleted" +msgstr "Pašalinta" + +msgid "Added Page Translation" +msgstr "Pridėtas puslapio vertimas" + +msgid "Changed Page Translation" +msgstr "Pakeistas puslapio vertimas" + +msgid "Deleted Page Translation" +msgstr "Pašalintas puslapio vertimas" + +msgid "Added Plugin" +msgstr "Pridėtas įskiepis" + +msgid "Changed Plugin" +msgstr "Pakeistas įskiepis" + +msgid "Moved Plugin" +msgstr "Perkeltas įskiepis" + +msgid "Deleted Plugin" +msgstr "Pašalintas įskiepis" + +msgid "Cut Plugin" +msgstr "Iškirptas įskiepis" + +msgid "Paste Plugin" +msgstr "Įklijuotas įskiepis" + +msgid "Paste to Placeholder" +msgstr "Įklijuoti į rezervuotą vietą" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Įskiepiai įdėti į rezervuotą vietą iš iškarpinės" + +msgid "Cleared Placeholder" +msgstr "Išvalyta rezervuota vieta" + +msgid "Save" +msgstr "Išsaugoti" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" +"Kai kurių laukų pakeisti negalima, nes jie yra tik skaitymui skirtas " +"turinys." + +#, python-format +msgid "Log in to administration here." +msgstr "Prisijungti prie administravimo čia." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Prisijungimo nuoroda: %(login_url)s" + +msgid "Username:" +msgstr "Vartotojo vardas:" + +msgid "Password:" +msgstr "Vartotojo slaptažodis:" + +msgid "Add a page" +msgstr "Pridėti puslapį" + +msgid "Change a page" +msgstr "Pakeisti puslapį" + +msgid "Home" +msgstr "Pagrindinis" + +msgid "View on site" +msgstr "Žiūrėti puslapyje" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Ištaisykite žemiau esančias klaidas." +msgstr[1] "Ištaisykite žemiau esančias klaidas." +msgstr[2] "Ištaisykite žemiau esančias klaidas." +msgstr[3] "Ištaisykite žemiau esančias klaidas." + +msgid "All permissions" +msgstr "Visos teisės" + +msgid "Loading..." +msgstr "Kraunama..." + +msgid "Save and continue editing" +msgstr "Išsaugoti ir testi redagavimą" + +#, 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 "" +"Ar tikrai norite pašalinti %(object_name)s \"%(escaped_object)s\"? Bus " +"pašalinti visi šie susiję elementai:" + +msgid "Yes, I’m sure" +msgstr "Taip, esu tikras" + +msgid "No, take me back" +msgstr "Ne, grįžti atgal" + +msgid "Summary" +msgstr "Santrauka" + +msgid "User" +msgstr "Vartotojas" + +msgid "Group" +msgstr "Grupė" + +msgid "Can edit" +msgstr "Gali redaguoti" + +msgid "Can add" +msgstr "Gali pridėti" + +msgid "Can delete" +msgstr "Gali pašalinti" + +msgid "Can publish" +msgstr "Gali publikuoti" + +msgid "Can change permissions" +msgstr "Gali keisti teises" + +msgid "Can move" +msgstr "Gali perkelti" + +msgid "Can view" +msgstr "Gali peržiūrėti" + +msgid "(global)" +msgstr "(globalus)" + +msgid "(current)" +msgstr "(dabartinis)" + +msgid "Page doesn't inherit any permissions." +msgstr "Puslapis nepaveldi jokių teisių." + +msgid "Edit model" +msgstr "Redagavimo modelis" + +msgid "Save as new" +msgstr "Išsaugoti kaip naują" + +msgid "Save and add another" +msgstr "Išsaugoti ir pridėti naują" + +msgid "Copy" +msgstr "Kopijuoti" + +msgid "Cut" +msgstr "Iškirpti" + +msgid "Paste" +msgstr "Įkopijuoti" + +msgid "Set as home" +msgstr "Nustatyti kaip pradinį" + +msgid "is restricted" +msgstr "yra apribotas" + +msgid "last change by" +msgstr "paskutinis pakeitimas pagal" + +msgid "last change on" +msgstr "paskutinį kartą pakeista" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Puslapių sąrašas" + +msgid "Search" +msgstr "Ieškoti" + +msgid "Page Tree" +msgstr "Puslapio medis" + +msgid "Reset filter" +msgstr "Perkrauti filtrą" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +"Atkurti pašalintus %(name)s" + +msgid "Main Navigation" +msgstr "Pagrindinė navigacija" + +msgid "Options" +msgstr "Nustatymai" + +msgid "Successfully moved" +msgstr "Sėkmingai perkeltas" + +msgid "Changes within the tree might require a refresh." +msgstr "Pakeitimai medyje gali reikalauti perkrovimo." + +msgid "Error:" +msgstr "Klaida:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Šis puslapis negali būti kopijuojamas nes su juo yra susieta aplikacija. " +"Žiūrėkite puslapio išplėstinius nustatymus aplikacijų valdymui." + +msgid "Are you sure you want to § this page?" +msgstr "Ar tikrai norite § šį puslapį?" + +msgid "Reload" +msgstr "Perkrauti" + +msgid "New node" +msgstr "Naujas mazgas" + +msgid "nodes" +msgstr "mazgai" + +msgid "View" +msgstr "Peržiūrėti" + +msgid "Menu" +msgstr "Meniu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Kol kas nėra jokių %(object)s.\n" +"
\n" +" Pridėti %(object)s dabar.\n" +" " + +msgid "Copy options" +msgstr "Kopijavimo nustatymai" + +msgid "Choose copy options" +msgstr "Pasirinkite kopijavimo nustatymus" + +msgid "Close" +msgstr "Uždaryti" + +msgid "Legend" +msgstr "Legenda" + +msgid "In menu" +msgstr "Yra meniu" + +msgid "Not in menu" +msgstr "Nesantis meniu" + +msgid "View page" +msgstr "Žiūrėti puslapį" + +msgid "Softroot" +msgstr "Softroot" + +msgid "Apphook" +msgstr "Aplikacija" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Aplikacija: %(apphook)s" + +msgid "in menu" +msgstr "yra meniu" + +msgid "not in menu" +msgstr "nesantis meniu" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" +"Puslapio nustatymai (spauskite SHIFT klavišą kad įjungti išplėstinius " +"nustatymus)" + +msgid "Permissions" +msgstr "Teisės" + +msgid "inherited" +msgstr "paveldėta" + +msgid "This page has no preview!" +msgstr "Šis puslapis neturi peržiūros galimybės!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Galbūt prikabinta aplikacija nepateikia turinio savo šakniniam adresui." + +msgid "It is being redirected to:" +msgstr "Yra nukreipiamas į:" + +msgid "Clipboard" +msgstr "Iškarpinė" + +msgid "Add plugin" +msgstr "Pridėti įskiepį" + +msgid "Copy all" +msgstr "Kopijuoti viską" + +msgid "Copy from" +msgstr "Kopijuoti iš" + +msgid "Empty all" +msgstr "Valyti visus" + +msgid "Filter plugins..." +msgstr "Filtruoti įskiepius..." + +msgid "Expand all" +msgstr "Išskleisti visus" + +msgid "Collapse all" +msgstr "Sutraukti visus" + +msgid "You cannot add plugins to this plugin." +msgstr "Jūs negalite pridėti įskiepių į šį įskiepį." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"Šis įskiepis negali buti perkeltas ar redaguojamas už tėvinio įskiepio ribų" + +msgid "Clipboard is empty." +msgstr "Iškarpinė yra tuščia." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Šiame įskiepyje negali būti šio tipo vidinių įskiepių." + +msgid "This plugin cannot have nested plugins." +msgstr "Šis įskiepis negali turėti vidinių įskiepių." + +msgid "Highlight" +msgstr "Akcentuoti" + +msgid "Available plugins" +msgstr "Galimi įskiepiai" + +msgid "Toggle structure" +msgstr "Perjungti struktūrą" + +msgid "Login" +msgstr "Prisijungti" + +msgid "Add plugin to" +msgstr "Pridėti įskiepį į" + +msgid "More" +msgstr "Daugiau" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Vystymo versija naudojanti django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Atšaukti" + +msgid "The following error occurred:" +msgstr "Įvyko tokia klaida:" + +msgid "Action successful." +msgstr "Veiksmas pavyko." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Ar tikrai norite pašalinti ši įskiepį?" + +msgid "Are you sure you want to publish this page?" +msgstr "Ar tikrai norite publikuoti šį puslapį?" + +msgid "Plugin will be added here" +msgstr "Įskiepis bus pridėtas čia" + +msgid "You have unsaved changes." +msgstr "Jūs turite neišsaugotų pakeitimų." + +msgid "Loading" +msgstr "Kraunama" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Ar tikrai nenorite išsaugoti šių pakeitimų?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "Formos nepavyko užkrauti. Patikrinkite ar veikia serveris." + +msgid "Most used" +msgstr "Daugiausia naudojama" + +msgid "Shortcuts" +msgstr "Nuorodos" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Puslapis buvo pakeistas, perkraunama..." + +msgid "CMS-wide Shortcuts" +msgstr "CMS spartieji klavišai" + +msgid "Bring up this help dialog" +msgstr "Atidaryti šį pagalbos dialogą" + +msgid "Close/cancel" +msgstr "Uždaryti/atšaukti" + +msgid "Toggle structure mode" +msgstr "Perjungti į struktūros vaizdą" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Perjungti į struktūros vaizdą ir paryškinti pasirinktą įskiepį" + +msgid "Open \"Create\" dialog" +msgstr "Atidaryti \"Kūrimo\" dialogą" + +msgid "Focus on Toolbar" +msgstr "Koncentruotis į įrankių juostą" + +msgid "Focus on placeholders" +msgstr "Koncentruotis į rezervuotas vietas" + +msgid "Move to next/previous element" +msgstr "Pereiti į kitą/buvusį elementą" + +msgid "Focus on plugins of placeholder" +msgstr "Koncentruotis į rezervuotos vietos įskiepius" + +msgid "Edit plugin" +msgstr "Redaguoti įskiepį" + +msgid "Open actions menu" +msgstr "Atidaryti veiksmų meniu" + +msgid "Expand/collapse" +msgstr "Išskleisti/suskleisti" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Prisijungti nepavyko. Patikrinkite savo duomenis ir " +"bandykit dar kartą." + +msgid "Double-click to edit" +msgstr "Redaguoti - dvigubas paspaudimas" + +msgid "Tap to edit" +msgstr "Spustėlti kad redaguoti" + +msgid "Click to go back" +msgstr "Spausti kad grįžti atgal" + +msgid "Click to go forward" +msgstr "Spausti kad eiti į priekį" + +msgid "Minimize" +msgstr "Minimizuoti" + +msgid "Maximize" +msgstr "Maksimizuoti" + +msgid "Placeholder not editable" +msgstr "Rezervuota vieta neredaguojama" + +msgid "Drop a plugin here" +msgstr "Mesti įskiepį čia" + +msgid "Welcome to your new django CMS installation!" +msgstr "Sveiki prisijungę prie savo naujos django CMS sistemos!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Versija %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Sukurkime kažką puikaus kartu!" + +msgid "Please log in" +msgstr "Prašome prisijungti" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Pridėkite savo pirmą puslapį\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Padėkite finansuoti

\n" +"

\n" +" Jūsų finansavimas tiesiogiai prisideda prie produkto, daugiausia per\n" +" django CMS bičiulystės programą!\n" +"

\n" +"

\n" +" Greitas būdas jums ar jūsų organizacijai paaukoti yra\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Prisijunkite prie mūsų

\n" +"

\n" +" django CMS asociacija yra ne pelno organizacija, kuri finansuoja ir kreipia django CMS\n" +" plėtrą.\n" +"

\n" +"

\n" +" Galite prisijungti tiek kaip asmuo, tiek kaip\n" +" organizacija.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Prisidėkite

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Diegimo užrašai" + +msgid "Support" +msgstr "Palaikymas" + +msgid "Documentation" +msgstr "Dokumentacija" + +msgid "User guide" +msgstr "Vartotojo vadovas" + +msgid "Give back" +msgstr "Atsidėkokite" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Jei nematote django CMS logotipo viršuje, įsitikinkite\n" +" jog susiejote static/cms aplanką į\n" +" statinius failus.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Jūs matote šia žinutė todėl kad\n" +" DEBUG = True nustatymas yra nustatytas jūsų django \n" +" nustatymuose ir kol kas nėra sukurti jokie puslapiai.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Sveiki, tai django CMS" + +msgid "Add Another" +msgstr "Pridėti papildomą" + +msgid "Back" +msgstr "Atgal" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "Pasirinkite žemiau esantį nustatymą kad pereiti prie kito žingsnio." + +msgid "Next" +msgstr "Kitas" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Nežinoma" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Puslapis nerastas %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Šablono žymė negalėjo rasti puslapio su argumentais `%(page_lookup)s\n" +"`. Užklausos URL buvo: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Du stulpeliai" + +msgid "Three columns" +msgstr "Trys stulpeliai" + +msgid "username" +msgstr "vartotojo vardas" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Privalomas. 300 simbolių arba mažiau. Raidės, skaičiai ir @/./+/-/_ " +"simboliai" + +msgid "Enter a valid username." +msgstr "Įveskite taisyklingą vartotojo vardą." + +msgid "email address" +msgstr "el. pašto adresas" + +msgid "staff status" +msgstr "personalo būsena" + +msgid "Designates whether the user can log into this admin site." +msgstr "" +"Nustato ar vartotojas gali prisijungti prie šio admininistravimo puslapio." + +msgid "active" +msgstr "aktyvus" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Nustato ar šis vartotojas turi būti traktuojamas kaip aktyvus. Atžymėkite " +"užuot šalinę vartotoją." + +msgid "users" +msgstr "vartotojai" + +msgid "Title Extension" +msgstr "Pavadinimo išplėtimas" + +msgid "Page Extension" +msgstr "Puslapio išplėtimas" + +msgid "object ID" +msgstr "objekto ID" + +msgid "Example1 App" +msgstr "Aplikacijos pavyzdys1" + +msgid "MultilingualExample1 App" +msgstr "Aplikacijos daugiakalbis pavyzdys1" + +msgid "Example1" +msgstr "Pavyzdys1" + +msgid "Examples" +msgstr "Pavyzdžiai" + +msgid "Extra Context" +msgstr "Papildomas kontekstas" + +msgid "Articles" +msgstr "Straipsniai" + +msgid "Sample App" +msgstr "Pavyzdinė aplikacija" + +msgid "Sample App with config" +msgstr "Pavyzdinė aplikacija su konfigūracija" + +msgid "Sample App with excluded permissions" +msgstr "Pavyzdinė aplikacija su panaikintomis teisėmis" + +msgid "Sample App 2" +msgstr "Pavyzdinė aplikacija 2" + +msgid "Sample App 3" +msgstr "Pavyzdinė aplikacija 2" + +msgid "Sample App Without Landing Page" +msgstr "Pavyzdinė aplikacija be pradinio puslapio" + +msgid "Namespaced App" +msgstr "Namespaced aplikacija" + +msgid "Parent app" +msgstr "Pradinė aplikacija" + +msgid "Child app" +msgstr "Vidinė aplikacija" + +msgid "Variable urls-menus App" +msgstr "Kintamų url-meniu aplikacija" + +msgid "sample root page" +msgstr "pavyzdinis šaknis puslapis" + +msgid "sample settings page" +msgstr "pavyzdinis nustatymų puslapis" + +msgid "sample account page" +msgstr "pavyzdinis vartotojo puslapis" + +msgid "sample my profile page" +msgstr "pavyzdinis profilio puslapis" + +msgid "Static Menu" +msgstr "Statinis meniu" + +msgid "Static Menu2" +msgstr "Statinis meniu2" + +msgid "Static Menu3" +msgstr "Statinis meniu3" + +msgid "Static Menu4" +msgstr "Statinis meniu" + +msgid "Category" +msgstr "Kategorija" + +msgid "Categories" +msgstr "Kategorijos" + +msgid "Add Category" +msgstr "Pridėti kategoriją" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Pakeisti kategoriją" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Dėkojame už turiningai su tinklalapiu šiandien praleistą laiką." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Paveldėti šabloną iš artimiausio tėvinio objekto" + +msgid "UserSettings" +msgstr "Vartotojo nustatymai" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Pridėti įskiepį į rezervuotą vietą \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Pridėti įskiepį %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Viena rezervuota vieta" + +msgid "CMS - your user account was created." +msgstr "CMS - jūsų vartojo paskyra sukurta." + +msgid "CMS - your user account was changed." +msgstr "CMS - jūsų vartotojo paskyra buvo pakeista." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Ši rezervuota vieta jau turi maksimalų skaičių įskiepių (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Ši rezervuota vieta jau turi maksimalų skaičių (%(limit)s) leistinų " +"%(plugin_name)s įskiepių." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Nerastas pateiktas CMS_REQUEST_IP_RESOLVER modulis: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "Nerasta pateikta CMS_REQUEST_IP_RESOLVER funkcija\": \"{0}\" modulyje \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Sukurti naują %s objektą." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Vedlys jau užregistruotas modeliuil: %s" diff --git a/cms/locale/lt/LC_MESSAGES/djangojs.po b/cms/locale/lt/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..a087887b --- /dev/null +++ b/cms/locale/lt/LC_MESSAGES/djangojs.po @@ -0,0 +1,24 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Jelena , 2014 +# Matas Dailyda , 2015 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Matas Dailyda , 2015\n" +"Language-Team: Lithuanian (http://app.transifex.com/divio/django-cms/language/lt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Jūs tikrai norite neišsaugojus puslapio pakeisti skirtukus? " diff --git a/cms/locale/lt_LT/LC_MESSAGES/django.po b/cms/locale/lt_LT/LC_MESSAGES/django.po new file mode 100644 index 00000000..75975c2e --- /dev/null +++ b/cms/locale/lt_LT/LC_MESSAGES/django.po @@ -0,0 +1,2266 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Lithuanian (Lithuania) (https://app.transifex.com/divio/teams/58664/lt_LT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt_LT\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/lt_LT/LC_MESSAGES/djangojs.po b/cms/locale/lt_LT/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..034f71f4 --- /dev/null +++ b/cms/locale/lt_LT/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Lithuanian (Lithuania) (http://app.transifex.com/divio/django-cms/language/lt_LT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt_LT\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/lv/LC_MESSAGES/django.po b/cms/locale/lv/LC_MESSAGES/django.po new file mode 100644 index 00000000..9498e435 --- /dev/null +++ b/cms/locale/lv/LC_MESSAGES/django.po @@ -0,0 +1,1634 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2022 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2022\n" +"Language-Team: Latvian (https://app.transifex.com/divio/teams/58664/lv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lv\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" + +msgid "All" +msgstr "" + +msgid "Copy permissions" +msgstr "" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "Virsraksta daļa, kas tiek izmantota URL" + +msgid "Page type" +msgstr "" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Pārrakstīt URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Atstāj šo lauku tukšu, ja tiek izmantots standarta ceļš." + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "Aplikācija" + +msgid "Hook application to this page." +msgstr "Piesaistīt aplikāciju lapai." + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "Lapa ar atgriezto URL id jau eksistē." + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "lietotājs" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "Valoda" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "" + +msgid "The default title" +msgstr "Standarta virsraksts" + +msgid "Page Title" +msgstr "Lapas virsraksts" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Pārraksta datus, kas tiek attēloti pārlūka augšējā joslā vai grāmatzīmēs" + +msgid "Menu Title" +msgstr "Izvēlnes virsraksts" + +msgid "Overwrite what is displayed in the menu" +msgstr "Pārrakstīts, izvēlnē attēlotos datus" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "Pāradresēt uz šo URL" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "Vai jūs esat pārliecināts, ka gribat dzēst šo spraudni?" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/lv/LC_MESSAGES/djangojs.po b/cms/locale/lv/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..9ac4157e --- /dev/null +++ b/cms/locale/lv/LC_MESSAGES/djangojs.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Mikelis Asnins , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Mikelis Asnins , 2013\n" +"Language-Team: Latvian (http://app.transifex.com/divio/django-cms/language/lv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lv\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Vai jūs esat pārliecināts, ka gribat mainīt cilnes, bez lapas saglabāšanas?" diff --git a/cms/locale/ml/LC_MESSAGES/django.po b/cms/locale/ml/LC_MESSAGES/django.po new file mode 100644 index 00000000..40e7d7f5 --- /dev/null +++ b/cms/locale/ml/LC_MESSAGES/django.po @@ -0,0 +1,2264 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Malayalam (https://app.transifex.com/divio/teams/58664/ml/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ml\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/ml/LC_MESSAGES/djangojs.po b/cms/locale/ml/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..b001b3fe --- /dev/null +++ b/cms/locale/ml/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Malayalam (http://app.transifex.com/divio/django-cms/language/ml/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ml\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/mn/LC_MESSAGES/django.po b/cms/locale/mn/LC_MESSAGES/django.po new file mode 100644 index 00000000..68261b23 --- /dev/null +++ b/cms/locale/mn/LC_MESSAGES/django.po @@ -0,0 +1,1632 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2022 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2022\n" +"Language-Team: Mongolian (https://app.transifex.com/divio/teams/58664/mn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mn\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "" + +msgid "Copy permissions" +msgstr "" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "" + +msgid "Page type" +msgstr "" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "" + +msgid "Keep this field empty if standard path should be used." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "" + +msgid "Hook application to this page." +msgstr "" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "хэрэглэгч" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "" + +msgid "The default title" +msgstr "Үндсэн гарчиг" + +msgid "Page Title" +msgstr "Хуудасны гарчиг" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +msgid "Menu Title" +msgstr "Цэсийн гарчиг" + +msgid "Overwrite what is displayed in the menu" +msgstr "" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/mn/LC_MESSAGES/djangojs.po b/cms/locale/mn/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..3c9c77df --- /dev/null +++ b/cms/locale/mn/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Mongolian (http://app.transifex.com/divio/django-cms/language/mn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mn\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/mn_MN/LC_MESSAGES/django.po b/cms/locale/mn_MN/LC_MESSAGES/django.po new file mode 100644 index 00000000..1e8b7601 --- /dev/null +++ b/cms/locale/mn_MN/LC_MESSAGES/django.po @@ -0,0 +1,2266 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2022 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2022\n" +"Language-Team: Mongolian (Mongolia) (https://app.transifex.com/divio/teams/58664/mn_MN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mn_MN\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "өргөн" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/mn_MN/LC_MESSAGES/djangojs.po b/cms/locale/mn_MN/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..05ca905f --- /dev/null +++ b/cms/locale/mn_MN/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Mongolian (Mongolia) (http://app.transifex.com/divio/django-cms/language/mn_MN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mn_MN\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/ms/LC_MESSAGES/django.po b/cms/locale/ms/LC_MESSAGES/django.po new file mode 100644 index 00000000..9c3bcb9a --- /dev/null +++ b/cms/locale/ms/LC_MESSAGES/django.po @@ -0,0 +1,2263 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Malay (https://app.transifex.com/divio/teams/58664/ms/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/ms/LC_MESSAGES/djangojs.po b/cms/locale/ms/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..bec1af32 --- /dev/null +++ b/cms/locale/ms/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Malay (http://app.transifex.com/divio/django-cms/language/ms/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/mt/LC_MESSAGES/django.po b/cms/locale/mt/LC_MESSAGES/django.po new file mode 100644 index 00000000..4bd77375 --- /dev/null +++ b/cms/locale/mt/LC_MESSAGES/django.po @@ -0,0 +1,2266 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Maltese (https://app.transifex.com/divio/teams/58664/mt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mt\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==0 || ( n%100>1 && n%100<11) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/mt/LC_MESSAGES/djangojs.po b/cms/locale/mt/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..0823ec4d --- /dev/null +++ b/cms/locale/mt/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Maltese (http://app.transifex.com/divio/django-cms/language/mt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mt\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==0 || ( n%100>1 && n%100<11) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/nb/LC_MESSAGES/django.po b/cms/locale/nb/LC_MESSAGES/django.po new file mode 100644 index 00000000..da102d5c --- /dev/null +++ b/cms/locale/nb/LC_MESSAGES/django.po @@ -0,0 +1,1748 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Bjorn Pettersen , 2025 +# Erlend Dalen , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Norwegian Bokmål (https://app.transifex.com/divio/teams/58664/nb/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nb\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "Alle" + +msgid "Copy permissions" +msgstr "Kopier rettigheter" + +msgid "Slug" +msgstr "Slug" + +msgid "The part of the title that is used in the URL" +msgstr "Delen av tittelen som brukes i adressen" + +msgid "Page type" +msgstr "Sidetype" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Sidetyper" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Overstyr adresse" + +msgid "Keep this field empty if standard path should be used." +msgstr "La dette feltet være tomt hvis standardadresse skal brukes" + +msgid "Start typing..." +msgstr "Begynn å skrive..." + +msgid "menu visibility" +msgstr "menyvisbarhet" + +msgid "limit when this page is visible in the menu" +msgstr "begrens når denne siden er synlig i menyen" + +msgid "X Frame Options" +msgstr "X Frame alternativer" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Om denne siden kan bygges inn i andre sider eller nettsteder." + +msgid "URL options" +msgstr "URL-alternativer" + +msgid "Menu options" +msgstr "Menyalternativer" + +msgid "Headers" +msgstr "Overskrifter" + +msgid "Application" +msgstr "Applikasjon" + +msgid "Hook application to this page." +msgstr "Koble applikasjon til denne siden" + +msgid "Application configurations" +msgstr "Applikasjonskonfigurasjoner" + +msgid "A page with this reverse URL id exists already." +msgstr "En side med denne reversadresse id'en finnes allerede." + +msgid "Invalid application config value" +msgstr "Ugyldig konfigurasjonsverdi for applikasjonen" + +msgid "An application instance using this configuration already exists." +msgstr "En applikasjon som bruker denne konfigurasjonen finnes allerede." + +msgid "An application instance with this name already exists." +msgstr "En applikasjon med dette navnet finnes allerede." + +msgid "You can't move the home page inside another page" +msgstr "Du kan ikke flytte hjemmesiden inne i en annen side" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Du kan ikke ha to sider med samme slug på samme sidenivå. Endre slugen til " +"en av sidene før du prøver å flytte igjen." + +msgid "Yes" +msgstr "Ja" + +msgid "No" +msgstr "Nei" + +msgid "user" +msgstr "bruker" + +msgid "can_view" +msgstr "kan vise" + +msgid "Add" +msgstr "Legg til" + +msgid "Change" +msgstr "Endre" + +msgid "Delete" +msgstr "Slett" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Brukere kan ikke opprette en side uten rettigheter til å redigere den " +"opprettede siden. Rettigheter til å redigere er påkrevd." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Brukere kan ikke slette en siden uten rettigheter til å redigere siden. " +"Rettigheter til å redigere er påkrevd." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Brukere kan ikke sette siderettigheter uten rettigheter til å redigere en " +"side. Rettigheter til å redigere er påkrevd." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Brukere kan ikke slette side-rettigheter uten rettigheter til å endre en " +"side. Rettigheter til å redigere er påkrevd." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Brukere kan ikke opprette side-rettigheter uten rettigheter til å redigere " +"den opprettede rettigheten. Rettigheter til å redigere er påkrevd." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Brukere kan ikke slette side-rettigheter uten rettigheter til å endre " +"rettigheter. Rettigheter til å redigere er påkrevd." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Ugyldig plugin type '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Språket må settes til et støttet språk!" + +msgid "Parent plugin language must be same as language!" +msgstr "Språket til foreldre-plugin må være lik språk!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Foreldre-programtillegg må være i samme plassholder!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Plugin-posisjonen må være større enn %(position)d" + +msgid "Translations" +msgstr "Oversettelser" + +msgid "Advanced Settings" +msgstr "Avanserte instillinger" + +msgid "The page is not eligible to be home." +msgstr "Denne siden kvalifiserer ikke til å være hjem." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Objekter %(name)s med primærnøkkel %(key)r finnes ikke." + +msgid "error" +msgstr "feil" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Du har ikke rettigheter til å flytte denne siden. Vennligst last inn siden " +"på nytt." + +msgid "Error! You don't have permissions to copy this page." +msgstr "Feil! Du har ikke rettigheter til å kopiere denne siden." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Feil! Siden du limer inn er ikke oversatt til noen av språkene som er " +"konfigurert på mottaker-nettstedet." + +msgid "You do not have permission to edit this page" +msgstr "Du har ikke rettigheter til å endre denne siden" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(for å endre den, avpubliser først den publiserte versjonen av denne siden)" + +msgid "Add Translation" +msgstr "Legg til oversettelse" + +msgid "Add Page Copy" +msgstr "Legg til kopi av side" + +msgid "New sub page" +msgstr "Ny underside" + +msgid "New page" +msgstr "Ny side" + +msgid "Database error" +msgstr "Databasefeil" + +msgid "Template not valid" +msgstr "Ugyldig mal" + +msgid "Placeholder selection not valid" +msgstr "Plassholdervalget er ikke gyldig" + +msgid "The template was successfully changed" +msgstr "Malen er endret" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Plassholderen '%s' finnes ikke i målspråket" + +msgid "You do not have permission to copy these plugins." +msgstr "Du har ikke rettigheter til å kopiere disse programtilleggene." + +msgid "You do not have permission to delete this page" +msgstr "Du har ikke rettigheter til å slette denne siden." + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Tittel og programtillegg med språk %(language)s ble slettet" + +msgid "Public content" +msgstr "Offentlig innhold" + +msgid "Empty" +msgstr "Tom" + +msgid "Create Content" +msgstr "Opprett innhold" + +msgid "View restriction" +msgstr "Vis restriksjon" + +msgid "View restrictions" +msgstr "Vis restriksjoner" + +#, python-format +msgid "Field %s not found" +msgstr "Felt %s ikke funnet" + +msgid "You do not have permission to edit this item" +msgstr "Du har ikke rettigheter til å endre dette elementet" + +msgid "You do not have permission to add a plugin" +msgstr "Du har ikke rettigheter til å legge inn et programtillegg" + +msgid "You do not have permission to copy this placeholder." +msgstr "Du har ikke rettigheter til å kopiere denne plassholderen." + +msgid "Plugin not found" +msgstr "Programtillegg ikke funnet" + +msgid "You do not have permission to edit this plugin" +msgstr "Du har ikke rettigheter til å redigere dette programtillegget" + +msgid "You have no permission to paste this plugin" +msgstr "Du mangler rettigheter til å lime inn dette programtillegget" + +msgid "You have no permission to paste this placeholder" +msgstr "Du mangler rettigheter til å lime inn denne plassholderen" + +msgid "You have no permission to move this plugin" +msgstr "Du har ikke rettigheter til å flytte dette programtillegget" + +msgid "You have no permission to cut this plugin" +msgstr "Du mangler rettigheter til å klippe ut dette programtillegget." + +msgid "You do not have permission to delete this plugin" +msgstr "Du har ikke rettigheter til å slette dette programtillegget" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "%(name)s-programtillegget \"%(obj)s\" ble slettet." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Kan ikke slette %(name)s" + +msgid "Are you sure?" +msgstr "Er du sikker?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Du har ikke rettigheter til å tømme denne plassholderen" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Tømmingen av plassholderen \"%(obj)s\" var vellykket." + +msgid "placeholder" +msgstr "plassholder" + +msgid "Page permissions" +msgstr "Siderettigheter" + +msgid "User & Group permissions" +msgstr "Bruker og grupperettigheter" + +msgid "Page permissions management" +msgstr "Kontroll av siderettigheter" + +msgid "Actions" +msgstr "Handlinger" + +msgid "Empty content" +msgstr "Tomt innhold" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Egenskaper for %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Legg til ny %(object_name)s" + +msgid "Add content" +msgstr "Legg til innhold" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Innholdet for det gjeldende språket er endret. Klikk \"Avbryt\" for å gå " +"tilbake til skjemaet og lagre endringene. Klikk \"OK\" for å forkaste " +"endringene." + +#, python-format +msgid "Add %(language)s content" +msgstr "Legg til %(language)s-innhold" + +msgid "Preview" +msgstr "Forhåndsvis" + +msgid "Settings" +msgstr "Innstillinger" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Ugyldig språk %(value)s. Dette skjemaet kan ikke behandles. Prøv å bytte " +"språk." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Fant ingen registrert apphook \"%r\"" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Plassholder" + +msgid "Create" +msgstr "Opprett" + +msgid "Edit" +msgstr "Endre" + +msgid "Structure" +msgstr "Struktur" + +msgid "Content" +msgstr "Innhold" + +msgid "Sites" +msgstr "Nettsteder" + +msgid "Admin Sites" +msgstr "Administrasjonssider" + +msgid "Administration" +msgstr "Administrasjon" + +msgid "User settings" +msgstr "Brukerinnstillinger" + +msgid "Clipboard..." +msgstr "Utklippstavle..." + +msgid "Clear clipboard" +msgstr "Tøm utklippstavlen" + +msgid "Disable toolbar" +msgstr "Deaktiver verktøylinjen" + +msgid "Shortcuts..." +msgstr "Snarveier..." + +msgid "Users" +msgstr "Brukere" + +#, python-format +msgid "Logout %s" +msgstr "Logg ut %s" + +msgid "Logout" +msgstr "Logg ut" + +msgid "Language" +msgstr "Språk" + +msgid "Delete Translation" +msgstr "Slett oversettelse" + +msgid "Copy all plugins" +msgstr "Kopier alle programtillegg" + +#, python-format +msgid "from %s" +msgstr "fra %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Er du sikker på at du ønsker å kopiere alle programtillegg fra %s?" + +msgid "Pages" +msgstr "Sider" + +msgid "Page" +msgstr "Side" + +msgid "Create Page" +msgstr "Opprett side" + +msgid "New Page" +msgstr "Ny Side" + +msgid "New Sub Page" +msgstr "Ny Underside" + +msgid "Duplicate this Page" +msgstr "Dupliser denne Siden" + +msgid "Page settings" +msgstr "Sideinnstillinger" + +msgid "Advanced settings" +msgstr "Avanserte innstillinger" + +msgid "Templates" +msgstr "Maler" + +msgid "Placeholders" +msgstr "Plassholdere" + +msgid "Hide in navigation" +msgstr "Skjul i navigasjon" + +msgid "Display in navigation" +msgstr "Vis i navigasjon" + +msgid "Delete page" +msgstr "Slett side" + +msgid "Create a new page next to the current page." +msgstr "Lag en ny side ved siden av nåværende side." + +msgid "Create a page below the current page." +msgstr "Lag en side under nåværende side." + +msgid "Select a valid site" +msgstr "Velg et gyldig nettsted" + +msgid "Select a valid page" +msgstr "Velg en gyldig side" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"Siden %(conflict_page)s har samme url '%(url)s' som gjeldende side " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "Siden %(conflict_page)s har samme url '%(url)s' som gjeldende side." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Valgfritt. Vil bli automatisk lagt til i en ny tekst-plugin hvis oppgitt." + +msgid "Provide a title for the new page." +msgstr "Oppgi en tittel for den nye siden." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "La stå tom for automatisk slug, eller overstyr etter behov." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "Kan ikke opprette slug automatisk. Angi en manuelt." + +msgid "Please provide a valid slug." +msgstr "Angi en gyldig slug." + +msgid "You don't have the permissions required to add a page." +msgstr "Du mangler rettigheter som er påkrevd for å legge til en side." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "posisjon" + +msgid "language" +msgstr "språk" + +msgid "plugin_name" +msgstr "programtillegg_navn" + +msgid "creation date" +msgstr "opprettelsesdsato" + +msgid "can edit" +msgstr "kan redigere" + +msgid "can add" +msgstr "kan legge til" + +msgid "can delete" +msgstr "kan slette" + +msgid "can change advanced settings" +msgstr "kan endre avanserte instillinger" + +msgid "can publish" +msgstr "kan publisere" + +msgid "can change permissions" +msgstr "kan endre rettigheter" + +msgid "can move" +msgstr "kan flytte" + +msgid "view restricted" +msgstr "visningsrestriktert" + +msgid "can recover pages" +msgstr "kan gjenopprette sider" + +msgid "group" +msgstr "gruppe" + +msgid "sites" +msgstr "nettsteder" + +msgid "created by" +msgstr "opprettet av" + +msgid "changed by" +msgstr "endret av" + +msgid "publication date" +msgstr "publiseringsdate" + +msgid "publication end date" +msgstr "slutt publiseringsdato" + +msgid "in navigation" +msgstr "i navigasjon" + +msgid "soft root" +msgstr "soft root" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "tilknyttet meny" + +msgid "template" +msgstr "template" + +msgid "login required" +msgstr "krever innlogging" + +msgid "application" +msgstr "applikasjon" + +msgid "application instance name" +msgstr "applikasjonsnavn" + +msgid "site" +msgstr "nettsted" + +msgid "Grant on" +msgstr "Godkjenn på" + +msgid "page" +msgstr "side" + +msgid "no limit set" +msgstr "ingen grense satt" + +msgid "for logged in users only" +msgstr "kun for innloggede brukere" + +msgid "for anonymous users only" +msgstr "kun for anonyme brukere" + +msgid "Inherit from parent page" +msgstr "Arv fra foreldreside" + +msgid "Deny" +msgstr "Nekt" + +msgid "Only this website" +msgstr "Kun dette nettstedet" + +msgid "Allow" +msgstr "Tillat" + +msgid "title" +msgstr "tittel" + +msgid "The default title" +msgstr "Standardtittel" + +msgid "Page Title" +msgstr "Sidetittel" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Overstyrer hva som vises på toppen av nettleseren din eller i bokmerker" + +msgid "Menu Title" +msgstr "Menytittel" + +msgid "Overwrite what is displayed in the menu" +msgstr "Overstyr hva som vises i menyen" + +msgid "Description meta tag" +msgstr "Meta-tag beskrivelse" + +msgid "A description of the page used by search engines." +msgstr "En beskrivelse av siden som brukes av søkemotorer." + +msgid "redirect" +msgstr "videresend" + +msgid "Redirects to this URL." +msgstr "Videresendes til denne adressen" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Alle undernivå vil ikke vises i navigasjonen" + +msgid "The template used to render the content." +msgstr "Template brukt for å rendre innholdet." + +msgid "page content" +msgstr "sideinnhold" + +msgid "page contents" +msgstr "sideinnhold" + +msgid "default" +msgstr "standard" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"En unik identifikator som brukes med page_url templatetag for lenking til " +"denne siden" + +msgid "Mark this page as a page type" +msgstr "Merk denne siden som en sidetype" + +msgid "pages" +msgstr "sider" + +msgid "No available title" +msgstr "Ingen tilgjengelig tittel" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Sti" + +msgid "Current page" +msgstr "Denne siden" + +msgid "Page children (immediate)" +msgstr "Side og barn (like under)" + +msgid "Page and children (immediate)" +msgstr "Side og barn (like under)" + +msgid "Page descendants" +msgstr "Undernivå av side" + +msgid "Page and descendants" +msgstr "Side og undernivå" + +msgid "on page level" +msgstr "på sidenivå" + +msgid "frontend view restriction" +msgstr "offentlig visningsrestriksjon" + +msgid "Please select user or group." +msgstr "Vennligst velg bruker eller gruppe." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Brukere kan ikke publisere en side uten rettigheter til å endre siden. " +"Redigeringsrettigheter kreves." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Brukere kan ikke endre avanserte innstillinger for siden uten rettigheter " +"til å endre siden. Redigeringsrettigheter kreves." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Brukere kan ikke endre siderettigheter uten rettigheter til å endre siden. " +"Redigeringsrettigheter kreves." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Brukere kan ikke flytte en side uten rettigheter til å endre siden. " +"Redigeringsrettigheter kreves." + +msgid "can recover any deleted page" +msgstr "kan gjenopprette hvilken som helst side" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "Hvis ingen er valgt har brukeren rettigheter til alle nettsteder." + +msgid "Page global permission" +msgstr "Globale siderettigheter" + +msgid "Pages global permissions" +msgstr "Globale siderettigheter" + +msgid "Page permission" +msgstr "Siderettighet" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Legg til side tillatelse krever også tilgang til barn eller undernivå, " +"ellers kan ikke endres av den som opprettet den." + +msgid "User (page)" +msgstr "Bruker (side)" + +msgid "Users (page)" +msgstr "Brukere (side)" + +msgid "User group (page)" +msgstr "Brukergruppe (side)" + +msgid "User groups (page)" +msgstr "Brukergrupper (side)" + +msgid "slot" +msgstr "plass" + +msgid "width" +msgstr "bredde" + +msgid "Edit object" +msgstr "Rediger objekt" + +msgid "This is an external placeholder" +msgstr "Dette er en ekstern plassholder" + +msgid "plugin" +msgstr "plugin" + +msgid "plugins" +msgstr "plugins" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Språket for admingrensesnittet og verktøylinjen" + +msgid "user setting" +msgstr "brukerinnstilling" + +msgid "user settings" +msgstr "brukerinnstillinger" + +msgid "by template" +msgstr "etter mal" + +msgid "by code" +msgstr "etter kode" + +msgid "static placeholder name" +msgstr "statisk plassholdernavn" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Beskrivende navn for å identifisere denne statiske plassholderen. Ikke vist " +"til brukere." + +msgid "placeholder code" +msgstr "plassholderkode" + +msgid "To render the static placeholder in templates." +msgstr "For å gjengi den statiske plassholderen i maler." + +msgid "placeholder content" +msgstr "plassholderinnhold" + +msgid "creation_method" +msgstr "opprettingsmetode" + +msgid "static placeholder" +msgstr "statisk plassholder" + +msgid "static placeholders" +msgstr "statiske plassholdere" + +msgid "A static placeholder with the same site and code already exists" +msgstr "En statisk plassholder med samme nettsted og kode finnes allerede" + +msgid "Advanced options" +msgstr "Avanserte valg" + +msgid "Generic" +msgstr "Generisk" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" ble endret." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" +"Det er ingen flere innstillinger for denne pluginen. Vennligst trykk lagre." + +msgid "Moved" +msgstr "Flyttet" + +msgid "Changed" +msgstr "Endret" + +msgid "Deleted" +msgstr "Slettet" + +msgid "Added Page Translation" +msgstr "La til sideoversettelse" + +msgid "Changed Page Translation" +msgstr "Endret sideoversettelse" + +msgid "Deleted Page Translation" +msgstr "Slettet sideoversettelse" + +msgid "Added Plugin" +msgstr "La til plugin" + +msgid "Changed Plugin" +msgstr "Endret plugin" + +msgid "Moved Plugin" +msgstr "Flyttet plugin" + +msgid "Deleted Plugin" +msgstr "Slettet plugin" + +msgid "Cut Plugin" +msgstr "Klipp ut programtillegg" + +msgid "Paste Plugin" +msgstr "Lim inn plugin" + +msgid "Paste to Placeholder" +msgstr "Lim inn i plassholder" + +msgid "Added plugins to placeholder from clipboard" +msgstr "La til plugins i plassholder fra utklippstavlen" + +msgid "Cleared Placeholder" +msgstr "Tømte plassholder" + +msgid "Save" +msgstr "Lagre" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "Noen felter kan ikke endres siden de er skrivebeskyttet innhold." + +#, python-format +msgid "Log in to administration here." +msgstr "Logg inn til administreringen her here." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Innloggingsadresse: %(login_url)s" + +msgid "Username:" +msgstr "Brukernavn" + +msgid "Password:" +msgstr "Passord" + +msgid "Add a page" +msgstr "Legg til en side" + +msgid "Change a page" +msgstr "Endre en side" + +msgid "Home" +msgstr "Hjem" + +msgid "View on site" +msgstr "Vis på nettside" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Vennligst rett opp feilen under" +msgstr[1] "Vennligst rett opp feilene under" + +msgid "All permissions" +msgstr "Anne rettigheter" + +msgid "Loading..." +msgstr "Laster...." + +msgid "Save and continue editing" +msgstr "Lagre of fortsett å redigere" + +#, 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å at du vil slette %(object_name)s \"%(escaped_object)s\"? " +"Alle de følgende relaterte elementene vil bli slettet:" + +msgid "Yes, I’m sure" +msgstr "Ja, jeg er sikker" + +msgid "No, take me back" +msgstr "Nei, ta meg tilbake" + +msgid "Summary" +msgstr "Sammendrag" + +msgid "User" +msgstr "Bruker" + +msgid "Group" +msgstr "Gruppe" + +msgid "Can edit" +msgstr "Kan redigere" + +msgid "Can add" +msgstr "Kan legge til" + +msgid "Can delete" +msgstr "Kan slette" + +msgid "Can publish" +msgstr "Kan publisere" + +msgid "Can change permissions" +msgstr "Kan endre rettigheter" + +msgid "Can move" +msgstr "Kan flytte" + +msgid "Can view" +msgstr "Kan vise" + +msgid "(global)" +msgstr "(global)" + +msgid "(current)" +msgstr "(aktiv)" + +msgid "Page doesn't inherit any permissions." +msgstr "Siden arver ingen rettigheter" + +msgid "Edit model" +msgstr "Endre modell" + +msgid "Save as new" +msgstr "Lagre som ny" + +msgid "Save and add another" +msgstr "Lagre og legg til en til" + +msgid "Copy" +msgstr "Kopier" + +msgid "Cut" +msgstr "Klipp" + +msgid "Paste" +msgstr "Lim inn" + +msgid "Set as home" +msgstr "Angi som hjem" + +msgid "is restricted" +msgstr "er beskyttet" + +msgid "last change by" +msgstr "siste endring av" + +msgid "last change on" +msgstr "siste endring" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Liste over sider" + +msgid "Search" +msgstr "Søk" + +msgid "Page Tree" +msgstr "Side-tre" + +msgid "Reset filter" +msgstr "Nullstill filter" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +"Gjenopprett slettet %(name)s" + +msgid "Main Navigation" +msgstr "Hovednavigasjon" + +msgid "Options" +msgstr "Alternativer" + +msgid "Successfully moved" +msgstr "Flytting vellykket" + +msgid "Changes within the tree might require a refresh." +msgstr "Endringer i treet kan kreve en oppdatering." + +msgid "Error:" +msgstr "Feil:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Denne siden kan ikke kopieres fordi en applikasjon er knyttet til den. Se " +"sidens avanserte innstillinger for å administrere apphooks." + +msgid "Are you sure you want to § this page?" +msgstr "Er du sikker på at du vil § denne siden?" + +msgid "Reload" +msgstr "Last inn på nytt" + +msgid "New node" +msgstr "Ny node" + +msgid "nodes" +msgstr "noder" + +msgid "View" +msgstr "Vis" + +msgid "Menu" +msgstr "Meny" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +"Det er ingen %(object)s rundt enda.
Legg til %(object)s nå." + +msgid "Copy options" +msgstr "Kopieringsalternativer" + +msgid "Choose copy options" +msgstr "Velg kopieringsalternativer" + +msgid "Close" +msgstr "Lukk" + +msgid "Legend" +msgstr "Forklaring" + +msgid "In menu" +msgstr "I meny" + +msgid "Not in menu" +msgstr "Ikke i meny" + +msgid "View page" +msgstr "Vis side" + +msgid "Softroot" +msgstr "Myk topp" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Applikasjon: %(apphook)s" + +msgid "in menu" +msgstr "i meny" + +msgid "not in menu" +msgstr "ikke i meny" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Sideinnstillinger (SHIFT-klikk for avanserte innstillinger)" + +msgid "Permissions" +msgstr "Rettigheter" + +msgid "inherited" +msgstr "arvet" + +msgid "This page has no preview!" +msgstr "Denne siden har ingen forhåndsvisning!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Det er mulig at den tilknyttede apphooken ikke leverer innhold for sin rot." + +msgid "It is being redirected to:" +msgstr "Den blir videresendt til:" + +msgid "Clipboard" +msgstr "Utklippstavle" + +msgid "Add plugin" +msgstr "Ny plugin" + +msgid "Copy all" +msgstr "Kopier alt" + +msgid "Copy from" +msgstr "Kopier fra" + +msgid "Empty all" +msgstr "Tøm alt" + +msgid "Filter plugins..." +msgstr "Filtrer plugins..." + +msgid "Expand all" +msgstr "Utvid alle" + +msgid "Collapse all" +msgstr "Kollaps alle" + +msgid "You cannot add plugins to this plugin." +msgstr "Du kan ikke legge til plugins til denne plugin." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"Dette programtillegget kan ikke flyttes eller redigeres utenfor sin forelder" + +msgid "Clipboard is empty." +msgstr "Utklippstavlen er tom." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Denne plugin tillater ikke plugin av denne type som under-plugin." + +msgid "This plugin cannot have nested plugins." +msgstr "Denne plugin kan ikke ha under-plugin." + +msgid "Highlight" +msgstr "Fremhev" + +msgid "Available plugins" +msgstr "Tilgjengelig plugins" + +msgid "Toggle structure" +msgstr "Veksle struktur" + +msgid "Login" +msgstr "Logg inn" + +msgid "Add plugin to" +msgstr "Legg til plugin i" + +msgid "More" +msgstr "Mer" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Utviklingsversjon som bruker django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Avbryt" + +msgid "The following error occurred:" +msgstr "Følgende feil oppsto:" + +msgid "Action successful." +msgstr "Handlingen var vellykket." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Er du sikker på at du vil slette denne pluginen?" + +msgid "Are you sure you want to publish this page?" +msgstr "Er du sikker på at du vil publisere denne siden?" + +msgid "Plugin will be added here" +msgstr "Plugin vil bli opprettet her" + +msgid "You have unsaved changes." +msgstr "Du har endringer som ikke er lagret." + +msgid "Loading" +msgstr "Laster" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Er du sikker på at du vil forkaste disse endringene?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "Skjemaet kunne ikke lastes inn. Kontroller at serveren kjører riktig." + +msgid "Most used" +msgstr "Mest brukt" + +msgid "Shortcuts" +msgstr "Snarveier" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Siden ble endret i mellomtiden, laster inn på nytt ..." + +msgid "CMS-wide Shortcuts" +msgstr "CMS-omfattende snarveier" + +msgid "Bring up this help dialog" +msgstr "Vis denne hjelpedialogen" + +msgid "Close/cancel" +msgstr "Lukk/avbryt" + +msgid "Toggle structure mode" +msgstr "Veksle strukturmodus" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Veksle strukturmodus og fremhev pluginet under markøren" + +msgid "Open \"Create\" dialog" +msgstr "Åpne \"Opprett\"-dialogen" + +msgid "Focus on Toolbar" +msgstr "Fokus på verktøylinja" + +msgid "Focus on placeholders" +msgstr "Fokus på plassholdere" + +msgid "Move to next/previous element" +msgstr "Flytt til neste/forrige element" + +msgid "Focus on plugins of placeholder" +msgstr "Fokuser på plugins i plassholderen" + +msgid "Edit plugin" +msgstr "Rediger programtillegg" + +msgid "Open actions menu" +msgstr "Åpne handlingsmenyen" + +msgid "Expand/collapse" +msgstr "Utvid/skjul" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Mislykket innlogging. Vennligst sjekk innloggingsdetaljer " +"og prøv igjen." + +msgid "Double-click to edit" +msgstr "Dobbeltklikk for å redigere" + +msgid "Tap to edit" +msgstr "Berør for å redigere" + +msgid "Click to go back" +msgstr "Klikk for å gå tilbake" + +msgid "Click to go forward" +msgstr "Klikk for å gå fremover" + +msgid "Minimize" +msgstr "Minimer" + +msgid "Maximize" +msgstr "Maksimer" + +msgid "Placeholder not editable" +msgstr "Plassholderen kan ikke redigeres" + +msgid "Drop a plugin here" +msgstr "Slipp en plugin her" + +msgid "Welcome to your new django CMS installation!" +msgstr "Velkommen til din nye django CMS-installasjon!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Versjon %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "La oss bygge noe flott sammen!" + +msgid "Please log in" +msgstr "Vennligst logg inn" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Legg til din første side\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Bidra med finansiering

\n" +"

\n" +" Din finansiering kommer produktet direkte til gode, hovedsakelig gjennom\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" En rask måte for deg selv eller organisasjonen din å donere på er via\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Bli med oss

\n" +"

\n" +" django CMS Association er en ideell organisasjon som finansierer og styrer utviklingen av\n" +" django CMS.\n" +"

\n" +"

\n" +" Du kan bli medlem både som privatperson og som\n" +" organisasjon.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Bidra

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Installasjonsnotis" + +msgid "Support" +msgstr "Støtte" + +msgid "Documentation" +msgstr "Dokumentasjon" + +msgid "User guide" +msgstr "Brukerveiledning" + +msgid "Give back" +msgstr "Gi tilbake" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Hvis du ikke ser django CMS-logoen øverst, kontroller at\n" +" du har koblet static/cms-mappen til dine\n" +" statiske filer.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Du ser denne meldingen fordi du har\n" +" DEBUG = True i django-innstillingsfilen din og\n" +" ennå ikke har lagt til noen sider.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Velkommen til django CMS" + +msgid "Add Another" +msgstr "Legg til en side til" + +msgid "Back" +msgstr "Tilbake" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" +"Vennligst velg fra alternativene nedenfor for å fortsette til neste steg." + +msgid "Next" +msgstr "Neste" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Ukjent" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Side ikke funnet på %(domain)s " + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"En maltag kunne ikke finne siden med søkeargumenter `%(page_lookup)s\n" +"`. Adressen til forespørselen var: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "To kolonner" + +msgid "Three columns" +msgstr "Tre kolonner" + +msgid "username" +msgstr "brukernavn" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "Påkrevd. 300 eller færre tegn. Bokstaver, tall og @/./+/-/_ tegn" + +msgid "Enter a valid username." +msgstr "Tast inn et gyldig brukernavn." + +msgid "email address" +msgstr "mail til" + +msgid "staff status" +msgstr "ansattstatus" + +msgid "Designates whether the user can log into this admin site." +msgstr "Kan brukeren logge inn på dette admin-nettstedet?" + +msgid "active" +msgstr "aktiv" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Skal denne brukeren betraktes som aktiv? Fjern denne haken i stedet for å " +"slette kontoer." + +msgid "users" +msgstr "brukere" + +msgid "Title Extension" +msgstr "Tittelutvidelse" + +msgid "Page Extension" +msgstr "Sideutvidelse" + +msgid "object ID" +msgstr "objekt-ID" + +msgid "Example1 App" +msgstr "Example1-app" + +msgid "MultilingualExample1 App" +msgstr "MultilingualExample1-app" + +msgid "Example1" +msgstr "Eksempel1" + +msgid "Examples" +msgstr "Eksempler" + +msgid "Extra Context" +msgstr "Ekstra innhold" + +msgid "Articles" +msgstr "Artikler" + +msgid "Sample App" +msgstr "Demonstrasjons-app" + +msgid "Sample App with config" +msgstr "Eksempelapp med konfigurasjon" + +msgid "Sample App with excluded permissions" +msgstr "Eksempelapp med ekskluderte rettigheter" + +msgid "Sample App 2" +msgstr "Demonstrasjons-app 2" + +msgid "Sample App 3" +msgstr "Sample App 3" + +msgid "Sample App Without Landing Page" +msgstr "Eksempelapp uten landingsside" + +msgid "Namespaced App" +msgstr "Applikasjon med navneområde" + +msgid "Parent app" +msgstr "Foreldreapp" + +msgid "Child app" +msgstr "Underapp" + +msgid "Variable urls-menus App" +msgstr "Variabel urls-menus-app" + +msgid "sample root page" +msgstr "demo-grunnside" + +msgid "sample settings page" +msgstr "demo-innstillingsside" + +msgid "sample account page" +msgstr "demo-kontoside" + +msgid "sample my profile page" +msgstr "demo-profilside" + +msgid "Static Menu" +msgstr "Statisk Meny" + +msgid "Static Menu2" +msgstr "Statisk Meny2" + +msgid "Static Menu3" +msgstr "Statisk Meny3" + +msgid "Static Menu4" +msgstr "Statisk Meny4" + +msgid "Category" +msgstr "Kategori" + +msgid "Categories" +msgstr "Kategorier" + +msgid "Add Category" +msgstr "Ny kategori" + +msgid "^account/$" +msgstr "^konto/$" + +msgid "Change Category" +msgstr "Endre Kategori" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Takk for at du brukte litt kvalitetstid på nettstedet i dag." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Arv mal med nærmeste stamfar" + +msgid "UserSettings" +msgstr "Brukerinstillinger" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Legg til plugin i plassholderen \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Legg til plugin i %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Enkelt plassholder" + +msgid "CMS - your user account was created." +msgstr "CMS - din brukerkonto ble opprettet." + +msgid "CMS - your user account was changed." +msgstr "CMS - din brukerkonto ble endret" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" +"Denne plassholderen har allerede maksimalt antall programtillegg (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Denne plassholderen har allerede maksimalt antall (%(limit)s) av tillatte " +"programtillegg %(plugin_name)s." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Finner ikke den angitte CMS_REQUEST_IP_RESOLVER-modulen: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Finner ikke den angitte CMS_REQUEST_IP_RESOLVER-funksjonen: \"{0}\" i " +"modulen \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Lag en ny %s instans." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "En veiviser er allerede registrert for modellen: %s" diff --git a/cms/locale/nb/LC_MESSAGES/djangojs.po b/cms/locale/nb/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..1674b930 --- /dev/null +++ b/cms/locale/nb/LC_MESSAGES/djangojs.po @@ -0,0 +1,26 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Kim Silkebækken , 2014 +# Kim Silkebækken , 2014 +# Sindre Myren , 2011 +# Sindre Myren , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Sindre Myren , 2011\n" +"Language-Team: Norwegian Bokmål (http://app.transifex.com/divio/django-cms/language/nb/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nb\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Er du sikker på at du vil endre fane uten å lagre siden først?" diff --git a/cms/locale/nl/LC_MESSAGES/django.po b/cms/locale/nl/LC_MESSAGES/django.po new file mode 100644 index 00000000..3cedeac4 --- /dev/null +++ b/cms/locale/nl/LC_MESSAGES/django.po @@ -0,0 +1,1764 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# kurdyma , 2023 +# Koen Molenaar , 2025 +# 9b534940ba88da102a8b2023ae8b0a5c_833de33 <6eff1839cb13e50fd6e97f7bd38c9dda_152118>, 2025 +# Evelijn Saaltink , 2026 +# Fabian Braun , 2026 +# Stefan van den Eertwegh , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Stefan van den Eertwegh , 2026\n" +"Language-Team: Dutch (https://app.transifex.com/divio/teams/58664/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "Alle" + +msgid "Copy permissions" +msgstr "Kopieer rechten" + +msgid "Slug" +msgstr "Slug" + +msgid "The part of the title that is used in the URL" +msgstr "Het gedeelte van de titel dat gebruikt wordt voor de URL" + +msgid "Page type" +msgstr "Paginatype" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Paginatypes" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Overschrijf URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Laat dit veld leeg als het standaard-pad gebruikt moet worden." + +msgid "Start typing..." +msgstr "Begin met typen..." + +msgid "menu visibility" +msgstr "menu zichtbaarheid" + +msgid "limit when this page is visible in the menu" +msgstr "beperk wanneer deze pagina zichtbaar is in het menu" + +msgid "X Frame Options" +msgstr "X Frame Opties" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" +"Ob diese Seite von anderen Seiten oder Websites eingebunden werden kann" + +msgid "URL options" +msgstr "URL opties" + +msgid "Menu options" +msgstr "Menu opties" + +msgid "Headers" +msgstr "Headers" + +msgid "Application" +msgstr "Applicatie" + +msgid "Hook application to this page." +msgstr "Koppel een applicatie aan deze pagina." + +msgid "Application configurations" +msgstr "Applicatieconfiguraties" + +msgid "A page with this reverse URL id exists already." +msgstr "Er bestaat al een pagina met dit omgekeerde URL kenmerk." + +msgid "Invalid application config value" +msgstr "Ongeldig toepassingsconfiguratiewaarde" + +msgid "An application instance using this configuration already exists." +msgstr "Een applicatie instantie met deze configuratie bestaat al." + +msgid "An application instance with this name already exists." +msgstr "Een applicatie instantie met deze naam bestaat al." + +msgid "You can't move the home page inside another page" +msgstr "Je kan de startpagina niet binnen een andere pagina plaatsen" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Je kunt niet twee pagina's met dezelfde slug op hetzelfde paginaniveau " +"hebben. Wijzig de slug van een van de pagina's voordat je opnieuw probeert " +"te verplaatsen." + +msgid "Yes" +msgstr "Ja" + +msgid "No" +msgstr "Nee" + +msgid "user" +msgstr "gebruiker" + +msgid "can_view" +msgstr "kan_bekijken" + +msgid "Add" +msgstr "Toevoegen" + +msgid "Change" +msgstr "Aanpassen" + +msgid "Delete" +msgstr "Verwijderen" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Gebruikers kunnen geen pagina aanmaken zonder toestemming om de pagina aan " +"te passen. Bewerkpermissies vereist." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Gebruikers kunnen geen pagina verwijderen zonder toestemming om de pagina " +"aan te passen. Bewerkpermissies vereist." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Gebruikers kunnen geen permissies van de pagina aanpassen zonder toestemming" +" om de pagina aan te passen. Bewerkpermissies vereist." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Gebruikers kunnen geen permissies van de pagina verwijderen zonder " +"toestemming om de pagina aan te passen. Bewerkpermissies vereist." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Gebruikers kunnen geen permissies van de pagina aanmaken zonder toestemming " +"om de aangemaakt permissie aan te passen. Bewerkpermissies vereist." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Gebruikers kunnen geen permissies van de pagina verwijderen zonder " +"toestemming om de permissies aan te passen. Bewerkpermissies vereist." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Ongeldig plugin type '%s'" + +msgid "Language must be set to a supported language!" +msgstr "De taal moet worden ingesteld op een ondersteunde taal!" + +msgid "Parent plugin language must be same as language!" +msgstr "De 'parent plugin taal' moet hetzelfde zijn als 'taal'!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Parent plugin placeholder moet hetzelfde zijn als placeholder!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Plugin positie moet groter zijn dan %(position)d" + +msgid "Translations" +msgstr "Vertalingen" + +msgid "Advanced Settings" +msgstr "Geavanceerde instellingen" + +msgid "The page is not eligible to be home." +msgstr "De pagina is niet geschikt om de startpagina te zijn." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s-object met primaire sleutel %(key)r bestaat niet." + +msgid "error" +msgstr "fout" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Fout! Je hebt geen rechten om deze pagina te verplaatsen. Vernieuw de pagina" +" en probeer opnieuw" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Foutmelding! Je hebt geen rechten om deze pagina te kopiëren." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Foutmelding! De pagina die je probeert te plakken is niet vertaald in een " +"van de talen geconfigureerd door de doelsite." + +msgid "You do not have permission to edit this page" +msgstr "U heeft geen toestemming om deze pagina te bewerken." + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(om dit te wijzigen, maak eerst de momenteel gepubliceerde versie van deze " +"pagina ongepubliceerd)" + +msgid "Add Translation" +msgstr "Voeg vertaling toe" + +msgid "Add Page Copy" +msgstr "Kopie van pagina toevoegen" + +msgid "New sub page" +msgstr "Nieuwe subpagina" + +msgid "New page" +msgstr "Nieuwe pagina" + +msgid "Database error" +msgstr "Databasefout" + +msgid "Template not valid" +msgstr "Template ongeldig" + +msgid "Placeholder selection not valid" +msgstr "Placeholderselectie ongeldig" + +msgid "The template was successfully changed" +msgstr "Het template was succesvol veranderd" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Placeholder '%s' bestaat niet in de doeltaal" + +msgid "You do not have permission to copy these plugins." +msgstr "U heeft geen toestemming om deze plugins te kopiëren." + +msgid "You do not have permission to delete this page" +msgstr "Je hebt geen rechten om deze pagina te verwijderen" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Titel en plugins voor de taal %(language)s zijn verwijderd" + +msgid "Public content" +msgstr "Publieke content" + +msgid "Empty" +msgstr "Leeg" + +msgid "Create Content" +msgstr "Content maken" + +msgid "View restriction" +msgstr "Bekijk beperking" + +msgid "View restrictions" +msgstr "Bekijk beperkingen" + +#, python-format +msgid "Field %s not found" +msgstr "Veld %s is niet gevonden" + +msgid "You do not have permission to edit this item" +msgstr "U heeft geen toestemming om dit item te bewerken." + +msgid "You do not have permission to add a plugin" +msgstr "U heeft geen toestemming om een plugin toe te voegen." + +msgid "You do not have permission to copy this placeholder." +msgstr "U heeft geen toestemming om deze placeholder te kopiëren." + +msgid "Plugin not found" +msgstr "Plugin niet gevonden" + +msgid "You do not have permission to edit this plugin" +msgstr "U heeft geen toestemming om deze plugins te bewerken." + +msgid "You have no permission to paste this plugin" +msgstr "U heeft geen toestemming om deze plugin te plakken" + +msgid "You have no permission to paste this placeholder" +msgstr "U hebt geen toestemming om deze placeholder te plakken" + +msgid "You have no permission to move this plugin" +msgstr "U heeft geen toestemming om deze plugin te verplaatsen." + +msgid "You have no permission to cut this plugin" +msgstr "U heeft geen toestemming om deze plugin te knippen" + +msgid "You do not have permission to delete this plugin" +msgstr "U heeft geen toestemming om deze plugin te verwijderen." + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "De %(name)s plugin \"%(obj)s\" is succesvol verwijderd." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Kan %(name)s niet verwijderen" + +msgid "Are you sure?" +msgstr "Weet je het zeker?" + +msgid "You do not have permission to clear this placeholder" +msgstr "U heeft geen toestemming de placeholder leeg te maken." + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "De placeholder \"%(obj)s\" is succesvol leeggemaakt." + +msgid "placeholder" +msgstr "placeholder" + +msgid "Page permissions" +msgstr "Pagina-rechten" + +msgid "User & Group permissions" +msgstr "Gebruikers- & groepsrechten" + +msgid "Page permissions management" +msgstr "Beheer paginarechten" + +msgid "Actions" +msgstr "Acties" + +msgid "Empty content" +msgstr "Content legen" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "%(object_name)s Eigenschappen" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Maak nieuw %(object_name)s" + +msgid "Add content" +msgstr "Content aanmaken" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Content voor de huidige taal is veranderd. Klik \"Annuleer\" om terug te " +"gaan naar het formulier en wijzigingen opslaan. Klik \"OK\" om wijzigingen " +"te annuleren." + +#, python-format +msgid "Add %(language)s content" +msgstr "%(language)s content aanmaken" + +msgid "Preview" +msgstr "Voorbeeld" + +msgid "Settings" +msgstr "Instellingen" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Ongeldige taal %(value)s. Dit formulier kan niet worden verwerkt. Probeer de" +" taal te wijzigen." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Geen geregistreerde apphook \"%r\" gevonden" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Placeholder" + +msgid "Create" +msgstr "Maken" + +msgid "Edit" +msgstr "Bewerken" + +msgid "Structure" +msgstr "Structuur" + +msgid "Content" +msgstr "Inhoud" + +msgid "Sites" +msgstr "Sites" + +msgid "Admin Sites" +msgstr "Beheer sites" + +msgid "Administration" +msgstr "Beheer" + +msgid "User settings" +msgstr "Gebruikersinstellingen" + +msgid "Clipboard..." +msgstr "Klembord..." + +msgid "Clear clipboard" +msgstr "Klembord leeg maken" + +msgid "Disable toolbar" +msgstr "De werkbalk uitzetten" + +msgid "Shortcuts..." +msgstr "Sneltoetsen" + +msgid "Users" +msgstr "Gebruikers" + +#, python-format +msgid "Logout %s" +msgstr "%s afmelden" + +msgid "Logout" +msgstr "Uitloggen" + +msgid "Language" +msgstr "Taal" + +msgid "Delete Translation" +msgstr "Verwijder vertaling" + +msgid "Copy all plugins" +msgstr "Kopieer alle plugins" + +#, python-format +msgid "from %s" +msgstr "van %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Weet u zeker dat u alle plugins van %s wil kopiëren?" + +msgid "Pages" +msgstr "Pagina's" + +msgid "Page" +msgstr "Pagina" + +msgid "Create Page" +msgstr "Maak pagina " + +msgid "New Page" +msgstr "Nieuwe pagina" + +msgid "New Sub Page" +msgstr "Nieuwe subpagina" + +msgid "Duplicate this Page" +msgstr "Deze pagina dupliceren" + +msgid "Page settings" +msgstr "Pagina instellingen" + +msgid "Advanced settings" +msgstr "Geavanceerde instellingen" + +msgid "Templates" +msgstr "Sjablonen" + +msgid "Placeholders" +msgstr "Placeholders" + +msgid "Hide in navigation" +msgstr "Verberg in navigatie" + +msgid "Display in navigation" +msgstr "Laat zien in navigatie" + +msgid "Delete page" +msgstr "Pagina verwijderen" + +msgid "Create a new page next to the current page." +msgstr "Maak een nieuwe pagina naast de huidige pagina." + +msgid "Create a page below the current page." +msgstr "Maak een nieuwe pagina onder de huidige pagina." + +msgid "Select a valid site" +msgstr "Selecteer een geldige site" + +msgid "Select a valid page" +msgstr "Selecteer een geldige pagina" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"Pagina %(conflict_page)s heeft dezelfde url '%(url)s' als huidige pagina " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"Pagina %(conflict_page)s heeft dezelfde url '%(url)s' als de huidige pagina." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Optioneel. Indien opgegeven wordt deze automatisch toegevoegd in een nieuwe " +"tekst plugin." + +msgid "Provide a title for the new page." +msgstr "Geef een titel op voor de nieuwe pagina." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "Laat leeg voor een automatische slug, of overschrijf zoals benodigd." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "Kan niet automatisch slug aanmaken. Probeer aub eenzelfde handmatig." + +msgid "Please provide a valid slug." +msgstr "Probeer aub een geldige slug." + +msgid "You don't have the permissions required to add a page." +msgstr "Je hebt niet de benodigde rechten om een pagina toe te voegen." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "positie" + +msgid "language" +msgstr "taal" + +msgid "plugin_name" +msgstr "pluginnaam" + +msgid "creation date" +msgstr "datum aangemaakt" + +msgid "can edit" +msgstr "kan bewerken" + +msgid "can add" +msgstr "kan toevoegen" + +msgid "can delete" +msgstr "kan verwijderen" + +msgid "can change advanced settings" +msgstr "kan geavanceerde instellingen aanpassen" + +msgid "can publish" +msgstr "kan publiceren" + +msgid "can change permissions" +msgstr "kan rechten aanpassen" + +msgid "can move" +msgstr "kan verplaatsen" + +msgid "view restricted" +msgstr "toegang tot view beperkt" + +msgid "can recover pages" +msgstr "kan pagina's herstellen" + +msgid "group" +msgstr "groep" + +msgid "sites" +msgstr "websites" + +msgid "created by" +msgstr "aangemaakt door" + +msgid "changed by" +msgstr "bewerkt door" + +msgid "publication date" +msgstr "publicatiedatum" + +msgid "publication end date" +msgstr "datum einde publicatie" + +msgid "in navigation" +msgstr "in navigatie" + +msgid "soft root" +msgstr "schijn-oorsprong" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "gekoppeld menu" + +msgid "template" +msgstr "sjabloon" + +msgid "login required" +msgstr "inloggen vereist" + +msgid "application" +msgstr "applicatie" + +msgid "application instance name" +msgstr "applicatie instance naam" + +msgid "site" +msgstr "website" + +msgid "Grant on" +msgstr "Toestemming aan" + +msgid "page" +msgstr "pagina" + +msgid "no limit set" +msgstr "geen limiet gezet" + +msgid "for logged in users only" +msgstr "alleen voor aangemelde gebruikers" + +msgid "for anonymous users only" +msgstr "alleen voor anonieme gebruikers" + +msgid "Inherit from parent page" +msgstr "Van bovenliggende pagina erven" + +msgid "Deny" +msgstr "Ontzeggen" + +msgid "Only this website" +msgstr "Alleen deze website" + +msgid "Allow" +msgstr "Toestaan" + +msgid "title" +msgstr "titel" + +msgid "The default title" +msgstr "De standaard-titel" + +msgid "Page Title" +msgstr "Pagina-titel" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Overschrijft wat wordt weergegeven in de titelbalk van de browser of in " +"bladwijzers" + +msgid "Menu Title" +msgstr "Menu-titel" + +msgid "Overwrite what is displayed in the menu" +msgstr "Overschrijf wat wordt weergegeven in het menu" + +msgid "Description meta tag" +msgstr "Meta tag Omschrijving" + +msgid "A description of the page used by search engines." +msgstr "Een omschrijving van de pagina die door zoekmachines wordt gebruikt." + +msgid "redirect" +msgstr "doorsturen" + +msgid "Redirects to this URL." +msgstr "Stuurt door naar deze URL." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Alle ouders zullen niet worden weergegeven in de navigatie" + +msgid "The template used to render the content." +msgstr "Het sjabloon dat gebruikt wordt om de inhoud weer te geven." + +msgid "page content" +msgstr "pagina content" + +msgid "page contents" +msgstr "pagina inhoudelijk" + +msgid "default" +msgstr "standaard" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Een unieke identificatie die gebruikt wordt door de page_url templatetag " +"voor koppelingen naar deze pagina" + +msgid "Mark this page as a page type" +msgstr "Markeer deze pagina als een paginatype" + +msgid "pages" +msgstr "pagina's" + +msgid "No available title" +msgstr "Titel nicht verfügbar" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Pad" + +msgid "Current page" +msgstr "Huidige pagina" + +msgid "Page children (immediate)" +msgstr "Direct onderliggende pagina's" + +msgid "Page and children (immediate)" +msgstr "Deze en direct onderliggende pagina's" + +msgid "Page descendants" +msgstr "Alle onderliggende pagina's" + +msgid "Page and descendants" +msgstr "Deze en alle onderliggende pagina's" + +msgid "on page level" +msgstr "op pagina-niveau" + +msgid "frontend view restriction" +msgstr "beperking van toegang tot view door frontend" + +msgid "Please select user or group." +msgstr "Selecteer een gebruiker of groep." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Gebruikers kunnen geen pagina publiceren zonder toestemming om de pagina aan" +" te passen. Bewerkpermissies vereist." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Gebruikers kunnen geen geavanceerde instellingen op een pagina aanpassen " +"zonder toestemming om de pagina aan te passen. Bewerkpermissies vereist." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Gebruikers kunnen geen instellingen van de pagina zonder toestemming om de " +"pagina aan te passen. Bewerkpermissies vereist." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Gebruikers kunnen geen pagina verplaatsen zonder toestemming om de pagina " +"aan te passen. Bewerkpermissies vereist." + +msgid "can recover any deleted page" +msgstr "kan iedere verwijderde pagina herstellen" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "Als niets gekozen is, heeft de gebruiker rechten voor alle websites." + +msgid "Page global permission" +msgstr "Globaal pagina-recht" + +msgid "Pages global permissions" +msgstr "Globale pagina-rechten" + +msgid "Page permission" +msgstr "Pagina-rechten" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Om het recht te hebben pagina's toe te voegen, is ook toegang nodig tot de " +"kinderen (of afstammelingen), anders kan de toegevoegde pagina niet door " +"zijn maker worden aangepast." + +msgid "User (page)" +msgstr "Gebruiker (pagina)" + +msgid "Users (page)" +msgstr "Gebruikers (pagina)" + +msgid "User group (page)" +msgstr "Gebruikersgroep (pagina)" + +msgid "User groups (page)" +msgstr "Gebruikersgroepen (pagina)" + +msgid "slot" +msgstr "plek" + +msgid "width" +msgstr "breedte" + +msgid "Edit object" +msgstr "Object bewerken" + +msgid "This is an external placeholder" +msgstr "Dit is een externe placeholder" + +msgid "plugin" +msgstr "plugin" + +msgid "plugins" +msgstr "plugins" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "De taal voor de beheer interface en werkbalk" + +msgid "user setting" +msgstr "gebruikers instelling" + +msgid "user settings" +msgstr "gebruikers instellingen" + +msgid "by template" +msgstr "per sjabloon" + +msgid "by code" +msgstr "per code" + +msgid "static placeholder name" +msgstr "Statische placeholder naam" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Beschrijvende naam om statische placeholder te identificeren. Wordt niet " +"getoond aan gebruikers." + +msgid "placeholder code" +msgstr "placeholder code" + +msgid "To render the static placeholder in templates." +msgstr "Om de statische placeholder in sjablonen te renderen." + +msgid "placeholder content" +msgstr "placeholder inhoud" + +msgid "creation_method" +msgstr "creation_method" + +msgid "static placeholder" +msgstr "statische placeholder" + +msgid "static placeholders" +msgstr "statische placeholders" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Er bestaat al een statische placeholder met dezelfde site en code" + +msgid "Advanced options" +msgstr "Geavanceerde opties" + +msgid "Generic" +msgstr "Generiek" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "De %(name)s \"%(obj)s\" is succesvol aangepast" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "Er zijn geen verdere opties meer voor deze plugin. Klik op bewaren." + +msgid "Moved" +msgstr "Verplaatst" + +msgid "Changed" +msgstr "Aangepast" + +msgid "Deleted" +msgstr "Verwijderd" + +msgid "Added Page Translation" +msgstr "Toegevoegde Pagina Vertaling" + +msgid "Changed Page Translation" +msgstr "Gewijzigde Pagina Vertaling" + +msgid "Deleted Page Translation" +msgstr "Verwijderde Pagina Vertaling" + +msgid "Added Plugin" +msgstr "Plugin Aangemaakt" + +msgid "Changed Plugin" +msgstr "Gewijzigde Plugin" + +msgid "Moved Plugin" +msgstr "Verplaatste Plugin" + +msgid "Deleted Plugin" +msgstr "Verwijderde Plugin" + +msgid "Cut Plugin" +msgstr "Knip plugin" + +msgid "Paste Plugin" +msgstr "Plak Plugin" + +msgid "Paste to Placeholder" +msgstr "Plak naar Placeholder" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Toegevoegde plugins naar placeholder van klembord" + +msgid "Cleared Placeholder" +msgstr "Placeholder Gewist" + +msgid "Save" +msgstr "Opslaan" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" +"Sommige velden kunnen niet worden gewijzigd omdat ze alleen-lezen inhoud " +"zijn." + +#, python-format +msgid "Log in to administration here." +msgstr "Log hier in op de administratie." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Login-url: %(login_url)s" + +msgid "Username:" +msgstr "Gebruikersnaam:" + +msgid "Password:" +msgstr "Wachtwoord:" + +msgid "Add a page" +msgstr "Voeg een pagina toe" + +msgid "Change a page" +msgstr "Bewerk een pagina" + +msgid "Home" +msgstr "Voorpagina" + +msgid "View on site" +msgstr "Toon op website" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Herstel a.u.b. de fout hieronder." +msgstr[1] "Herstel a.u.b. de fouten hieronder." + +msgid "All permissions" +msgstr "Alle rechten" + +msgid "Loading..." +msgstr "Bezig met laden..." + +msgid "Save and continue editing" +msgstr "Opslaan en opnieuw bewerken" + +#, 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 das Objekt \"%(escaped_object)s\" " +"(%(object_name)s) löschen wollen? Folgende zugehörige Objekte werden " +"ebenfalls gelöscht:" + +msgid "Yes, I’m sure" +msgstr "Ja, ich bin sicher" + +msgid "No, take me back" +msgstr "Nein, bitte abbrechen" + +msgid "Summary" +msgstr "Zusammenfassung" + +msgid "User" +msgstr "Gebruiker" + +msgid "Group" +msgstr "Groep" + +msgid "Can edit" +msgstr "Kan bewerken" + +msgid "Can add" +msgstr "Kan toevoegen" + +msgid "Can delete" +msgstr "Kan verwijderen" + +msgid "Can publish" +msgstr "Kan publiceren" + +msgid "Can change permissions" +msgstr "Kan rechten aanpassen" + +msgid "Can move" +msgstr "Kan verplaatsen" + +msgid "Can view" +msgstr "Kan bekijken" + +msgid "(global)" +msgstr "(globaal)" + +msgid "(current)" +msgstr "(huidig)" + +msgid "Page doesn't inherit any permissions." +msgstr "Pagina erft geen rechten." + +msgid "Edit model" +msgstr "Wijzig model" + +msgid "Save as new" +msgstr "Opslaan als nieuw" + +msgid "Save and add another" +msgstr "Opslaan en nog een toevoegen" + +msgid "Copy" +msgstr "Kopieer" + +msgid "Cut" +msgstr "Knippen" + +msgid "Paste" +msgstr "Plakken" + +msgid "Set as home" +msgstr "Instellen als startpagina" + +msgid "is restricted" +msgstr "is beperkt" + +msgid "last change by" +msgstr "laatst bewerkt door" + +msgid "last change on" +msgstr "laatst gewijzigd op" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Lijst van pagina's" + +msgid "Search" +msgstr "Zoeken" + +msgid "Page Tree" +msgstr "Page Tree" + +msgid "Reset filter" +msgstr "Reset filter" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +"Herstel verwijderde %(name)s" + +msgid "Main Navigation" +msgstr "Hoofd navigatie" + +msgid "Options" +msgstr "Opties" + +msgid "Successfully moved" +msgstr "Succesvol verplaatst" + +msgid "Changes within the tree might require a refresh." +msgstr "" +"Veranderingen binnen de boomstructuur kunnen het nodig maken dat u de pagina" +" opnieuw laadt." + +msgid "Error:" +msgstr "Fout:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Deze pagina kan niet gekopieerd worden want er zit nog een applicatie aan " +"vast. Zie de pagina's geadvanceerde settings om de apphook te beheren." + +msgid "Are you sure you want to § this page?" +msgstr "Weet u zeker dat u deze pagina wilt §?" + +msgid "Reload" +msgstr "Herlaad" + +msgid "New node" +msgstr "Nieuwe node" + +msgid "nodes" +msgstr "nodes" + +msgid "View" +msgstr "View" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Er is nog geen %(object)s aanwezig.\n" +"
\n" +" Voeg %(object)s nu toe.\n" +" " + +msgid "Copy options" +msgstr "Kopieer-opties" + +msgid "Choose copy options" +msgstr "Kies kopieer-opties" + +msgid "Close" +msgstr "Sluiten" + +msgid "Legend" +msgstr "Legenda" + +msgid "In menu" +msgstr "In menu" + +msgid "Not in menu" +msgstr "Niet in menu" + +msgid "View page" +msgstr "Toon pagina" + +msgid "Softroot" +msgstr "Softroot" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Applicatie: %(apphook)s" + +msgid "in menu" +msgstr "in menu" + +msgid "not in menu" +msgstr "niet in menu" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Pagina settings (SHIFT klik voor geadvanceerde settings)" + +msgid "Permissions" +msgstr "Rechten" + +msgid "inherited" +msgstr "ererbt" + +msgid "This page has no preview!" +msgstr "Deze pagina heeft geen voorvertoning!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "Mogelijk biedt de bijgevoegde apphook geen inhoud voor de root." + +msgid "It is being redirected to:" +msgstr "Wordt doorverwezen naar:" + +msgid "Clipboard" +msgstr "Klembord" + +msgid "Add plugin" +msgstr "Voeg plugin toe" + +msgid "Copy all" +msgstr "Alles kopiëren" + +msgid "Copy from" +msgstr "Gekopieerd van " + +msgid "Empty all" +msgstr "Alles leegmaken" + +msgid "Filter plugins..." +msgstr "plugins filteren..." + +msgid "Expand all" +msgstr "Alles uitvouwen" + +msgid "Collapse all" +msgstr "Alles invouwen" + +msgid "You cannot add plugins to this plugin." +msgstr "Je kan geen plugins toevoegen aan deze plugin." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "Deze plugin can niet verplaatst worden buiten de bovenliggende plugin" + +msgid "Clipboard is empty." +msgstr "Klembord is leeg." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Deze plugin staat geen geneste plugins van dit type toe." + +msgid "This plugin cannot have nested plugins." +msgstr "Deze plugin kan geen geneste plugins bevatten." + +msgid "Highlight" +msgstr "Markeer" + +msgid "Available plugins" +msgstr "Beschikbare plugins" + +msgid "Toggle structure" +msgstr "Wissel structuur" + +msgid "Login" +msgstr "Login" + +msgid "Add plugin to" +msgstr "Voeg plugin toe aan" + +msgid "More" +msgstr "Meer" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Development versie; gebruikt django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Annuleren" + +msgid "The following error occurred:" +msgstr "De volgende fout is ontstaan:" + +msgid "Action successful." +msgstr "Actie geslaagd." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Weet je zeker dat je deze plugin wilt verwijderen?" + +msgid "Are you sure you want to publish this page?" +msgstr "Ben je er zeker van om deze pagina te publiceren?" + +msgid "Plugin will be added here" +msgstr "Plugin zal hier toegevoegd worden" + +msgid "You have unsaved changes." +msgstr "U heeft onbewaarde aanpassingen." + +msgid "Loading" +msgstr "Bezig met laden..." + +msgid "Are you sure you want to abandon these changes?" +msgstr "Weet u zeker dat u deze pagina wilt verlaten?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"Het formulier kon niet geladen worden. Check of de server correct loopt." + +msgid "Most used" +msgstr "Meest gebruikt" + +msgid "Shortcuts" +msgstr "Sneltoetsen" + +msgid "The page was changed in the meantime, reloading..." +msgstr "De pagina is ondertussen gewijzigd, herladen..." + +msgid "CMS-wide Shortcuts" +msgstr "CMS-brede Sneltoetsen" + +msgid "Bring up this help dialog" +msgstr "Haal deze help-dialoog omhoog" + +msgid "Close/cancel" +msgstr "Sluiten/annuleren" + +msgid "Toggle structure mode" +msgstr "Zet structuurmodus aan of uit" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Zet structuurmodus aan of uit en accentueer gehoverde plugin" + +msgid "Open \"Create\" dialog" +msgstr "Open \"Aanmaken\"-dialoog" + +msgid "Focus on Toolbar" +msgstr "Focus op toolbar" + +msgid "Focus on placeholders" +msgstr "Focus op placeholders" + +msgid "Move to next/previous element" +msgstr "Verplaats naar volgende/vorige element" + +msgid "Focus on plugins of placeholder" +msgstr "Focus op plugins van placeholder" + +msgid "Edit plugin" +msgstr "Plugin bewerken" + +msgid "Open actions menu" +msgstr "Actiemenu openen" + +msgid "Expand/collapse" +msgstr "Uitklappen/inklappen" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Inloggen mislukt. Controleer je gegevens en probeer nog " +"eens." + +msgid "Double-click to edit" +msgstr "Dubbelklik om te bewerken" + +msgid "Tap to edit" +msgstr "Aanraken om te wijzigen" + +msgid "Click to go back" +msgstr "Klik om terug te gaan" + +msgid "Click to go forward" +msgstr "Klik om verder te gaan" + +msgid "Minimize" +msgstr "Minimaliseer" + +msgid "Maximize" +msgstr "Maximaliseer" + +msgid "Placeholder not editable" +msgstr "Placeholder niet bewerkbaar" + +msgid "Drop a plugin here" +msgstr "Drop hier een plugin" + +msgid "Welcome to your new django CMS installation!" +msgstr "Welkom bij je nieuwe django CMS-installatie!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Versie %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Laten we samen iets geweldigs bouwen!" + +msgid "Please log in" +msgstr "Log in" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Voeg je eerste pagina toe\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Help met financieren

\n" +"

\n" +" Jouw financiering komt rechtstreeks ten goede aan het product, voornamelijk via het\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" Een snelle manier voor jou of je organisatie om te doneren is via\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Word lid

\n" +"

\n" +" De django CMS Association is een non-profitorganisatie die de ontwikkeling van\n" +" django CMS financiert en aanstuurt.\n" +"

\n" +"

\n" +" Je kunt lid worden als individu of als\n" +" organisatie.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Draag bij

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Installatie Aantekeningen" + +msgid "Support" +msgstr "Ondersteuning" + +msgid "Documentation" +msgstr "Documentatie" + +msgid "User guide" +msgstr "Gebruikershandleiding" + +msgid "Give back" +msgstr "Geef iets terug" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Als je niet het django CMS logo ziet bovenaan de pagina, zorg dan\n" +" dat je de static/cms folder aan je\n" +" static files. hebt gekoppeld.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Je ziet dit bericht omdat je\n" +" DEBUG = True in je django settings bestand hebt staan en\n" +" en je nog geen pagina's hebt toegevoegd.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Welkom bij django CMS" + +msgid "Add Another" +msgstr "Nog één toevoegen" + +msgid "Back" +msgstr "Terug" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" +"Kies een van de onderstaande opties om door te gaan naar de volgende stap." + +msgid "Next" +msgstr "Volgende" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Onbekend" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Pagina niet gevonden in %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Een template tag kan de pagina met opzoek argumenten `%(page_lookup)s\n" +"` niet vinden. De URL van het verzoek was: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Twee kolommen" + +msgid "Three columns" +msgstr "Drie kolommen" + +msgid "username" +msgstr "gebruikersnaam" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "Vereist. 300 of minder tekens. Letters, cijfers, en @/./+/-/_ tekens" + +msgid "Enter a valid username." +msgstr "Voer een geldige gebruikersnaam in." + +msgid "email address" +msgstr "mailto" + +msgid "staff status" +msgstr "stafstatus" + +msgid "Designates whether the user can log into this admin site." +msgstr "Geeft aan of de gebruiker zich kan aanmelden bij deze admin site." + +msgid "active" +msgstr "actief" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Geeft aan of de gebruiker als actief moet worden behandeld. Deselecteer dit " +"in plaats van accounts te verwijderen." + +msgid "users" +msgstr "gebruikers" + +msgid "Title Extension" +msgstr "Titel extensie" + +msgid "Page Extension" +msgstr "Pagina extensie" + +msgid "object ID" +msgstr "object ID " + +msgid "Example1 App" +msgstr "Voorbeeld1 App" + +msgid "MultilingualExample1 App" +msgstr "MeertalenVoorbeeld1 App" + +msgid "Example1" +msgstr "Voorbeeld1" + +msgid "Examples" +msgstr "Voorbeelden" + +msgid "Extra Context" +msgstr "Extra context" + +msgid "Articles" +msgstr "Artikelen" + +msgid "Sample App" +msgstr "Voorbeeldapplicatie" + +msgid "Sample App with config" +msgstr "Voorbeeldapplicatie met configuratie" + +msgid "Sample App with excluded permissions" +msgstr "Voorbeeld App met uitgesloten permissies" + +msgid "Sample App 2" +msgstr "Voorbeeld app 2" + +msgid "Sample App 3" +msgstr "Voorbeeld app 2" + +msgid "Sample App Without Landing Page" +msgstr "Voorbeeldapplicatie zonder landingspagina" + +msgid "Namespaced App" +msgstr "Namespaced App" + +msgid "Parent app" +msgstr "Bovenliggende app" + +msgid "Child app" +msgstr "Onderliggende app" + +msgid "Variable urls-menus App" +msgstr "Variable urls-menus App" + +msgid "sample root page" +msgstr "voorbeeld hoofdpagina" + +msgid "sample settings page" +msgstr "voorbeeld instellingenpagina" + +msgid "sample account page" +msgstr "voorbeeld accountpagina" + +msgid "sample my profile page" +msgstr "voorbeeld profielpagina" + +msgid "Static Menu" +msgstr "Statisch menu" + +msgid "Static Menu2" +msgstr "Statisch menu 2" + +msgid "Static Menu3" +msgstr "Statisch Menu3" + +msgid "Static Menu4" +msgstr "Statisch menu" + +msgid "Category" +msgstr "Categorie" + +msgid "Categories" +msgstr "Categorieën" + +msgid "Add Category" +msgstr "Categorie toevoegen" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Categorie wijzigen" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Bedankt dat u wat kostbare tijd op de website hebt doorgebracht." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Erf het sjabloon van de bovenliggende pagina" + +msgid "UserSettings" +msgstr "GebruikersInstellingen" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Voeg plugin toe aan placeholder \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Voeg plugin toe aan %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Enkele placeholder" + +msgid "CMS - your user account was created." +msgstr "CMS - je gebruikersaccount is aangemaakt." + +msgid "CMS - your user account was changed." +msgstr "CMS - je gebruikersaccount is veranderd." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Deze placeholder bevat al het maximale aantal plugins (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Deze placeholder bevat al het maximale aantal (%(limit)s) van toegestane " +"%(plugin_name)s plugins." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" +"Kan de gespecificeerde CMS_REQUEST_IP_RESOLVER module niet vinden: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Kan de gespecificeerde CMS_REQUEST_IP_RESOLVER functie niet vinden: \"{0}\" " +"in module \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Maak een nieuwe instantie van %s." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Er is al een wizard geregistreerd voor model: %s" diff --git a/cms/locale/nl/LC_MESSAGES/djangojs.po b/cms/locale/nl/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..9f4f6754 --- /dev/null +++ b/cms/locale/nl/LC_MESSAGES/djangojs.po @@ -0,0 +1,28 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# 9b534940ba88da102a8b2023ae8b0a5c_833de33 <6eff1839cb13e50fd6e97f7bd38c9dda_152118>, 2014 +# Chris Wesseling , 2011 +# Jacques de Hooge <>, 2012 +# kurdyma , 2016 +# 9b534940ba88da102a8b2023ae8b0a5c_833de33 <6eff1839cb13e50fd6e97f7bd38c9dda_152118>, 2014 +# kurdyma , 2016 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: kurdyma , 2016\n" +"Language-Team: Dutch (http://app.transifex.com/divio/django-cms/language/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Weet u zeker dat u van tabblad wilt wisselen zonder eerst de pagina op te slaan?" diff --git a/cms/locale/no/LC_MESSAGES/django.po b/cms/locale/no/LC_MESSAGES/django.po new file mode 100644 index 00000000..e5208ddf --- /dev/null +++ b/cms/locale/no/LC_MESSAGES/django.po @@ -0,0 +1,1646 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Eirik Krogstad , 2025 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Norwegian (https://app.transifex.com/divio/teams/58664/no/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: no\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "Alle" + +msgid "Copy permissions" +msgstr "Kopier rettigheter" + +msgid "Slug" +msgstr "Adressetittel" + +msgid "The part of the title that is used in the URL" +msgstr "Delen av tittelen som brukes i adressen" + +msgid "Page type" +msgstr "Sidetype" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Overstyr adresse" + +msgid "Keep this field empty if standard path should be used." +msgstr "La dette feltet være tomt hvis standardsti skal brukes" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "synlighet i meny" + +msgid "limit when this page is visible in the menu" +msgstr "begrens når denne siden er synlig i menyen" + +msgid "X Frame Options" +msgstr "X Frame-innstillinger" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "Applikasjon" + +msgid "Hook application to this page." +msgstr "Koble applikasjon til denne siden" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "En side med denne reversadresse-IDen finnes allerede." + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "bruker" + +msgid "can_view" +msgstr "kan vise" + +msgid "Add" +msgstr "Legg til" + +msgid "Change" +msgstr "Endre" + +msgid "Delete" +msgstr "Slett" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "Språket må settes til et støttet språk!" + +msgid "Parent plugin language must be same as language!" +msgstr "Forelder inplugg språk må være det samme språk!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "Avanserte instillinger" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Objektet %(name)s med primærnøkkel %(key)r finnes ikke." + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Feil! Du har ikke rettigheter til å flytte denne siden. Prøv å laste siden " +"på nytt" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "Du har ikke tillatelse til å redigere denne siden" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "Databasefeil" + +msgid "Template not valid" +msgstr "Ugyldig mal" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "Redigering av mal ble godkjent" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "Du har ikke tillatelse til å kopiere disse utvidelsene." + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Tittel og utvidelser med språk %(language)s ble slettet" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "Restriksjon for visning" + +msgid "View restrictions" +msgstr "Restriksjoner for visning" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "Du har ikke tillatelse til å redigere denne siden" + +msgid "You do not have permission to add a plugin" +msgstr "Du har ikke tillatelse til å legge til en utvidelse" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "Du har ikke tillatelse til å redigere denne utvidelsen" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "Du har ikke tillatelse til å flytte denne utvidelsen" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "Du har ikke tillatelse til å slette denne utvidelsen" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "%(name)s-utvidelsen \"%(obj)s\" ble slettet." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Kan ikke slette %(name)s" + +msgid "Are you sure?" +msgstr "Er du sikker?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Du har ikke tillatelse til å tømme denne plassholderen" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Plassholderen \"%(obj)s\" ble tømt." + +msgid "placeholder" +msgstr "plassholder" + +msgid "Page permissions" +msgstr "Siderettigheter" + +msgid "User & Group permissions" +msgstr "Bruker- og grupperettigheter" + +msgid "Page permissions management" +msgstr "Kontroll av siderettigheter" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "Forhåndsvis" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Plassholder" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "Rediger" + +msgid "Structure" +msgstr "Struktur" + +msgid "Content" +msgstr "Innhold" + +msgid "Sites" +msgstr "Nettsider" + +msgid "Admin Sites" +msgstr "Administrasjonsnettsider" + +msgid "Administration" +msgstr "Administrasjon" + +msgid "User settings" +msgstr "Brukerinnstillinger" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "Brukere" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "Logg ut" + +msgid "Language" +msgstr "Språk" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "Sider" + +msgid "Page" +msgstr "Side" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "Sideinnstillinger" + +msgid "Advanced settings" +msgstr "Avanserte innstillinger" + +msgid "Templates" +msgstr "Maler" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "Skjul i navigasjon" + +msgid "Display in navigation" +msgstr "Vis i navigasjon" + +msgid "Delete page" +msgstr "Slett side" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "Velg et gyldig nettsted" + +msgid "Select a valid page" +msgstr "Velg en gyldig side" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "posisjon" + +msgid "language" +msgstr "språk" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "opprettelsesdato" + +msgid "can edit" +msgstr "kan redigere" + +msgid "can add" +msgstr "kan legge til" + +msgid "can delete" +msgstr "kan slette" + +msgid "can change advanced settings" +msgstr "kan endre avanserte instillinger" + +msgid "can publish" +msgstr "kan publisere" + +msgid "can change permissions" +msgstr "kan endre rettigheter" + +msgid "can move" +msgstr "kan flytte" + +msgid "view restricted" +msgstr "rekstriksjon for visning" + +msgid "can recover pages" +msgstr "kan gjenopprette sider" + +msgid "group" +msgstr "gruppe" + +msgid "sites" +msgstr "nettsteder" + +msgid "created by" +msgstr "opprettet av" + +msgid "changed by" +msgstr "endret av" + +msgid "publication date" +msgstr "publiseringsdato" + +msgid "publication end date" +msgstr "siste publiseringsdato" + +msgid "in navigation" +msgstr "i navigasjon" + +msgid "soft root" +msgstr "soft root" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "tilknyttet meny" + +msgid "template" +msgstr "mal" + +msgid "login required" +msgstr "krever innlogging" + +msgid "application" +msgstr "applikasjon" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "nettsted" + +msgid "Grant on" +msgstr "Godkjenn for" + +msgid "page" +msgstr "side" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "kun for innloggede brukere" + +msgid "for anonymous users only" +msgstr "kun for anonyme brukere" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "tittel" + +msgid "The default title" +msgstr "Standard tittel" + +msgid "Page Title" +msgstr "Sidetittel" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Overstyrer hva som vises på toppen av nettleseren din eller i bokmerker" + +msgid "Menu Title" +msgstr "Menytittel" + +msgid "Overwrite what is displayed in the menu" +msgstr "Overstyr hva som vises i menyen" + +msgid "Description meta tag" +msgstr "Metatag for beskrivelse" + +msgid "A description of the page used by search engines." +msgstr "En liste av stikkord noen ganger brukes av søkemotorer" + +msgid "redirect" +msgstr "videresend" + +msgid "Redirects to this URL." +msgstr "Videresendes til denne adressen" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Alle undernivå vil ikke vises i navigasjonen" + +msgid "The template used to render the content." +msgstr "Mal som brukes for å vise innholdet." + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "standard" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "sider" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "adressetittel" + +msgid "Path" +msgstr "Sti" + +msgid "Current page" +msgstr "Denne siden" + +msgid "Page children (immediate)" +msgstr "Sidens barn (like under)" + +msgid "Page and children (immediate)" +msgstr "Side og barn (like under)" + +msgid "Page descendants" +msgstr "Undernivå av side" + +msgid "Page and descendants" +msgstr "Side og undernivå" + +msgid "on page level" +msgstr "på sidenivå" + +msgid "frontend view restriction" +msgstr "restriksjon for offentlig visning" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "kan gjenopprette hvilken som helst slettet side" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "Hvis ingen er valgt har brukeren rettigheter til alle nettsteder." + +msgid "Page global permission" +msgstr "Globale siderettigheter" + +msgid "Pages global permissions" +msgstr "Globale siderettigheter" + +msgid "Page permission" +msgstr "Siderettighet" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Tillatelse for \"Legg til side\" krever også tilgang til barn, eller " +"undernivå, siden kan ellers ikke endres av den som opprettet den." + +msgid "User (page)" +msgstr "Bruker (side)" + +msgid "Users (page)" +msgstr "Brukere (side)" + +msgid "User group (page)" +msgstr "Brukergruppe (side)" + +msgid "User groups (page)" +msgstr "Brukergrupper (side)" + +msgid "slot" +msgstr "plass" + +msgid "width" +msgstr "bredde" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Språk for administrasjonsgrensesnitt og verktøylinje" + +msgid "user setting" +msgstr "brukerinnstilling" + +msgid "user settings" +msgstr "brukerinnstillinger" + +msgid "by template" +msgstr "etter mal" + +msgid "by code" +msgstr "etter kode" + +msgid "static placeholder name" +msgstr "statisk plassholder navn" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Beskrivende navn for å identifisere denne statiske plassholderen. Vises ikke" +" for brukere." + +msgid "placeholder code" +msgstr "plassholder kode" + +msgid "To render the static placeholder in templates." +msgstr "For å rendre den statiske plassholderen i maler." + +msgid "placeholder content" +msgstr "plassholder innhold" + +msgid "creation_method" +msgstr "skapelse_metode" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "Avanserte valg" + +msgid "Generic" +msgstr "Generisk" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "Lagre" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "Logg inn på administrasjonssiden her." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Innloggings-url: %(login_url)s" + +msgid "Username:" +msgstr "Brukernavn:" + +msgid "Password:" +msgstr "Passord:" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "Endre en side" + +msgid "Home" +msgstr "Hjem" + +msgid "View on site" +msgstr "Vis på nettside" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Vennligst rett opp feilen under" +msgstr[1] "Vennligst rett opp feilene under" + +msgid "All permissions" +msgstr "Alle rettigheter" + +msgid "Loading..." +msgstr "Laster..." + +msgid "Save and continue editing" +msgstr "Lagre og fortsett å redigere" + +#, 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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "Bruker" + +msgid "Group" +msgstr "Gruppe" + +msgid "Can edit" +msgstr "Kan redigere" + +msgid "Can add" +msgstr "Kan legge til" + +msgid "Can delete" +msgstr "Kan slette" + +msgid "Can publish" +msgstr "Kan publisere" + +msgid "Can change permissions" +msgstr "Kan endre rettigheter" + +msgid "Can move" +msgstr "Kan flytte" + +msgid "Can view" +msgstr "Kan vise" + +msgid "(global)" +msgstr "(global)" + +msgid "(current)" +msgstr "(aktiv)" + +msgid "Page doesn't inherit any permissions." +msgstr "Siden arver ingen rettigheter." + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "Lagre som ny" + +msgid "Save and add another" +msgstr "Lagre og legg til en til" + +msgid "Copy" +msgstr "Kopier" + +msgid "Cut" +msgstr "Klipp ut" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "Liste over sider" + +msgid "Search" +msgstr "Søk" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "Flytting vellykket" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "Kopieringsalternativer" + +msgid "Choose copy options" +msgstr "Velg kopieringsalternativer" + +msgid "Close" +msgstr "Lukk" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Applikasjon: %(apphook)s" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "Tillatelser" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "Kopier alle" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "Tøm alle" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "Tilgjengelige utvidelser" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "Logg inn" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "Avbryt" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "Er du sikker på at du vil slette denne utvidelsen?" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Innlogging feilet. Vennligst sjekk opplysningene dine og " +"prøv igjen." + +msgid "Double-click to edit" +msgstr "Dobbelt-klikk for å redigere" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "Slipp en utvidelse her" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "Legg til en side til" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Side ikke funnet på %(domain)s " + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"En maltag kunne ikke finne siden med søkeargumenter `%(page_lookup)s\n" +"`. Adressen til forespørselen var: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "e-postadresse" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "Tittel Utvidelse" + +msgid "Page Extension" +msgstr "Side Utvidelse" + +msgid "object ID" +msgstr "Objekt ID" + +msgid "Example1 App" +msgstr "Eksempel1 App" + +msgid "MultilingualExample1 App" +msgstr "FlerspråkligEksempel1 App" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "Ekstra innhold" + +msgid "Articles" +msgstr "Artikler" + +msgid "Sample App" +msgstr "Eksempel-app" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "Eksempelapplikasjon 2" + +msgid "Sample App 3" +msgstr "Eksempelapplikasjon 2" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "Navnrommet Applikasjon" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "rotside-eksempel" + +msgid "sample settings page" +msgstr "innstillingsside-eksempel" + +msgid "sample account page" +msgstr "kontoside-eksempel" + +msgid "sample my profile page" +msgstr "min profil-eksempel" + +msgid "Static Menu" +msgstr "Statisk meny" + +msgid "Static Menu2" +msgstr "Statisk meny2" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "Statisk meny" + +msgid "Category" +msgstr "Kategori" + +msgid "Categories" +msgstr "Kategorier" + +msgid "Add Category" +msgstr "Legg til kategori" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Endre kategori" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "Arv mal med nærmeste stamfar" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "CMS - din brukerkonto ble opprettet." + +msgid "CMS - your user account was changed." +msgstr "CMS - din brukerkonto ble endret." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Denne plassholderen har allerede maksimalt antall utvidelser (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Denne plassholderen har det maksimale antallet (%(limit)s) av tillatte " +"utvidelser %(plugin_name)s." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/no/LC_MESSAGES/djangojs.po b/cms/locale/no/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..873d5ac5 --- /dev/null +++ b/cms/locale/no/LC_MESSAGES/djangojs.po @@ -0,0 +1,25 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Eirik Krogstad , 2013 +# Sindre Myren , 2011 +# Sindre Myren , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Sindre Myren , 2011\n" +"Language-Team: Norwegian (http://app.transifex.com/divio/django-cms/language/no/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: no\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Er du sikker på at du vil skifte fane uten å lagre siden først?" diff --git a/cms/locale/pap/LC_MESSAGES/django.po b/cms/locale/pap/LC_MESSAGES/django.po new file mode 100644 index 00000000..87b98bc4 --- /dev/null +++ b/cms/locale/pap/LC_MESSAGES/django.po @@ -0,0 +1,2264 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Papiamento (https://app.transifex.com/divio/teams/58664/pap/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pap\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/pap/LC_MESSAGES/djangojs.po b/cms/locale/pap/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..fb16b325 --- /dev/null +++ b/cms/locale/pap/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Papiamento (http://app.transifex.com/divio/django-cms/language/pap/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pap\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/pl/LC_MESSAGES/django.po b/cms/locale/pl/LC_MESSAGES/django.po new file mode 100644 index 00000000..053d42ab --- /dev/null +++ b/cms/locale/pl/LC_MESSAGES/django.po @@ -0,0 +1,1762 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Grzegorz Biały , 2023 +# Maciej Kostuch , 2023 +# ar4s , 2025 +# Maciej Olko, 2026 +# filip klosowski , 2026 +# Piotr Wojcik , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Polish (https://app.transifex.com/divio/teams/58664/pl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" + +msgid "All" +msgstr "Wszystko" + +msgid "Copy permissions" +msgstr "Uprawnienia do kopiowania" + +msgid "Slug" +msgstr "Skrót" + +msgid "The part of the title that is used in the URL" +msgstr "Fragment tytułu, który jest używany w adresie URL" + +msgid "Page type" +msgstr "Typ strony" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Typy Stron" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Nadpisz URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Pozostaw to pole puste jeśli ma zostać użyta standardowa ścieżka" + +msgid "Start typing..." +msgstr "Zacznij pisać..." + +msgid "menu visibility" +msgstr "widoczność w menu" + +msgid "limit when this page is visible in the menu" +msgstr "określa kiedy strona jest widoczna w men" + +msgid "X Frame Options" +msgstr "Opcje X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" +"Określa, czy ta strona może być osadzana w innych stronach lub witrynach." + +msgid "URL options" +msgstr "Opcje adresu URL" + +msgid "Menu options" +msgstr "Opcje menu" + +msgid "Headers" +msgstr "Nagłówki" + +msgid "Application" +msgstr "Aplikacja" + +msgid "Hook application to this page." +msgstr "Podepnij aplikację do tej strony" + +msgid "Application configurations" +msgstr "Konfiguracja aplikacji" + +msgid "A page with this reverse URL id exists already." +msgstr "Inna strona z takim samym odwrotnym adresem url już istnieje." + +msgid "Invalid application config value" +msgstr "Nieprawidłowa wartość w konfiguracji aplikacji" + +msgid "An application instance using this configuration already exists." +msgstr "Instancja aplikacji z podaną konfiguracją już istnieje." + +msgid "An application instance with this name already exists." +msgstr "Instancja aplikacji z podaną nazwą już istnieje." + +msgid "You can't move the home page inside another page" +msgstr "Nie możesz przenieść strony głównej do innej strony" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Nie możesz mieć dwóch stron z takim samym skrótem na tym samym poziomie. " +"Zmień skrót jednej ze stron, zanim spróbujesz przenieść ją ponownie." + +msgid "Yes" +msgstr "Tak" + +msgid "No" +msgstr "Nie" + +msgid "user" +msgstr "użytkownik" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "Dodaj" + +msgid "Change" +msgstr "Zmień" + +msgid "Delete" +msgstr "Usuń" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Użytkownicy nie mogą stworzyć strony nie mając uprawnienia do zmieniania " +"stworzonej strony. Wymagana zmiana uprawnień." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Użytkownicy nie mogą usunąć strony bez uprawnienia do zmieniania strony. " +"Wymagana zmiana uprawnień." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Użytkownicy nie mogą ustalać uprawnień do strony bez uprawnień do zmieniania" +" strony. Wymagana zmiana uprawnień." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Użytkownicy nie mogą usuwać uprawnień strony bez uprawnień do zmiany strony." +" Wymagana zmiana uprawnień." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Użytkownicy nie mogą tworzyć uprawnień strony bez uprawnień do zmiany " +"stworzonego uprawnienia. Wymagana zmiana uprawnień." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Użytkownicy nie mogą usuwać uprawnień strony bez uprawnień do zmiany " +"uprawnień. Wymagana zmiana uprawnień." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Niepoprawny typ wtyczki '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Język musi być ustawiony na jeden z dostępnych!" + +msgid "Parent plugin language must be same as language!" +msgstr "Język wtyczki nadrzędnej musi być ten sam co i język!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Placeholder wtyczki nadrzędnej musi być taki sam jak placeholder!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Pozycja wtyczki musi być większa niż %(position)d" + +msgid "Translations" +msgstr "Tłumaczenia" + +msgid "Advanced Settings" +msgstr "Ustawienia zaawansowane" + +msgid "The page is not eligible to be home." +msgstr "Ta strona nie nadaje się na stronę główną." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Obiekt %(name)s o kluczu głównym %(key)r nie istnieje." + +msgid "error" +msgstr "błąd" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Błąd! Nie masz uprawnień do przeniesienia tej strony. Proszę odświeżyć " +"stronę." + +msgid "Error! You don't have permissions to copy this page." +msgstr "Błąd! Nie masz uprawnień do skopiowania tej strony." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Błąd! Strona którą wklejasz nie jest przetłumaczona na żaden z języków " +"skonfigurowanych przez stronę docelową." + +msgid "You do not have permission to edit this page" +msgstr "Nie masz uprawnień aby edytować tą stronę" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(aby to zmienić, najpierw cofnij publikację aktualnie opublikowanej wersji " +"tej strony)" + +msgid "Add Translation" +msgstr "Dodaj tłumaczenie" + +msgid "Add Page Copy" +msgstr "Dodaj Kopię Strony" + +msgid "New sub page" +msgstr "Nowa podstrona" + +msgid "New page" +msgstr "Nowa strona" + +msgid "Database error" +msgstr "Błąd bazy danych" + +msgid "Template not valid" +msgstr "Szablon jest nieaktualny" + +msgid "Placeholder selection not valid" +msgstr "Niepoprawny wybór placeholdera" + +msgid "The template was successfully changed" +msgstr "Zmiana szablonu zakończona powodzeniem" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Placeholder '%s' nie istnieje w języku docelowym" + +msgid "You do not have permission to copy these plugins." +msgstr "Nie masz uprawnień aby skopiować te wtyczki." + +msgid "You do not have permission to delete this page" +msgstr "Nie masz uprawnienia do usunięcia tej strony" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Tytuł i wtyczki dla języka %(language)s zostały usunięte" + +msgid "Public content" +msgstr "Zawartość publiczna" + +msgid "Empty" +msgstr "Pusty" + +msgid "Create Content" +msgstr "Utwórz zawartość" + +msgid "View restriction" +msgstr "Ograniczenie dostępu" + +msgid "View restrictions" +msgstr "Ograniczenia wyświetlania" + +#, python-format +msgid "Field %s not found" +msgstr "Pole %s nie zostało znalezione" + +msgid "You do not have permission to edit this item" +msgstr "Nie masz uprawnień do edycji tej pozycji" + +msgid "You do not have permission to add a plugin" +msgstr "Nie masz uprawnień aby dodać wtyczkę" + +msgid "You do not have permission to copy this placeholder." +msgstr "Nie masz uprawnień, aby skopiować ten placeholder" + +msgid "Plugin not found" +msgstr "Nie znaleziono wtyczki" + +msgid "You do not have permission to edit this plugin" +msgstr "Nie masz uprawnień aby edytować tę wtyczkę" + +msgid "You have no permission to paste this plugin" +msgstr "Nie masz uprawnień, by wkleić ten plugin" + +msgid "You have no permission to paste this placeholder" +msgstr "Nie masz uprawnień, by wkleić symbol zastępczy" + +msgid "You have no permission to move this plugin" +msgstr "Nie masz uprawnień aby przenieść ta wtyczkę" + +msgid "You have no permission to cut this plugin" +msgstr "Nie mas zuprawnień, aby wyciąć tę wtyczkę" + +msgid "You do not have permission to delete this plugin" +msgstr "Nie masz uprawnień aby usunąć tą wtyczkę" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr " %(name)s wtyczka \"%(obj)s\" została z powodzeniem usunięta." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Nie można usunąć %(name)s" + +msgid "Are you sure?" +msgstr "Czy na pewno?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Nie masz uprawnień aby wyczyścić ten magazyn" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Magazyn \"%(obj)s\" został z sukcesem oczyszczony." + +msgid "placeholder" +msgstr "magazyn" + +msgid "Page permissions" +msgstr "Uprawnienia strony" + +msgid "User & Group permissions" +msgstr "Uprawnienia grup i użytkowników" + +msgid "Page permissions management" +msgstr "Zarządzanie prawami dostępu do stron" + +msgid "Actions" +msgstr "Akcje" + +msgid "Empty content" +msgstr "Pusta zawartość" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Właściwości: %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Dodaj nowy obiekt %(object_name)s" + +msgid "Add content" +msgstr "Dodaj zawartość" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Zawartość dla bieżącego języka została zmieniona. Kliknij „Anuluj”, aby " +"wrócić do formularza i zapisać zmiany. Kliknij „OK”, aby odrzucić zmiany." + +#, python-format +msgid "Add %(language)s content" +msgstr "Dodaj zawartość w języku %(language)s" + +msgid "Preview" +msgstr "Podgląd" + +msgid "Settings" +msgstr "Ustawienia" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Niepoprawny język %(value)s. Ten formularz nie może zostać przetworzony. " +"Spróbuj zmienić język." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Brak zarejestrowanego apphooka „%r”" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Symbol zastępczy" + +msgid "Create" +msgstr "Utwórz" + +msgid "Edit" +msgstr "Edytuj" + +msgid "Structure" +msgstr "Struktura" + +msgid "Content" +msgstr "Zawartość" + +msgid "Sites" +msgstr "Strony" + +msgid "Admin Sites" +msgstr "Administrator stron" + +msgid "Administration" +msgstr "Zarządzanie" + +msgid "User settings" +msgstr "Ustawienia użytkownika" + +msgid "Clipboard..." +msgstr "Schowek..." + +msgid "Clear clipboard" +msgstr "Wyczyść schowek" + +msgid "Disable toolbar" +msgstr "Wyłącz panel narzędziowy" + +msgid "Shortcuts..." +msgstr "Skróty…" + +msgid "Users" +msgstr "Użytkownicy" + +#, python-format +msgid "Logout %s" +msgstr "Wyloguj %s" + +msgid "Logout" +msgstr "Wyloguj" + +msgid "Language" +msgstr "Język" + +msgid "Delete Translation" +msgstr "Usuń tłumaczenie" + +msgid "Copy all plugins" +msgstr "Skopiuj wszystkie pluginy" + +#, python-format +msgid "from %s" +msgstr "od %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Czy na pewno skopiować wszystkie wtyczki z %s?" + +msgid "Pages" +msgstr "Strony" + +msgid "Page" +msgstr "Strona" + +msgid "Create Page" +msgstr "Stwórz stronę" + +msgid "New Page" +msgstr "Nowa strona" + +msgid "New Sub Page" +msgstr "Nowa podstrona" + +msgid "Duplicate this Page" +msgstr "Duplikuj tę stronę" + +msgid "Page settings" +msgstr "Ustawienia strony" + +msgid "Advanced settings" +msgstr "Ustawienia zaawansowane" + +msgid "Templates" +msgstr "Szablony" + +msgid "Placeholders" +msgstr "Placeholdery" + +msgid "Hide in navigation" +msgstr "Schowaj w menu" + +msgid "Display in navigation" +msgstr "Wyświetl w menu" + +msgid "Delete page" +msgstr "Usuń stronę" + +msgid "Create a new page next to the current page." +msgstr "Stwórz nową stronę obok bieżącej strony." + +msgid "Create a page below the current page." +msgstr "Stwórz stronę pod bieżącą stroną." + +msgid "Select a valid site" +msgstr "Wybierz poprawną domenę" + +msgid "Select a valid page" +msgstr "Wybierz poprawną podstronę" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"Strona %(conflict_page)s ma taki sam URL '%(url)s' jak bieżąca strona " +"„%(instance)s”." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"Strona %(conflict_page)s ma taki sam URL '%(url)s' jak bieżąca strona." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Opcjonalne. Gdy podane, będzie automatycznie dodane wewnątrz nowej tekstowej" +" wtyczki." + +msgid "Provide a title for the new page." +msgstr "Nadaj tytuł dla nowej strony." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "Zostaw puste, aby wygenerować automatyczny skrót, lub nadpisz." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "Nie można automatycznie utworzyć skrótu. Podaj go ręcznie." + +msgid "Please provide a valid slug." +msgstr "Podaj poprawny skrót." + +msgid "You don't have the permissions required to add a page." +msgstr "Nie masz uprawnień wymaganych do dodania strony." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "pozycja" + +msgid "language" +msgstr "Język" + +msgid "plugin_name" +msgstr "nazwa_wtyczki" + +msgid "creation date" +msgstr "data utworzenia" + +msgid "can edit" +msgstr "może edytować" + +msgid "can add" +msgstr "może dodawać" + +msgid "can delete" +msgstr "może usuwać" + +msgid "can change advanced settings" +msgstr "może zmieniać ustawienia zaawansowane" + +msgid "can publish" +msgstr "może opublikować" + +msgid "can change permissions" +msgstr "może zmieniać uprawnienia" + +msgid "can move" +msgstr "może przenosić" + +msgid "view restricted" +msgstr "Strona z ograniczeniami" + +msgid "can recover pages" +msgstr "może odzyskiwać strony" + +msgid "group" +msgstr "grupa" + +msgid "sites" +msgstr "witryny" + +msgid "created by" +msgstr "utworzone przez" + +msgid "changed by" +msgstr "zmienione przez" + +msgid "publication date" +msgstr "data publikacji" + +msgid "publication end date" +msgstr "czas zakończenia publikacji strony" + +msgid "in navigation" +msgstr "w menu" + +msgid "soft root" +msgstr "softroot" + +msgid "id" +msgstr "identyfikator strony" + +msgid "attached menu" +msgstr "Przypisane menu" + +msgid "template" +msgstr "szablon" + +msgid "login required" +msgstr "trzeba być zalogowanym" + +msgid "application" +msgstr "aplikacja" + +msgid "application instance name" +msgstr "nazwa instancji aplikacji" + +msgid "site" +msgstr "witryna" + +msgid "Grant on" +msgstr "Uprawnienia dla" + +msgid "page" +msgstr "stronę" + +msgid "no limit set" +msgstr "brak ustawionego limitu" + +msgid "for logged in users only" +msgstr "tylko dla zalogowanych" + +msgid "for anonymous users only" +msgstr "tylko dla niezalogowanych" + +msgid "Inherit from parent page" +msgstr "Dziedzicz ze strony nadrzędnej" + +msgid "Deny" +msgstr "Odmów" + +msgid "Only this website" +msgstr "Tylko na tym serwisie" + +msgid "Allow" +msgstr "Pozwalaj" + +msgid "title" +msgstr "tytuł" + +msgid "The default title" +msgstr "Domyślny tytuł" + +msgid "Page Title" +msgstr "Tytuł strony" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Nadpisuje to co jest wyświetlane u góry przeglądarki lub w jej zakładkach" + +msgid "Menu Title" +msgstr "Tytuł w menu" + +msgid "Overwrite what is displayed in the menu" +msgstr "Nadpisz nazwę wyświetlaną w menu" + +msgid "Description meta tag" +msgstr "Opis w meta tagu" + +msgid "A description of the page used by search engines." +msgstr "" +"Lista słów oddzielonych przecinkami używana czasem przez wyszukiwarki." + +msgid "redirect" +msgstr "przekierowanie" + +msgid "Redirects to this URL." +msgstr "Przekierowuje do tego adresu URL." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Wszyscy przodkowie nie będą wyświetlani w menu nawigacyjnym" + +msgid "The template used to render the content." +msgstr "Szablon, który będzie wykorzystany do wyświetlenia treści na stronie." + +msgid "page content" +msgstr "zawartość strony" + +msgid "page contents" +msgstr "zawartości stron" + +msgid "default" +msgstr "domyślny" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Unikalny identyfikator używany przez templatetag page_url do tworzenia " +"odnośnika do tej strony" + +msgid "Mark this page as a page type" +msgstr "Oznacz tę stronę jako typ strony" + +msgid "pages" +msgstr "strony" + +msgid "No available title" +msgstr "Brak dostępnego tytułu" + +msgid "slug" +msgstr "skrót" + +msgid "Path" +msgstr "ścieżka" + +msgid "Current page" +msgstr "Bieżąca strona" + +msgid "Page children (immediate)" +msgstr "Strony podrzędne (bezpośrednio)" + +msgid "Page and children (immediate)" +msgstr "Bieżąca strona i jej podrzędne (bezpośrednio)" + +msgid "Page descendants" +msgstr "Wszystkie strony podrzędne" + +msgid "Page and descendants" +msgstr "Bieżąca strona i wszystkie jej podrzędne" + +msgid "on page level" +msgstr "na poziomie strony" + +msgid "frontend view restriction" +msgstr "Ograniczenia dostępu" + +msgid "Please select user or group." +msgstr "Proszę wybrać grupę lub użytkownika" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Użytkownicy bez uprawnień do wprowadzania zmian nie mogą publikować stron. " +"Wymagana zmiana uprawnień." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Użytkownicy bez uprawnień do wprowadzania zmian nie mogą zmieniać " +"zaawansowanych ustawień strony.Wymagana zmiana uprawnień." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Użytkownicy bez uprawnień do wprowadzania zmian nie mogą zmieniać uprawnień " +"dla strony. Wymagana zmiana uprawnień." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Użytkownicy bez uprawnień do wprowadzania zmian nie mogą przenosić stron. " +"Wymagana zmiana uprawnień." + +msgid "can recover any deleted page" +msgstr "może odzyskać każdą usuniętą stronę" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"Jeśli niczego nie zaznaczono użytkownicy mają uprawnienia do wszystkich " +"witryn." + +msgid "Page global permission" +msgstr "Globalne prawo dostępu do stron" + +msgid "Pages global permissions" +msgstr "Globalne prawa dostępu do stron" + +msgid "Page permission" +msgstr "Prawo dostępu do stron" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Dodanie praw do strony wymaga dostępu do ich dzieci lub potomków, inaczej " +"dodana strona nie może zostać zmieniona przez jego twórcę." + +msgid "User (page)" +msgstr "Użytkownik (strona)" + +msgid "Users (page)" +msgstr "Użytkownicy (strona)" + +msgid "User group (page)" +msgstr "Grupa użytkowników (strona)" + +msgid "User groups (page)" +msgstr "Grupy użytkowników (strona)" + +msgid "slot" +msgstr "slot" + +msgid "width" +msgstr "szerokość" + +msgid "Edit object" +msgstr "Edytuj obiekt" + +msgid "This is an external placeholder" +msgstr "To jest zewnętrzny placeholder" + +msgid "plugin" +msgstr "wtyczka" + +msgid "plugins" +msgstr "wtyczki" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Język dla interfejsu administratora i paska narzędziowego." + +msgid "user setting" +msgstr "ustawienia użytkownika" + +msgid "user settings" +msgstr "ustawienia użytkownika" + +msgid "by template" +msgstr "za pomocą szablonu" + +msgid "by code" +msgstr "za pomocą kodu" + +msgid "static placeholder name" +msgstr "nazwa statycznego placeholder'a" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Nadaj nazwę dla identyfikacji tego statycznego placeholdera. Nie zostanie " +"wyświetlone użytkownikom." + +msgid "placeholder code" +msgstr "zastępczy kod" + +msgid "To render the static placeholder in templates." +msgstr "Wygeneruj ten statyczny placeholder w szablonach." + +msgid "placeholder content" +msgstr "zawartość placeholder'a" + +msgid "creation_method" +msgstr "creation_method" + +msgid "static placeholder" +msgstr "statyczny placeholder" + +msgid "static placeholders" +msgstr "statyczne placeholder'y" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Statyczny placeholder z tą samą stroną i kodem już istnieje." + +msgid "Advanced options" +msgstr "Ustawienia zaawansowane" + +msgid "Generic" +msgstr "Ogólne" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s „%(obj)s” został pomyślnie zmieniony." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" +"Dla tej wtyczki nie istnieją dodatkowe ustawienia. Proszę wcisnąć zapisz." + +msgid "Moved" +msgstr "Przeniesiono" + +msgid "Changed" +msgstr "Zmienione" + +msgid "Deleted" +msgstr "Usunięto" + +msgid "Added Page Translation" +msgstr "Dodano tłumaczenie strony" + +msgid "Changed Page Translation" +msgstr "Zmieniono tłumaczenie strony" + +msgid "Deleted Page Translation" +msgstr "Usunięto tłumaczenie strony" + +msgid "Added Plugin" +msgstr "Dodano wtyczkę" + +msgid "Changed Plugin" +msgstr "Zmieniono wtyczkę" + +msgid "Moved Plugin" +msgstr "Przeniesiono wtyczkę" + +msgid "Deleted Plugin" +msgstr "Usunięto wtyczkę" + +msgid "Cut Plugin" +msgstr "Wycięto wtyczkę" + +msgid "Paste Plugin" +msgstr "Wklej wtyczkę" + +msgid "Paste to Placeholder" +msgstr "Wklej do placeholdera" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Dodano wtyczki do placeholdera ze schowka" + +msgid "Cleared Placeholder" +msgstr "Wyczyszczono placeholder" + +msgid "Save" +msgstr "Zapisz" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" +"Niektórych pól nie można zmienić, ponieważ są to treści tylko do odczytu." + +#, python-format +msgid "Log in to administration here." +msgstr "" +"zaloguj się do panelu administracyjnego tutaj." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Adres logowania: %(login_url)s" + +msgid "Username:" +msgstr "Użytkownik:" + +msgid "Password:" +msgstr "Hasło:" + +msgid "Add a page" +msgstr "Dodaj stronę" + +msgid "Change a page" +msgstr "Zmień stronę" + +msgid "Home" +msgstr "Start" + +msgid "View on site" +msgstr "Zobacz na stronie" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Proszę poprawić poniższy błąd" +msgstr[1] "Proszę poprawić poniższe błędy." +msgstr[2] "Proszę poprawić poniższe błędy." +msgstr[3] "Proszę poprawić poniższe błędy." + +msgid "All permissions" +msgstr "Wszystkie uprawnienia" + +msgid "Loading..." +msgstr "Ładowanie..." + +msgid "Save and continue editing" +msgstr "Zapisz i kontynuuj edycję" + +#, 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 "" +"Czy na pewno chcesz usunąć %(object_name)s „%(escaped_object)s”? Wszystkie " +"poniższe powiązane elementy zostaną usunięte:" + +msgid "Yes, I’m sure" +msgstr "Tak, jestem pewien" + +msgid "No, take me back" +msgstr "Nie, cofnij" + +msgid "Summary" +msgstr "Podsumowanie" + +msgid "User" +msgstr "Użytkownik" + +msgid "Group" +msgstr "Grupa" + +msgid "Can edit" +msgstr "Może edytować" + +msgid "Can add" +msgstr "Może dodawać" + +msgid "Can delete" +msgstr "Może usuwać" + +msgid "Can publish" +msgstr "Może opublikować" + +msgid "Can change permissions" +msgstr "Może zmieniać uprawnienia" + +msgid "Can move" +msgstr "Może przenosić" + +msgid "Can view" +msgstr "Może wyświetlać" + +msgid "(global)" +msgstr "(globalne)" + +msgid "(current)" +msgstr "(bieżące)" + +msgid "Page doesn't inherit any permissions." +msgstr "Strona nie dziedziczy żadnych uprawnień." + +msgid "Edit model" +msgstr "Edytuj model" + +msgid "Save as new" +msgstr "Zapisz jako nowe" + +msgid "Save and add another" +msgstr "Zapisz i dodaj inny" + +msgid "Copy" +msgstr "Kopiuj" + +msgid "Cut" +msgstr "Wytnij" + +msgid "Paste" +msgstr "Wklej" + +msgid "Set as home" +msgstr "Ustaw jak stronę główną" + +msgid "is restricted" +msgstr "jest ograniczone" + +msgid "last change by" +msgstr "ostatnio zmienione przez" + +msgid "last change on" +msgstr "ostatnia zmiana" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Lista stron" + +msgid "Search" +msgstr "Szukaj" + +msgid "Page Tree" +msgstr "Drzewo stron" + +msgid "Reset filter" +msgstr "Resetuj filtr" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Przywróć usunięte %(name)s\n" +" " + +msgid "Main Navigation" +msgstr "Nawigacja główna" + +msgid "Options" +msgstr "Opcje" + +msgid "Successfully moved" +msgstr "Przeniesiono." + +msgid "Changes within the tree might require a refresh." +msgstr "Zmiany mogą wymagać przeładowania strony." + +msgid "Error:" +msgstr "Błąd:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Ta strona nie może zostać skopiowana, ponieważ jest do niej przypięta " +"aplikacja. Zobacz Zaawansowane ustawienia strony, by zarządzać przypiętymi " +"aplikacjami." + +msgid "Are you sure you want to § this page?" +msgstr "Czy na pewno chcesz § tę stronę?" + +msgid "Reload" +msgstr "Przeładuj" + +msgid "New node" +msgstr "Nowy węzeł" + +msgid "nodes" +msgstr "węzły" + +msgid "View" +msgstr "Widok" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +"Nie ma jeszcze żadnych %(object)s.
Dodaj %(object)s teraz." + +msgid "Copy options" +msgstr "Opcje kopiowania" + +msgid "Choose copy options" +msgstr "Wybierz opcje kopiowania" + +msgid "Close" +msgstr "Zamknij" + +msgid "Legend" +msgstr "Legenda" + +msgid "In menu" +msgstr "W menu" + +msgid "Not in menu" +msgstr "Poza menu" + +msgid "View page" +msgstr "Zobacz stronę" + +msgid "Softroot" +msgstr "Softroot" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Aplikacja: %(apphook)s" + +msgid "in menu" +msgstr "w menu" + +msgid "not in menu" +msgstr "brak w menu" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" +"Ustawienia strony (przytrzymaj SHIT, aby otworzyć ustawienia zaawansowane)" + +msgid "Permissions" +msgstr "Uprawnienia" + +msgid "inherited" +msgstr "odziedziczone" + +msgid "This page has no preview!" +msgstr "Ta strona nie posiada podglądu!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Możliwe, że przypisany apphook nie udostępnia zawartości dla swojego " +"katalogu głównego." + +msgid "It is being redirected to:" +msgstr "Przekierowywanie na:" + +msgid "Clipboard" +msgstr "Schowek" + +msgid "Add plugin" +msgstr "Dodaj wtyczkę" + +msgid "Copy all" +msgstr "Skopiuj całość" + +msgid "Copy from" +msgstr "Skopiuj z" + +msgid "Empty all" +msgstr "Opróżnij wszystko" + +msgid "Filter plugins..." +msgstr "Filtrowanie wtyczek..." + +msgid "Expand all" +msgstr "Powiększ wszystkie" + +msgid "Collapse all" +msgstr "Schowaj wszystkie" + +msgid "You cannot add plugins to this plugin." +msgstr "Nie można dodać wtyczek do tej wtyczki." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"Ta wtyczka nie może być przenoszona lub edytowana spoza swojego rodzica" + +msgid "Clipboard is empty." +msgstr "Schowek jest pusty." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Ta wtyczka nie pozwala wtyczkom tego typu na zagnieżdżone wtyczki." + +msgid "This plugin cannot have nested plugins." +msgstr "Ta wtyczka nie może posiadać zagnieżdżonych wtyczek." + +msgid "Highlight" +msgstr "Wyróżnienie" + +msgid "Available plugins" +msgstr "Dostępne wtyczki" + +msgid "Toggle structure" +msgstr "Przełącz strukturę" + +msgid "Login" +msgstr "Zaloguj" + +msgid "Add plugin to" +msgstr "Dodaj wtyczkę do" + +msgid "More" +msgstr "Więcej" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Wersja deweloperska używa djangoCMS %(cms_version)s, Django " +"%(django_version)s, Pythona %(python_version)s" + +msgid "Cancel" +msgstr "Anuluj" + +msgid "The following error occurred:" +msgstr "Wystąpił następujący błąd:" + +msgid "Action successful." +msgstr "Akcja wykonana pomyślnie." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Czy na pewno chcesz usunąć tę wtyczkę?" + +msgid "Are you sure you want to publish this page?" +msgstr "Czy na pewno chesz opublikować tę stronę?" + +msgid "Plugin will be added here" +msgstr "Wtyczka zostanie dodana tutaj" + +msgid "You have unsaved changes." +msgstr "Masz niezapisane zmiany." + +msgid "Loading" +msgstr "Ładowanie" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Czy na pewno chcesz porzucić te zmiany?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"Formularz nie mógł zostać wczytany. Prosimy sprawdź, czy serwer działa " +"poprawnie." + +msgid "Most used" +msgstr "Najczęściej używane" + +msgid "Shortcuts" +msgstr "Skróty" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Strona została w międzyczasie zmieniona, przeładowanie…" + +msgid "CMS-wide Shortcuts" +msgstr "Skróty CMS-a" + +msgid "Bring up this help dialog" +msgstr "Wyświetl okno pomocy" + +msgid "Close/cancel" +msgstr "Zamknij/Anuluj" + +msgid "Toggle structure mode" +msgstr "Włącz tryb struktury" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Włącz tryb struktura i podświetl wtyczkę pod kursorem" + +msgid "Open \"Create\" dialog" +msgstr "Otwór okno \"Utwórz\"" + +msgid "Focus on Toolbar" +msgstr "Zaznacz pasek narzędzi" + +msgid "Focus on placeholders" +msgstr "Zaznacz placeholder" + +msgid "Move to next/previous element" +msgstr "Przejdź do następnego/poprzedniego elementu" + +msgid "Focus on plugins of placeholder" +msgstr "Zaznacz wtyczki placeholder-a" + +msgid "Edit plugin" +msgstr "Edytuj wtyczkę" + +msgid "Open actions menu" +msgstr "Otwórz menu akcji" + +msgid "Expand/collapse" +msgstr "Zwiń/Rozwiń" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Logowanie zakończone niepowodzeniem Proszę sprawdź swoje " +"dane logowania i spróbuj ponownie." + +msgid "Double-click to edit" +msgstr "Kliknij dwukrotnie aby edytować" + +msgid "Tap to edit" +msgstr "Dotknij by edytować" + +msgid "Click to go back" +msgstr "Kliknij by cofnąć" + +msgid "Click to go forward" +msgstr "Kliknij by przejść dalej" + +msgid "Minimize" +msgstr "Minimalizuj" + +msgid "Maximize" +msgstr "Maksymalizuj" + +msgid "Placeholder not editable" +msgstr "Placeholder nie jest edytowalny" + +msgid "Drop a plugin here" +msgstr "Upuść tutaj wtyczkę." + +msgid "Welcome to your new django CMS installation!" +msgstr "Witaj w nowej instalacji django CMS!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Wersja %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Zbudujmy razem coś wspaniałego!" + +msgid "Please log in" +msgstr "Proszę się zalogować" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Dodaj swoją pierwszą stronę\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Wesprzyj finansowo

\n" +"

\n" +" Twoje wsparcie finansowe bezpośrednio przyczynia się do rozwoju produktu, głównie poprzez\n" +" program django CMS Fellowship!\n" +"

\n" +"

\n" +" Szybkim sposobem, by Ty lub Twoja organizacja przekazała darowiznę, jest\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Dołącz do nas

\n" +"

\n" +" Stowarzyszenie django CMS Association to organizacja non-profit, która finansuje i kieruje rozwojem\n" +" django CMS.\n" +"

\n" +"

\n" +" Możesz dołączyć zarówno jako osoba prywatna, jak i jako\n" +" organizacja.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Współtwórz

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Wskazówki Instalacyjne" + +msgid "Support" +msgstr "Wsparcie" + +msgid "Documentation" +msgstr "Dokumentacja" + +msgid "User guide" +msgstr "Przewodnik użytkownika" + +msgid "Give back" +msgstr "Wesprzyj nas" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Jeśli nie widzisz loga django CMS na górze, upewnij się, że połączyłeś katalog static/cms do swoich plików statycznych." + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Widzisz tę wiadomość, ponieważ masz DEBUG = True w pliku ustawień Django i nie dodałeś jeszcze żadnych stron." + +msgid "Welcome to django CMS" +msgstr "Witamy w django CMS" + +msgid "Add Another" +msgstr "Dodaj kolejny" + +msgid "Back" +msgstr "Cofnij" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "Wybierz jedną z poniższych opcji by przejść do kolejnego kroku." + +msgid "Next" +msgstr "Dalej" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Nieznane" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Strona nie została odnaleziona na %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Nie udało się odnaleźć podstrony za pośrednictwem tagu w szablonie do " +"którego przekazano następujące argumenty: `%(page_lookup)s`. Adres URL " +"zapytania to: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Dwie kolumny" + +msgid "Three columns" +msgstr "Trzy kolumny" + +msgid "username" +msgstr "Nazwa użytkownika" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "Wymagane. 300 znaków lub mniej. Litery, cyfry i znaki @/./+/-/_" + +msgid "Enter a valid username." +msgstr "Wprowadź poprawną nazwę użytkownika" + +msgid "email address" +msgstr "wyślij do" + +msgid "staff status" +msgstr "status personelu" + +msgid "Designates whether the user can log into this admin site." +msgstr "" +"Określa czy dany użytkownik może zalogować się na tą stronę administracji." + +msgid "active" +msgstr "aktywny" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Określa czy dany użytkownik ma być traktowany jako aktywny. Odznacz tą opcję" +" zamiast usuwać konta." + +msgid "users" +msgstr "użytkownicy" + +msgid "Title Extension" +msgstr "Rozszerzenie tytułu" + +msgid "Page Extension" +msgstr "Rozszerzenie strony" + +msgid "object ID" +msgstr "ID obiektu" + +msgid "Example1 App" +msgstr "Przykład1 Aplikacji" + +msgid "MultilingualExample1 App" +msgstr "Wielojęzyczny przykład1 Aplikacji" + +msgid "Example1" +msgstr "Przykład1" + +msgid "Examples" +msgstr "Przykłady" + +msgid "Extra Context" +msgstr "Dodatkowy Kontekst" + +msgid "Articles" +msgstr "Artykuły" + +msgid "Sample App" +msgstr "Przykładowa aplikacja" + +msgid "Sample App with config" +msgstr "Przykładowa aplikacja z konfiguracją" + +msgid "Sample App with excluded permissions" +msgstr "Prosta aplikacja z wykluczonymi uprawnieniami" + +msgid "Sample App 2" +msgstr "Przykład Aplikacji 2" + +msgid "Sample App 3" +msgstr "Przykład Aplikacji 2" + +msgid "Sample App Without Landing Page" +msgstr "Przykładowa aplikacja bez strony startowej" + +msgid "Namespaced App" +msgstr "Aplikacja z przestrzenią nazw" + +msgid "Parent app" +msgstr "Aplikacja nadrzędna" + +msgid "Child app" +msgstr "Aplikacja podrzędna" + +msgid "Variable urls-menus App" +msgstr "Zmienne urls-menu aplikacji" + +msgid "sample root page" +msgstr "przykład głównej strony" + +msgid "sample settings page" +msgstr "przykład ustawień strony" + +msgid "sample account page" +msgstr "przykład strony konta" + +msgid "sample my profile page" +msgstr "przykład strony \"mój profil\"" + +msgid "Static Menu" +msgstr "Menu statyczne" + +msgid "Static Menu2" +msgstr "Menu statyczne2" + +msgid "Static Menu3" +msgstr "Menu statyczne3" + +msgid "Static Menu4" +msgstr "Menu statyczne" + +msgid "Category" +msgstr "Kategoria" + +msgid "Categories" +msgstr "Kategorie" + +msgid "Add Category" +msgstr "Dodaj kategorię" + +msgid "^account/$" +msgstr "^konto/$" + +msgid "Change Category" +msgstr "Zmiana Kategorii" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Dzięki za dobrze spędzony czas ze stroną internetową." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Wykorzystaj ten sam szablon co strona nadrzędna" + +msgid "UserSettings" +msgstr "UserSettings" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Dodaj wtyczkę do placeholdera \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Dodaj wtyczkę do %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Pojedynczy placeholder" + +msgid "CMS - your user account was created." +msgstr "CMS - twoje konto użytkownika zostało utworzone." + +msgid "CMS - your user account was changed." +msgstr "CMS - twoje konto użytkownika zostało zmienione." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Ten magazyn osiągnął maksymalną ilość wtyczek (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Ten magazyn osiągnął maksymalną ilość (%(limit)s) z dozwolonych " +"%(plugin_name)s wtyczek." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" +"Nie udało się odnaleźć wskazanego modułu CMS_REQUEST_IP_RESOLVER: „{0}”." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Nie udało się odnaleźć wskazanej funkcji CMS_REQUEST_IP_RESOLVER: „{0}” w " +"module „{1}”." + +#, python-format +msgid "Create a new %s instance." +msgstr "Stwórz nowy egzemplarz %s." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Kreator już został zarejestrowany dla modelu: %s" diff --git a/cms/locale/pl/LC_MESSAGES/djangojs.po b/cms/locale/pl/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..5dff58f0 --- /dev/null +++ b/cms/locale/pl/LC_MESSAGES/djangojs.po @@ -0,0 +1,26 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# angularcircle, 2012 +# angularcircle, 2012 +# Maciej Olko, 2016 +# Maciej Olko, 2016 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Maciej Olko, 2016\n" +"Language-Team: Polish (http://app.transifex.com/divio/django-cms/language/pl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Czy na pewno chcesz zmienić zakładkę nie zapisując wcześniej strony?" diff --git a/cms/locale/pt/LC_MESSAGES/django.po b/cms/locale/pt/LC_MESSAGES/django.po new file mode 100644 index 00000000..c3ccfbfd --- /dev/null +++ b/cms/locale/pt/LC_MESSAGES/django.po @@ -0,0 +1,1766 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Vítor Figueiró , 2025 +# André Cruz , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Portuguese (https://app.transifex.com/divio/teams/58664/pt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "All" +msgstr "Todos" + +msgid "Copy permissions" +msgstr "Copiar permissões" + +msgid "Slug" +msgstr "Slug" + +msgid "The part of the title that is used in the URL" +msgstr "A parte do título que é usada na URL" + +msgid "Page type" +msgstr "Tipo de página" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Tipos de Página" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Sobrescreva URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Deixe este campo em branco para usar o caminho padrão" + +msgid "Start typing..." +msgstr "Comece a digitar..." + +msgid "menu visibility" +msgstr "visibilidade no menu" + +msgid "limit when this page is visible in the menu" +msgstr "limitar a visibilidade desta página no menu" + +msgid "X Frame Options" +msgstr "Opções de X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Se esta página pode ser incorporada noutras páginas ou sítios web." + +msgid "URL options" +msgstr "Opções de URL" + +msgid "Menu options" +msgstr "Opções de menu" + +msgid "Headers" +msgstr "Cabeçalhos" + +msgid "Application" +msgstr "Aplicação" + +msgid "Hook application to this page." +msgstr "Associe aplicação a esta página." + +msgid "Application configurations" +msgstr "Configurações da aplicação" + +msgid "A page with this reverse URL id exists already." +msgstr "Já existe uma página com esta URL reversa." + +msgid "Invalid application config value" +msgstr "Valor de configuração da aplicação inválido" + +msgid "An application instance using this configuration already exists." +msgstr "Já existe uma instância de aplicação com esta configuração." + +msgid "An application instance with this name already exists." +msgstr "Já existe uma instância de aplicação com este nome." + +msgid "You can't move the home page inside another page" +msgstr "Não pode mover a página de entrada para dentro de outra página" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Não pode ter duas páginas com o mesmo slug ao mesmo nível de página. Altere " +"o slug de uma das páginas antes de tentar mover novamente." + +msgid "Yes" +msgstr "Sim" + +msgid "No" +msgstr "Não" + +msgid "user" +msgstr "utilizador" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "Adicionar" + +msgid "Change" +msgstr "Modificar" + +msgid "Delete" +msgstr "Excluir" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Os utilizadores não podem criar uma página sem permissões para alterar a " +"página criada. É necessária a permissão de edição." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Os utilizadores não podem apagar a página sem permissões para a alterar. É " +"necessária a permissão de edição." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Os utilizadores não podem definir as permissões da página sem permissões " +"para alterar a página. É necessária a permissão de edição." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Os utilizadores não podem apagar as permissões da página sem permissões para" +" alterar a página. É necessária a permissão de edição." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Os utilizadores não podem criar permissões de página sem permissões para " +"alterar as permissões criadas. É necessária a permissão de edição." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Os utilizadores não podem apagar as permissões da página sem permissões para" +" alterar permissões. É necessária a permissão de edição." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Tipo de plugin inválido '%s'" + +msgid "Language must be set to a supported language!" +msgstr "A Língua deve ser definida para uma língua suportada pelo sistema!" + +msgid "Parent plugin language must be same as language!" +msgstr "O idioma do plugin ascendente tem de ser o mesmo!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" +"O espaço reservado do plugin antecessor tem de ser o mesmo espaço reservado!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "A posição do plugin tem de ser superior a %(position)d" + +msgid "Translations" +msgstr "Traduções" + +msgid "Advanced Settings" +msgstr "Configurações Avançadas" + +msgid "The page is not eligible to be home." +msgstr "Esta página não é elegível para ser a página de entrada." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Não existe nenhum objecto de '%(name)s' com chave primária %(key)s" + +msgid "error" +msgstr "erro" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Erro! Não tem permissões para mover esta página. Por favor atualize a " +"página." + +msgid "Error! You don't have permissions to copy this page." +msgstr "Erro! Não tem permissões para copiar esta página." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Erro! A página que está a colar não está traduzida em nenhuma das linguagens" +" configuradas pelo site de destino." + +msgid "You do not have permission to edit this page" +msgstr "Não tem permissão para editar esta página" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(para a alterar, primeiro despublique a versão actualmente publicada desta " +"página)" + +msgid "Add Translation" +msgstr "Adicionar Tradução" + +msgid "Add Page Copy" +msgstr "Adicionar Cópia de Página" + +msgid "New sub page" +msgstr "Nova subpágina" + +msgid "New page" +msgstr "Nova página" + +msgid "Database error" +msgstr "Erro na base de dados" + +msgid "Template not valid" +msgstr "Modelo inválido" + +msgid "Placeholder selection not valid" +msgstr "Selecção de espaço reservado inválida" + +msgid "The template was successfully changed" +msgstr "O modelo foi alterado com sucesso" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "O espaço reservado '%s' não existe na língua de destino" + +msgid "You do not have permission to copy these plugins." +msgstr "Não tem permissão para copiar estes plugins." + +msgid "You do not have permission to delete this page" +msgstr "Não tem permissões para apagar esta página" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Foram excluídos título e plugins com a língua '%(language)s'" + +msgid "Public content" +msgstr "Conteúdo público" + +msgid "Empty" +msgstr "Vazio" + +msgid "Create Content" +msgstr "Criar Conteúdo" + +msgid "View restriction" +msgstr "Restrição de visualização" + +msgid "View restrictions" +msgstr "Restrições de visualização" + +#, python-format +msgid "Field %s not found" +msgstr "Campo %s não encontrado" + +msgid "You do not have permission to edit this item" +msgstr "Não tem permissão para editar este item" + +msgid "You do not have permission to add a plugin" +msgstr "Não tem permissão para adicionar um plugin" + +msgid "You do not have permission to copy this placeholder." +msgstr "Não tem permissões para copiar este espaço reservado." + +msgid "Plugin not found" +msgstr "Plugin não encontrado" + +msgid "You do not have permission to edit this plugin" +msgstr "Não tem permissão para editar este plugin" + +msgid "You have no permission to paste this plugin" +msgstr "Não tem permissões para colar este plugin" + +msgid "You have no permission to paste this placeholder" +msgstr "Não tem permissões para colar este espaço reservado" + +msgid "You have no permission to move this plugin" +msgstr "Não tem permissão para mover este plugin" + +msgid "You have no permission to cut this plugin" +msgstr "Não tem permissões para cortar este plugin" + +msgid "You do not have permission to delete this plugin" +msgstr "Não tem permissão para eliminar este plugin" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "O plugin %(name)s \"%(obj)s\" foi eliminado com sucesso." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Não é possível eliminar %(name)s" + +msgid "Are you sure?" +msgstr "Tem certeza?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Não tem permissão para esvaziar este espaço" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "O espaço \"%(obj)s\" foi esvaziado com sucesso" + +msgid "placeholder" +msgstr "espaço" + +msgid "Page permissions" +msgstr "Permissões de página" + +msgid "User & Group permissions" +msgstr "Permissões de utilizador e grupo" + +msgid "Page permissions management" +msgstr "Gestão de permissões de página" + +msgid "Actions" +msgstr "Acções" + +msgid "Empty content" +msgstr "Conteúdo vazio" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Propriedades de %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Adicionar novo %(object_name)s" + +msgid "Add content" +msgstr "Adicionar conteúdo" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"O conteúdo para a língua actual foi alterado. Clique em \"Cancelar\" para " +"voltar ao formulário e guardar as alterações. Clique em \"OK\" para " +"descartar as alterações." + +#, python-format +msgid "Add %(language)s content" +msgstr "Adicionar conteúdo em %(language)s" + +msgid "Preview" +msgstr "Pré-visualizar" + +msgid "Settings" +msgstr "Definições" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Língua inválida %(value)s. Este formulário não pode ser processado. Tente " +"mudar de língua." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Não foi encontrado nenhum apphook registado \"%r\"" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Espaço" + +msgid "Create" +msgstr "Criar" + +msgid "Edit" +msgstr "Editar" + +msgid "Structure" +msgstr "Estrutura" + +msgid "Content" +msgstr "Conteúdo" + +msgid "Sites" +msgstr "Sites" + +msgid "Admin Sites" +msgstr "Sites de Admin" + +msgid "Administration" +msgstr "Administração" + +msgid "User settings" +msgstr "Definições do utilizador" + +msgid "Clipboard..." +msgstr "Área de transferência..." + +msgid "Clear clipboard" +msgstr "Apagar área de transferência" + +msgid "Disable toolbar" +msgstr "Desactivar barra de ferramentas" + +msgid "Shortcuts..." +msgstr "Atalhos..." + +msgid "Users" +msgstr "Utilizadores" + +#, python-format +msgid "Logout %s" +msgstr "Sair %s" + +msgid "Logout" +msgstr "Sair" + +msgid "Language" +msgstr "Língua" + +msgid "Delete Translation" +msgstr "Apagar Tradução" + +msgid "Copy all plugins" +msgstr "Copiar todos os plugins" + +#, python-format +msgid "from %s" +msgstr "de %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Tem a certeza que pretende copiar todos os plugins de %s?" + +msgid "Pages" +msgstr "Páginas" + +msgid "Page" +msgstr "Página" + +msgid "Create Page" +msgstr "Criar Página" + +msgid "New Page" +msgstr "Nova Página" + +msgid "New Sub Page" +msgstr "Nova Sub-página" + +msgid "Duplicate this Page" +msgstr "Duplicar esta Página" + +msgid "Page settings" +msgstr "Definições da página" + +msgid "Advanced settings" +msgstr "Definições avançadas" + +msgid "Templates" +msgstr "Modelos" + +msgid "Placeholders" +msgstr "Espaços reservados" + +msgid "Hide in navigation" +msgstr "Esconder na navegação" + +msgid "Display in navigation" +msgstr "Exibir na navegação" + +msgid "Delete page" +msgstr "Excluir Página" + +msgid "Create a new page next to the current page." +msgstr "Criar uma nova página ao lado da página actual." + +msgid "Create a page below the current page." +msgstr "Criar uma página abaixo da página actual." + +msgid "Select a valid site" +msgstr "Selecione um site válido" + +msgid "Select a valid page" +msgstr "Selecione uma página válida" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"A página %(conflict_page)s tem o mesmo url '%(url)s' que a página actual " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"A página %(conflict_page)s tem o mesmo url '%(url)s' que a página actual." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Opcional. Se fornecido vai ser automaticamente adicionado dentro de um novo " +"plugin de texto." + +msgid "Provide a title for the new page." +msgstr "Fornecer um titlo para a nóva página." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" +"Deixe vazio para um slug automático, ou sobreponha conforme necessário." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "Não é possível criar o slug automaticamente. Forneça um manualmente." + +msgid "Please provide a valid slug." +msgstr "Forneça um slug válido." + +msgid "You don't have the permissions required to add a page." +msgstr "Não tem as permissões necessárias para adicionar uma página." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "posição" + +msgid "language" +msgstr "língua" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "data de criação" + +msgid "can edit" +msgstr "pode editar" + +msgid "can add" +msgstr "pode adicionar" + +msgid "can delete" +msgstr "pode excluir" + +msgid "can change advanced settings" +msgstr "pode modificar configurações avançadas" + +msgid "can publish" +msgstr "pode publicar" + +msgid "can change permissions" +msgstr "pode modificar permissões" + +msgid "can move" +msgstr "pode mover" + +msgid "view restricted" +msgstr "visualização restrita" + +msgid "can recover pages" +msgstr "pode recuperar páginas" + +msgid "group" +msgstr "grupo" + +msgid "sites" +msgstr "sites" + +msgid "created by" +msgstr "criado por" + +msgid "changed by" +msgstr "modificado por" + +msgid "publication date" +msgstr "data de publicação" + +msgid "publication end date" +msgstr "data final de publicação" + +msgid "in navigation" +msgstr "na navegação" + +msgid "soft root" +msgstr "raiz leve" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "menu anexo" + +msgid "template" +msgstr "modelo" + +msgid "login required" +msgstr "login requerido" + +msgid "application" +msgstr "aplicação" + +msgid "application instance name" +msgstr "nome da instânica da aplicação" + +msgid "site" +msgstr "site" + +msgid "Grant on" +msgstr "Garantir a" + +msgid "page" +msgstr "página" + +msgid "no limit set" +msgstr "sem limite definido" + +msgid "for logged in users only" +msgstr "apenas para utilizadores autenticados" + +msgid "for anonymous users only" +msgstr "apenas para utilizadores anónimos" + +msgid "Inherit from parent page" +msgstr "Herdar da página ascendente" + +msgid "Deny" +msgstr "Negar" + +msgid "Only this website" +msgstr "Apenas este site" + +msgid "Allow" +msgstr "Permitir" + +msgid "title" +msgstr "título" + +msgid "The default title" +msgstr "O título por defeito" + +msgid "Page Title" +msgstr "Título da página" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Sobrescreva o que será exibido no topo do seu navegador ou nos favoritos" + +msgid "Menu Title" +msgstr "Título do Menu" + +msgid "Overwrite what is displayed in the menu" +msgstr "Sobrescreva o que será exibido no menu" + +msgid "Description meta tag" +msgstr "Meta tag descrição" + +msgid "A description of the page used by search engines." +msgstr "" +"Uma lista de palavras-chave (separadas por vírgulas). Normalmente usadas por" +" mecanismos de pesquisa." + +msgid "redirect" +msgstr "redirecionar" + +msgid "Redirects to this URL." +msgstr "Redireciona para este URL" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Todos os ancestrais não serão exibidos na navegação" + +msgid "The template used to render the content." +msgstr "O template usado para carregar o conteúdo." + +msgid "page content" +msgstr "conteúdo da página" + +msgid "page contents" +msgstr "conteúdos da página" + +msgid "default" +msgstr "padrão" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Um identificador único que é usado com o templatetag page_url para ligar a " +"esta página" + +msgid "Mark this page as a page type" +msgstr "Marcar esta página como um tipo de página" + +msgid "pages" +msgstr "páginas" + +msgid "No available title" +msgstr "Nenhum título disponível" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Caminho" + +msgid "Current page" +msgstr "Página actual" + +msgid "Page children (immediate)" +msgstr "Páginas-filho (imediatas)" + +msgid "Page and children (immediate)" +msgstr "Página e filhos (imediatos)" + +msgid "Page descendants" +msgstr "Páginas descendentes" + +msgid "Page and descendants" +msgstr "Página e descendentes" + +msgid "on page level" +msgstr "a nível de página" + +msgid "frontend view restriction" +msgstr "restrição de visualização pública" + +msgid "Please select user or group." +msgstr "Por favor, seleccione um utilizador ou grupo." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Os utilizadores não podem publicar uma página sem permissões para alterar a " +"página. É necessária a permissão de edição." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Os utilizadores não podem alterar as configurações de página avançadas sem " +"permissões para alterar a página. É necessária a permissão de edição." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Os utilizadores não podem alterar as configurações de página sem permissões " +"para alterar a página. É necessária a permissão de edição." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Os utilizadores não podem mover a página sem permissões para a alterar. É " +"necessária a permissão de edição." + +msgid "can recover any deleted page" +msgstr "pode recuperar qualquer página excluída" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"Se nenhum for selecionado, utilizador terá permissões dadas a todos os " +"sites." + +msgid "Page global permission" +msgstr "Permissão global de página" + +msgid "Pages global permissions" +msgstr "Permissões globais de página" + +msgid "Page permission" +msgstr "Permissão de página" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"A permissão para adicionar páginas requer também acesso aos filhos, ou " +"descendentes, caso contrário a página adicionada não poderá ser modificada " +"pelo seu criador." + +msgid "User (page)" +msgstr "Utilizador (página)" + +msgid "Users (page)" +msgstr "Utilizadores (página)" + +msgid "User group (page)" +msgstr "Grupo de utilizador (página)" + +msgid "User groups (page)" +msgstr "Grupos de utilizadores (página)" + +msgid "slot" +msgstr "vaga" + +msgid "width" +msgstr "largura" + +msgid "Edit object" +msgstr "Editar objecto" + +msgid "This is an external placeholder" +msgstr "Este é um espaço reservado externo" + +msgid "plugin" +msgstr "plugin" + +msgid "plugins" +msgstr "plugins" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "O idioma para a interface de administração e barra de ferramentas" + +msgid "user setting" +msgstr "definição do utilizador" + +msgid "user settings" +msgstr "definições do utilizador" + +msgid "by template" +msgstr "por modelo" + +msgid "by code" +msgstr "por código" + +msgid "static placeholder name" +msgstr "nome do espaço estático" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Nome descritivo para identificar este espaço estático. Não é mostrado aos " +"utilizadores." + +msgid "placeholder code" +msgstr "código do espaço" + +msgid "To render the static placeholder in templates." +msgstr "Para apresentar o espaço estático nos modelos." + +msgid "placeholder content" +msgstr "conteúdo do espaço" + +msgid "creation_method" +msgstr "creation_method" + +msgid "static placeholder" +msgstr "espaço estático" + +msgid "static placeholders" +msgstr "espaços estáticos" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Um placeholder estático com o mesmo site e código já existe" + +msgid "Advanced options" +msgstr "Opções avançadas" + +msgid "Generic" +msgstr "Genérico" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "O %(name)s \"%(obj)s\" foi alterado com sucesso." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "Não existem mais definições para este plugin. Clique em gravar." + +msgid "Moved" +msgstr "Movida" + +msgid "Changed" +msgstr "Alterada" + +msgid "Deleted" +msgstr "Apagada" + +msgid "Added Page Translation" +msgstr "Tradução de Página Adicionada" + +msgid "Changed Page Translation" +msgstr "Tradução de Página Alterada" + +msgid "Deleted Page Translation" +msgstr "Tradução de Página Apagada" + +msgid "Added Plugin" +msgstr "Plugin Adicionado" + +msgid "Changed Plugin" +msgstr "Plugin Alterado" + +msgid "Moved Plugin" +msgstr "Plugin Movido" + +msgid "Deleted Plugin" +msgstr "Plugin Apagado" + +msgid "Cut Plugin" +msgstr "Plugin Cortado" + +msgid "Paste Plugin" +msgstr "Colar Plugin" + +msgid "Paste to Placeholder" +msgstr "Colar no Espaço Reservado" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" +"Plugins adicionados ao espaço reservado a partir da área de transferência" + +msgid "Cleared Placeholder" +msgstr "Espaço Reservado Esvaziado" + +msgid "Save" +msgstr "Gravar" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" +"Alguns campos não podem ser alterados porque são conteúdo só de leitura." + +#, python-format +msgid "Log in to administration here." +msgstr "Entre na interface de administração aqui" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Url de login: %(login_url)s" + +msgid "Username:" +msgstr "Nome de utilizador:" + +msgid "Password:" +msgstr "Senha:" + +msgid "Add a page" +msgstr "Adicionar como página" + +msgid "Change a page" +msgstr "Modificar uma página" + +msgid "Home" +msgstr "Início" + +msgid "View on site" +msgstr "Ver no site" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Por favor, corrija o erro abaixo." +msgstr[1] "Por favor, corrija os erros abaixo." +msgstr[2] "Por favor, corrija os erros abaixo." + +msgid "All permissions" +msgstr "Todas as permissões" + +msgid "Loading..." +msgstr "Carregando..." + +msgid "Save and continue editing" +msgstr "Gravar e continuar a editar" + +#, 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 "" +"Tem a certeza de que pretende apagar o %(object_name)s " +"\"%(escaped_object)s\"? Todos os itens relacionados a seguir serão apagados:" + +msgid "Yes, I’m sure" +msgstr "Sim, tenho a certeza" + +msgid "No, take me back" +msgstr "Não, voltar atrás" + +msgid "Summary" +msgstr "Resumo" + +msgid "User" +msgstr "Utilizador" + +msgid "Group" +msgstr "Grupo" + +msgid "Can edit" +msgstr "Pode editar" + +msgid "Can add" +msgstr "Pode adicionar" + +msgid "Can delete" +msgstr "Pode excluir" + +msgid "Can publish" +msgstr "Pode publicar" + +msgid "Can change permissions" +msgstr "Pode modificar permissões" + +msgid "Can move" +msgstr "Pode mover" + +msgid "Can view" +msgstr "Pode ver" + +msgid "(global)" +msgstr "(global)" + +msgid "(current)" +msgstr "(actual)" + +msgid "Page doesn't inherit any permissions." +msgstr "Página não herda nenhuma permissão." + +msgid "Edit model" +msgstr "Editar modelo" + +msgid "Save as new" +msgstr "Gravar como novo" + +msgid "Save and add another" +msgstr "Gravar e adicionar outro" + +msgid "Copy" +msgstr "Copiar" + +msgid "Cut" +msgstr "Colar" + +msgid "Paste" +msgstr "Colar" + +msgid "Set as home" +msgstr "Seleccionar como página de entrada" + +msgid "is restricted" +msgstr "é restrita" + +msgid "last change by" +msgstr "última modificação por" + +msgid "last change on" +msgstr "última alteração em" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Lista de páginas" + +msgid "Search" +msgstr "Pesquisa" + +msgid "Page Tree" +msgstr "Árvore de páginas" + +msgid "Reset filter" +msgstr "Repor filtro" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Restaurar %(name)s apagado\n" +" " + +msgid "Main Navigation" +msgstr "Navegação Principal" + +msgid "Options" +msgstr "Opções" + +msgid "Successfully moved" +msgstr "Movido com sucesso" + +msgid "Changes within the tree might require a refresh." +msgstr "Alterações na árvore podem requerer um recarregamento." + +msgid "Error:" +msgstr "Erro:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Esta página não pode ser copiada porque tem uma aplicação associada. " +"Consulte as Definições avançadas da página para gerir os apphooks." + +msgid "Are you sure you want to § this page?" +msgstr "Confirma que pretende § esta página?" + +msgid "Reload" +msgstr "Recarregar" + +msgid "New node" +msgstr "Novo nó" + +msgid "nodes" +msgstr "nós" + +msgid "View" +msgstr "Ver" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Ainda não existe nenhum %(object)s.\n" +"
\n" +" Adicionar %(object)s agora.\n" +" " + +msgid "Copy options" +msgstr "Opções de cópia" + +msgid "Choose copy options" +msgstr "Escolha opções de cópia" + +msgid "Close" +msgstr "Fechar" + +msgid "Legend" +msgstr "Legenda" + +msgid "In menu" +msgstr "No menu" + +msgid "Not in menu" +msgstr "Não no menu" + +msgid "View page" +msgstr "Ver página" + +msgid "Softroot" +msgstr "Softroot" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Aplicação: %(apphook)s" + +msgid "in menu" +msgstr "no menu" + +msgid "not in menu" +msgstr "não está no menu" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Configurações de página (SHIFT e clique para configurações avançadas)" + +msgid "Permissions" +msgstr "Permissões" + +msgid "inherited" +msgstr "herdado" + +msgid "This page has no preview!" +msgstr "Esta página não tem antevisão!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"É possível que o apphook associado não forneça conteúdo para a sua raiz." + +msgid "It is being redirected to:" +msgstr "Está a ser redireccionada para:" + +msgid "Clipboard" +msgstr "Área de transferência" + +msgid "Add plugin" +msgstr "Adicionar plugin" + +msgid "Copy all" +msgstr "Copiar todos" + +msgid "Copy from" +msgstr "Copiar de" + +msgid "Empty all" +msgstr "Esvaziar todos" + +msgid "Filter plugins..." +msgstr "Filtrar plugins..." + +msgid "Expand all" +msgstr "Expandir todos" + +msgid "Collapse all" +msgstr "Colapsar todos" + +msgid "You cannot add plugins to this plugin." +msgstr "Não pode adicionar plugins a este plugin." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "Este plugin não pode ser movido ou editado fora do seu antecessor." + +msgid "Clipboard is empty." +msgstr "A área de transferência está vazia." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Este plugin não permite conter plugins deste tipo." + +msgid "This plugin cannot have nested plugins." +msgstr "Este plugin não pode conter outros plugins." + +msgid "Highlight" +msgstr "Realçar" + +msgid "Available plugins" +msgstr "Plugins disponíveis" + +msgid "Toggle structure" +msgstr "Alternar estrutura" + +msgid "Login" +msgstr "Login" + +msgid "Add plugin to" +msgstr "Adicionar plugin a" + +msgid "More" +msgstr "Mais" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Versão de desenvolvimento a usar django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Cancelar" + +msgid "The following error occurred:" +msgstr "Ocorreu o seguinte erro:" + +msgid "Action successful." +msgstr "Acção com sucesso." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Confirma a exclusão deste plugin?" + +msgid "Are you sure you want to publish this page?" +msgstr "Confirma que pretende publicar esta página?" + +msgid "Plugin will be added here" +msgstr "O plugin vai ser adicionado aqui" + +msgid "You have unsaved changes." +msgstr "Tem alterações por gravar." + +msgid "Loading" +msgstr "Carregando" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Tem a certeza que pretende abandonar estas alterações?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"O formulário não pode ser carregado. Por favor, verifique que o serviço está" +" a funcionar correctamente." + +msgid "Most used" +msgstr "Mais usado" + +msgid "Shortcuts" +msgstr "Atalhos" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Esta página foi alterada entretanto, recarregando..." + +msgid "CMS-wide Shortcuts" +msgstr "Atalhos globais do CMS" + +msgid "Bring up this help dialog" +msgstr "Mostrar este menu de ajuda" + +msgid "Close/cancel" +msgstr "Fechar/cancelar" + +msgid "Toggle structure mode" +msgstr "Alternar modo de estrutura" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Alternar modo de estrutura e realçar o plugin sob o cursor" + +msgid "Open \"Create\" dialog" +msgstr "Abrir diálogo de \"Criação\"" + +msgid "Focus on Toolbar" +msgstr "Focar na Barra de Ferramentas" + +msgid "Focus on placeholders" +msgstr "Focar nos espaços reservados" + +msgid "Move to next/previous element" +msgstr "Mover para o elemento anterior/próximo" + +msgid "Focus on plugins of placeholder" +msgstr "Focar nos plugins do espaço reservado" + +msgid "Edit plugin" +msgstr "Editar plugin" + +msgid "Open actions menu" +msgstr "Abrir menu de acções" + +msgid "Expand/collapse" +msgstr "Expandir/recolher" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"O login falhou,Por favor verifique as suas credenciais e " +"tente novamente." + +msgid "Double-click to edit" +msgstr "Duplo-clique para editar" + +msgid "Tap to edit" +msgstr "Toque para editar" + +msgid "Click to go back" +msgstr "Clique para voltar atrás" + +msgid "Click to go forward" +msgstr "Clique para avançar" + +msgid "Minimize" +msgstr "Minimizar" + +msgid "Maximize" +msgstr "Maximizar" + +msgid "Placeholder not editable" +msgstr "Espaço reservado não editável" + +msgid "Drop a plugin here" +msgstr "Largue aqui um plugin" + +msgid "Welcome to your new django CMS installation!" +msgstr "Bem-vindo à sua nova instalação do django CMS!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Versão %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Vamos construir algo grandioso juntos!" + +msgid "Please log in" +msgstr "Por favor, faça login" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Adicione a sua primeira página\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Ajude a Financiar

\n" +"

\n" +" O seu financiamento beneficia directamente o produto, principalmente através do\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" Uma forma rápida de você ou a sua organização doarem é através do\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Junte-se a Nós

\n" +"

\n" +" A django CMS Association é uma organização sem fins lucrativos que financia e orienta o desenvolvimento do\n" +" django CMS.\n" +"

\n" +"

\n" +" Pode aderir tanto como indivíduo como\n" +" organização.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Contribua

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Notas de Instalação" + +msgid "Support" +msgstr "Suporte" + +msgid "Documentation" +msgstr "Documentação" + +msgid "User guide" +msgstr "Guia do utilizador" + +msgid "Give back" +msgstr "Retribua" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Se não vir o logótipo do django CMS no topo, certifique-se de que\n" +" ligou a pasta static/cms aos seus\n" +" ficheiros estáticos.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Está a ver esta mensagem porque tem\n" +" DEBUG = True no seu ficheiro de definições do django e\n" +" ainda não adicionou nenhuma página.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Benvindo ao django CMS" + +msgid "Add Another" +msgstr "Adicionar outro" + +msgid "Back" +msgstr "Retroceder" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "Escolha uma opção abaixo para avançar para o passo seguinte." + +msgid "Next" +msgstr "Próximo" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Desconhecido" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Página não encontrada em %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Uma 'templatetag' não conseguiu encontrar a página com os argumentos " +"`%(page_lookup)s`. O URL do pedido foi: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Duas colunas" + +msgid "Three columns" +msgstr "Três colunas" + +msgid "username" +msgstr "nome de utilizador" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Obrigatório. Até 300 caracteres. Letras, números e os caracteres @/./+/-/_" + +msgid "Enter a valid username." +msgstr "Introduza um nome de utilizador válido." + +msgid "email address" +msgstr "mailto" + +msgid "staff status" +msgstr "é da equipa" + +msgid "Designates whether the user can log into this admin site." +msgstr "Determina se o utilizador pode aceder ao site de administração." + +msgid "active" +msgstr "activo" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Determina se este utilizador deve ser tratado como estando activo. Desmarque" +" esta opção em vez de eliminar contas." + +msgid "users" +msgstr "utilizadores" + +msgid "Title Extension" +msgstr "Extensão de Título" + +msgid "Page Extension" +msgstr "Extensão de Página" + +msgid "object ID" +msgstr "ID do objecto" + +msgid "Example1 App" +msgstr "Aplicação Exemplo1" + +msgid "MultilingualExample1 App" +msgstr "Aplicação ExemploMultilingue1" + +msgid "Example1" +msgstr "Exemplo1" + +msgid "Examples" +msgstr "Exemplos" + +msgid "Extra Context" +msgstr "Conteúdo extra" + +msgid "Articles" +msgstr "Artigos" + +msgid "Sample App" +msgstr "App - exemplo" + +msgid "Sample App with config" +msgstr "Aplicação de exemplo com configuração" + +msgid "Sample App with excluded permissions" +msgstr "App de exemplo com permissões exluídas" + +msgid "Sample App 2" +msgstr "App - exemplo 2" + +msgid "Sample App 3" +msgstr "App - exemplo 2" + +msgid "Sample App Without Landing Page" +msgstr "Aplicação de exemplo sem página de destino" + +msgid "Namespaced App" +msgstr "Aplicação com escopo" + +msgid "Parent app" +msgstr "App ascendente" + +msgid "Child app" +msgstr "App descendente" + +msgid "Variable urls-menus App" +msgstr "Aplicação de urls-menus variáveis" + +msgid "sample root page" +msgstr "pagina de raiz - exemplo" + +msgid "sample settings page" +msgstr "página de definições - exemplo" + +msgid "sample account page" +msgstr "página de gestão de conta - exemplo" + +msgid "sample my profile page" +msgstr "página de o meu perfil - exemplo" + +msgid "Static Menu" +msgstr "Menu estático" + +msgid "Static Menu2" +msgstr "Menu estático 2" + +msgid "Static Menu3" +msgstr "Menu estático 3" + +msgid "Static Menu4" +msgstr "Menu estático" + +msgid "Category" +msgstr "Categoria" + +msgid "Categories" +msgstr "Categorias" + +msgid "Add Category" +msgstr "Adicionar Categoria" + +msgid "^account/$" +msgstr "^conta/$" + +msgid "Change Category" +msgstr "Modificar Categoria" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Obrigado por passar algum tempo de qualidade com o site hoje." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Herdar o template do ancestral mais próximo" + +msgid "UserSettings" +msgstr "DefiniçõesDoUtilizador" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Adicionar plugin ao espaço reservado \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Adicionar plugin a %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Espaço reservado único" + +msgid "CMS - your user account was created." +msgstr "CMS - sua conta de utilizador foi criada." + +msgid "CMS - your user account was changed." +msgstr "CMS - sua conta de utilizador foi modificada." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Já foi atingido o número máximo de plugins para este espaço (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Já foi atingido o número máximo de plugins %(plugin_name)s para este espaço " +"(%(limit)s)." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" +"Não foi possível encontrar o módulo CMS_REQUEST_IP_RESOLVER especificado: " +"\"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Não foi possível encontrar a função CMS_REQUEST_IP_RESOLVER especificada: " +"\"{0}\" no módulo \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Criar uma nova instância de %s." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Já foi registado um assistente para o modelo: %s" diff --git a/cms/locale/pt/LC_MESSAGES/djangojs.po b/cms/locale/pt/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..f3922f38 --- /dev/null +++ b/cms/locale/pt/LC_MESSAGES/djangojs.po @@ -0,0 +1,24 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Vítor Figueiró , 2012 +# Vítor Figueiró , 2012 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Vítor Figueiró , 2012\n" +"Language-Team: Portuguese (http://app.transifex.com/divio/django-cms/language/pt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Tem a certeza que quer mudar de separador sem gravar a página primeiro?" diff --git a/cms/locale/pt_BR/LC_MESSAGES/django.po b/cms/locale/pt_BR/LC_MESSAGES/django.po new file mode 100644 index 00000000..d854128d --- /dev/null +++ b/cms/locale/pt_BR/LC_MESSAGES/django.po @@ -0,0 +1,1766 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Diego Ponci , 2023 +# Diefferson Môro , 2025 +# Guilherme Vierno , 2025 +# Welligton Miguel , 2026 +# Julio Lucchese , 2026 +# Rafaela Santos , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Portuguese (Brazil) (https://app.transifex.com/divio/teams/58664/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "All" +msgstr "Todos" + +msgid "Copy permissions" +msgstr "Copiar permissões" + +msgid "Slug" +msgstr "Slug" + +msgid "The part of the title that is used in the URL" +msgstr "A parte do título que é usada na URL" + +msgid "Page type" +msgstr "Tipo de página" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Tipos de Página" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Sobrescreva a URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Se o caminho padrão deve ser utilizado, deixe este campo em branco." + +msgid "Start typing..." +msgstr "Comece a digitar..." + +msgid "menu visibility" +msgstr "visibilidade do menu" + +msgid "limit when this page is visible in the menu" +msgstr "limite quando esta página é visível no menu" + +msgid "X Frame Options" +msgstr "Opções X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Se esta página pode ser incorporada em outras páginas ou sites." + +msgid "URL options" +msgstr "Opções de URL" + +msgid "Menu options" +msgstr "Opções de menu" + +msgid "Headers" +msgstr "Cabeçalhos" + +msgid "Application" +msgstr "Aplicação" + +msgid "Hook application to this page." +msgstr "Associe uma aplicação a esta página." + +msgid "Application configurations" +msgstr "Configurações da aplicação" + +msgid "A page with this reverse URL id exists already." +msgstr "Já existe uma página com esta URL reversa." + +msgid "Invalid application config value" +msgstr "Valor inválido da configuração da aplicação" + +msgid "An application instance using this configuration already exists." +msgstr "Uma instância da aplicação usando essa configuração já existe." + +msgid "An application instance with this name already exists." +msgstr "Uma instância da aplicação usando esse nome já existe." + +msgid "You can't move the home page inside another page" +msgstr "Você não pode mover a página inicial para dentro de outra página" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Você não pode ter duas páginas com o mesmo slug no mesmo nível de página. " +"Por favor, altere o slug de uma das páginas antes de tentar mover novamente." + +msgid "Yes" +msgstr "Sim" + +msgid "No" +msgstr "Não" + +msgid "user" +msgstr "usuário" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "Adicionar" + +msgid "Change" +msgstr "Modificar" + +msgid "Delete" +msgstr "Excluir" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Usuários não podem criar uma página sem permissão para mudar a página " +"criada. São necessárias permissões de edição." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Usuários não podem deletar uma página sem permissões para mudar a página. " +"São necessárias permissões de edição." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Usuários não podem definir as permissões da página sem permissões para " +"alterar uma página. São necessárias permissões de edição." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Usuários não podem deletar as permissões da página sem permissões para " +"alterar uma página. São necessárias permissões de edição." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Os usuários não podem excluir permissões de página sem permissões para " +"alterar as permissões. Edite as permissões necessárias." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Os usuários não podem excluir permissões de página sem permissões para " +"alterar as permissões. Edite as permissões necessárias." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Tipo de plugin inválido '%s'" + +msgid "Language must be set to a supported language!" +msgstr "O idioma deve ser definido para um idioma suportado pelo sistema!" + +msgid "Parent plugin language must be same as language!" +msgstr "O idioma do plugin pai deve ser o mesmo idioma!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "O placeholder do plugin pai deve ser o mesmo placeholder!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "A posição do plugin deve ser maior que %(position)d" + +msgid "Translations" +msgstr "Traduções" + +msgid "Advanced Settings" +msgstr "Configurações Avançadas" + +msgid "The page is not eligible to be home." +msgstr "A página não é elegível para ser o início." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Não existe nenhum objeto de '%(name)s' com chave primária '%(key)r'" + +msgid "error" +msgstr "erro" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Erro! Você não tem permissão para mover esta página. Por favor, recarregue a" +" página" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Erro! Você não tem permissão para copiar essa página." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Erro! A página que você está colando não está traduzida em nenhum dos " +"idiomas configurados pelo site de destino." + +msgid "You do not have permission to edit this page" +msgstr "Você não tem permissão para editar essa página" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(para alterá-lo, primeiro despublique a versão atualmente publicada desta " +"página)" + +msgid "Add Translation" +msgstr "Adicionar Tradução" + +msgid "Add Page Copy" +msgstr "Adicionar Cópia de Página" + +msgid "New sub page" +msgstr "Nova sub-página" + +msgid "New page" +msgstr "Nova página" + +msgid "Database error" +msgstr "Erro na base de dados" + +msgid "Template not valid" +msgstr "Template inválido." + +msgid "Placeholder selection not valid" +msgstr "Seleção de placeholder inválida" + +msgid "The template was successfully changed" +msgstr "O template foi alterado com sucesso." + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "O placeholder '%s' não existe no idioma de destino" + +msgid "You do not have permission to copy these plugins." +msgstr "Você não tem permissão para copiar esses plugins." + +msgid "You do not have permission to delete this page" +msgstr "Você não tem permissão para excluir essa página" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Foram excluídos título e plugins com a língua '%(language)s'" + +msgid "Public content" +msgstr "Conteúdo público" + +msgid "Empty" +msgstr "Vazio" + +msgid "Create Content" +msgstr "Criar Conteúdo" + +msgid "View restriction" +msgstr "Ver restrição" + +msgid "View restrictions" +msgstr "Ver restrições" + +#, python-format +msgid "Field %s not found" +msgstr "Campo %s não encontrado" + +msgid "You do not have permission to edit this item" +msgstr "Você não possui permissão para editar este item." + +msgid "You do not have permission to add a plugin" +msgstr "Você não tem permissão para adicionar um plugin." + +msgid "You do not have permission to copy this placeholder." +msgstr "Você não tem permissão para copiar este espaço reservado." + +msgid "Plugin not found" +msgstr "Plugin não encontrado" + +msgid "You do not have permission to edit this plugin" +msgstr "Você não tem permissão para editar esse plugin" + +msgid "You have no permission to paste this plugin" +msgstr "Você não tem permissão para colar este plugin" + +msgid "You have no permission to paste this placeholder" +msgstr "Você não tem permissão para colar este espaço reservado." + +msgid "You have no permission to move this plugin" +msgstr "Você não tem permissão para mover esse plugin" + +msgid "You have no permission to cut this plugin" +msgstr "Você não tem permissão para cortar este plugin" + +msgid "You do not have permission to delete this plugin" +msgstr "Você não tem permissão para excluir esse plugin" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "O plugin de %(name)s \"%(obj)s\" foi excluído com sucesso." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Não foi possível excluir %(name)s" + +msgid "Are you sure?" +msgstr "Você tem certeza?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Você não tem permissão para limpar esse placeholder" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "O placeholder \"%(obj)s\" foi limpo com sucesso." + +msgid "placeholder" +msgstr "placeholder" + +msgid "Page permissions" +msgstr "Permissões de página" + +msgid "User & Group permissions" +msgstr "Permissões de usuário e grupo" + +msgid "Page permissions management" +msgstr "Gerenciament de permissões de página" + +msgid "Actions" +msgstr "Ações" + +msgid "Empty content" +msgstr "Conteúdo vazio" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Propriedades de %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Adicionar novo %(object_name)s" + +msgid "Add content" +msgstr "Adicionar conteúdo" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"O conteúdo do idioma atual foi alterado. Clique em \"Cancelar\" para " +"retornar ao formulário e salvar as alterações. Clique em \"OK\" para " +"descartar as alterações." + +#, python-format +msgid "Add %(language)s content" +msgstr "Adicionar conteúdo em %(language)s" + +msgid "Preview" +msgstr "Pré-visualizar" + +msgid "Settings" +msgstr "Configurações" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Idioma inválido %(value)s. Este formulário não pode ser processado. Tente " +"alterar o idioma." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Nenhum apphook \"%r\" registrado foi encontrado" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Espaço Reservado" + +msgid "Create" +msgstr "Criar" + +msgid "Edit" +msgstr "Editar" + +msgid "Structure" +msgstr "Estrutura" + +msgid "Content" +msgstr "Conteúdo" + +msgid "Sites" +msgstr "Sites" + +msgid "Admin Sites" +msgstr "Gerenciar Sites" + +msgid "Administration" +msgstr "Administração" + +msgid "User settings" +msgstr "Configurações do usuário" + +msgid "Clipboard..." +msgstr "Área de transferência..." + +msgid "Clear clipboard" +msgstr "Limpar área de transferência" + +msgid "Disable toolbar" +msgstr "Desabilitar barra de ferramentas" + +msgid "Shortcuts..." +msgstr "Atalhos..." + +msgid "Users" +msgstr "Usuários" + +#, python-format +msgid "Logout %s" +msgstr "Sair %s" + +msgid "Logout" +msgstr "Logout" + +msgid "Language" +msgstr "Idioma" + +msgid "Delete Translation" +msgstr "Excluir Tradução" + +msgid "Copy all plugins" +msgstr "Copiar todos os plugins" + +#, python-format +msgid "from %s" +msgstr "de %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Tem certeza de que deseja copiar todos os plugins%s?" + +msgid "Pages" +msgstr "Páginas" + +msgid "Page" +msgstr "Página" + +msgid "Create Page" +msgstr "Criar Página" + +msgid "New Page" +msgstr "Nova Página" + +msgid "New Sub Page" +msgstr "Nova sub-página" + +msgid "Duplicate this Page" +msgstr "Duplicar esta Página" + +msgid "Page settings" +msgstr "Configurações da página" + +msgid "Advanced settings" +msgstr "Configurações avançadas" + +msgid "Templates" +msgstr "Modelo" + +msgid "Placeholders" +msgstr "Placeholders" + +msgid "Hide in navigation" +msgstr "Ocultar na navegação" + +msgid "Display in navigation" +msgstr "Exibir na navegação" + +msgid "Delete page" +msgstr "Excluir página" + +msgid "Create a new page next to the current page." +msgstr "Criar uma nova página próxima à página atual." + +msgid "Create a page below the current page." +msgstr "Crie uma página seguindo a página atual" + +msgid "Select a valid site" +msgstr "Selecione um site válido" + +msgid "Select a valid page" +msgstr "Selecione uma página válida" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"A página %(conflict_page)s tem a mesma URL '%(url)s' como a página atual " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"A página %(conflict_page)s tem a mesma URL '%(url)s' como a página atual." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Opcional. Se fornecido, será adicionado automaticamente em um novo plugin de" +" texto." + +msgid "Provide a title for the new page." +msgstr "Forneça um título para a nova página" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "Deixe em branco para slug automático, ou sobrescreva se necessário." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" +"Não é possível criar o slug automaticamente. Por favor, forneça um " +"manualmente." + +msgid "Please provide a valid slug." +msgstr "Por favor, forneça um slug válido." + +msgid "You don't have the permissions required to add a page." +msgstr "Você não tem as permissões necessárias para adicionar uma página." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "posição" + +msgid "language" +msgstr "língua" + +msgid "plugin_name" +msgstr "nome_do_plugin" + +msgid "creation date" +msgstr "data de criação" + +msgid "can edit" +msgstr "pode editar" + +msgid "can add" +msgstr "pode adicionar" + +msgid "can delete" +msgstr "pode excluir" + +msgid "can change advanced settings" +msgstr "pode modificar configurações avançadas" + +msgid "can publish" +msgstr "pode publicar" + +msgid "can change permissions" +msgstr "pode modificar permissões" + +msgid "can move" +msgstr "pode mover" + +msgid "view restricted" +msgstr "view restricted" + +msgid "can recover pages" +msgstr "pode recuperar páginas" + +msgid "group" +msgstr "grupo" + +msgid "sites" +msgstr "sites" + +msgid "created by" +msgstr "criado por" + +msgid "changed by" +msgstr "modificado por" + +msgid "publication date" +msgstr "data de publicação" + +msgid "publication end date" +msgstr "data final de publicação" + +msgid "in navigation" +msgstr "na navegação" + +msgid "soft root" +msgstr "raiz leve" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "menu anexado" + +msgid "template" +msgstr "modelo" + +msgid "login required" +msgstr "login requerido" + +msgid "application" +msgstr "aplicação" + +msgid "application instance name" +msgstr "nome de instância da aplicação" + +msgid "site" +msgstr "site" + +msgid "Grant on" +msgstr "Garantir a" + +msgid "page" +msgstr "página" + +msgid "no limit set" +msgstr "nenhum limite definido" + +msgid "for logged in users only" +msgstr "somente para usuários logados" + +msgid "for anonymous users only" +msgstr "apenas para usuários anônimos" + +msgid "Inherit from parent page" +msgstr "Herdar da página pai" + +msgid "Deny" +msgstr "Negar" + +msgid "Only this website" +msgstr "Somente este website" + +msgid "Allow" +msgstr "Permitir" + +msgid "title" +msgstr "título" + +msgid "The default title" +msgstr "O título padrão" + +msgid "Page Title" +msgstr "Título da página" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Sobrescreve o que será exibido no topo do seu navegador ou nos favoritos" + +msgid "Menu Title" +msgstr "Título do Menu" + +msgid "Overwrite what is displayed in the menu" +msgstr "Sobrescreva o que será exibido no menu" + +msgid "Description meta tag" +msgstr "Descrição da tag meta" + +msgid "A description of the page used by search engines." +msgstr "Uma descrição da página as vezes utilizada por sites de busca." + +msgid "redirect" +msgstr "redirecionar" + +msgid "Redirects to this URL." +msgstr "Redireciona para esta URL" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Todos os ancestrais não serão exibidos na navegação" + +msgid "The template used to render the content." +msgstr "O template usado para carregar o conteúdo." + +msgid "page content" +msgstr "conteúdo da página" + +msgid "page contents" +msgstr "conteúdos da página" + +msgid "default" +msgstr "padrão" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Um identificador único que é utilizado no template para linkar para esta " +"página." + +msgid "Mark this page as a page type" +msgstr "Marcar esta página como um tipo de página" + +msgid "pages" +msgstr "páginas" + +msgid "No available title" +msgstr "Nenhum título disponível" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Caminho" + +msgid "Current page" +msgstr "Página atual" + +msgid "Page children (immediate)" +msgstr "Páginas-filho (imediatas)" + +msgid "Page and children (immediate)" +msgstr "Página e filhos (imediatos)" + +msgid "Page descendants" +msgstr "Páginas descendentes" + +msgid "Page and descendants" +msgstr "Página e descendentes" + +msgid "on page level" +msgstr "a nível de página" + +msgid "frontend view restriction" +msgstr "frontend view restriction" + +msgid "Please select user or group." +msgstr "Por favor, selecione um usuário ou grupo." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Os usuários não podem publicar uma página sem permissões para alterar a " +"página. Edite as permissões necessárias." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Os usuários não podem alterar as configurações avançadas da página sem " +"permissão para alterar a página. Edite as permissões necessárias." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Os usuários não podem alterar as permissões da página sem permissão para " +"alterar a página. Edite as permissões necessárias." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Usuários não podem mover uma página sem permissões para alterar a página. " +"Permissões de edição necessárias." + +msgid "can recover any deleted page" +msgstr "pode recuperar qualquer página excluída" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"Se nenhum for selecionado, usuário terá permissões dadas a todos os sites." + +msgid "Page global permission" +msgstr "Permissão global de página" + +msgid "Pages global permissions" +msgstr "Permissões globais de página" + +msgid "Page permission" +msgstr "Permissão de página" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"A permissão para adicionar páginas requer também acesso aos filhos, ou " +"descendentes, caso contrário, a página adicionada não poderá ser modificada " +"pelo seu criador." + +msgid "User (page)" +msgstr "Usuário (página)" + +msgid "Users (page)" +msgstr "Usuários (página)" + +msgid "User group (page)" +msgstr "Grupos de usuário (página)" + +msgid "User groups (page)" +msgstr "Grupos de usuário (página)" + +msgid "slot" +msgstr "vaga" + +msgid "width" +msgstr "largura" + +msgid "Edit object" +msgstr "Editar objeto" + +msgid "This is an external placeholder" +msgstr "Este é um placeholder externo" + +msgid "plugin" +msgstr "plugin" + +msgid "plugins" +msgstr "plugins" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "O idioma para a interface de administração a barra de ferramentas" + +msgid "user setting" +msgstr "configuração do usuário" + +msgid "user settings" +msgstr "configurações do usuário" + +msgid "by template" +msgstr "por template" + +msgid "by code" +msgstr "por código" + +msgid "static placeholder name" +msgstr "nome do placeholder" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Nome descritivo para identificar este placeholder. Não é exibido aos " +"usuários." + +msgid "placeholder code" +msgstr "código do placeholder" + +msgid "To render the static placeholder in templates." +msgstr "Para renderizar o placeholder estático em templates." + +msgid "placeholder content" +msgstr "conteúdo do placeholder" + +msgid "creation_method" +msgstr "metodo_criacao" + +msgid "static placeholder" +msgstr "placeholder estático" + +msgid "static placeholders" +msgstr "placeholders estáticos" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Um placeholder estático com o mesmo site e código já existe" + +msgid "Advanced options" +msgstr "Opções avançadas" + +msgid "Generic" +msgstr "Genérico" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "O %(name)s \"%(obj)s\" foi alterado com sucesso." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" +"Não há mais nenhuma configuração para este plugin. Por favor pressione " +"salvar." + +msgid "Moved" +msgstr "Movido" + +msgid "Changed" +msgstr "Alterado" + +msgid "Deleted" +msgstr "Excluído" + +msgid "Added Page Translation" +msgstr "Tradução de Página Adicionada" + +msgid "Changed Page Translation" +msgstr "Tradução de Página Alterada" + +msgid "Deleted Page Translation" +msgstr "Tradução de Página Excluída" + +msgid "Added Plugin" +msgstr "Plugin Adicionado" + +msgid "Changed Plugin" +msgstr "Plugin Alterado" + +msgid "Moved Plugin" +msgstr "Plugin Movido" + +msgid "Deleted Plugin" +msgstr "Plugin Excluído" + +msgid "Cut Plugin" +msgstr "Recortar Plugin" + +msgid "Paste Plugin" +msgstr "Colar Plugin" + +msgid "Paste to Placeholder" +msgstr "Colar no Placeholder" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Plugins adicionados ao placeholder a partir da área de transferência" + +msgid "Cleared Placeholder" +msgstr "Placeholder Limpo" + +msgid "Save" +msgstr "Salvar" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" +"Alguns campos não podem ser alterados, pois são conteúdo somente leitura." + +#, python-format +msgid "Log in to administration here." +msgstr "Entre na interface de administração aqui" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Url para login: %(login_url)s" + +msgid "Username:" +msgstr "Nome de usuário:" + +msgid "Password:" +msgstr "Senha:" + +msgid "Add a page" +msgstr "Adicionar uma página" + +msgid "Change a page" +msgstr "Modificar uma página" + +msgid "Home" +msgstr "Início" + +msgid "View on site" +msgstr "Ver no site" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Por favor, corrija o erro abaixo." +msgstr[1] "Por favor, corrija os erros abaixo." +msgstr[2] "Por favor, corrija os erros abaixo." + +msgid "All permissions" +msgstr "Todas as permissões" + +msgid "Loading..." +msgstr "Carregando..." + +msgid "Save and continue editing" +msgstr "Salvar e continuar editando" + +#, 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 "" +"Tem certeza de que deseja excluir %(object_name)s \"%(escaped_object)s\"? " +"Todos os seguintes itens relacionados serão excluídos:" + +msgid "Yes, I’m sure" +msgstr "Sim, tenho certeza" + +msgid "No, take me back" +msgstr "Não, voltar" + +msgid "Summary" +msgstr "Resumo" + +msgid "User" +msgstr "Usuário" + +msgid "Group" +msgstr "Grupo" + +msgid "Can edit" +msgstr "Pode editar" + +msgid "Can add" +msgstr "Pode adicionar" + +msgid "Can delete" +msgstr "Pode excluir" + +msgid "Can publish" +msgstr "Pode publicar" + +msgid "Can change permissions" +msgstr "Pode modificar permissões" + +msgid "Can move" +msgstr "Pode mover" + +msgid "Can view" +msgstr "Podem ver" + +msgid "(global)" +msgstr "(global)" + +msgid "(current)" +msgstr "(atual)" + +msgid "Page doesn't inherit any permissions." +msgstr "Página não herda nenhuma permissão." + +msgid "Edit model" +msgstr "Editar modelo" + +msgid "Save as new" +msgstr "Salvar como novo" + +msgid "Save and add another" +msgstr "Salvar e adicionar outro" + +msgid "Copy" +msgstr "Copiar" + +msgid "Cut" +msgstr "Recortar" + +msgid "Paste" +msgstr "Colar" + +msgid "Set as home" +msgstr "Definir como início" + +msgid "is restricted" +msgstr "é restrita" + +msgid "last change by" +msgstr "última alteração por" + +msgid "last change on" +msgstr "última alteração em" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Lista de páginas" + +msgid "Search" +msgstr "Buscar" + +msgid "Page Tree" +msgstr "Árvore de Páginas" + +msgid "Reset filter" +msgstr "Reiniciar filtros" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Restaurar remoção de %(name)s\n" +" " + +msgid "Main Navigation" +msgstr "Navegação Principal" + +msgid "Options" +msgstr "Opções" + +msgid "Successfully moved" +msgstr "Movido com sucesso" + +msgid "Changes within the tree might require a refresh." +msgstr "Alterações na árvore podem necessitar de recarregar." + +msgid "Error:" +msgstr "Erro:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Esta página não pode ser copiada porque uma aplicação está atrelada à ela. " +"Veja as Configurações avançadas da Página para gerenciar apphooks." + +msgid "Are you sure you want to § this page?" +msgstr "Você tem certeza que deseja § essa página?" + +msgid "Reload" +msgstr "Recarregar" + +msgid "New node" +msgstr "Novo nó" + +msgid "nodes" +msgstr "nós" + +msgid "View" +msgstr "Visualizar" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +"Ainda não há %(object)sao redor ainda\n" +"
\n" +"Adicionar %(object)sagora." + +msgid "Copy options" +msgstr "Opções de cópia" + +msgid "Choose copy options" +msgstr "Escolha opções de cópia" + +msgid "Close" +msgstr "Fechar" + +msgid "Legend" +msgstr "Legenda" + +msgid "In menu" +msgstr "No menu" + +msgid "Not in menu" +msgstr "Fora do menu" + +msgid "View page" +msgstr "Visualizar página" + +msgid "Softroot" +msgstr "Raiz leve" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Aplicação: %(apphook)s" + +msgid "in menu" +msgstr "no menu" + +msgid "not in menu" +msgstr "não está no menu" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Configurações da página (SHIT-click para configurações avançadas)" + +msgid "Permissions" +msgstr "Permissões" + +msgid "inherited" +msgstr "herdado" + +msgid "This page has no preview!" +msgstr "A página não possui pré-visualização!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Possivelmente o apphook associado não fornece conteúdo para a sua raiz." + +msgid "It is being redirected to:" +msgstr "será redirecionado para:" + +msgid "Clipboard" +msgstr "Área de transferência" + +msgid "Add plugin" +msgstr "Adicionar plugin" + +msgid "Copy all" +msgstr "Copiar tudo" + +msgid "Copy from" +msgstr "Copiar de" + +msgid "Empty all" +msgstr "Esvaziar tudo" + +msgid "Filter plugins..." +msgstr "Filtrar plugins" + +msgid "Expand all" +msgstr "Expandir todos" + +msgid "Collapse all" +msgstr "Esconder todos" + +msgid "You cannot add plugins to this plugin." +msgstr "Você não pode adicionar plugins a este plugin" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "Este plugin não pode ser movido ou editado fora de seu pai" + +msgid "Clipboard is empty." +msgstr "Área de transferência está vazia." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Este plugin não aceita plugins-filho deste tipo " + +msgid "This plugin cannot have nested plugins." +msgstr "Este plugin não pode ter plugins-filho" + +msgid "Highlight" +msgstr "Realçar" + +msgid "Available plugins" +msgstr "Plugins disponíveis" + +msgid "Toggle structure" +msgstr "Alternar estrutura" + +msgid "Login" +msgstr "Login" + +msgid "Add plugin to" +msgstr "Adicionar plugin a" + +msgid "More" +msgstr "Mais" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Versão de desenvolvimento utilizando django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Cancelar" + +msgid "The following error occurred:" +msgstr "Ocorreu o seguinte erro:" + +msgid "Action successful." +msgstr "Ação bem sucedida." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Tem certeza que deseja remover este plugin?" + +msgid "Are you sure you want to publish this page?" +msgstr "Você tem certeza que deseja publicar está página?" + +msgid "Plugin will be added here" +msgstr "Plugin será adicionado aqui" + +msgid "You have unsaved changes." +msgstr "Você tem alterações não salvas." + +msgid "Loading" +msgstr "Carregando" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Tem certeza que deseja descartar estas alterações?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"O formulário não foi carregado. Por favor verifique que o servidor está em " +"execução." + +msgid "Most used" +msgstr "Mais usado" + +msgid "Shortcuts" +msgstr "Atalhos" + +msgid "The page was changed in the meantime, reloading..." +msgstr "A página foi alterada enquanto isso, recarregando .." + +msgid "CMS-wide Shortcuts" +msgstr "CMS-wide atalhos" + +msgid "Bring up this help dialog" +msgstr "Abra este diálogo de ajuda" + +msgid "Close/cancel" +msgstr "Fechar/cancelar" + +msgid "Toggle structure mode" +msgstr "Alternar modo de estrutura" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Alternar o modo de estrutura e destacar o hovered-over plug-in" + +msgid "Open \"Create\" dialog" +msgstr "Abra a caixa de diálogo \"Criar\"" + +msgid "Focus on Toolbar" +msgstr "Foco na barra de ferramentas" + +msgid "Focus on placeholders" +msgstr "Concentre-se em espaço reservado" + +msgid "Move to next/previous element" +msgstr "Mover para o elemento seguinte/anterior" + +msgid "Focus on plugins of placeholder" +msgstr "Concentre-se em plugins de espaço reservado" + +msgid "Edit plugin" +msgstr "Editar plugin" + +msgid "Open actions menu" +msgstr "Abrir menu de ações" + +msgid "Expand/collapse" +msgstr "Expandir/recolher" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Login falhou. Por favor, verifique suas credenciais e tente" +" novamente." + +msgid "Double-click to edit" +msgstr "Clique duas vezes para editar" + +msgid "Tap to edit" +msgstr "Aperte para editar" + +msgid "Click to go back" +msgstr "Clique para voltar" + +msgid "Click to go forward" +msgstr "Clique para seguir" + +msgid "Minimize" +msgstr "Minimizar" + +msgid "Maximize" +msgstr "Maximizar" + +msgid "Placeholder not editable" +msgstr "Placeholder não editável" + +msgid "Drop a plugin here" +msgstr "Solte um plugin aqui" + +msgid "Welcome to your new django CMS installation!" +msgstr "Bem-vindo à sua nova instalação do django CMS!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Versão %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Vamos construir algo incrível juntos!" + +msgid "Please log in" +msgstr "Por favor, faça login" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Adicione sua primeira página\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Ajude no Financiamento

\n" +"

\n" +" Seu financiamento beneficia diretamente o produto, principalmente através do\n" +" Programa de Fellowship do django CMS!\n" +"

\n" +"

\n" +" Uma forma rápida de você ou a sua organização doar é no\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Junte-se a Nós

\n" +"

\n" +" A django CMS Association é uma organização sem fins lucrativos que financia e orienta o desenvolvimento do\n" +" django CMS.\n" +"

\n" +"

\n" +" Você pode participar tanto como pessoa física quanto como\n" +" organização.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Contribua

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Notas de instalação" + +msgid "Support" +msgstr "Suporte" + +msgid "Documentation" +msgstr "Documentação" + +msgid "User guide" +msgstr "Manual de Instruções" + +msgid "Give back" +msgstr "Retribua" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Se não vê o logotipo do django CMS no topo, certifique-se\n" +" que fez link da pasta static/cms para os seus\n" +" ficheiros estáticos.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Está a ver esta mensagem porque tem \n" +" DEBUG = True no seu ficheiro de configurações django e\n" +" ainda não adicionou nenhuma página.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Seja bem vindo ao Django CMS" + +msgid "Add Another" +msgstr "Adicionar outro" + +msgid "Back" +msgstr "Voltar" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" +"Por favor, escolha uma opção abaixo para prosseguir para o próximo passo." + +msgid "Next" +msgstr "Próximo" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Desconhecido" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Página não encontrada em %(domain)s " + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"A marca de modelo (template tag) não conseguiu encontrar a página com os argumentos de pesquisa ` %(page_lookup)s\n" +"`. A URL do requisitada foi: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Duas colunas" + +msgid "Three columns" +msgstr "Três colunas" + +msgid "username" +msgstr "usuário" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Obrigatório. 300 caracteres ou menos. Letras, números e caracteres @/./+/-/_" + +msgid "Enter a valid username." +msgstr "Digite um usuário válido" + +msgid "email address" +msgstr "endereço de e-mail" + +msgid "staff status" +msgstr "membro da equipe" + +msgid "Designates whether the user can log into this admin site." +msgstr "Indica que usuário consegue acessar este site de administração." + +msgid "active" +msgstr "ativo" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Indica que o usuário será tratado como ativo. Ao invés de excluir contas de " +"usuário, desmarque isso." + +msgid "users" +msgstr "usuario" + +msgid "Title Extension" +msgstr "Extensão do título" + +msgid "Page Extension" +msgstr "Extensão da página" + +msgid "object ID" +msgstr "ID do objeto" + +msgid "Example1 App" +msgstr "Aplicativo Exemplo1" + +msgid "MultilingualExample1 App" +msgstr "Aplicativo MultilinguasExemplo1" + +msgid "Example1" +msgstr "Exemplo1" + +msgid "Examples" +msgstr "Exemplos" + +msgid "Extra Context" +msgstr "Conteúdo Extra" + +msgid "Articles" +msgstr "Artigos" + +msgid "Sample App" +msgstr "Aplicação de exemplo" + +msgid "Sample App with config" +msgstr "Aplicação de exemplo configurável" + +msgid "Sample App with excluded permissions" +msgstr "Aplicativo de exemplo com permissões excluidas" + +msgid "Sample App 2" +msgstr "Aplicativo modelo 2" + +msgid "Sample App 3" +msgstr "Exemplo de aplicação 3" + +msgid "Sample App Without Landing Page" +msgstr "Aplicação de Exemplo Sem Página Inicial" + +msgid "Namespaced App" +msgstr "Aplicativo com namespace" + +msgid "Parent app" +msgstr "App pai" + +msgid "Child app" +msgstr "App filho" + +msgid "Variable urls-menus App" +msgstr "Aplicativo de urls de menus variáveis" + +msgid "sample root page" +msgstr "página raiz de exemplo" + +msgid "sample settings page" +msgstr "página de configurações de exemplo" + +msgid "sample account page" +msgstr "página conta de exemplo" + +msgid "sample my profile page" +msgstr "minha página de perfil exemplo" + +msgid "Static Menu" +msgstr "Menu Estático" + +msgid "Static Menu2" +msgstr "Menu Estático 2" + +msgid "Static Menu3" +msgstr "Menu Estático 3" + +msgid "Static Menu4" +msgstr "Menu Estático4" + +msgid "Category" +msgstr "Categoria" + +msgid "Categories" +msgstr "Categorias" + +msgid "Add Category" +msgstr "Adicionar Categoria" + +msgid "^account/$" +msgstr "^Conta/$" + +msgid "Change Category" +msgstr "Modificar Categoria" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Obrigado pelo seu tempo neste site." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Herdar o template do ancestral mais próximo" + +msgid "UserSettings" +msgstr "Configurações de usuário" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Adicionar plugin ao espaço de conteúdo \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Adicionar plugin para %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Placeholder único" + +msgid "CMS - your user account was created." +msgstr "CMS - sua conta de usuário foi criada." + +msgid "CMS - your user account was changed." +msgstr "CMS - sua conta de usuário foi modificada." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Este espaço reservado já tem o número máximo de plugins (%s)" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Este espaço reservado já tem o número máximo (%(limit)s) de plugins " +"permitidos %(plugin_name)s." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Não foi possível encontrar o módulo CMS_REQUEST_IP_RESOLVER: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Não foi possível encontrar a função CMS_REQUEST_IP_RESOLVER: \"{0}\" no " +"módulo \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Criar uma nova instância de %s." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Um assistente já foi registrado para o modelo: %s" diff --git a/cms/locale/pt_BR/LC_MESSAGES/djangojs.po b/cms/locale/pt_BR/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..59d24741 --- /dev/null +++ b/cms/locale/pt_BR/LC_MESSAGES/djangojs.po @@ -0,0 +1,25 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Diego Ponci , 2016 +# Juliano Fischer Naves <>, 2012 +# Rafael Duarte Trevisan , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Rafael Duarte Trevisan , 2013\n" +"Language-Team: Portuguese (Brazil) (http://app.transifex.com/divio/django-cms/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Você tem certeza que deseja trocar as abas sem salvar o conteúdo da página primeiro?" diff --git a/cms/locale/pt_PT/LC_MESSAGES/django.po b/cms/locale/pt_PT/LC_MESSAGES/django.po new file mode 100644 index 00000000..691ab9ed --- /dev/null +++ b/cms/locale/pt_PT/LC_MESSAGES/django.po @@ -0,0 +1,1711 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Francisco Jesus , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Francisco Jesus , 2026\n" +"Language-Team: Portuguese (Portugal) (https://app.transifex.com/divio/teams/58664/pt_PT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "All" +msgstr "Todos" + +msgid "Copy permissions" +msgstr "" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "A parte do título que é utilizada no URL" + +msgid "Page type" +msgstr "Tipo de página" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Alterar URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "" +"Manter este campo vazio para o caminho predefinido ser intencionalmente " +"usado." + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "visibilidade de menu" + +msgid "limit when this page is visible in the menu" +msgstr "limitar quando esta página é visível no menu" + +msgid "X Frame Options" +msgstr "Opções X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "Cabeçalho" + +msgid "Application" +msgstr "" + +msgid "Hook application to this page." +msgstr "Aplicação Hook para esta página" + +msgid "Application configurations" +msgstr "Configurações da Aplicação" + +msgid "A page with this reverse URL id exists already." +msgstr "Uma página com este id de Reverse URL já existe." + +msgid "Invalid application config value" +msgstr "Valor inválido para configuração de aplicação" + +msgid "An application instance using this configuration already exists." +msgstr "Uma aplicação a utilizar esta configuração já existe." + +msgid "An application instance with this name already exists." +msgstr "Já existe uma aplicação com este nome." + +msgid "You can't move the home page inside another page" +msgstr "Não pode mover a página home para dentro de uma outra página." + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "Sim" + +msgid "No" +msgstr "Não" + +msgid "user" +msgstr "" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Os utilizadores não podem criar uma página sem permissões para alterar as " +"paginas criadas. Alterar as permissões necessárias." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Os utilizadores não podem apagar uma página sem permissões para alterar a " +"mesma. Alterar as permissões necessárias." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Os utilizadores não podem alterar uma página sem permissões para alterar a " +"mesma. Alterar as permissões necessárias." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Os utilizadores não podem apagar permissões de página sem permissões para " +"alterar a mesma página. Alterar as permissões necessárias." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Os utilizadores não podem criar permissões sem permissões para alterar as " +"permissões criadas. Alterar as permissões necessárias." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Os utilizadores não podem apagar permissões sem permissões para alterar " +"permissões. Alterar as permissões necessárias." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Tipo inválido de plugin '%s'" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "O idioma do plugin deve ser o mesmo da linguagem global!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "O espaço reservado do plugin dependente deve ser o mesmo do anterior!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "Esta página não pode ser página inicial." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s objeto com chave primária %(key)r não existe." + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Erro! Não tem permissões para mover esta página. Por favor recarregue a " +"página" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Erro! Não tem permissão para copiar esta página." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Erro! A página que está a colar não está traduzida em quaisquer dos idiomas " +"configurados no site." + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "Adicionar tradução" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "Nova sub página" + +msgid "New page" +msgstr "Nova página" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "Template não válido" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "O template foi alterado com sucesso" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "Não tem permissão para copiar estes plugins." + +msgid "You do not have permission to delete this page" +msgstr "Não tem permissão para apagar esta página" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Títulos e plugins com o idioma %(language)s foram apagados" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "Não tem permissão para copiar este espaço de conteúdo." + +msgid "Plugin not found" +msgstr "Plugin não encontrado" + +msgid "You do not have permission to edit this plugin" +msgstr "Não tem permissão para editar este plugin" + +msgid "You have no permission to paste this plugin" +msgstr "Não tem permissão para colar este plugin" + +msgid "You have no permission to paste this placeholder" +msgstr "Não tem permissão para colar este espaço de conteúdo" + +msgid "You have no permission to move this plugin" +msgstr "Não tem permissão para mover este plugin" + +msgid "You have no permission to cut this plugin" +msgstr "Não tem permissão para cortar este plugin" + +msgid "You do not have permission to delete this plugin" +msgstr "Não tem permissão para apagar este plugin" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "O plugin %(name)s \"%(obj)s\" foi eliminado com sucesso." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "Não tem permissão para limpar este espaço de conteúdo" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "O espaço de conteúdo \"%(obj)s\" foi limpo com sucesso." + +msgid "placeholder" +msgstr "espaço de conteúdo" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "Pré-visualizar" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Nenhum apphook \"%r\" encontrado" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "espaço de conteúdo" + +msgid "Create" +msgstr "Criar" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "Área de Transferência..." + +msgid "Clear clipboard" +msgstr "Limpar Área de Transferência" + +msgid "Disable toolbar" +msgstr "Desativar barra de ferramentas" + +msgid "Shortcuts..." +msgstr "Atalhos..." + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "" + +msgid "Delete Translation" +msgstr "Apagar Tradução" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "de %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "Criar uma nova página a seguir á página atual." + +msgid "Create a page below the current page." +msgstr "Criar uma página por baixo da página atual." + +msgid "Select a valid site" +msgstr "Escolha um site válido" + +msgid "Select a valid page" +msgstr "Escolha uma página válida" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"A página %(conflict_page)s tem o mesmo URL '%(url)s\" que a página atual " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"A página %(conflict_page)s tem o mesmo url '%(url)s' que a página atual." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Opcional. Se fornecido, será automaticamente adicionado a um novo plugin de " +"texto." + +msgid "Provide a title for the new page." +msgstr "Forneça um titulo para a sua nova página." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "Deixe em branco para slug automático ou preencha conforme necessário." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "Não tem permissões para adicionar uma página." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "soft root" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "attached menu" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "nome de instancia de aplicação" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "Aplicar a" + +msgid "page" +msgstr "" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "apenas utilizadores com sessão ativa agora" + +msgid "for anonymous users only" +msgstr "apenas utilizadores anónimos" + +msgid "Inherit from parent page" +msgstr "herdar a partir de página hierarquicamente acima" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "Apenas este site" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "" + +msgid "The default title" +msgstr "O título predefinido" + +msgid "Page Title" +msgstr "" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "Altera o que é mostrado no topo do browser ou nos marcadores" + +msgid "Menu Title" +msgstr "" + +msgid "Overwrite what is displayed in the menu" +msgstr "Alterar o que é mostrado no menu" + +msgid "Description meta tag" +msgstr "Meta Tag de descrição" + +msgid "A description of the page used by search engines." +msgstr "Uma descrição da página para ser usada por motores de busca." + +msgid "redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" +"Todas as páginas hierarquicamente acima não serão mostradas na navegação" + +msgid "The template used to render the content." +msgstr "O template usado para mostrar o conteúdo." + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Um identificador único que é usado com templatetag page_url para direcionar " +"a esta página" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "no nível de página" + +msgid "frontend view restriction" +msgstr "restrição frontend de visualização" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Os utilizadores não podem publicar uma página sem permissões para alterar a " +"página. É necessária a permissão de edição." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Os utilizadores não podem alterar as configurações de página avançadas sem " +"permissões para alterar a página. É necessária a permissão de edição." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Os utilizadores não podem alterar as configurações de página sem permissões " +"para alterar a página. É necessária a permissão de edição." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Os utilizadores não podem mover a página sem permissões para a alterar. É " +"necessária a permissão de edição." + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"A permissão de adicionar página requer também acesso a descendentes " +"hierárquicos, caso contrário a página não poderá ser alterada pelo seu " +"criador." + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "largura" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "O idioma para a interface de administração e barra de ferramentas" + +msgid "user setting" +msgstr "definições do utilizador" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "por código" + +msgid "static placeholder name" +msgstr "nome do espaço de conteúdo estático" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Nome descritivo para identificar este espaço de conteúdo estático. Não " +"visível aos utilizadores." + +msgid "placeholder code" +msgstr "código de espaço de conteúdo" + +msgid "To render the static placeholder in templates." +msgstr "Para apresentar o espaço estático nos templates." + +msgid "placeholder content" +msgstr "conteúdo do espaço" + +msgid "creation_method" +msgstr "creation_method" + +msgid "static placeholder" +msgstr "espaço estático" + +msgid "static placeholders" +msgstr "espaços estáticos" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Um placeholder estático com o mesmo site e código já existe" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "Genérico" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "O %(name)s \"%(obj)s\" foi alterado com sucesso." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "Não existem mais definições para este plugin. Clique em gravar." + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "Alterado" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "Inicie sessão como administrador aqui." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Url para Inicio de Sessão: %(login_url)s" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Por favor, corrija os erros abaixo." +msgstr[1] "Por favor, corrija os erros abaixo." +msgstr[2] "Por favor, corrija os erros abaixo." + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "Espere por favor..." + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "(atual)" + +msgid "Page doesn't inherit any permissions." +msgstr "Página não herda nenhuma permissão." + +msgid "Edit model" +msgstr "Editar modelo" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "Colar" + +msgid "Set as home" +msgstr "Definir como página inicial" + +msgid "is restricted" +msgstr "é restrita" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "Estrutura de páginas" + +msgid "Reset filter" +msgstr "Repor filtro" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Restaurar %(name)s apagado\n" +" " + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "Opções" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" +"Alterações à estrutura de páginas pode necessitar de um posterior refresh." + +msgid "Error:" +msgstr "Erro:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Esta página não pode ser copiada uma vez que possui uma aplicação associada." +" Verifique os apphooks presentes nas configurações avançadas da página." + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "Recarregar" + +msgid "New node" +msgstr "Novo nó" + +msgid "nodes" +msgstr "nós" + +msgid "View" +msgstr "Ver" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +"Não existe nenhum %(object)spor aqui ainda.\n" +"
\n" +"Adicionar %(object)sagora." + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "Descrição" + +msgid "In menu" +msgstr "No menu" + +msgid "Not in menu" +msgstr "Não no menu" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "Softroot" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Aplicação: %(apphook)s" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Configurações de página (SHIFT e clique para configurações avançadas)" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "Esta página não possui pré-visualização!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "Está a ser redirecionado para:" + +msgid "Clipboard" +msgstr "Área de transferência" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "Filtrar plugins..." + +msgid "Expand all" +msgstr "Expandir todos" + +msgid "Collapse all" +msgstr "Colapsar todos" + +msgid "You cannot add plugins to this plugin." +msgstr "Não pode adicionar plugins a este plugin." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"Este plugin não pode ser movido ou editado fora do seu antecessor " +"hierárquico." + +msgid "Clipboard is empty." +msgstr "A área de transferência está vazia." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Este plugin não permite conter plugins deste tipo." + +msgid "This plugin cannot have nested plugins." +msgstr "Este plugin não pode conter outros plugins." + +msgid "Highlight" +msgstr "Destaque" + +msgid "Available plugins" +msgstr "Plugins disponíveis" + +msgid "Toggle structure" +msgstr "Alternar estrutura" + +msgid "Login" +msgstr "Inicio de Sessão" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "Mais" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Versão de desenvolvimento com recurso a django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "Concluido com Sucesso." + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "O plugin vai ser adicionado aqui" + +msgid "You have unsaved changes." +msgstr "Tem alterações por gravar." + +msgid "Loading" +msgstr "Espere por favor..." + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"Falha ao carregar o formulário. Por favor verifique se o servidor está em " +"execução normal." + +msgid "Most used" +msgstr "Mais usado" + +msgid "Shortcuts" +msgstr "Atalhos" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Esta página foi alterada entretanto, a recarregar..." + +msgid "CMS-wide Shortcuts" +msgstr "Atalhos abrangentes em CMS" + +msgid "Bring up this help dialog" +msgstr "Mostrar este menu de ajuda" + +msgid "Close/cancel" +msgstr "Fechar/cancelar" + +msgid "Toggle structure mode" +msgstr "Alternar modo de estrutura" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Alternar estrutura e destacar plugins por baixo do rato" + +msgid "Open \"Create\" dialog" +msgstr "Abrir diálogo de \"Criação\"" + +msgid "Focus on Toolbar" +msgstr "Foco na barra de ferramentas" + +msgid "Focus on placeholders" +msgstr "Foco em espaços de conteúdo" + +msgid "Move to next/previous element" +msgstr "Mover para o elemento seguinte/anterior" + +msgid "Focus on plugins of placeholder" +msgstr "Foco em plugins do espaço de conteúdo" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "Abrir menu de acções" + +msgid "Expand/collapse" +msgstr "Expandir/colapsar" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"O login falhou,Por favor verifique as suas credenciais e " +"tente novamente." + +msgid "Double-click to edit" +msgstr "Duplo-clique para editar" + +msgid "Tap to edit" +msgstr "Clique para editar" + +msgid "Click to go back" +msgstr "Clique para recuar" + +msgid "Click to go forward" +msgstr "Clique para avançar" + +msgid "Minimize" +msgstr "Minimizar" + +msgid "Maximize" +msgstr "Maximizar" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "Largue aqui um plugin" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "Por favor, faça login" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "Notas de Instalação" + +msgid "Support" +msgstr "Suporte" + +msgid "Documentation" +msgstr "Documentação" + +msgid "User guide" +msgstr "Manual de Instruções" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Se não vê o logotipo do django CMS no topo, certifique-se\n" +" que fez link da pasta static/cms para os seus\n" +" ficheiros estáticos.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Está a ver esta mensagem porque tem \n" +" DEBUG = True no seu ficheiro de configurações django e\n" +" ainda não adicionou nenhuma página.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Benvindo ao django CMS" + +msgid "Add Another" +msgstr "Adicionar outro" + +msgid "Back" +msgstr "Retroceder" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" +"Por favor, escolha uma opção abaixo para prosseguir para o próximo passo." + +msgid "Next" +msgstr "Próximo" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Página não encontrada em %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Uma 'templatetag' não conseguiu encontrar a página com os argumentos " +"`%(page_lookup)s`. O URL do pedido foi: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Duas colunas" + +msgid "Three columns" +msgstr "Três colunas" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Obrigatório. Até 300 caracteres. Letras, números e os caracteres @/./+/-/_" + +msgid "Enter a valid username." +msgstr "Introduza um nome de utilizador válido." + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "Determina se o utilizador pode aceder ao site de administração." + +msgid "active" +msgstr "ativo" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Determina se este utilizador deve ser tratado como estando activo. Desmarque" +" esta opção em vez de eliminar contas." + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "Extensão de Título" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "ID do objecto" + +msgid "Example1 App" +msgstr "Aplicação Example1" + +msgid "MultilingualExample1 App" +msgstr "Aplicação Multi_IdiomaExample1" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "Aplicação de exemplo configurável" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "Aplicativo com namespace" + +msgid "Parent app" +msgstr "App superior hierárquica" + +msgid "Child app" +msgstr "App descendente hierárquica" + +msgid "Variable urls-menus App" +msgstr "Aplicação de urls-menus variavel" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "Menu3 estático" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Obrigado por passar algum tempo de qualidade com o site hoje." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Herdar o template do superior hierárquico mais próximo" + +msgid "UserSettings" +msgstr "Configurações de utilizador" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Adicionar plugin ao espaço de conteúdo \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Adicionar plugin a %(plugin_name)s" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Já foi atingido o número máximo de plugins para este espaço (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Já foi atingido o número máximo de plugins %(plugin_name)s para este espaço " +"(%(limit)s)." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Não foi possível encontrar o módulo CMS_REQUEST_IP_RESOLVER: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Não foi possível encontrar a função CMS_REQUEST_IP_RESOLVER: \"{0}\" no " +"módulo \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Criar uma nova instância de %s." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Um assistente já foi registado para o modelo: %s" diff --git a/cms/locale/pt_PT/LC_MESSAGES/djangojs.po b/cms/locale/pt_PT/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..47d4bcc9 --- /dev/null +++ b/cms/locale/pt_PT/LC_MESSAGES/djangojs.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Mike C. , 2014 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Mike C. , 2014\n" +"Language-Team: Portuguese (Portugal) (http://app.transifex.com/divio/django-cms/language/pt_PT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Tem a certeza que quer mudar de separador sem guardar a página primeiro?" diff --git a/cms/locale/ro/LC_MESSAGES/django.po b/cms/locale/ro/LC_MESSAGES/django.po new file mode 100644 index 00000000..9d9214b3 --- /dev/null +++ b/cms/locale/ro/LC_MESSAGES/django.po @@ -0,0 +1,1657 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# costel , 2025 +# Fabian Braun , 2026 +# Andrei Meliș , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Andrei Meliș , 2026\n" +"Language-Team: Romanian (https://app.transifex.com/divio/teams/58664/ro/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +msgid "All" +msgstr "Tot" + +msgid "Copy permissions" +msgstr "Copiază permisiunile" + +msgid "Slug" +msgstr "Descriere URL" + +msgid "The part of the title that is used in the URL" +msgstr "Parte a titlului, care este utilizat în URL" + +msgid "Page type" +msgstr "Tip pagină" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Suprascrie URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "" +"Păstraţi acest câmp gol dacă percursul standard ar trebui să fie utilizat." + +msgid "Start typing..." +msgstr "Incepe să scrii..." + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "Opțiuni X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "Aplicație" + +msgid "Hook application to this page." +msgstr "Agață aplicația la această pagină." + +msgid "Application configurations" +msgstr "Configurații aplicație" + +msgid "A page with this reverse URL id exists already." +msgstr "O pagină cu acest URL id există deja." + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" +"Deja există o instanță de aplicație care folosește această configurație. " + +msgid "An application instance with this name already exists." +msgstr "Există deja o instanță de aplicație cu același nume." + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "utilizator" + +msgid "can_view" +msgstr "poate_vedea" + +msgid "Add" +msgstr "Adaugă" + +msgid "Change" +msgstr "Schimbă" + +msgid "Delete" +msgstr "Şterge" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Permisiunea de modificare este necesară pentru acordarea permisiunii de " +"creare." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Permisiunea de modificare este necesară pentru acordarea permisiunii de " +"ștergere." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Permisiunea de modificare este necesară pentru acordarea permisiunii de " +"acordare drepturi." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Permisiunea de modificare este necesară pentru acordarea permisiunii de " +"ștergere drepturi." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Permisiunea de modificare este necesară pentru acordarea permisiunii de " +"adăugare permisiuni." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Permisiunea de modificare este necesară pentru acordarea permisiunii de " +"ștergere permisiuni." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Tip plugin incorect '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Limba trebuie setată din limbile acceptate!" + +msgid "Parent plugin language must be same as language!" +msgstr "Limba plugin părinte trebuie să fie aceeași." + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "Setări avansate" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s obiect cu cheia primară %(key)r nu există." + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Eroare!Nu ai premisiunea de schimbare a acestui șablon.Reîncarcă pagina." + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "Nu aveți permisiunea necesară sa editati această pagină" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "Adaugă copie pagină" + +msgid "New sub page" +msgstr "Sub-pagină nouă" + +msgid "New page" +msgstr "Pagină nouă" + +msgid "Database error" +msgstr "Eroare bază de date" + +msgid "Template not valid" +msgstr "Șablon necorespunzător" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "Acest șablon a fost schimbat cu succes." + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "Nu aveți permisiunea de a copia aceste plugin-uri." + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Titlu şi plugin-urile cu limba %(language)s au fost şterse" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "Restricţii de vizualizare" + +msgid "View restrictions" +msgstr "Restricţii de vizualizare" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "Nu aveți permisiunea de a adăuga plugin." + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "Nu a fost găsit plugin-ul." + +msgid "You do not have permission to edit this plugin" +msgstr "Nu aveți permisiunea de a modifica acest plugin." + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "Esti sigur?" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "Permisii de pagină" + +msgid "User & Group permissions" +msgstr "Utilizator & Permisii de grup" + +msgid "Page permissions management" +msgstr "Managementul permisiunilor paginilor" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "Previzualizează" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Înlocuitor" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "Structură" + +msgid "Content" +msgstr "Conținut" + +msgid "Sites" +msgstr "Site-uri" + +msgid "Admin Sites" +msgstr "Site-uri admin" + +msgid "Administration" +msgstr "Administrare" + +msgid "User settings" +msgstr "Setări utilizator" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "Utilizatori" + +#, python-format +msgid "Logout %s" +msgstr "Deautintificare %s" + +msgid "Logout" +msgstr "Logout" + +msgid "Language" +msgstr "Limbă" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "Pagini" + +msgid "Page" +msgstr "Pagină" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "Pagină nouă" + +msgid "New Sub Page" +msgstr "Sub pagină noua" + +msgid "Duplicate this Page" +msgstr "Dedublează aceasta pagina" + +msgid "Page settings" +msgstr "Setari pagină" + +msgid "Advanced settings" +msgstr "Setări avansate" + +msgid "Templates" +msgstr "Sablon" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "Ascunde in navigare" + +msgid "Display in navigation" +msgstr "Arata in navigare" + +msgid "Delete page" +msgstr "Sterge pagina" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "poziţie" + +msgid "language" +msgstr "limbă" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "data creării" + +msgid "can edit" +msgstr "poate edita" + +msgid "can add" +msgstr "poate adăuga" + +msgid "can delete" +msgstr "poate şterge" + +msgid "can change advanced settings" +msgstr "poate schimba setările avansate" + +msgid "can publish" +msgstr "poate publica" + +msgid "can change permissions" +msgstr "poate schimba permisiunile" + +msgid "can move" +msgstr "poate mișca" + +msgid "view restricted" +msgstr "Restricţii de vizualizare" + +msgid "can recover pages" +msgstr "poate recupera pagini" + +msgid "group" +msgstr "grup" + +msgid "sites" +msgstr "site-uri" + +msgid "created by" +msgstr "creat de" + +msgid "changed by" +msgstr "modificat de" + +msgid "publication date" +msgstr "data publicării" + +msgid "publication end date" +msgstr "data terminării publicării" + +msgid "in navigation" +msgstr "în navigare" + +msgid "soft root" +msgstr "soft root" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "şablon" + +msgid "login required" +msgstr "autentificare cerută" + +msgid "application" +msgstr "aplicație" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "site" + +msgid "Grant on" +msgstr "De acord" + +msgid "page" +msgstr "pagină" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "titlu" + +msgid "The default title" +msgstr "Titlul predefinit" + +msgid "Page Title" +msgstr "Titlul paginii" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Înlocuește ceea ce este afişat în partea de sus a browser-ului sau în " +"etichete" + +msgid "Menu Title" +msgstr "Titlu Meniu" + +msgid "Overwrite what is displayed in the menu" +msgstr "Înlocuește ceea ce este afişat în meniul" + +msgid "Description meta tag" +msgstr "Decriere meta tag" + +msgid "A description of the page used by search engines." +msgstr "" +"O listă de cuvinte cheie separate prin virgula uneori utilizate de către " +"motoarele de căutare." + +msgid "redirect" +msgstr "redirecţionare" + +msgid "Redirects to this URL." +msgstr "Redirecţionează la aceast URL." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Toti superiorii nu vor fi afisati in navigare" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "predefinit" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "pagini" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Calea" + +msgid "Current page" +msgstr "Pagina curentă" + +msgid "Page children (immediate)" +msgstr "Pagina subordonata (imediat)" + +msgid "Page and children (immediate)" +msgstr "Pagina si subordonata (imediat)" + +msgid "Page descendants" +msgstr "Descendenții paginii" + +msgid "Page and descendants" +msgstr "Pagina și descendenții" + +msgid "on page level" +msgstr "la nivel de pagina" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "poate recupera orice pagina stearsa" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "Permisii globale" + +msgid "Pages global permissions" +msgstr "Permisii globale de pagini" + +msgid "Page permission" +msgstr "Permisii de pagină" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Pentru a adauga permisie de pagină are nevoie să ai acces, de asemenea, la " +"copiii sau descendenţii ei, altfel paginile adăugate nu vor putea fi " +"schimbate de către creatorii lor." + +msgid "User (page)" +msgstr "Utilizator (pagina)" + +msgid "Users (page)" +msgstr "Utilizatori (pagina)" + +msgid "User group (page)" +msgstr "Grup de utilizatori (pagina)" + +msgid "User groups (page)" +msgstr "Grupuri de utilizatori (pagina)" + +msgid "slot" +msgstr "slot" + +msgid "width" +msgstr "lăţime" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "Opţiuni avansate" + +msgid "Generic" +msgstr "Generic" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "Nu mai sunt si alte setari pentru acest plugin.Va rugam salvați." + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "Salvează" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "Login pentru administrare aici." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "Nume de utilizator:" + +msgid "Password:" +msgstr "Parolă:" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "Modifică o pagină" + +msgid "Home" +msgstr "Acasă" + +msgid "View on site" +msgstr "Vizualizează pe site" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Te rog corecteaza eroarea." +msgstr[1] "Te rog corecteaza erorile." +msgstr[2] "Te rog corecteaza erorile." + +msgid "All permissions" +msgstr "Toate permisiunile" + +msgid "Loading..." +msgstr "Se incarcă ..." + +msgid "Save and continue editing" +msgstr "Salveaza si continua editarea" + +#, 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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "Utilizator" + +msgid "Group" +msgstr "Grup" + +msgid "Can edit" +msgstr "Poate edita" + +msgid "Can add" +msgstr "Poate adăuga" + +msgid "Can delete" +msgstr "Poate şterge" + +msgid "Can publish" +msgstr "Poate publica" + +msgid "Can change permissions" +msgstr "Poate schimba permisiunile" + +msgid "Can move" +msgstr "Poate mișca" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "(global)" + +msgid "(current)" +msgstr "(curent)" + +msgid "Page doesn't inherit any permissions." +msgstr "Aceasta pagina nu mosteneste nici o permisiune." + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "Salvează ca nou" + +msgid "Save and add another" +msgstr "Salveaza si adauga altul" + +msgid "Copy" +msgstr "Copiaza" + +msgid "Cut" +msgstr "Taie" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "Lista cu pagini" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "Mutat cu succes" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "Optiuni copiere" + +msgid "Choose copy options" +msgstr "Alege optiunile de copiere" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "Permisii" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "Adaugă plugin" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "Filtrează plugin..." + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "Plugin-uri disponibile" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "Sunteţi sigur că doriţi să ştergeţi acest plugin?" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "Plugin-ul va fi adăugat aici" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "Editează plugin" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "Adaugă altul" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "adresă e-mail" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "Articole" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "Meniu Static" + +msgid "Static Menu2" +msgstr "Meniu2 Static" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "Meniu Static" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "Moştenește şablonul de cel mai apropiat strămoş" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Adaugă plugin la placeholder \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Adaugă plugin la %(plugin_name)s" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "CMS - contul Dv. de utilizator a fost creat." + +msgid "CMS - your user account was changed." +msgstr "CMS - contul Dv. de utilizator a fost modificat." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/ro/LC_MESSAGES/djangojs.po b/cms/locale/ro/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..1c944e53 --- /dev/null +++ b/cms/locale/ro/LC_MESSAGES/djangojs.po @@ -0,0 +1,24 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Denis Darii , 2011 +# Denis Darii , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Denis Darii , 2011\n" +"Language-Team: Romanian (http://app.transifex.com/divio/django-cms/language/ro/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Sunteți sigur că doriţi să schimbaţi filele fără a salva pagina întîi?" diff --git a/cms/locale/ro_RO/LC_MESSAGES/django.po b/cms/locale/ro_RO/LC_MESSAGES/django.po new file mode 100644 index 00000000..0209bd10 --- /dev/null +++ b/cms/locale/ro_RO/LC_MESSAGES/django.po @@ -0,0 +1,2265 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Romanian (Romania) (https://app.transifex.com/divio/teams/58664/ro_RO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro_RO\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/ro_RO/LC_MESSAGES/djangojs.po b/cms/locale/ro_RO/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..aacbe569 --- /dev/null +++ b/cms/locale/ro_RO/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Romanian (Romania) (http://app.transifex.com/divio/django-cms/language/ro_RO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro_RO\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/ru/LC_MESSAGES/django.po b/cms/locale/ru/LC_MESSAGES/django.po new file mode 100644 index 00000000..062e3af0 --- /dev/null +++ b/cms/locale/ru/LC_MESSAGES/django.po @@ -0,0 +1,1771 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Мальцев Артём , 2022 +# Panasoft, 2022 +# SAG , 2023 +# Vadim Sikora , 2023 +# Kirill Artemenko <4322221@gmail.com>, 2023 +# Dmitrii Kurskov, 2025 +# Fabian Braun , 2026 +# Oleg Fish , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Oleg Fish , 2026\n" +"Language-Team: Russian (https://app.transifex.com/divio/teams/58664/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +msgid "All" +msgstr "Все" + +msgid "Copy permissions" +msgstr "Права на копирование" + +msgid "Slug" +msgstr "Путь" + +msgid "The part of the title that is used in the URL" +msgstr "Часть заголовка, используемая в URL" + +msgid "Page type" +msgstr "Тип страницы" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Типы страниц" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Переписать URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Оставьте это поле пустым для использования стандартного пути" + +msgid "Start typing..." +msgstr "Начните набирать..." + +msgid "menu visibility" +msgstr "отображение меню" + +msgid "limit when this page is visible in the menu" +msgstr "ограничивает отображение страницы в меню" + +msgid "X Frame Options" +msgstr "Настройки X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Может ли эта страница быть встроена в другие страницы или веб-сайты." + +msgid "URL options" +msgstr "Параметры URL" + +msgid "Menu options" +msgstr "Параметры меню" + +msgid "Headers" +msgstr "Заголовки" + +msgid "Application" +msgstr "Приложение" + +msgid "Hook application to this page." +msgstr "Прикрепить приложение к данной странице." + +msgid "Application configurations" +msgstr "Конфигурации приложения" + +msgid "A page with this reverse URL id exists already." +msgstr "Страница с таким reverse URL уже существует." + +msgid "Invalid application config value" +msgstr "Неверное значение в конфигурации" + +msgid "An application instance using this configuration already exists." +msgstr "Приложение, использующее эту конфигурацию, уже существует." + +msgid "An application instance with this name already exists." +msgstr "Приложение с таким именем уже существует." + +msgid "You can't move the home page inside another page" +msgstr "Вы не можете переместить домашнюю страницу внутрь другой страницы" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Нельзя иметь две страницы с одинаковым путём на одном уровне. Пожалуйста, " +"измените путь одной из страниц, прежде чем повторить перемещение." + +msgid "Yes" +msgstr "Да" + +msgid "No" +msgstr "Нет" + +msgid "user" +msgstr "пользователь" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "Добавить" + +msgid "Change" +msgstr "Изменить" + +msgid "Delete" +msgstr "Удалить" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Пользователи не могут создавать страницы без разрешения изменять созданные " +"страницы. Требуется отредактировать разрешения." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Пользователи не могут удалять страницы без разрешения изменять страницу. " +"Требуется отредактировать разрешения." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Пользователи не могут устанавливать разрешения на страницу без разрешения " +"изменять ее. Требуется отредактировать разрешения." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Пользователи не могут удалять разрешения для страницы, не имея доступа для " +"ее изменения. Требуется отредактировать разрешения." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Пользователи не могут создавать разрешения для страницы без разрешения " +"изменять созданные. Требуется отредактировать разрешения." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Пользователи не могут удалять разрешения страницы без допуска для изменения" +" созданных разрешений. Требуется отредактировать разрешения." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Неправильный тип плагина '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Язык должен быть установлен из списка поддерживаемых языков!" + +msgid "Parent plugin language must be same as language!" +msgstr "Язык должен совпадать с языком родительского плагина" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Плейсхолдер родительского плагина должен быть таким же!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Позиция плагина должна быть больше %(position)d" + +msgid "Translations" +msgstr "Переводы" + +msgid "Advanced Settings" +msgstr "Расширенные настройки" + +msgid "The page is not eligible to be home." +msgstr "Эта страница не может быть домашней." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "объект %(name)s с первичным ключом %(key)r не существует." + +msgid "error" +msgstr "ошибка" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Ошибка! Вам не достаточно прав для перемещения этой страницы. Пожалуйста, " +"перезагрузите страницу" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Ошибка! У вас недостаточно прав, чтобы копировать эту страницу." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Ошибка! Страница, которую вы пытаетесь вставить, не имеет переводов ни для " +"одного из языков сайта." + +msgid "You do not have permission to edit this page" +msgstr "У вас нет прав для редактирования данной страницы" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(чтобы изменить это, сначала снимите с публикации текущую опубликованную " +"версию этой страницы)" + +msgid "Add Translation" +msgstr "Добавить перевод" + +msgid "Add Page Copy" +msgstr "Добавить копию Страницы" + +msgid "New sub page" +msgstr "Новая подстраница" + +msgid "New page" +msgstr "Новая страница" + +msgid "Database error" +msgstr "Ошибка базы данные" + +msgid "Template not valid" +msgstr "Неправильный шаблон" + +msgid "Placeholder selection not valid" +msgstr "Недопустимый выбор плейсхолдера" + +msgid "The template was successfully changed" +msgstr "Шаблон был успешно изменен" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Плейсхолдер '%s' не существует на целевом языке" + +msgid "You do not have permission to copy these plugins." +msgstr "У вас нет прав на копирование этих плагинов." + +msgid "You do not have permission to delete this page" +msgstr "У вас нет прав на удаление данной страницы" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Заголовок и плагин на %(language)s удалён" + +msgid "Public content" +msgstr "Публичное содержимое" + +msgid "Empty" +msgstr "Пусто" + +msgid "Create Content" +msgstr "Создать содержимое" + +msgid "View restriction" +msgstr "Ограничене просмотра" + +msgid "View restrictions" +msgstr "Ограничения просмотра" + +#, python-format +msgid "Field %s not found" +msgstr "Поле %s не найдено" + +msgid "You do not have permission to edit this item" +msgstr "У вас нет прав на редактирование данного элемента" + +msgid "You do not have permission to add a plugin" +msgstr "У вас нет прав на добавление плагинов" + +msgid "You do not have permission to copy this placeholder." +msgstr "У вас нет прав на копирование этого плейсхолдера." + +msgid "Plugin not found" +msgstr "Плагин не найден" + +msgid "You do not have permission to edit this plugin" +msgstr "У вас нет прав на редактирование данного плагина" + +msgid "You have no permission to paste this plugin" +msgstr "У вас нет прав на вставку данного плагина" + +msgid "You have no permission to paste this placeholder" +msgstr "У вас нет прав на вставку данного плейсхолдера" + +msgid "You have no permission to move this plugin" +msgstr "У вас нет прав на перемещение данного плагина" + +msgid "You have no permission to cut this plugin" +msgstr "У вас нет прав, чтобы вырезать этот плагин" + +msgid "You do not have permission to delete this plugin" +msgstr "У вас нет прав на удаление данного плагина" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "Плагин %(name)s \"%(obj)s\" был успешно удален." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Не могу удалить %(name)s" + +msgid "Are you sure?" +msgstr "Вы уверены?" + +msgid "You do not have permission to clear this placeholder" +msgstr "У вас нет прав очистить содержимое этого плейсхолдера" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Плейсхолдер \"%(obj)s\" был успешно очищен." + +msgid "placeholder" +msgstr "плэйсхолдер" + +msgid "Page permissions" +msgstr "Права доступа к странице" + +msgid "User & Group permissions" +msgstr "Права доступа пользователя и группы" + +msgid "Page permissions management" +msgstr "Управление правами доступа к странице" + +msgid "Actions" +msgstr "Действия" + +msgid "Empty content" +msgstr "Пустое содержимое" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Свойства %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Добавить %(object_name)s" + +msgid "Add content" +msgstr "Добавить содержимое" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Содержимое для текущего языка было изменено. Нажмите «Отмена», чтобы " +"вернуться к форме и сохранить изменения. Нажмите «OK», чтобы отменить " +"изменения." + +#, python-format +msgid "Add %(language)s content" +msgstr "Добавить содержимое на %(language)s" + +msgid "Preview" +msgstr "Предпросмотр" + +msgid "Settings" +msgstr "Настройки" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Недопустимый язык %(value)s. Эта форма не может быть обработана. Попробуйте " +"сменить язык." + +msgid "" +msgstr "<не указано>" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Не найдено зарегистрированных приложений \"%r\"" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Плейсхолдер" + +msgid "Create" +msgstr "Создать" + +msgid "Edit" +msgstr "Изменить" + +msgid "Structure" +msgstr "Структура" + +msgid "Content" +msgstr "Содержимое" + +msgid "Sites" +msgstr "Сайты" + +msgid "Admin Sites" +msgstr "Управление сайтами" + +msgid "Administration" +msgstr "Администрирование" + +msgid "User settings" +msgstr "Настройки пользователя" + +msgid "Clipboard..." +msgstr "Буфер обмена..." + +msgid "Clear clipboard" +msgstr "Очистить буфер обмена" + +msgid "Disable toolbar" +msgstr "Отключить тулбар" + +msgid "Shortcuts..." +msgstr "Горячие клавиши..." + +msgid "Users" +msgstr "Пользователи" + +#, python-format +msgid "Logout %s" +msgstr "Выход %s" + +msgid "Logout" +msgstr "Выход" + +msgid "Language" +msgstr "Язык" + +msgid "Delete Translation" +msgstr "Удалить перевод" + +msgid "Copy all plugins" +msgstr "Скопировать все плагины" + +#, python-format +msgid "from %s" +msgstr "из %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Вы уверены, что хотите скопировать все плагины из %s?" + +msgid "Pages" +msgstr "Страницы" + +msgid "Page" +msgstr "Страница" + +msgid "Create Page" +msgstr "Создать страницу" + +msgid "New Page" +msgstr "Новая Страница" + +msgid "New Sub Page" +msgstr "Новая вложенная страница" + +msgid "Duplicate this Page" +msgstr "Скопировать эту страницу" + +msgid "Page settings" +msgstr "Настройки страницы" + +msgid "Advanced settings" +msgstr "Расширенные настройки" + +msgid "Templates" +msgstr "Шаблоны" + +msgid "Placeholders" +msgstr "Плейсхолдеры" + +msgid "Hide in navigation" +msgstr "Скрыть в навигации" + +msgid "Display in navigation" +msgstr "Отобразить в навигации" + +msgid "Delete page" +msgstr "Удалить страницу" + +msgid "Create a new page next to the current page." +msgstr "Создать новую страницу рядом с текущей" + +msgid "Create a page below the current page." +msgstr "Создать страницу под текущей" + +msgid "Select a valid site" +msgstr "Выбрать правильный сайт" + +msgid "Select a valid page" +msgstr "Выбрать правильную страницу" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"У страницы %(conflict_page)s такой же путь URL ''%(url)s, как и у текущей " +"страницы \"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"Страница %(conflict_page)s имеет такой же адрес '%(url)s' как и текущая " +"страница." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Опционально. Если представлено, будет автоматически добавлено в новом " +"текстовом расширении" + +msgid "Provide a title for the new page." +msgstr "Задать заголовок новой странице" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" +"Оставьте пустым для автоматической генерации или перепешите, как требуется." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" +"Не удалось автоматически создать путь. Пожалуйста, укажите его вручную." + +msgid "Please provide a valid slug." +msgstr "Пожалуйста, укажите допустимый путь." + +msgid "You don't have the permissions required to add a page." +msgstr "У вас нет необходимых прав для добавления страницы." + +msgid "ID" +msgstr "ИД" + +msgid "position" +msgstr "положение" + +msgid "language" +msgstr "язык" + +msgid "plugin_name" +msgstr "название_плагина" + +msgid "creation date" +msgstr "дата создания" + +msgid "can edit" +msgstr "может редактировать" + +msgid "can add" +msgstr "может добавлять" + +msgid "can delete" +msgstr "может удалять" + +msgid "can change advanced settings" +msgstr "может изменять дополнительные настройки" + +msgid "can publish" +msgstr "может публиковать" + +msgid "can change permissions" +msgstr "может изменять права доступа к странице" + +msgid "can move" +msgstr "может перемещать" + +msgid "view restricted" +msgstr "Ограниченный просмотр" + +msgid "can recover pages" +msgstr "может восстанавливать страницы" + +msgid "group" +msgstr "группа" + +msgid "sites" +msgstr "сайты" + +msgid "created by" +msgstr "создан" + +msgid "changed by" +msgstr "изменён" + +msgid "publication date" +msgstr "дата публикации" + +msgid "publication end date" +msgstr "дата окончания публикации" + +msgid "in navigation" +msgstr "в навигации" + +msgid "soft root" +msgstr "soft root" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "прикреплённое меню" + +msgid "template" +msgstr "шаблон" + +msgid "login required" +msgstr "требуется login" + +msgid "application" +msgstr "приложение" + +msgid "application instance name" +msgstr "Название приложения" + +msgid "site" +msgstr "сайт" + +msgid "Grant on" +msgstr "Назначить права на" + +msgid "page" +msgstr "страница" + +msgid "no limit set" +msgstr "ограничение не задано" + +msgid "for logged in users only" +msgstr "Только для зарегистрированных пользователей" + +msgid "for anonymous users only" +msgstr "Только для анонимных пользователей" + +msgid "Inherit from parent page" +msgstr "Наследовать от родительской страницы" + +msgid "Deny" +msgstr "Запретить" + +msgid "Only this website" +msgstr "Только этот сайт" + +msgid "Allow" +msgstr "Разрешить" + +msgid "title" +msgstr "заголовок" + +msgid "The default title" +msgstr "Заголовок по умолчанию" + +msgid "Page Title" +msgstr "Заголовок страницы" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Переписать то, что будет изображено в заголовке браузера или закладках." + +msgid "Menu Title" +msgstr "Заголовок меню" + +msgid "Overwrite what is displayed in the menu" +msgstr "То, что будет отображено в меню." + +msgid "Description meta tag" +msgstr "Мета тег \"description\"" + +msgid "A description of the page used by search engines." +msgstr "Описание страницы, иногда используемое поисковыми роботами." + +msgid "redirect" +msgstr "перенаправление" + +msgid "Redirects to this URL." +msgstr "Перенаправить на URL." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Все предки не будут показаны в навигации" + +msgid "The template used to render the content." +msgstr "Шаблон, используемый для отображения." + +msgid "page content" +msgstr "содержимое страницы" + +msgid "page contents" +msgstr "содержимое страниц" + +msgid "default" +msgstr "по умолчанию" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Уникальный идентификатор, который используется с тегом page_url для связи с " +"данной страницей" + +msgid "Mark this page as a page type" +msgstr "Пометить эту страницу как тип страницы" + +msgid "pages" +msgstr "страницы" + +msgid "No available title" +msgstr "Нет доступного заголовка" + +msgid "slug" +msgstr "путь" + +msgid "Path" +msgstr "Путь" + +msgid "Current page" +msgstr "Текущая страница" + +msgid "Page children (immediate)" +msgstr "Потомок страницы (непосредственный)" + +msgid "Page and children (immediate)" +msgstr "Страница и потомок (непосредственный)" + +msgid "Page descendants" +msgstr "Потомки страницы" + +msgid "Page and descendants" +msgstr "Страница и потомки" + +msgid "on page level" +msgstr "на уровне страницы" + +msgid "frontend view restriction" +msgstr "ограничение просмотра в интерфейс" + +msgid "Please select user or group." +msgstr "Пожалуйста, выберите пользователя или группу." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Пользователи не могут публиковать страницы без разрешения изменять " +"страницу. Требуется отредактировать разрешения." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Пользователи не могут править расширенные настройки страницы без разрешения" +" изменять страницу. Требуется отредактировать разрешения." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Пользователи не могут изменять права доступа к странице без разрешения " +"изменять страницу. Требуется отредактировать разрешения." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Пользователи не могут перемещать страницы без разрешения изменять страницу." +" Требуется отредактировать разрешения." + +msgid "can recover any deleted page" +msgstr "может восстанавливать любые удаленные страницы" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "Если не выбрано, пользователь имеет права на все сайты." + +msgid "Page global permission" +msgstr "Глобальные права доступа к странице" + +msgid "Pages global permissions" +msgstr "Глобальные права доступа к страницам" + +msgid "Page permission" +msgstr "Права доступа к странице" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Права на добавление страницы требуют также доступ к потомкам, иначе " +"созданная страница не сможет быть изменена создателем." + +msgid "User (page)" +msgstr "Пользователь (страница)" + +msgid "Users (page)" +msgstr "Пользователи (страница)" + +msgid "User group (page)" +msgstr "Группа пользователей(страница)" + +msgid "User groups (page)" +msgstr "Группы пользователей(страница)" + +msgid "slot" +msgstr "слот" + +msgid "width" +msgstr "ширина" + +msgid "Edit object" +msgstr "Изменить объект" + +msgid "This is an external placeholder" +msgstr "Это внешний плейсхолдер" + +msgid "plugin" +msgstr "плагин" + +msgid "plugins" +msgstr "плагины" + +msgid "" +msgstr "<Пусто>" + +msgid "The language for the admin interface and toolbar" +msgstr "Язык для панели инструментов и бэкэнда" + +msgid "user setting" +msgstr "настройка юзера" + +msgid "user settings" +msgstr "свои настройки" + +msgid "by template" +msgstr "по шаблону" + +msgid "by code" +msgstr "по коду" + +msgid "static placeholder name" +msgstr "название статического плейсхолдера" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Описательное название для идентификации плейсхолдера. Невидимо для " +"пользователей." + +msgid "placeholder code" +msgstr "Код плейсхолдера" + +msgid "To render the static placeholder in templates." +msgstr "Для отображения статического плейсхолдера в шаблоне" + +msgid "placeholder content" +msgstr "Содержимое" + +msgid "creation_method" +msgstr "Метод создания" + +msgid "static placeholder" +msgstr "статический плейсхолдер" + +msgid "static placeholders" +msgstr "статические плейсхолдеры" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Статический плейсхолдер с таким сайтом и кодом уже есть." + +msgid "Advanced options" +msgstr "Расширенные настройки" + +msgid "Generic" +msgstr "Общий" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" успешно изменен." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "Для плагина настроек больше нет. Пожалуйста, сохраните изменения." + +msgid "Moved" +msgstr "Перемещен" + +msgid "Changed" +msgstr "Изменена" + +msgid "Deleted" +msgstr "Удален" + +msgid "Added Page Translation" +msgstr "Перевод страницы добавлен" + +msgid "Changed Page Translation" +msgstr "Перевод страницы изменен" + +msgid "Deleted Page Translation" +msgstr "Перевод страницы удален" + +msgid "Added Plugin" +msgstr "Плагин добавлен" + +msgid "Changed Plugin" +msgstr "Плагин изменен" + +msgid "Moved Plugin" +msgstr "Плагин перемещен" + +msgid "Deleted Plugin" +msgstr "Плагин удален" + +msgid "Cut Plugin" +msgstr "Вырезать плагин" + +msgid "Paste Plugin" +msgstr "Вставить плагин" + +msgid "Paste to Placeholder" +msgstr "Вставить в плейсхолдер" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Добавленные плагины в плейсхолдер из буфера обмена" + +msgid "Cleared Placeholder" +msgstr "Очищенный плейсхолдер" + +msgid "Save" +msgstr "Сохранить" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" +"Некоторые поля нельзя изменить, так как они являются содержимым только для " +"чтения." + +#, python-format +msgid "Log in to administration here." +msgstr "Войти в панель администратора здесь." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Url для входа: %(login_url)s" + +msgid "Username:" +msgstr "Имя пользователя:" + +msgid "Password:" +msgstr "Пароль:" + +msgid "Add a page" +msgstr "Добавить страницу" + +msgid "Change a page" +msgstr "Изменить страницу" + +msgid "Home" +msgstr "Домой" + +msgid "View on site" +msgstr "Посмотреть на сайте" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Пожалуйста, исправьте ошибки ниже." +msgstr[1] "Пожалуйста, исправьте ошибки ниже." +msgstr[2] "Пожалуйста, исправьте ошибки ниже." +msgstr[3] "Пожалуйста, исправьте ошибки ниже." + +msgid "All permissions" +msgstr "Все права доступа" + +msgid "Loading..." +msgstr "Загрузка..." + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "Да, я уверен" + +msgid "No, take me back" +msgstr "Нет, вернуться назад" + +msgid "Summary" +msgstr "Сводка" + +msgid "User" +msgstr "Пользователь" + +msgid "Group" +msgstr "Группа" + +msgid "Can edit" +msgstr "Может изменять" + +msgid "Can add" +msgstr "Может добавлять" + +msgid "Can delete" +msgstr "Может удалять" + +msgid "Can publish" +msgstr "Может публиковать" + +msgid "Can change permissions" +msgstr "Может изменять права доступа" + +msgid "Can move" +msgstr "Может перемещать" + +msgid "Can view" +msgstr "Может смотреть" + +msgid "(global)" +msgstr "(глобальный)" + +msgid "(current)" +msgstr "(текущий)" + +msgid "Page doesn't inherit any permissions." +msgstr "Страница не наследует прав доступа" + +msgid "Edit model" +msgstr "Редактировать модель" + +msgid "Save as new" +msgstr "Сохранить как новую" + +msgid "Save and add another" +msgstr "Сохранить и добавить другую" + +msgid "Copy" +msgstr "Копировать" + +msgid "Cut" +msgstr "Вырезать" + +msgid "Paste" +msgstr "Вставить" + +msgid "Set as home" +msgstr "Установить как домашнюю" + +msgid "is restricted" +msgstr "не для всех" + +msgid "last change by" +msgstr "последнее изменение сделано" + +msgid "last change on" +msgstr "последнее изменение" + +msgid "meta" +msgstr "Мета" + +msgid "List of pages" +msgstr "Список страниц" + +msgid "Search" +msgstr "Поиск" + +msgid "Page Tree" +msgstr "Дерево страниц" + +msgid "Reset filter" +msgstr "Сбросить фильтр" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Восстановить удаленную %(name)s\n" +" " + +msgid "Main Navigation" +msgstr "Основная навигация" + +msgid "Options" +msgstr "Настройки" + +msgid "Successfully moved" +msgstr "Перенесена удачно" + +msgid "Changes within the tree might require a refresh." +msgstr "" +"Возможно, потребуется обновить дерево, чтобы увидеть изменения внутри него." + +msgid "Error:" +msgstr "Ошибка:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Эта страница не может быть скопирована из-за прикрепленного к ней " +"приложения. Вы можете проверить это, открыв расширенные настройки страницы." + +msgid "Are you sure you want to § this page?" +msgstr "Вы уверены, что хотите § эту страницу?" + +msgid "Reload" +msgstr "Перезагрузить" + +msgid "New node" +msgstr "Новый узел" + +msgid "nodes" +msgstr "узлы" + +msgid "View" +msgstr "Вид" + +msgid "Menu" +msgstr "Меню" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " + +msgid "Copy options" +msgstr "Параметры копирования" + +msgid "Choose copy options" +msgstr "Выбрать параметры копирования" + +msgid "Close" +msgstr "Закрыть" + +msgid "Legend" +msgstr "Легенда" + +msgid "In menu" +msgstr "В меню" + +msgid "Not in menu" +msgstr "Не в меню" + +msgid "View page" +msgstr "Посмотреть страницу" + +msgid "Softroot" +msgstr "Softroot" + +msgid "Apphook" +msgstr "Прикрепленное приложение" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Приложение: %(apphook)s" + +msgid "in menu" +msgstr "в меню" + +msgid "not in menu" +msgstr "нет в меню" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Настройки страницы (SHIFT-клик для расширенных настроек)" + +msgid "Permissions" +msgstr "Права" + +msgid "inherited" +msgstr "унаследовано" + +msgid "This page has no preview!" +msgstr "У этой страницы нет предпросмотра!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Возможно, прикреплённое приложение не предоставляет содержимое для своего " +"корня." + +msgid "It is being redirected to:" +msgstr "Было перенаправлено на:" + +msgid "Clipboard" +msgstr "Буфер обмена" + +msgid "Add plugin" +msgstr "Добавить плагин" + +msgid "Copy all" +msgstr "Копировать всё" + +msgid "Copy from" +msgstr "Скопировать из" + +msgid "Empty all" +msgstr "Очистить всё" + +msgid "Filter plugins..." +msgstr "Фильтруем плагины..." + +msgid "Expand all" +msgstr "Развернуть все" + +msgid "Collapse all" +msgstr "Свернуть все" + +msgid "You cannot add plugins to this plugin." +msgstr "Вы не можете добавлять дочерние плагины в этот плагин." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"Эта подключаемая программа не может перемещаться или редактироваться за " +"пределами своих родителей" + +msgid "Clipboard is empty." +msgstr "Буфер обмена пустой" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Это расширение не допускает вложенные расширения этого типа" + +msgid "This plugin cannot have nested plugins." +msgstr "Это расширение не может иметь вложенные расширения" + +msgid "Highlight" +msgstr "Подсветка" + +msgid "Available plugins" +msgstr "Доступные плагины" + +msgid "Toggle structure" +msgstr "Структура страницы" + +msgid "Login" +msgstr "Войти" + +msgid "Add plugin to" +msgstr "Добавить плагин в" + +msgid "More" +msgstr "Больше" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Девелоперская версия django CMS %(cms_version)s, Django %(django_version)s, " +"Python %(python_version)s" + +msgid "Cancel" +msgstr "Отменить" + +msgid "The following error occurred:" +msgstr "Произошли следующие ошибки:" + +msgid "Action successful." +msgstr "Действие выполнено успешно." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Вы уверены, что хотите удалить данный плагин?" + +msgid "Are you sure you want to publish this page?" +msgstr "Вы уверены, что хотите опубликовать эту страницу?" + +msgid "Plugin will be added here" +msgstr "Плагин будет добавлен здесь" + +msgid "You have unsaved changes." +msgstr "У вас есть несохраненные изменения." + +msgid "Loading" +msgstr "Загрузка" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Вы уверены, что хотите отменить эти изменения?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"Невозможно загрузить форму. Пожалуйста, проверьте, что сервер работает " +"корректно." + +msgid "Most used" +msgstr "Наиболее используемые" + +msgid "Shortcuts" +msgstr "Ярлыки" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Содержимое страницы изменилось, перезагрузка..." + +msgid "CMS-wide Shortcuts" +msgstr "Горячие клавиши CMS" + +msgid "Bring up this help dialog" +msgstr "Показать эту справку" + +msgid "Close/cancel" +msgstr "Закрыть/отменить" + +msgid "Toggle structure mode" +msgstr "Переключить режим структуры" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Переключить режим структуры и подсветить плагин" + +msgid "Open \"Create\" dialog" +msgstr "Открыть окно \"Создать\"" + +msgid "Focus on Toolbar" +msgstr "Сфокусировать на Панели инструментов" + +msgid "Focus on placeholders" +msgstr "Сфокусировать на плейсхолдерах" + +msgid "Move to next/previous element" +msgstr "Переместиться на следующий/предыдущий элемент" + +msgid "Focus on plugins of placeholder" +msgstr "Сфокусировать на плагинах плейсхолдера" + +msgid "Edit plugin" +msgstr "Редактировать плагин" + +msgid "Open actions menu" +msgstr "Открыть меню действий" + +msgid "Expand/collapse" +msgstr "Свернуть/развернуть" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Вход не удался. Проверьте ваш логин и пароль и попробуйте " +"снова." + +msgid "Double-click to edit" +msgstr "Двойной клик для редактирования" + +msgid "Tap to edit" +msgstr "Нажмите, чтобы редактировать" + +msgid "Click to go back" +msgstr "Нажмите, чтобы вернуться" + +msgid "Click to go forward" +msgstr "Нажмите, чтобы идти вперед" + +msgid "Minimize" +msgstr "Минимизировать" + +msgid "Maximize" +msgstr "Развернуть" + +msgid "Placeholder not editable" +msgstr "Плейсхолдер недоступен для редактирования" + +msgid "Drop a plugin here" +msgstr "Поместите плагин сюда" + +msgid "Welcome to your new django CMS installation!" +msgstr "Добро пожаловать в вашу новую установку django CMS!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Версия %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Давайте вместе создадим что-то великое!" + +msgid "Please log in" +msgstr "Пожалуйста войдите" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Добавьте свою первую страницу\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Помощь в финансировании

\n" +"

\n" +" Ваше финансирование напрямую идёт на пользу продукту, в основном через\n" +" программу django CMS Fellowship!\n" +"

\n" +"

\n" +" Быстрый способ для вас или вашей организации сделать пожертвование — через\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Присоединяйтесь к нам

\n" +"

\n" +" Ассоциация django CMS — это некоммерческая организация, которая финансирует и направляет разработку\n" +" django CMS.\n" +"

\n" +"

\n" +" Вы можете присоединиться как частное лицо, так и как\n" +" организация.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Внесите вклад

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Рекомендации по установке" + +msgid "Support" +msgstr "Поддержка" + +msgid "Documentation" +msgstr "Документация" + +msgid "User guide" +msgstr "Руководство пользователя" + +msgid "Give back" +msgstr "Внести вклад" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Если вы не видите логотип Django CMS в верху страницы, \n" +" убедитесь, что вы связали директорию static/cms с \n" +" вашими статичными файлами.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Вы видите это сообщение поскольку у вас установлен\n" +" DEBUG = True в settings файле вашего проекта и\n" +" пока нет ни одной добавленной страницы.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Добро пожаловать в django CMS" + +msgid "Add Another" +msgstr "Добавить другое" + +msgid "Back" +msgstr "Вернуться" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "Пожалуйста, выберите опцию ниже, чтобы перейти к следующему шагу." + +msgid "Next" +msgstr "Далее" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Неизвестно" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Страница не найдена на %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Тег шаблона не может найти страницу с параметрами поиска `%(page_lookup)s\n" +"`. URL запроса: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Две колонки" + +msgid "Three columns" +msgstr "Три колонки" + +msgid "username" +msgstr "Имя пользователя" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Обязательное. 300 символов или меньше. Допустимы буквы, цифры и символы " +"@/./+/-/_" + +msgid "Enter a valid username." +msgstr "Введите действующее имя пользователя." + +msgid "email address" +msgstr "mailto" + +msgid "staff status" +msgstr "статус персонал" + +msgid "Designates whether the user can log into this admin site." +msgstr "Обозначает, может ли пользователь войти в админку сайта." + +msgid "active" +msgstr "активен" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Обозначает, что пользователь должен рассматриваться как активный. Отмените " +"выбор вместо удаления учетной записи." + +msgid "users" +msgstr "пользователи" + +msgid "Title Extension" +msgstr "Расширение заголовка" + +msgid "Page Extension" +msgstr "Расширение страницы" + +msgid "object ID" +msgstr "идентификатор объекта" + +msgid "Example1 App" +msgstr "Приложение Пример1" + +msgid "MultilingualExample1 App" +msgstr "Приложение МогоязычныйПример1" + +msgid "Example1" +msgstr "Пример1" + +msgid "Examples" +msgstr "Примеры" + +msgid "Extra Context" +msgstr "Экстра Контекст" + +msgid "Articles" +msgstr "Статьи" + +msgid "Sample App" +msgstr "Пример приложения" + +msgid "Sample App with config" +msgstr "Пример приложения с конфигурацией" + +msgid "Sample App with excluded permissions" +msgstr "Пример приложения с исключенными разрешениями" + +msgid "Sample App 2" +msgstr "Пример приложения 2" + +msgid "Sample App 3" +msgstr "Пример приложения 2" + +msgid "Sample App Without Landing Page" +msgstr "Пример приложения без целевой страницы" + +msgid "Namespaced App" +msgstr "Приложение в именованной области" + +msgid "Parent app" +msgstr "Родительское приложение" + +msgid "Child app" +msgstr "Дочернее приложение" + +msgid "Variable urls-menus App" +msgstr "Различные приложения для меню и URLs" + +msgid "sample root page" +msgstr "пример корневой страницы" + +msgid "sample settings page" +msgstr "пример страницы настроек" + +msgid "sample account page" +msgstr "пример страницы учётной записи" + +msgid "sample my profile page" +msgstr "пример страницы профиля" + +msgid "Static Menu" +msgstr "Статическое Меню" + +msgid "Static Menu2" +msgstr "Статическое Меню2" + +msgid "Static Menu3" +msgstr "Статическое Меню3" + +msgid "Static Menu4" +msgstr "Статическое Меню" + +msgid "Category" +msgstr "Категория" + +msgid "Categories" +msgstr "Категории" + +msgid "Add Category" +msgstr "Добавить категорию" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Изменить категорию" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Благодарим за время, проведенное сегодня на сайте." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Наследовать шаблон от ближайшего предка" + +msgid "UserSettings" +msgstr "Настройки пользователя" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Добавить плагин в плейсхолдер \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Добавить плагин в %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Один плейсхолдер" + +msgid "CMS - your user account was created." +msgstr "CMS - ваш аккаунт создан." + +msgid "CMS - your user account was changed." +msgstr "CMS - ваш аккаунт изменён." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Этот плейсхолдер уже имеет максимальное число плагинов (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Этот плейсхолдер уже имеет максимальное количество (%(limit)s) плагинов типа" +" %(plugin_name)s." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Невозможно найти указанный в CMS_REQUEST_IP_RESOLVER модуль: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Невозможно найти указанную в CMS_REQUEST_IP_RESOLVER функцию: \"{0}\" в " +"модуле \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Создать новый %s экземпляр." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Мастер уже зарегистрирован для модели: %s" diff --git a/cms/locale/ru/LC_MESSAGES/djangojs.po b/cms/locale/ru/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..520a37a0 --- /dev/null +++ b/cms/locale/ru/LC_MESSAGES/djangojs.po @@ -0,0 +1,26 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Dimmus , 2011 +# Gleb Chipiga , 2011 +# Oleg Fish , 2015 +# Oleg Fish , 2015 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Oleg Fish , 2015\n" +"Language-Team: Russian (http://app.transifex.com/divio/django-cms/language/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Вы уверены, что хотите изменить вкладки без сохранения страницы?" diff --git a/cms/locale/ru_RU/LC_MESSAGES/django.po b/cms/locale/ru_RU/LC_MESSAGES/django.po new file mode 100644 index 00000000..cf9caeb8 --- /dev/null +++ b/cms/locale/ru_RU/LC_MESSAGES/django.po @@ -0,0 +1,2266 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Russian (Russia) (https://app.transifex.com/divio/teams/58664/ru_RU/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru_RU\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/ru_RU/LC_MESSAGES/djangojs.po b/cms/locale/ru_RU/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..cfbfe32b --- /dev/null +++ b/cms/locale/ru_RU/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Russian (Russia) (http://app.transifex.com/divio/django-cms/language/ru_RU/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru_RU\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/sk/LC_MESSAGES/django.po b/cms/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000..ef3745ea --- /dev/null +++ b/cms/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,1664 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2022 +# Martin Kilian , 2026 +# Thomas Thomas , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Thomas Thomas , 2026\n" +"Language-Team: Slovak (https://app.transifex.com/divio/teams/58664/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" + +msgid "All" +msgstr "Všetky" + +msgid "Copy permissions" +msgstr "Kopírovať práva" + +msgid "Slug" +msgstr "Identifikátor" + +msgid "The part of the title that is used in the URL" +msgstr "Časť názvu, ktorá je použitá v URL" + +msgid "Page type" +msgstr "Typ stránky" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Typy stránok" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Prepísať URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "" +"Ponechajte toto pole prázdne, ak chcete, aby sa použila štandardná cesta." + +msgid "Start typing..." +msgstr "Začnite písať..." + +msgid "menu visibility" +msgstr "viditeľnosť menu" + +msgid "limit when this page is visible in the menu" +msgstr "obmedzuje zobrazenie tejto stránky v menu" + +msgid "X Frame Options" +msgstr "Možnosti X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "Hlavička" + +msgid "Application" +msgstr "Aplikácia" + +msgid "Hook application to this page." +msgstr "Pripojiť aplikáciu na túto stránku." + +msgid "Application configurations" +msgstr "Konfigurácia aplikácie" + +msgid "A page with this reverse URL id exists already." +msgstr "Stránka s takouto hodnotou reverse URL id už existuje." + +msgid "Invalid application config value" +msgstr "Zlá hodnota aplikačného konfigu" + +msgid "An application instance using this configuration already exists." +msgstr "Inštancia aplikácie, ktorá používa tieto nastavenia už existuje." + +msgid "An application instance with this name already exists." +msgstr "Inštancia aplikácie s týmto názvom už existuje." + +msgid "You can't move the home page inside another page" +msgstr "Nemôžete presunúť domovskú stránku dovnútra ďaľšej stránky" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "Áno" + +msgid "No" +msgstr "Nie" + +msgid "user" +msgstr "užívateľ" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "Pridať" + +msgid "Change" +msgstr "Zmeniť" + +msgid "Delete" +msgstr "Vymazať" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Uživatelia nemôžu vytvoriť stránku bez oprávnenia, ktoré by im túto akciu " +"umožňovalo. Je vyžadované oprávnenia editovať stránku." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Uživatelia nemôžu smazať stránku bez oprávnenia, ktoré by im túto akciu " +"umožňovalo. Je vyžadované oprávnenie editovať stránku." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Uživatelia nemôžu nastaviť oprávnenia stránky bez oprávnenia, ktoré by im " +"túto akciu umožňovalo. Je vyžadované oprávnenie editovať stránku." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Uživatelia nemôžu vymazať oprávnenia ku stránke bez oprávnenia, ktoré by im " +"túto akciu umožňovalo. Je vyžadované oprávnenie editovať stránku." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Nevalídny typ pluginu '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Jazyk musí byť medzi podporovanými jazykmi" + +msgid "Parent plugin language must be same as language!" +msgstr "Jazyk zásuvného nadradeného modulu musí byť rovnaký ako hlavný jazyk!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "Pokročilé nastavenia" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Objekt %(name)s s primárnym kľúčom %(key)r neexistuje." + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Chyba! Nemáte právo presunúť túto stránku. Prosím znovu načítajte stránku." + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "Nemáte právo na úpravu tejto stránky" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "Pridať kópiu stránky" + +msgid "New sub page" +msgstr "Nová podstránka" + +msgid "New page" +msgstr "Nová stránka" + +msgid "Database error" +msgstr "Databázová chyba" + +msgid "Template not valid" +msgstr "Šablóna nie je platná." + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "Šablóna bola úspešne zmenená" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "Nemáte právo kopírovať tieto zásuvné moduly." + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Názov a zásuvné moduly pre jazyk %(language)s boli vymazané" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "Prázdne" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "Obmedzenie náhľadu" + +msgid "View restrictions" +msgstr "Obmedzenia náhľadu" + +#, python-format +msgid "Field %s not found" +msgstr "Pole %s nebolo nájdené" + +msgid "You do not have permission to edit this item" +msgstr "Nemáte právo upraviť túto položku" + +msgid "You do not have permission to add a plugin" +msgstr "Nemáte právo pridať zásuvný modul" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "Zásuvný modul nebol nájdený" + +msgid "You do not have permission to edit this plugin" +msgstr "Nemáte právo na úpravu tohto zásuvného modulu" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "Nemáte žiadne práva na premiestnenie tohto zásuvného modulu" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "Nemáte právo na odstránenie tohto zásuvného modulu" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "Tento %(name)s zásuvný modul \"%(obj)s\" bol úspešne odstránený." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Nemôžete odstrániť %(name)s" + +msgid "Are you sure?" +msgstr "Ste si istý?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Nemáte právo na vyprázdnenie tohto umiestňovača" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Umiestňovač \"%(obj)s\" bol úspešne vyprázdnený." + +msgid "placeholder" +msgstr "umiestňovač" + +msgid "Page permissions" +msgstr "Práva k stránkam" + +msgid "User & Group permissions" +msgstr "Práva užívateľov a skupín" + +msgid "Page permissions management" +msgstr "Správa práv k stránkam" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "Náhľad" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Umiestňovač" + +msgid "Create" +msgstr "Vytvoriť" + +msgid "Edit" +msgstr "Upraviť" + +msgid "Structure" +msgstr "Štruktúra" + +msgid "Content" +msgstr "Obsah" + +msgid "Sites" +msgstr "Weby" + +msgid "Admin Sites" +msgstr "Správa Webov" + +msgid "Administration" +msgstr "Správa" + +msgid "User settings" +msgstr "Používateľské nastavenia" + +msgid "Clipboard..." +msgstr "Schránka..." + +msgid "Clear clipboard" +msgstr "Vyčistiť schránku" + +msgid "Disable toolbar" +msgstr "Skryť lištu nástrojov" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "Používatelia" + +#, python-format +msgid "Logout %s" +msgstr "Odhlásiť %s" + +msgid "Logout" +msgstr "Odhlásenie" + +msgid "Language" +msgstr "Jazyk" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "Stránky" + +msgid "Page" +msgstr "Stránka" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "Nová stránka" + +msgid "New Sub Page" +msgstr "Nová podstránka" + +msgid "Duplicate this Page" +msgstr "Duplikovať túto stránku" + +msgid "Page settings" +msgstr "Nastavenia stránky" + +msgid "Advanced settings" +msgstr "Pokročilé nastavenia" + +msgid "Templates" +msgstr "Šablóny" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "Skryť v navigácii" + +msgid "Display in navigation" +msgstr "Zobraziť v navigácii" + +msgid "Delete page" +msgstr "Odstrániť stránku" + +msgid "Create a new page next to the current page." +msgstr "Vytvorí novú stránku k práve zobrazenej stránke" + +msgid "Create a page below the current page." +msgstr "Vytvorá podstránku pod touto stránkou" + +msgid "Select a valid site" +msgstr "Vyberte platné miesto" + +msgid "Select a valid page" +msgstr "Vyberte platnú stránku" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Voliteľné. Pokiaľ uvediete, text bude automaticky pridaný do nového " +"textového modulu." + +msgid "Provide a title for the new page." +msgstr "Uveďte názov pre novú stránku." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "pozícia" + +msgid "language" +msgstr "jazyk" + +msgid "plugin_name" +msgstr "plugin_name" + +msgid "creation date" +msgstr "dátum vytvorenia" + +msgid "can edit" +msgstr "môže editovať" + +msgid "can add" +msgstr "môže pridať" + +msgid "can delete" +msgstr "môže zmazať" + +msgid "can change advanced settings" +msgstr "môže meniť pokročilé nastavenia" + +msgid "can publish" +msgstr "môže publikovať" + +msgid "can change permissions" +msgstr "môže meniť práva" + +msgid "can move" +msgstr "môže presunúť" + +msgid "view restricted" +msgstr "zobraziť obmedzenie" + +msgid "can recover pages" +msgstr "môže obnoviť stránky" + +msgid "group" +msgstr "skupina" + +msgid "sites" +msgstr "weby" + +msgid "created by" +msgstr "vytvoril" + +msgid "changed by" +msgstr "zmenil" + +msgid "publication date" +msgstr "dátum publikovania" + +msgid "publication end date" +msgstr "publikovať do dátumu" + +msgid "in navigation" +msgstr "v navigácii" + +msgid "soft root" +msgstr "soft root" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "pripnuté menu" + +msgid "template" +msgstr "šablóna" + +msgid "login required" +msgstr "vyžadovať prihlásenie" + +msgid "application" +msgstr "aplikácia" + +msgid "application instance name" +msgstr "názov inštancie aplikácie" + +msgid "site" +msgstr "web" + +msgid "Grant on" +msgstr "Prideliť právo na" + +msgid "page" +msgstr "stránka" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "len pre prihlásených užívateľov" + +msgid "for anonymous users only" +msgstr "len pre anonymných užívateľov" + +msgid "Inherit from parent page" +msgstr "Prevziať z nadradenej stránky" + +msgid "Deny" +msgstr "Odmietnuť" + +msgid "Only this website" +msgstr "Len tento web" + +msgid "Allow" +msgstr "Povoliť" + +msgid "title" +msgstr "názov" + +msgid "The default title" +msgstr "Predvolený názov" + +msgid "Page Title" +msgstr "Názov stránky" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Prepísať to, čo je zobrazené v hornej časti vášho prehliadača alebo v " +"záložkách." + +msgid "Menu Title" +msgstr "Názov menu" + +msgid "Overwrite what is displayed in the menu" +msgstr "Prepísať to, čo sa zobrazuje v menu" + +msgid "Description meta tag" +msgstr "Popisný meta tag" + +msgid "A description of the page used by search engines." +msgstr "" +"Zoznam kľúčových slov oddelených čiarkou, ktoré môžu indexovať vyhľadávače." + +msgid "redirect" +msgstr "presmerovanie" + +msgid "Redirects to this URL." +msgstr "Presmeruje sa na túto URL." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Nie všetci predkovia budú zobrazení v navigácii" + +msgid "The template used to render the content." +msgstr "Šablóna, ktora sa použije na zobrazenie obsahu." + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "predvolené" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Jedinečný identifikátor, ktorý je použitý s page_url templatetag pre " +"odkazovanie do tejto stránky" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "stránky" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "identifikátor" + +msgid "Path" +msgstr "Cesta" + +msgid "Current page" +msgstr "Aktuálna stránka" + +msgid "Page children (immediate)" +msgstr "Priamy potomkovia stránky" + +msgid "Page and children (immediate)" +msgstr "Stránka a priamy potomkovia" + +msgid "Page descendants" +msgstr "Nasledovníci stránky" + +msgid "Page and descendants" +msgstr "Stránka a nasledovníci" + +msgid "on page level" +msgstr "na úrovni stránky" + +msgid "frontend view restriction" +msgstr "obmedzenie frontend view" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "môže obnoviť akúkoľvek zmazanú stánku" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "Ak nie je žiadne zvolené, tak má užívateľ prístup ku všetkým webom." + +msgid "Page global permission" +msgstr "Globálne práva stránky" + +msgid "Pages global permissions" +msgstr "Globálne práva stránok" + +msgid "Page permission" +msgstr "Nastavenia práv stránky" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Právo na pridanie stránky vyžaduje taktiež prístup k vnoreným stránkam " +"(potomkom). Inak nebude môcť takéto stránky editovať ich autor." + +msgid "User (page)" +msgstr "Užívateľ stránok" + +msgid "Users (page)" +msgstr "Užívatelia stránok" + +msgid "User group (page)" +msgstr "Skupina užívateľov stránok" + +msgid "User groups (page)" +msgstr "Skupiny užívateľov stránok" + +msgid "slot" +msgstr "slot" + +msgid "width" +msgstr "šírka" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Jazyk administračného rozhrania a panelu nástrojov" + +msgid "user setting" +msgstr "užívateľské nastavenie" + +msgid "user settings" +msgstr "užívateľské nastavenia" + +msgid "by template" +msgstr "podľa šablóny" + +msgid "by code" +msgstr "podľa kódu" + +msgid "static placeholder name" +msgstr "názov statického umiestňovača" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Popisný názov identifikujúci tento umiestňovač. Nie je zobrazený užívateľom." + +msgid "placeholder code" +msgstr "kód umiestňovača" + +msgid "To render the static placeholder in templates." +msgstr "Generuj statické umiestňovače v šablónach." + +msgid "placeholder content" +msgstr "obsah umiestňovača" + +msgid "creation_method" +msgstr "creation_method" + +msgid "static placeholder" +msgstr "statický umiestňovač" + +msgid "static placeholders" +msgstr "statické umiestňovače" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Statický umiestňovač s rovnakým kódom pre tento web už existuje" + +msgid "Advanced options" +msgstr "Pokročilé nastavenia" + +msgid "Generic" +msgstr "Generic" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" +"Nie sú k dispozícii žiadne ďalšie nastavenia pre tento zásuvný modul. " +"Prosím, stlačte tlačidlo Uložiť." + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "Uložiť" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "Prihlásiť sa do administrácie." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Prihlasovacie URL: %(login_url)s" + +msgid "Username:" +msgstr "Užívateľské meno:" + +msgid "Password:" +msgstr "Heslo:" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "Zmeniť stránku" + +msgid "Home" +msgstr "Domov" + +msgid "View on site" +msgstr "Pozrieť na webe" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Prosím, opravte chyby uvedené nižšie." +msgstr[1] "Prosím, opravte chybu uvedenú nižšie." +msgstr[2] "Prosím, opravte chyby uvedené nižšie." +msgstr[3] "Prosím, opravte chyby uvedené nižšie." + +msgid "All permissions" +msgstr "Všetky oprávnenia" + +msgid "Loading..." +msgstr "Načítavanie..." + +msgid "Save and continue editing" +msgstr "Uložiť a pokračovať v úpravách" + +#, 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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "Užívateľ" + +msgid "Group" +msgstr "Skupina" + +msgid "Can edit" +msgstr "Môže upravovať" + +msgid "Can add" +msgstr "Môže pridávať" + +msgid "Can delete" +msgstr "Môže vymazať" + +msgid "Can publish" +msgstr "Môže publikovať" + +msgid "Can change permissions" +msgstr "Môže meniť nastavenia práv" + +msgid "Can move" +msgstr "Môže presunúť" + +msgid "Can view" +msgstr "Môže prezerať" + +msgid "(global)" +msgstr "(globálne)" + +msgid "(current)" +msgstr "(aktuálne)" + +msgid "Page doesn't inherit any permissions." +msgstr "Stránka nededí žiadne práva." + +msgid "Edit model" +msgstr "Upraviť model" + +msgid "Save as new" +msgstr "Uložiť ako novú" + +msgid "Save and add another" +msgstr "Uložiť a pridať ďalšiu" + +msgid "Copy" +msgstr "Kopírovať" + +msgid "Cut" +msgstr "Vystrihnúť" + +msgid "Paste" +msgstr "Prilepiť" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "je obmedzené" + +msgid "last change by" +msgstr "naposledy upravil" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "Zoznam stránok" + +msgid "Search" +msgstr "Hľadať" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "Úspešne presunuté" + +msgid "Changes within the tree might require a refresh." +msgstr "Zmeny vo vnútri stromu môžu vyžadovať znovu načítanie stránky" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "Naozaj chcete § túto stránku?" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "Zobraziť" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "Možnosti kopírovania" + +msgid "Choose copy options" +msgstr "Vyberte možnosti kopírovania" + +msgid "Close" +msgstr "Zavrieť" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Aplikácia: %(apphook)s" + +msgid "in menu" +msgstr "v menu" + +msgid "not in menu" +msgstr "nie je v menu" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "Oprávnenia" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "Táto stránka nemá náhľad!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "Presmerováva na:" + +msgid "Clipboard" +msgstr "Schránka" + +msgid "Add plugin" +msgstr "Pridať plugin" + +msgid "Copy all" +msgstr "Kopírovať všetko" + +msgid "Copy from" +msgstr "Kopírovať z" + +msgid "Empty all" +msgstr "Zmazať všetko" + +msgid "Filter plugins..." +msgstr "Filtrovať pluginy..." + +msgid "Expand all" +msgstr "Rozbaliť všetko" + +msgid "Collapse all" +msgstr "Zbaliť všetko" + +msgid "You cannot add plugins to this plugin." +msgstr "Nie je možné pridať pluginy do tohto pluginu." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "Tento plugin nie je možné presunúť alebo upraviť mimo jeho rodiča." + +msgid "Clipboard is empty." +msgstr "Schránka je prázdna." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Tento plugin neumožňuje vnárať pluginy tohto typu." + +msgid "This plugin cannot have nested plugins." +msgstr "Tento plugin nemôže mať vnorené pluginy." + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "Dostupné pluginy" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "Prihlásiť" + +msgid "Add plugin to" +msgstr "Pridať plugin do" + +msgid "More" +msgstr "Viac" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "Zrušiť" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "Ste si istí, že chcete zmazať tento zásuvný modul?" + +msgid "Are you sure you want to publish this page?" +msgstr "Ste si istý, že chcete publikovať túto stránku?" + +msgid "Plugin will be added here" +msgstr "Plugin bude pridaný sem" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Prihlásenie bolo neúspešné. Prosím skontrolujte vaše meno a" +" heslo a skúste to znovu." + +msgid "Double-click to edit" +msgstr "Dvoj-klik pre úpravu" + +msgid "Tap to edit" +msgstr "Ťuknite pre editáciu" + +msgid "Click to go back" +msgstr "Kliknite pre krok späť" + +msgid "Click to go forward" +msgstr "Kliknite pre krok vpred" + +msgid "Minimize" +msgstr "Minimalizovať" + +msgid "Maximize" +msgstr "Maximalizovať" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "Presuňte plugin sem" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "Prihláste sa prosím" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "Pridať ďalšie" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "Ďalej" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "mailto" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "Rodičovnská app" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "Statické Menu" + +msgid "Static Menu2" +msgstr "Statické Menu2" + +msgid "Static Menu3" +msgstr "Statické Menu3" + +msgid "Static Menu4" +msgstr "Statické Menu" + +msgid "Category" +msgstr "Kategória" + +msgid "Categories" +msgstr "Kategórie" + +msgid "Add Category" +msgstr "Pridať Kategóriu" + +msgid "^account/$" +msgstr "^účet/$" + +msgid "Change Category" +msgstr "Zmeniť Kategóriu" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Ďakujeme, že ste dnes strávili nejaký čas s Web stránkou." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Zdediť šablónu od najbližšieho predchodcu" + +msgid "UserSettings" +msgstr "Uživateľské nastavenie" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Pridať plugin na miesto \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Pridať plugin do %(plugin_name)s" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "CMS - Vaše užívateľské konto bolo vytvorené." + +msgid "CMS - your user account was changed." +msgstr "CMS - Vaše užívateľské konto bolo zmenené." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Toto miesto už obsahuje maximálny počet pluginov (%s)" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Toto miesto už obsahuje maximálny počet (%(limit)s) z " +"%(plugin_name)spovolených pluginov." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Nepodarilo sa nájsť špecifikovaný CMS_REQUEST_IP_RESOLVER modul: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Nepodarilo sa nájsť špecifikovanu CMS_REQUEST_IP_RESOLVER funkciu: \"{0}\" v" +" module \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Vytvoriť novú %sinštanciu." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Sprievodca už bol registrovaný pre model: %s" diff --git a/cms/locale/sk/LC_MESSAGES/djangojs.po b/cms/locale/sk/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..ce267732 --- /dev/null +++ b/cms/locale/sk/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Slovak (http://app.transifex.com/divio/django-cms/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Ste si istý, že chcete zmeniť záložku bez toho, aby ste najskôr uložili stránku?" diff --git a/cms/locale/sk_SK/LC_MESSAGES/django.po b/cms/locale/sk_SK/LC_MESSAGES/django.po new file mode 100644 index 00000000..62179ef9 --- /dev/null +++ b/cms/locale/sk_SK/LC_MESSAGES/django.po @@ -0,0 +1,2268 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Erik Pribula , 2022 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Erik Pribula , 2022\n" +"Language-Team: Slovak (Slovakia) (https://app.transifex.com/divio/teams/58664/sk_SK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk_SK\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "Všetky" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "Kopírovať oprávnenia" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "Časť názvu, ktorá je použitá v URL." + +#: admin/forms.py:248 +msgid "Page type" +msgstr "Typ stránky" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "Typy stránok" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "Prepis URL" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "Začnite písať..." + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "Aplikácia" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "Inštancia aplikácie, ktorá požíva tieto nastavenia už existuje." + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "Inštancia aplikácie s týmto menom už existuje." + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "Áno" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "Nie" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "užívateľ" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "Pridať" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "Zmeniť" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "Zmazať" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "Predvolený názov" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "Názov stránky" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "Názov v menu" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "Popisný meta tag" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "Presmerovať na túto URL." + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "Názov" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "Presmerovanie" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/sk_SK/LC_MESSAGES/djangojs.po b/cms/locale/sk_SK/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..d6083bcc --- /dev/null +++ b/cms/locale/sk_SK/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Slovak (Slovakia) (http://app.transifex.com/divio/django-cms/language/sk_SK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk_SK\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/sl/LC_MESSAGES/django.po b/cms/locale/sl/LC_MESSAGES/django.po new file mode 100644 index 00000000..838d14fb --- /dev/null +++ b/cms/locale/sl/LC_MESSAGES/django.po @@ -0,0 +1,1632 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Slovenian (https://app.transifex.com/divio/teams/58664/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +msgid "All" +msgstr "" + +msgid "Copy permissions" +msgstr "" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "" + +msgid "Page type" +msgstr "" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "" + +msgid "Keep this field empty if standard path should be used." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "" + +msgid "Hook application to this page." +msgstr "" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "" + +msgid "The default title" +msgstr "" + +msgid "Page Title" +msgstr "" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +msgid "Menu Title" +msgstr "" + +msgid "Overwrite what is displayed in the menu" +msgstr "" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/sl/LC_MESSAGES/djangojs.po b/cms/locale/sl/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..51777e8e --- /dev/null +++ b/cms/locale/sl/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Slovenian (http://app.transifex.com/divio/django-cms/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/sl_SI/LC_MESSAGES/django.po b/cms/locale/sl_SI/LC_MESSAGES/django.po new file mode 100644 index 00000000..f23c87ab --- /dev/null +++ b/cms/locale/sl_SI/LC_MESSAGES/django.po @@ -0,0 +1,2268 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# simonv , 2025 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: simonv , 2025\n" +"Language-Team: Slovenian (Slovenia) (https://app.transifex.com/divio/teams/58664/sl_SI/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl_SI\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Popravite spodnjo napako" +msgstr[1] "Popravite spodnji napaki" +msgstr[2] "Popravite spodnje napake" +msgstr[3] "Popravite spodnje napake" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/sl_SI/LC_MESSAGES/djangojs.po b/cms/locale/sl_SI/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..1eb20bbc --- /dev/null +++ b/cms/locale/sl_SI/LC_MESSAGES/djangojs.po @@ -0,0 +1,25 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# neo64bit , 2011 +# neo64bit , 2011 +# simonv , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: simonv , 2011\n" +"Language-Team: Slovenian (Slovenia) (http://app.transifex.com/divio/django-cms/language/sl_SI/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl_SI\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Ste prepričani, da želite spremeniti tabulatorje preden shranite stran?" diff --git a/cms/locale/sq/LC_MESSAGES/django.po b/cms/locale/sq/LC_MESSAGES/django.po new file mode 100644 index 00000000..8180a707 --- /dev/null +++ b/cms/locale/sq/LC_MESSAGES/django.po @@ -0,0 +1,1762 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2026 +# Besnik Bleta , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Besnik Bleta , 2026\n" +"Language-Team: Albanian (https://app.transifex.com/divio/teams/58664/sq/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "Krejt" + +msgid "Copy permissions" +msgstr "Leje kopjimi" + +msgid "Slug" +msgstr "Identifikues" + +msgid "The part of the title that is used in the URL" +msgstr "Pjesa e titullit që përdoret te URL-ja" + +msgid "Page type" +msgstr "Lloj faqeje" + +msgid "You do not have permission to change this page." +msgstr "S’keni leje për ndryshim të kësaj faqeje" + +msgid "Page Types" +msgstr "Lloje Faqesh" + +msgid "You do not have permission to copy this page." +msgstr "S’keni leje për të kopjuar këtë faqe" + +msgid "Overwrite URL" +msgstr "Mbishkruaje URL-në" + +msgid "Keep this field empty if standard path should be used." +msgstr "Mbajeni të zbrazët këtë fushë, nëse duhet përdorur shtegu standard." + +msgid "Start typing..." +msgstr "Filloni të shtypni…" + +msgid "menu visibility" +msgstr "dukshmëri menush" + +msgid "limit when this page is visible in the menu" +msgstr "kufizo kur kjo faqe është e dukshme te menuja" + +msgid "X Frame Options" +msgstr "Mundësi për X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Nëse mund të trupëzohet a jo kjo faqe në faqe ose sajte të tjerë." + +msgid "URL options" +msgstr "Mundësi URL-sh" + +msgid "Menu options" +msgstr "Mundësi menuje" + +msgid "Headers" +msgstr "Krye" + +msgid "Application" +msgstr "Aplikacion" + +msgid "Hook application to this page." +msgstr "Lidhe aplikacionin me këtë faqe." + +msgid "Application configurations" +msgstr "Formësime aplikacioni" + +msgid "A page with this reverse URL id exists already." +msgstr "Ka tashmë një faqe me këtë URL të përmbysur." + +msgid "Invalid application config value" +msgstr "Vlerë e pavlefshme formësimi aplikacioni" + +msgid "An application instance using this configuration already exists." +msgstr "Ka tashmë një instancë aplikacioni që përdor këtë formësim." + +msgid "An application instance with this name already exists." +msgstr "Ka tashmë një instancë aplikacioni me këtë emër." + +msgid "You can't move the home page inside another page" +msgstr "S’mund ta kaloni faqen e kreut brenda një faqeje tjetër" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"S’mund të keni dy faqe me të njëjtin identifikues, në të njëjtin nivel " +"faqesh. Ju lutemi, ndryshojeni identifikuesin e njërës prej faqeve, para se " +"të riprovoni ta lëvizni." + +msgid "Yes" +msgstr "Po" + +msgid "No" +msgstr "Jo" + +msgid "user" +msgstr "përdorues" + +msgid "can_view" +msgstr "mund_të_shohë" + +msgid "Add" +msgstr "Shtoni" + +msgid "Change" +msgstr "Ndryshoje" + +msgid "Delete" +msgstr "Fshije" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Përdoruesit s’mund të krijojnë një faqe pa leje për ndryshim të faqes së " +"krijuar. Lypsen leje përpunimi." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Përdoruesit s’mund të fshijnë një faqe pa leje për ndryshim të faqes. Lypsen" +" leje përpunimi." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Përdoruesit s’mund të caktojnë leje faqeje pa leje për ndryshim të faqes. " +"Lypsen leje përpunimi." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Përdoruesit s’mund të fshijnë leje faqeje pa leje për ndryshim të faqes. " +"Lypsen leje përpunimi." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Përdoruesit s’mund të krijojnë leje faqeje pa leje për ndryshim të lejes së " +"krijuar. Lypsen leje përpunimi." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Përdoruesit s’mund të fshijnë leje faqeje pa leje për ndryshim lejesh. " +"Lypsen leje përpunimi." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Lloj i pavlefshëm shtojce '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Si gjuhë duhet caktuar një nga gjuhët që mbulohet!" + +msgid "Parent plugin language must be same as language!" +msgstr "Gjuha e shtojcës mëmë duhet të jetë e njëjtë me gjuhën!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" +"Vendmbajtësja e shtojcës mëmë duhet të jetë e njëjtë me vendmbajtësen!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Pozicioni i shtojcës duhet të jetë më i madh se %(position)d" + +msgid "Translations" +msgstr "Përkthime" + +msgid "Advanced Settings" +msgstr "Rregullime të Mëtejshme" + +msgid "The page is not eligible to be home." +msgstr "Faqja s’kualifikohet për të qenë faqe kreu." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Objekti %(name)s me kyç parësor %(key)r s’ekziston." + +msgid "error" +msgstr "gabim" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Gabim! S’keni leje për lëvizjen e kësaj faqeje. Ju lutemi, ringarkoni faqen" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Gabim! S’keni leje të kopjoni këtë faqe." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Gabim! Faqja që po ngjitni s’është e përkthyer në ndonjë nga gjuhët e " +"formësuara nga sajti i synuar." + +msgid "You do not have permission to edit this page" +msgstr "S’keni leje për të përpunuar këtë faqe" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(që ta ndryshoni, së pari hiqni botimin e versionit aktualisht të botuar të " +"kësaj faqeje)" + +msgid "Add Translation" +msgstr "Shtoni Përkthim" + +msgid "Add Page Copy" +msgstr "Shtoni Kopje Faqeje" + +msgid "New sub page" +msgstr "Nënfaqe e re" + +msgid "New page" +msgstr "Faqe e re" + +msgid "Database error" +msgstr "Gabim baze të dhënash" + +msgid "Template not valid" +msgstr "Gjedhe jo e vlefshme" + +msgid "Placeholder selection not valid" +msgstr "Përzgjedhje vendmbajtëseje jo e vlefshme" + +msgid "The template was successfully changed" +msgstr "Gjedhja u ndryshua me sukses" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Vendmbajtësja '%s' s’ekziston në gjuhën e synuar" + +msgid "You do not have permission to copy these plugins." +msgstr "S’keni leje të kopjoni këto shtojca." + +msgid "You do not have permission to delete this page" +msgstr "S’keni leje për fshirje të kësaj faqeje" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Titulli dhe shtojcat me gjuhën %(language)s u fshinë" + +msgid "Public content" +msgstr "Lëndë publike" + +msgid "Empty" +msgstr "E zbrazët" + +msgid "Create Content" +msgstr "Krijoni Lëndë" + +msgid "View restriction" +msgstr "Shihni kufizim" + +msgid "View restrictions" +msgstr "Shihni kufizime" + +#, python-format +msgid "Field %s not found" +msgstr "Fusha %s s’u gjet" + +msgid "You do not have permission to edit this item" +msgstr "S’keni leje të përpunoni këtë objekt" + +msgid "You do not have permission to add a plugin" +msgstr "S’keni leje të shtoni një shtojcë" + +msgid "You do not have permission to copy this placeholder." +msgstr "S’keni leje të kopjoni këtë vendmbajtëse." + +msgid "Plugin not found" +msgstr "S’u gjet shtojcë" + +msgid "You do not have permission to edit this plugin" +msgstr "S’keni leje të përpunoni këtë shtojcë" + +msgid "You have no permission to paste this plugin" +msgstr "S’keni leje ta ngjitni këtë shtojcë" + +msgid "You have no permission to paste this placeholder" +msgstr "S’keni leje ta ngjitni këtë vendmbajtëse" + +msgid "You have no permission to move this plugin" +msgstr "S’keni leje të lëvizni këtë shtojcë" + +msgid "You have no permission to cut this plugin" +msgstr "S’keni leje ta prisni këtë shtojcash" + +msgid "You do not have permission to delete this plugin" +msgstr "S’keni leje ta fshini këtë shtojcë" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "Shtojca %(name)s \"%(obj)s\" u fshi me sukses." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "S’fshihet dot %(name)s" + +msgid "Are you sure?" +msgstr "Jeni i sigurt?" + +msgid "You do not have permission to clear this placeholder" +msgstr "S’keni leje të spastroni këtë vendmbajtëse" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Vendmbajtësja \"%(obj)s\" u fshi me sukses." + +msgid "placeholder" +msgstr "vendmbajtëse" + +msgid "Page permissions" +msgstr "Leje faqeje" + +msgid "User & Group permissions" +msgstr "Leje Përdoruessih & Grupesh" + +msgid "Page permissions management" +msgstr "Administrim leje faqesh" + +msgid "Actions" +msgstr "Veprime" + +msgid "Empty content" +msgstr "Lëndë e zbrazët" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Veti %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Shtoni %(object_name)s të ri" + +msgid "Add content" +msgstr "Shtoni lëndë" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Lënda për gjuhën e tanishme është ndryshuar. Klikoni mbi “Anuloje”, që të " +"riktheheni te formulari dhe ruani ndryshimet. Klikoni mbi “OK” për të hedhur" +" tej ndryshimet." + +#, python-format +msgid "Add %(language)s content" +msgstr "Shtoni lëndë në %(language)s" + +msgid "Preview" +msgstr "Paraparje" + +msgid "Settings" +msgstr "Rregullime" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"%(value)s e pavlefshme gjuhe. Ky formular s’mund të përpunohet. Provoni të " +"ndryshoni gjuhë." + +msgid "" +msgstr "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Gjuha për ndërfaqen dhe panelin e përgjegjësit" + +msgid "user setting" +msgstr "rregullim përdoruesi" + +msgid "user settings" +msgstr "rregullime përdoruesi" + +msgid "by template" +msgstr "sipas gjedheje" + +msgid "by code" +msgstr "sipas kodi" + +msgid "static placeholder name" +msgstr "emër vendmbajtëseje statike" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Emër përshkrues për identifikim të kësaj vendmbajtëse statike. S’u shfaqet " +"përdoruesve." + +msgid "placeholder code" +msgstr "kod vendmbajtëseje" + +msgid "To render the static placeholder in templates." +msgstr "Për vizatim të vendmbajtëses statike në gjedhe." + +msgid "placeholder content" +msgstr "lëndë vendmbajtëseje" + +msgid "creation_method" +msgstr "metodë_krijimi" + +msgid "static placeholder" +msgstr "vendmbajtëse statike" + +msgid "static placeholders" +msgstr "vendmbajtëse statike" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Ka tashmë një vendmbajtëse statike me të njëjtin sajt dhe kod" + +msgid "Advanced options" +msgstr "Mundësi të mëtejshme" + +msgid "Generic" +msgstr "Elementare" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" u ndryshua me sukses." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" +"S’ka rregullime të tjera për këtë shtojcë. Ju lutemi, shtypni “Ruaje”." + +msgid "Moved" +msgstr "E lëvizur" + +msgid "Changed" +msgstr "E ndryshuar" + +msgid "Deleted" +msgstr "E fshirë" + +msgid "Added Page Translation" +msgstr "Shtoi Përkthim Faqeje" + +msgid "Changed Page Translation" +msgstr "U ndryshua Përkthim Faqeje" + +msgid "Deleted Page Translation" +msgstr "U fshi Përkthim Faqeje" + +msgid "Added Plugin" +msgstr "U shtua Shtojcë" + +msgid "Changed Plugin" +msgstr "U ndryshua Shtojcë" + +msgid "Moved Plugin" +msgstr "U zhvendos shtojcë" + +msgid "Deleted Plugin" +msgstr "U fshi Shtojcë" + +msgid "Cut Plugin" +msgstr "Prije Shtojcën" + +msgid "Paste Plugin" +msgstr "Ngjite Shtojcën" + +msgid "Paste to Placeholder" +msgstr "Ngjite te Vendmbajtëse" + +msgid "Added plugins to placeholder from clipboard" +msgstr "U shtuan shtojca nga e papastra te vendmbajtësja" + +msgid "Cleared Placeholder" +msgstr "U spastrua Vendmbajtësja" + +msgid "Save" +msgstr "Ruaje" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "Disa fusha s’mund të ndryshohen, ngaqë janë lëndë vetëm-për-lexim." + +#, python-format +msgid "Log in to administration here." +msgstr "Hyni te pjesa e administrimit që këtu." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "URL hyrjesh: %(login_url)s" + +msgid "Username:" +msgstr "Emër përdoruesi:" + +msgid "Password:" +msgstr "Fjalëkalim:" + +msgid "Add a page" +msgstr "Shtoni një faqe" + +msgid "Change a page" +msgstr "Ndryshon një faqe" + +msgid "Home" +msgstr "Kreu" + +msgid "View on site" +msgstr "Shiheni në sajt" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Ju lutemi, ndreqni gabimin më poshtë." +msgstr[1] "Ju lutemi, ndreqni gabimet më poshtë." + +msgid "All permissions" +msgstr "Krejt lejet" + +msgid "Loading..." +msgstr "Po ngarkohet…" + +msgid "Save and continue editing" +msgstr "Ruajeni dhe vazhdoni përpunimin" + +#, 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 "" +"Jeni i sigurt se doni të fshihet %(object_name)s \"%(escaped_object)s\"? " +"Krejt objektet vijues të lidhur do të fshihen:" + +msgid "Yes, I’m sure" +msgstr "Po, jam i sigurt" + +msgid "No, take me back" +msgstr "Jo, shpjemëni mbrapa" + +msgid "Summary" +msgstr "Përmbledhje" + +msgid "User" +msgstr "Përdorues" + +msgid "Group" +msgstr "Grup" + +msgid "Can edit" +msgstr "Mund të përpunojë" + +msgid "Can add" +msgstr "Mund të shtojë" + +msgid "Can delete" +msgstr "Mund të fshijë" + +msgid "Can publish" +msgstr "Mund të botojë" + +msgid "Can change permissions" +msgstr "Mund të ndryshojë leje" + +msgid "Can move" +msgstr "Mund të lëvizë" + +msgid "Can view" +msgstr "Mund të shohë" + +msgid "(global)" +msgstr "(global)" + +msgid "(current)" +msgstr "(i tanishmi)" + +msgid "Page doesn't inherit any permissions." +msgstr "Faqja s’trashëgon ndonjë leje." + +msgid "Edit model" +msgstr "Përpunoni model" + +msgid "Save as new" +msgstr "Ruaje si të ri" + +msgid "Save and add another" +msgstr "Ruajeni dhe shtoni një tjetër" + +msgid "Copy" +msgstr "Kopjoje" + +msgid "Cut" +msgstr "Prije" + +msgid "Paste" +msgstr "Ngjite" + +msgid "Set as home" +msgstr "Vëre si krye" + +msgid "is restricted" +msgstr "është e kufizuar" + +msgid "last change by" +msgstr "ndryshimi i fundit nga" + +msgid "last change on" +msgstr "ndryshimi i fundit më" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Listë e faqeve" + +msgid "Search" +msgstr "Kërko" + +msgid "Page Tree" +msgstr "Pemë Faqesh" + +msgid "Reset filter" +msgstr "Zeroje filtrin" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Riktheni %(name)s e fshirë\n" +" " + +msgid "Main Navigation" +msgstr "Lëvizjet Kryesore" + +msgid "Options" +msgstr "Mundësi" + +msgid "Successfully moved" +msgstr "U lëviz sukses" + +msgid "Changes within the tree might require a refresh." +msgstr "Ndryshimet brenda pemës mund të duan një rifreskim." + +msgid "Error:" +msgstr "Gabim:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Kjo faqe s’mund të kopjohet, ngaqë i është bashkëngjitur një aplikacion. Se " +"si të administroni apphook-e, shihni Rregullime të Thelluara Faqesh." + +msgid "Are you sure you want to § this page?" +msgstr "Jeni i sigurt se doni të § kjo faqe?" + +msgid "Reload" +msgstr "Ringarkoje" + +msgid "New node" +msgstr "Nyjë e re" + +msgid "nodes" +msgstr "nyje" + +msgid "View" +msgstr "Shihni" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Ende s’ka %(object)s përqark.\n" +"
\n" +" Shtoni %(object)s tani.\n" +" " + +msgid "Copy options" +msgstr "Mundësi kopjimi" + +msgid "Choose copy options" +msgstr "Zgjidhni mundësi kopjimi" + +msgid "Close" +msgstr "Mbylle" + +msgid "Legend" +msgstr "Legjendë" + +msgid "In menu" +msgstr "Në menu" + +msgid "Not in menu" +msgstr "Jo në menu" + +msgid "View page" +msgstr "Shihni faqen" + +msgid "Softroot" +msgstr "Rrënjë e butë" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Aplikacion: %(apphook)s" + +msgid "in menu" +msgstr "në menu" + +msgid "not in menu" +msgstr "jo në menu" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" +"Rregullime faqeje (për rregullime të thelluara, shtypni SHIFT dhe klikoni)" + +msgid "Permissions" +msgstr "Lleje" + +msgid "inherited" +msgstr "e trashëguar" + +msgid "This page has no preview!" +msgstr "Kjo faqe s’ka paraparje!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "Mundet që apphook-u i bashkëngjitur s’jep lëndë për rrënjën e vet." + +msgid "It is being redirected to:" +msgstr "Po ridrejtohet te:" + +msgid "Clipboard" +msgstr "E papastër" + +msgid "Add plugin" +msgstr "Shtoni shtojcë" + +msgid "Copy all" +msgstr "Kopjoje krejt" + +msgid "Copy from" +msgstr "Kopjoje prej" + +msgid "Empty all" +msgstr "Zbrazi krejt" + +msgid "Filter plugins..." +msgstr "Filtroni shtojca…" + +msgid "Expand all" +msgstr "Zgjeroji krejt" + +msgid "Collapse all" +msgstr "Tkurri krejt" + +msgid "You cannot add plugins to this plugin." +msgstr "S’mund të shtoni shtojca te kjo shtojcë." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "Kjo shtojcë s’mund të hiqet apo përpunohet jashtë mëmës së vet" + +msgid "Clipboard is empty." +msgstr "E papastra është e zbrazët." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" +"Kjo shtojcë nuk lejon shtojca të këtij lloji si shtojca futur brenda njëra-" +"tjetrës." + +msgid "This plugin cannot have nested plugins." +msgstr "Kjo shtojcë s’mund të ketë shtojca futur brenda njëra-tjetrës." + +msgid "Highlight" +msgstr "Theksoje" + +msgid "Available plugins" +msgstr "Shtojca të gatshme" + +msgid "Toggle structure" +msgstr "Shfaq/Fshih strukturë" + +msgid "Login" +msgstr "Hyrje" + +msgid "Add plugin to" +msgstr "Shtoni shtojcë te" + +msgid "More" +msgstr "Më tepër" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Version zhvillim që përdor django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Anuloje" + +msgid "The following error occurred:" +msgstr "Ndodhi gabimi vijues:" + +msgid "Action successful." +msgstr "Veprim i suksesshëm." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Jeni i sigurt se doni të fshihet kjo shtojcë?" + +msgid "Are you sure you want to publish this page?" +msgstr "Jeni i sigurt se doni të botohet kjo faqe?" + +msgid "Plugin will be added here" +msgstr "Shtojca do të shtohet këtu" + +msgid "You have unsaved changes." +msgstr "Keni ndryshime të paruajtura." + +msgid "Loading" +msgstr "Po ngarkohet" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Jeni i sigurt se doni të braktisen këto ndryshime?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"Formulari s’u ngarkua dot. Ju lutemi, kontrolloni se shërbyesi po xhiron si " +"duhet." + +msgid "Most used" +msgstr "Më të përdorurit" + +msgid "Shortcuts" +msgstr "Shkurtore" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Ndërkohë faqja qe ndryshuar, po ringarkohet…" + +msgid "CMS-wide Shortcuts" +msgstr "Shkurtore për krejt CMS-në" + +msgid "Bring up this help dialog" +msgstr "Shfaq këtë dialog ndihme" + +msgid "Close/cancel" +msgstr "Mbylle/anuloje" + +msgid "Toggle structure mode" +msgstr "Këmbe mënyrë strukture" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" +"Këmbe mënyrë strukture dhe nxirr në pah shtojcën që ka kursorin përsipër" + +msgid "Open \"Create\" dialog" +msgstr "Hap dialogun “Krijoni”" + +msgid "Focus on Toolbar" +msgstr "Fokusi te Paneli" + +msgid "Focus on placeholders" +msgstr "Fokusi te vendmbajtëset" + +msgid "Move to next/previous element" +msgstr "Kalo te elementi pasues/i mëparshëm" + +msgid "Focus on plugins of placeholder" +msgstr "Fokus te shtojcat e vendmbajtëse" + +msgid "Edit plugin" +msgstr "Përpunoni shtojcë" + +msgid "Open actions menu" +msgstr "Hap menu veprimesh" + +msgid "Expand/collapse" +msgstr "Zgjeroje/tkurre" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Hyrja dështoi. Ju lutemi, kontrolloni kredencialet tuaja " +"dhe riprovoni." + +msgid "Double-click to edit" +msgstr "Dyklikojeni që ta përpunoni" + +msgid "Tap to edit" +msgstr "Prekeni që ta përpunoni" + +msgid "Click to go back" +msgstr "Klikoni që të ecet mbrapsht" + +msgid "Click to go forward" +msgstr "Klikoni që të ecet përpara" + +msgid "Minimize" +msgstr "Minimizoje" + +msgid "Maximize" +msgstr "Maksimizoje" + +msgid "Placeholder not editable" +msgstr "Vendmbajtësja s’përpunohet dot" + +msgid "Drop a plugin here" +msgstr "Hidhni këtu një shtojcë" + +msgid "Welcome to your new django CMS installation!" +msgstr "Mirë se vini te instalimi juaj i ri django CMS!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Version %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Le të ndërtojmë tok diçka të fuqishme!" + +msgid "Please log in" +msgstr "Ju lutemi, bëni hyrjen" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Shtoni faqen tuaj të parë\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Ndihmoni Financimin

\n" +"

\n" +" Fondet tuaja i bëjnë mirë drejtpërdrejt projektit, kryesisht përmes\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" Një rrugë e shpejtë për ju ose entin tuaj për të dhuruar është në\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Ejani me ne

\n" +"

\n" +" Shoqata django CMS është një ent jofitimprurës që financon dhe drejton zhvillimin e\n" +" django CMS-së.\n" +"

\n" +"

\n" +" Mundeni të vini si individ, ose si një\n" +" ent.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Jepni ndihmesë

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Shënime Instalimi" + +msgid "Support" +msgstr "Asistencë" + +msgid "Documentation" +msgstr "Dokumentim" + +msgid "User guide" +msgstr "Udhërrëfyes përdoruesish" + +msgid "Give back" +msgstr "Jepni një ndihmesë" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Nëse s’e shihni stemën e django CMS -s në krye, sigurohuni\n" +" se e keni lidhur dosjen tuaj static/cms me\n" +" kartelat tuaja statike.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Këtë mesazh po e shihni ngaqë keni\n" +" caktuar DEBUG = True te kartela e rregullimeve tuaja për django-n\n" +" dhe s’keni shtuar ende ndonjë faqe.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Mirë se vini te django- CMS" + +msgid "Add Another" +msgstr "Shtoni Tjetër" + +msgid "Back" +msgstr "Mbrapsht" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" +"Ju lutemi, që të vazhdohet te hapi pasues, zgjidhni një mundësi më poshtë." + +msgid "Next" +msgstr "Pasuesi" + +msgid "Select what you would like to create" +msgstr "Përzgjidhni ç’do të donit të krijoni" + +msgid "Unknown" +msgstr "E panjohur" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Faqe që s’u gjet te %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Një etiketë gjedheje s’gjeti dot faqen me argumente kërkimi `%(page_lookup)s\n" +"`. URL-ja e kërkesës qe: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Dy shtylla" + +msgid "Three columns" +msgstr "Tre shtylla" + +msgid "username" +msgstr "emër përdoruesi" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"E domosdoshme. 300 ose më pak shenja. Shkronja, numra dhe shenjat @/./+/-/_" + +msgid "Enter a valid username." +msgstr "Jepni një emër përdoruesi të vlefshëm." + +msgid "email address" +msgstr "adresë email" + +msgid "staff status" +msgstr "gjendje personeli" + +msgid "Designates whether the user can log into this admin site." +msgstr "" +"Përcakton nëse mund të hyjë ose jo përdoruesi te ky sajt administrimi." + +msgid "active" +msgstr "aktiv" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Përcakton nëse ky përdorues do të duhej trajtuar si aktiv. Në vend se të " +"fshini llogari, shpërzgjidhni këtë." + +msgid "users" +msgstr "përdorues" + +msgid "Title Extension" +msgstr "Zgjatim Titulli" + +msgid "Page Extension" +msgstr "Zgjatim Faqeje" + +msgid "object ID" +msgstr "ID objekti" + +msgid "Example1 App" +msgstr "Aplikacion Shembull 1" + +msgid "MultilingualExample1 App" +msgstr "Aplikacion Shembull Shumëgjuhësh 1" + +msgid "Example1" +msgstr "Shembull 1" + +msgid "Examples" +msgstr "Shembuj" + +msgid "Extra Context" +msgstr "Kontekst Ekstra" + +msgid "Articles" +msgstr "Artikuj" + +msgid "Sample App" +msgstr "Aplikacion Shembull" + +msgid "Sample App with config" +msgstr "Aplikacion Shembull me formësim" + +msgid "Sample App with excluded permissions" +msgstr "Aplikacion Shembull me leje të përjashtuara" + +msgid "Sample App 2" +msgstr "Aplikacion Shembull 2" + +msgid "Sample App 3" +msgstr "Aplikacion Shembull 2" + +msgid "Sample App Without Landing Page" +msgstr "Aplikacion Shembull Pa Faqe Hyrëse" + +msgid "Namespaced App" +msgstr "Aplikacion me Hapësirë Emrash" + +msgid "Parent app" +msgstr "Aplikacion mëmë" + +msgid "Child app" +msgstr "Aplikacion pjellë" + +msgid "Variable urls-menus App" +msgstr "Aplikacion me urls-menus të Ndryshueshme" + +msgid "sample root page" +msgstr "faqe shembull rrënjë" + +msgid "sample settings page" +msgstr "faqe shembull rregullimesh" + +msgid "sample account page" +msgstr "faqe shembull llogarish" + +msgid "sample my profile page" +msgstr "faqe shembull profili im" + +msgid "Static Menu" +msgstr "Menu Statike" + +msgid "Static Menu2" +msgstr "Menu Statike 2" + +msgid "Static Menu3" +msgstr "Menu Statike 3" + +msgid "Static Menu4" +msgstr "Menu Statike" + +msgid "Category" +msgstr "Kategori" + +msgid "Categories" +msgstr "Kategori" + +msgid "Add Category" +msgstr "Shtoni Kategori" + +msgid "^account/$" +msgstr "^llogari/$" + +msgid "Change Category" +msgstr "Ndryshoni Kategorinë" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Faleminderit që shpenzoni sot pak kohë të çmuar me sajtin Web." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Trashëgo gjedhen e paraardhësit më të afërt" + +msgid "UserSettings" +msgstr "RregullimePërdoruesi" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Shtoje shtojcën te vendmbajtësja \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Shtoje shtojcën te %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Vendmbajtëse e vetme" + +msgid "CMS - your user account was created." +msgstr "CMS - llogaria juaj e përdoruesit u krijua." + +msgid "CMS - your user account was changed." +msgstr "CMS - llogaria juaj e përdoruesit u ndryshua." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Kjo vendmbajtëse ka tashmë numrin maksimum të shtojcave (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Kjo vendmbajtëse ka tashmë numrin maksimum (%(limit)s) të shtojcave " +"%(plugin_name)s të lejuara." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "S’arrihet të gjendet moduli specifik CMS_REQUEST_IP_RESOLVER: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"S’arrihet të gjendet funksioni specifik CMS_REQUEST_IP_RESOLVER: \"{0}\" te " +"moduli \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Krijo një instancë %s të re." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Është regjistruar tashmë një ndihmës për modelin: %s" diff --git a/cms/locale/sq/LC_MESSAGES/djangojs.po b/cms/locale/sq/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..a8517d23 --- /dev/null +++ b/cms/locale/sq/LC_MESSAGES/djangojs.po @@ -0,0 +1,25 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Besnik Bleta , 2022,2025 +# Tim Krasniqi, 2024 +# Tim Krasniqi, 2024 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Tim Krasniqi, 2024\n" +"Language-Team: Albanian (http://app.transifex.com/divio/django-cms/language/sq/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Jeni i sigurt se doni të ndryshohen skeda pa ruajtur faqen së pari?" diff --git a/cms/locale/sq_AL/LC_MESSAGES/django.po b/cms/locale/sq_AL/LC_MESSAGES/django.po new file mode 100644 index 00000000..54e4cf40 --- /dev/null +++ b/cms/locale/sq_AL/LC_MESSAGES/django.po @@ -0,0 +1,2264 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Albanian (Albania) (https://app.transifex.com/divio/teams/58664/sq_AL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sq_AL\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/sq_AL/LC_MESSAGES/djangojs.po b/cms/locale/sq_AL/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..993f1c65 --- /dev/null +++ b/cms/locale/sq_AL/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Albanian (Albania) (http://app.transifex.com/divio/django-cms/language/sq_AL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sq_AL\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/sr/LC_MESSAGES/django.po b/cms/locale/sr/LC_MESSAGES/django.po new file mode 100644 index 00000000..8fdfc637 --- /dev/null +++ b/cms/locale/sr/LC_MESSAGES/django.po @@ -0,0 +1,1631 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Serbian (https://app.transifex.com/divio/teams/58664/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\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" + +msgid "All" +msgstr "" + +msgid "Copy permissions" +msgstr "" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "" + +msgid "Page type" +msgstr "" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "" + +msgid "Keep this field empty if standard path should be used." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "" + +msgid "Hook application to this page." +msgstr "" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "" + +msgid "The default title" +msgstr "" + +msgid "Page Title" +msgstr "" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +msgid "Menu Title" +msgstr "" + +msgid "Overwrite what is displayed in the menu" +msgstr "" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/sr/LC_MESSAGES/djangojs.po b/cms/locale/sr/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..c769e150 --- /dev/null +++ b/cms/locale/sr/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Serbian (http://app.transifex.com/divio/django-cms/language/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\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" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/sr@latin/LC_MESSAGES/django.po b/cms/locale/sr@latin/LC_MESSAGES/django.po new file mode 100644 index 00000000..b0c0e2ba --- /dev/null +++ b/cms/locale/sr@latin/LC_MESSAGES/django.po @@ -0,0 +1,1633 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Milorad Pop-Tosic , 2025 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Milorad Pop-Tosic , 2025\n" +"Language-Team: Serbian (Latin) (https://app.transifex.com/divio/teams/58664/sr@latin/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr@latin\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" + +msgid "All" +msgstr "" + +msgid "Copy permissions" +msgstr "" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "" + +msgid "Page type" +msgstr "" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "" + +msgid "Keep this field empty if standard path should be used." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "" + +msgid "Hook application to this page." +msgstr "" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "" + +msgid "The default title" +msgstr "" + +msgid "Page Title" +msgstr "" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +msgid "Menu Title" +msgstr "" + +msgid "Overwrite what is displayed in the menu" +msgstr "" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Molimo ispravite navedene greške." +msgstr[1] "Molimo ispravite navedene greške." +msgstr[2] "Molimo ispravite navedene greške." + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/sr@latin/LC_MESSAGES/djangojs.po b/cms/locale/sr@latin/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..66b89b14 --- /dev/null +++ b/cms/locale/sr@latin/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Serbian (Latin) (http://app.transifex.com/divio/django-cms/language/sr@latin/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr@latin\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" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Da li ste sigurni da želite da promenite tab pre nego što sačuvate stranu?" diff --git a/cms/locale/sv/LC_MESSAGES/django.po b/cms/locale/sv/LC_MESSAGES/django.po new file mode 100644 index 00000000..d2d26ad4 --- /dev/null +++ b/cms/locale/sv/LC_MESSAGES/django.po @@ -0,0 +1,1757 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Christofer Huynh , 2025 +# joelbitar , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Swedish (https://app.transifex.com/divio/teams/58664/sv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "Alla" + +msgid "Copy permissions" +msgstr "Kopieria rättigheter" + +msgid "Slug" +msgstr "URL-rubrik" + +msgid "The part of the title that is used in the URL" +msgstr "Den del av rubriken som används i webbadressen" + +msgid "Page type" +msgstr "Sidtyp" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Sidtyp" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Ändra URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Lämna tomt om den vanliga sökvägen ska användas." + +msgid "Start typing..." +msgstr "Börja skriv ..." + +msgid "menu visibility" +msgstr "menysynlighet" + +msgid "limit when this page is visible in the menu" +msgstr "begränsa när denna sida ska vara synlig i menyn" + +msgid "X Frame Options" +msgstr "X Frame alternativ" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Om denna sida kan bäddas in i andra sidor eller webbplatser." + +msgid "URL options" +msgstr "URL-alternativ" + +msgid "Menu options" +msgstr "Menyalternativ" + +msgid "Headers" +msgstr "Sidhuvuden" + +msgid "Application" +msgstr "Applikation" + +msgid "Hook application to this page." +msgstr "Koppla applikation till denna sida." + +msgid "Application configurations" +msgstr "Applikationskonfiguration" + +msgid "A page with this reverse URL id exists already." +msgstr "En sida med detta URL-id finns redan." + +msgid "Invalid application config value" +msgstr "Ogiltigt värde för applikationskonfiguration" + +msgid "An application instance using this configuration already exists." +msgstr "" +"En instans av applikationen som använder denna konfiguration finns redan." + +msgid "An application instance with this name already exists." +msgstr "En instans av applikationen med detta namn finns redan." + +msgid "You can't move the home page inside another page" +msgstr "Du kan inte flytta startsidan in i en annan sida" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Du kan inte ha två sidor med samma slug på samma sidnivå. Ändra slug för en " +"av sidorna innan du försöker flytta igen." + +msgid "Yes" +msgstr "Ja" + +msgid "No" +msgstr "Nej" + +msgid "user" +msgstr "användare" + +msgid "can_view" +msgstr "kan_visa" + +msgid "Add" +msgstr "Lägg till" + +msgid "Change" +msgstr "Redigera" + +msgid "Delete" +msgstr "Radera" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Anvädnare kan inte skapa en sida utan rättigheter att redigera sidan. " +"Redigeringsrättighet behövs." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Användare kan inte ta bort en sida utan att ha rättighet att redigera sidan." +" Redigeringsrättighet behövs." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Användare kan inte ändra rättigheter på sidor utan att ha rättighet att " +"ändra rättigheter på sidan. Möjlighet att ändra rättigheter behövs." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Användare kan inte ta bort rättigheter för en sida utan att ha rättighet att" +" ändra sidor. Redigeringsrättighet behövs." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Användare kan inte lägga till rättigheter på sidor utan att ha rättighet att" +" ändra rättigheter på sidan. Möjlighet att ändra rättigheter behövs." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Användare kan inte ta bort rättigheter för en sida utan att ha rättighet att" +" ändra sidor. Möjlighet att ändra rättigheter behövs." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Fel typ av plugin '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Språket måste vara ett av de som stödjs" + +msgid "Parent plugin language must be same as language!" +msgstr "Parent plugin språket måste vara på samma språk!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Parent plugin platshållare måste vara samma som platshållare!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Pluginpositionen måste vara större än %(position)d" + +msgid "Translations" +msgstr "Översättningar" + +msgid "Advanced Settings" +msgstr "Avancerade inställningar" + +msgid "The page is not eligible to be home." +msgstr "Sidan kan inte vara startsida." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s objekt med primär nycket %(key)r existerar inte." + +msgid "error" +msgstr "fel" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Fel: Du har inte rättighet att flytta denna sida. Var god ladda om sidan" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Fel! Du har inte rättighet att kopiera denna sida." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Fel! Sidan du klistrar in är inte översatt till något av de språk som har " +"konfigurerats för målwebbplatsen." + +msgid "You do not have permission to edit this page" +msgstr "Du har inte tillåtelse att redigera den här sidan" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(för att ändra den, avpublicera först den nu publicerade versionen av denna " +"sida)" + +msgid "Add Translation" +msgstr "Lägg till översättning" + +msgid "Add Page Copy" +msgstr "Lägg till kopia av sidan" + +msgid "New sub page" +msgstr "Ny undersida" + +msgid "New page" +msgstr "Ny sida" + +msgid "Database error" +msgstr "Databaserror" + +msgid "Template not valid" +msgstr "Ogiltig mall" + +msgid "Placeholder selection not valid" +msgstr "Ogiltigt val av placeholder" + +msgid "The template was successfully changed" +msgstr "Mall ändrad" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Placeholdern '%s' finns inte på målspråket" + +msgid "You do not have permission to copy these plugins." +msgstr "Du har inte tillåtelse att kopiera dessa plugins" + +msgid "You do not have permission to delete this page" +msgstr "Du har inte rättighet att radera denna sida" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Rubrik och plugins för språket %(language)s raderades" + +msgid "Public content" +msgstr "Publikt innehåll" + +msgid "Empty" +msgstr "Tomt" + +msgid "Create Content" +msgstr "Skapa innehåll" + +msgid "View restriction" +msgstr "Vy-restriktion" + +msgid "View restrictions" +msgstr "Vy-restriktioner" + +#, python-format +msgid "Field %s not found" +msgstr "Kunde inte hitta fältet %s" + +msgid "You do not have permission to edit this item" +msgstr "Du har inte tillåtelse att ändra denna post" + +msgid "You do not have permission to add a plugin" +msgstr "Du har inte rättighet att lägga till denna plugin" + +msgid "You do not have permission to copy this placeholder." +msgstr "Du har inte rättighet att kopiera denna placeholder" + +msgid "Plugin not found" +msgstr "Plugin ej funnet" + +msgid "You do not have permission to edit this plugin" +msgstr "Du har inte behörighet att redigera detta plugin-objekt" + +msgid "You have no permission to paste this plugin" +msgstr "Du har inte behörighet att kopiera in detta plugin-objekt. " + +msgid "You have no permission to paste this placeholder" +msgstr "Du har inte rättighet att kopiera in denna placeholder" + +msgid "You have no permission to move this plugin" +msgstr "Du har inte behörighet att flytta detta plugin-objekt. " + +msgid "You have no permission to cut this plugin" +msgstr "Du har inte behörighet att klippa ut detta plugin-objekt. " + +msgid "You do not have permission to delete this plugin" +msgstr "Du har inte behörighet att ta bort detta plugin-objekt." + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "Pluginet %(name)s \"%(obj)s\" raderades." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Kunde inte radera %(name)s" + +msgid "Are you sure?" +msgstr "Är du säker?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Du har inte rättighet att tömma denna placeholder" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Placeholder för \"%(obj)s\" rensades." + +msgid "placeholder" +msgstr "placeholder" + +msgid "Page permissions" +msgstr "Rättigheter för sida" + +msgid "User & Group permissions" +msgstr "Användar- och grupprättigheter" + +msgid "Page permissions management" +msgstr "Administrera rättigheter för sida" + +msgid "Actions" +msgstr "Åtgärder" + +msgid "Empty content" +msgstr "Tomt innehåll" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Egenskaper för %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Lägg till ny %(object_name)s" + +msgid "Add content" +msgstr "Lägg till innehåll" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Innehållet för det aktuella språket har ändrats. Klicka på \"Avbryt\" för " +"att återgå till formuläret och spara ändringarna. Klicka på \"OK\" för att " +"kasta ändringarna." + +#, python-format +msgid "Add %(language)s content" +msgstr "Lägg till innehåll på %(language)s" + +msgid "Preview" +msgstr "Förhandsgranska" + +msgid "Settings" +msgstr "Inställningar" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Ogiltigt språk %(value)s. Detta formulär kan inte behandlas. Försök att byta" +" språk." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Ingen registrerad apphook \"%r\" hittades" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Placeholder" + +msgid "Create" +msgstr "Skapa" + +msgid "Edit" +msgstr "Redigera" + +msgid "Structure" +msgstr "Struktur" + +msgid "Content" +msgstr "Innehåll" + +msgid "Sites" +msgstr "Siter" + +msgid "Admin Sites" +msgstr "Adminsiter" + +msgid "Administration" +msgstr "Administration" + +msgid "User settings" +msgstr "Användarinställningar" + +msgid "Clipboard..." +msgstr "Urklipp..." + +msgid "Clear clipboard" +msgstr "Rensa urklipp" + +msgid "Disable toolbar" +msgstr "Inaktivera verktygsfält " + +msgid "Shortcuts..." +msgstr "Genvägar..." + +msgid "Users" +msgstr "Användare" + +#, python-format +msgid "Logout %s" +msgstr "Logga ut %s" + +msgid "Logout" +msgstr "Logga ut" + +msgid "Language" +msgstr "Språk" + +msgid "Delete Translation" +msgstr "Radera översättning" + +msgid "Copy all plugins" +msgstr "Kopiera alla plugins" + +#, python-format +msgid "from %s" +msgstr "från %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Är du säker på att du vill kopiera alla plugin från %s?" + +msgid "Pages" +msgstr "Sidor" + +msgid "Page" +msgstr "Sida" + +msgid "Create Page" +msgstr "Skapa Sida" + +msgid "New Page" +msgstr "Ny sida" + +msgid "New Sub Page" +msgstr "Ny undersida" + +msgid "Duplicate this Page" +msgstr "Duplicera denna sidan" + +msgid "Page settings" +msgstr "Sidinställningar" + +msgid "Advanced settings" +msgstr "Avancerade inställningar" + +msgid "Templates" +msgstr "Mallar" + +msgid "Placeholders" +msgstr "Placeholders" + +msgid "Hide in navigation" +msgstr "Göm i navigation" + +msgid "Display in navigation" +msgstr "Visa i navigation" + +msgid "Delete page" +msgstr "Radera sida" + +msgid "Create a new page next to the current page." +msgstr "Skapa en ny sida brevid denna sida" + +msgid "Create a page below the current page." +msgstr "Skapa en ny sida under denna sida." + +msgid "Select a valid site" +msgstr "Välj en giltig webbplats" + +msgid "Select a valid page" +msgstr "Välj en giltig sida" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"Sidan %(conflict_page)s har samma url '%(url)s' som den aktuella sidan " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"Sidan %(conflict_page)s har samma url '%(url)s' som den aktuella sidan." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Valfritt. Om det anges läggs det automatiskt till i ett nytt textplugin." + +msgid "Provide a title for the new page." +msgstr "Ange en rubrik för den nya sidan." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "Lämna tom för en automatisk URL-rubrik eller skriv en egen." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "Det går inte att skapa en slug automatiskt. Ange en manuellt." + +msgid "Please provide a valid slug." +msgstr "Ange en giltig slug." + +msgid "You don't have the permissions required to add a page." +msgstr "Du har inte de rättigheter som krävs för att lägga till en sida." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "position" + +msgid "language" +msgstr "språk" + +msgid "plugin_name" +msgstr "plugin_namn" + +msgid "creation date" +msgstr "skapat datum" + +msgid "can edit" +msgstr "kan redigera" + +msgid "can add" +msgstr "kan lägga till" + +msgid "can delete" +msgstr "kan ta bort" + +msgid "can change advanced settings" +msgstr "kan ändra avancerade inställningar" + +msgid "can publish" +msgstr "kan publicera" + +msgid "can change permissions" +msgstr "kan ändra rättigheter" + +msgid "can move" +msgstr "kan flytta" + +msgid "view restricted" +msgstr "vyn är begränsad" + +msgid "can recover pages" +msgstr "kan återskapa sidor" + +msgid "group" +msgstr "grupp" + +msgid "sites" +msgstr "sajter" + +msgid "created by" +msgstr "skapad av" + +msgid "changed by" +msgstr "ändrad av" + +msgid "publication date" +msgstr "publiceringsdatum" + +msgid "publication end date" +msgstr "slutdatum för publicering" + +msgid "in navigation" +msgstr "i navigation" + +msgid "soft root" +msgstr "rot" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "bifogad meny" + +msgid "template" +msgstr "mall" + +msgid "login required" +msgstr "login krävs" + +msgid "application" +msgstr "applikation" + +msgid "application instance name" +msgstr "namn på instans av applikation" + +msgid "site" +msgstr "sajt" + +msgid "Grant on" +msgstr "Tillåtelse gäller" + +msgid "page" +msgstr "sida" + +msgid "no limit set" +msgstr "ingen gräns angiven" + +msgid "for logged in users only" +msgstr "endast för inloggade användare" + +msgid "for anonymous users only" +msgstr "endast för anonyma användare" + +msgid "Inherit from parent page" +msgstr "Ärv från förälder" + +msgid "Deny" +msgstr "Neka" + +msgid "Only this website" +msgstr "Bara denna webbsidan" + +msgid "Allow" +msgstr "Tillåt" + +msgid "title" +msgstr "rubrik" + +msgid "The default title" +msgstr "Sidans rubrik" + +msgid "Page Title" +msgstr "Sidrubrik" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "Anger vad som visas i webbläsarens topp eller i bokmärken" + +msgid "Menu Title" +msgstr "Menyrubrik" + +msgid "Overwrite what is displayed in the menu" +msgstr "Ange för att visa annan text än sidans rubrik i menyn" + +msgid "Description meta tag" +msgstr "Beskrivning metatagg" + +msgid "A description of the page used by search engines." +msgstr "En beskrivning av sidan som används av sökmotorer." + +msgid "redirect" +msgstr "omdirigera" + +msgid "Redirects to this URL." +msgstr "Omdirigerar till denna URL" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Alla ovanstående sidor kommer inte att visas i navigeringen" + +msgid "The template used to render the content." +msgstr "Mallen som används för att visa innehållet." + +msgid "page content" +msgstr "sidinnehåll" + +msgid "page contents" +msgstr "sidinnehåll" + +msgid "default" +msgstr "standard" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Ett unikt id som används med mallkommandot page_url för att länka till denna" +" sida" + +msgid "Mark this page as a page type" +msgstr "Markera denna sida som en sidtyp" + +msgid "pages" +msgstr "sidor" + +msgid "No available title" +msgstr "Ingen rubrik tillgänglig" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Sökväg" + +msgid "Current page" +msgstr "Denna sida" + +msgid "Page children (immediate)" +msgstr "Sidans undernivå" + +msgid "Page and children (immediate)" +msgstr "Sida och närmaste undernivå" + +msgid "Page descendants" +msgstr "Sidans undernivåer" + +msgid "Page and descendants" +msgstr "Sida och undernivåer" + +msgid "on page level" +msgstr "på sidnivå" + +msgid "frontend view restriction" +msgstr "frontend-vy begränsning" + +msgid "Please select user or group." +msgstr "Ange användare eller grupp." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Användare kan inte publicera en sida utan att ha rättighet att redigera " +"sidan. Redigeringsrättighet behövs." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Användare kan inte ändra avancerade inställnignar på sidor utan att ha " +"rättighet att ändra sidan. Redigeringsrättigheter behövs." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Användare kan inte ändra rättigheter på sidor utan att ha rättighet att " +"redigera sidan. Redigeringsrättigheter behövs." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Användare kan inte flytta en sida utan att ha rättighet att redigera sidan. " +"Redigeringsrättighet behövs." + +msgid "can recover any deleted page" +msgstr "kan återskapa alla sidor" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "Om ingen är vald har användaren rättigheter till alla sajter." + +msgid "Page global permission" +msgstr "Global rättighet för sidan" + +msgid "Pages global permissions" +msgstr "Globala rättigheter för sidor" + +msgid "Page permission" +msgstr "Sidrättighet" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Tillåtelse att lägga till sida kräver också tillgång till barn eller " +"efterkommande annars kan inte tillagd sida redigeras av den som skapat den." + +msgid "User (page)" +msgstr "Användare (grupp)" + +msgid "Users (page)" +msgstr "Användare (sida)" + +msgid "User group (page)" +msgstr "Användare grupp (sida)" + +msgid "User groups (page)" +msgstr "Användare grupper (sida)" + +msgid "slot" +msgstr "plats" + +msgid "width" +msgstr "bredd" + +msgid "Edit object" +msgstr "Redigera objekt" + +msgid "This is an external placeholder" +msgstr "Detta är en extern placeholder" + +msgid "plugin" +msgstr "plugin" + +msgid "plugins" +msgstr "plugins" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Språket för administrationsgränssnittet och verktygsfältet" + +msgid "user setting" +msgstr "användarinställning" + +msgid "user settings" +msgstr "användarinställningar" + +msgid "by template" +msgstr "Efter mall" + +msgid "by code" +msgstr "Efter kod" + +msgid "static placeholder name" +msgstr "statiskt placeholder-namn" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Beskrivande namn för att identifiera denna statiska placeholder. Visas inte " +"för besökare." + +msgid "placeholder code" +msgstr "Placeholder-kod" + +msgid "To render the static placeholder in templates." +msgstr "För att rendera statiska placeholders i mall." + +msgid "placeholder content" +msgstr "innehåll för placeholder" + +msgid "creation_method" +msgstr "skapandemetod" + +msgid "static placeholder" +msgstr "statiskt placeholder" + +msgid "static placeholders" +msgstr "statiska placeholders" + +msgid "A static placeholder with the same site and code already exists" +msgstr "En statisk placeholder med samam sajt och kod finns redan" + +msgid "Advanced options" +msgstr "Avancerade inställningar" + +msgid "Generic" +msgstr "Generisk" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" ändrades." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" +"Det finns inga ytterligare inställningar för detta plugin. Klicka OK för att" +" spara." + +msgid "Moved" +msgstr "Flyttad" + +msgid "Changed" +msgstr "Ändrad" + +msgid "Deleted" +msgstr "Raderad" + +msgid "Added Page Translation" +msgstr "Lade till sidöversättning" + +msgid "Changed Page Translation" +msgstr "Ändrade sidöversättning" + +msgid "Deleted Page Translation" +msgstr "Raderade sidöversättning" + +msgid "Added Plugin" +msgstr "Lade till plugin" + +msgid "Changed Plugin" +msgstr "Ändrade plugin" + +msgid "Moved Plugin" +msgstr "Flyttade plugin" + +msgid "Deleted Plugin" +msgstr "Raderade plugin" + +msgid "Cut Plugin" +msgstr "Klippte ut plugin" + +msgid "Paste Plugin" +msgstr "Klistra in plugin" + +msgid "Paste to Placeholder" +msgstr "Klistra in i placeholder" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Lade till plugins i placeholder från urklipp" + +msgid "Cleared Placeholder" +msgstr "Rensade placeholder" + +msgid "Save" +msgstr "Spara" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "Vissa fält kan inte ändras eftersom de är skrivskyddat innehåll." + +#, python-format +msgid "Log in to administration here." +msgstr "Logga in på administrationssida här." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Inloggningsadress: %(login_url)s" + +msgid "Username:" +msgstr "Användarnamn:" + +msgid "Password:" +msgstr "Lösenord:" + +msgid "Add a page" +msgstr "Lägg till en sida" + +msgid "Change a page" +msgstr "Ändra en sida" + +msgid "Home" +msgstr "Hem" + +msgid "View on site" +msgstr "Visa på sajt" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Rätta till nedanstående fel." +msgstr[1] "Rätta till nedanstående fel." + +msgid "All permissions" +msgstr "Alla rättigheter" + +msgid "Loading..." +msgstr "Laddar..." + +msgid "Save and continue editing" +msgstr "Spara och fortsätt redigera" + +#, 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 "" +"Är du säker på att du vill radera %(object_name)s \"%(escaped_object)s\"? " +"Alla följande relaterade objekt kommer att raderas:" + +msgid "Yes, I’m sure" +msgstr "Ja, jag är säker" + +msgid "No, take me back" +msgstr "Nej, ta mig tillbaka" + +msgid "Summary" +msgstr "Sammanfattning" + +msgid "User" +msgstr "Användare" + +msgid "Group" +msgstr "Grupp" + +msgid "Can edit" +msgstr "Kan redigera" + +msgid "Can add" +msgstr "Kan lägga till" + +msgid "Can delete" +msgstr "Kan ta bort" + +msgid "Can publish" +msgstr "Kan publicera" + +msgid "Can change permissions" +msgstr "Kan ändra rättigheter" + +msgid "Can move" +msgstr "Kan flytta" + +msgid "Can view" +msgstr "Kan visa" + +msgid "(global)" +msgstr "(global)" + +msgid "(current)" +msgstr "(nuvarande)" + +msgid "Page doesn't inherit any permissions." +msgstr "Sidan ärver inga rättigheter" + +msgid "Edit model" +msgstr "Redigera model" + +msgid "Save as new" +msgstr "Spara som ny" + +msgid "Save and add another" +msgstr "Spara och lägg till" + +msgid "Copy" +msgstr "Kopiera" + +msgid "Cut" +msgstr "Klipp" + +msgid "Paste" +msgstr "Klistra in" + +msgid "Set as home" +msgstr "Ange som startsida" + +msgid "is restricted" +msgstr "är begränsad" + +msgid "last change by" +msgstr "senast ändrad av" + +msgid "last change on" +msgstr "senast ändrad" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Lista över sidor" + +msgid "Search" +msgstr "Sök" + +msgid "Page Tree" +msgstr "Sidträd" + +msgid "Reset filter" +msgstr "Återställ filter" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Återställ borttagen %(name)s\n" +" " + +msgid "Main Navigation" +msgstr "Huvudnavigation" + +msgid "Options" +msgstr "Alternativ" + +msgid "Successfully moved" +msgstr "Flytt genomförd" + +msgid "Changes within the tree might require a refresh." +msgstr "Ändringar i strukturen kan behöva en omladdning." + +msgid "Error:" +msgstr "Fel:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Denna sida kan inte kopieras eftersom en applikation är kopplad till den. Se" +" sidans avancerade inställningar för att hantera apphooks." + +msgid "Are you sure you want to § this page?" +msgstr "Är du säker på att du vill § denna sidan?" + +msgid "Reload" +msgstr "Ladda om" + +msgid "New node" +msgstr "Ny nod" + +msgid "nodes" +msgstr "noder" + +msgid "View" +msgstr "Vy" + +msgid "Menu" +msgstr "Meny" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Det finns ingen %(object)s ännu.\n" +"
\n" +" Lägg till %(object)s nu.\n" +" " + +msgid "Copy options" +msgstr "Kopieringsalternativ" + +msgid "Choose copy options" +msgstr "Välj kopieringsalternativ" + +msgid "Close" +msgstr "Stäng" + +msgid "Legend" +msgstr "Teckenförklaring" + +msgid "In menu" +msgstr "I menyn" + +msgid "Not in menu" +msgstr "Ej i menyn" + +msgid "View page" +msgstr "Visa sidan" + +msgid "Softroot" +msgstr "Softroot" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Applikation: %(apphook)s" + +msgid "in menu" +msgstr "i menyn" + +msgid "not in menu" +msgstr "ej i menyn" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Inställningar för sida (SHIFT-klicka för avancerade inställningar)" + +msgid "Permissions" +msgstr "Rättigheter" + +msgid "inherited" +msgstr "ärvd" + +msgid "This page has no preview!" +msgstr "Den här sidan har ingen förhandsvisning!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" +"Det är möjligt att den kopplade apphooken inte tillhandahåller innehåll för " +"sin rot." + +msgid "It is being redirected to:" +msgstr "Denna vidarebefodras till:" + +msgid "Clipboard" +msgstr "Urklipp" + +msgid "Add plugin" +msgstr "Lägg till plugin" + +msgid "Copy all" +msgstr "Kopiera alla" + +msgid "Copy from" +msgstr "Kopiera från" + +msgid "Empty all" +msgstr "Töm alla" + +msgid "Filter plugins..." +msgstr "Filtrera plugins..." + +msgid "Expand all" +msgstr "Expandera all" + +msgid "Collapse all" +msgstr "Kollapsa alla" + +msgid "You cannot add plugins to this plugin." +msgstr "Du kan inte lägga till plugins i detta plugin" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"Detta plugn kan inte flyttas eller redigeras utanför sitt förälder-plugin" + +msgid "Clipboard is empty." +msgstr "Urklippen är tom." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" +"Detta plugin tillåter inte andra plugins av denna typ som underplugins" + +msgid "This plugin cannot have nested plugins." +msgstr "Detta plugin kan inte ha underplugins." + +msgid "Highlight" +msgstr "Markera" + +msgid "Available plugins" +msgstr "Tillgängliga plugins" + +msgid "Toggle structure" +msgstr "Växla struktur" + +msgid "Login" +msgstr "Inloggning" + +msgid "Add plugin to" +msgstr "Lägg till plugin till" + +msgid "More" +msgstr "Mer" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Utvecklingsversion som använder django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Avbryt" + +msgid "The following error occurred:" +msgstr "Följande fel inträffade:" + +msgid "Action successful." +msgstr "Åtgärden lyckades." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Är du säker på att du vill ta bort detta plugin?" + +msgid "Are you sure you want to publish this page?" +msgstr "Är du säker på att du vill publicera denna sidan?" + +msgid "Plugin will be added here" +msgstr "Plugins kommer att läggas till här" + +msgid "You have unsaved changes." +msgstr "Du har icke sparade ändringar" + +msgid "Loading" +msgstr "Laddar" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Är du säker på att du vill överge dessa ändringar?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "Formuläret kunde inte laddas. Kontrollera att servern körs korrekt." + +msgid "Most used" +msgstr "Mest använda" + +msgid "Shortcuts" +msgstr "Genvägar" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Sidan ändrades under tiden, laddar om..." + +msgid "CMS-wide Shortcuts" +msgstr "CMS-övergripande genvägar" + +msgid "Bring up this help dialog" +msgstr "Visa denna hjälp-dialog" + +msgid "Close/cancel" +msgstr "Stäng/avbryt" + +msgid "Toggle structure mode" +msgstr "Visa/dölj strukturläge" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" +"Växla strukturläge och markera det plugin som muspekaren befinner sig över" + +msgid "Open \"Create\" dialog" +msgstr "Visa \"Skapa\"-dialog" + +msgid "Focus on Toolbar" +msgstr "Fokusera på Verktygsfält" + +msgid "Focus on placeholders" +msgstr "Fokusera på placeholders" + +msgid "Move to next/previous element" +msgstr "Flytta till nästa/föregående element" + +msgid "Focus on plugins of placeholder" +msgstr "Fokusera på plugins i placeholder" + +msgid "Edit plugin" +msgstr "Redigera plugin" + +msgid "Open actions menu" +msgstr "Öppna åtgärdsmeny" + +msgid "Expand/collapse" +msgstr "Expandera/kollapsa" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Inloggning misslyckades. Var vänlig kontrollera uppgifterna" +" och försök igen." + +msgid "Double-click to edit" +msgstr "Dubbelklicka för att redigera" + +msgid "Tap to edit" +msgstr "Klicka för att redigera" + +msgid "Click to go back" +msgstr "Clika för att gå tillbaka" + +msgid "Click to go forward" +msgstr "Klicka för att gå frammåt" + +msgid "Minimize" +msgstr "Minimera" + +msgid "Maximize" +msgstr "Maximera" + +msgid "Placeholder not editable" +msgstr "Placeholdern kan inte redigeras" + +msgid "Drop a plugin here" +msgstr "Släpp ett plugin-objekt här" + +msgid "Welcome to your new django CMS installation!" +msgstr "Välkommen till din nya django CMS-installation!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Version %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Låt oss bygga något fantastiskt tillsammans!" + +msgid "Please log in" +msgstr "Logga in" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Lägg till din första sida\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Hjälp till med finansieringen

\n" +"

\n" +" Din finansiering gynnar produkten direkt, främst genom\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" Ett snabbt sätt för dig själv eller din organisation att donera är via\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Gå med oss

\n" +"

\n" +" django CMS Association är en ideell organisation som finansierar och styr utvecklingen av\n" +" django CMS.\n" +"

\n" +"

\n" +" Du kan gå med både som privatperson och som\n" +" organisation.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Bidra

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Installationsanteckningar" + +msgid "Support" +msgstr "Support" + +msgid "Documentation" +msgstr "Dokumentation" + +msgid "User guide" +msgstr "Användarguide" + +msgid "Give back" +msgstr "Ge tillbaka" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Om du inte ser django CMS-logotypen högst upp, se till\n" +" att du länkat mappen static/cms till dina\n" +" statiska filer.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Du ser detta meddelande eftersom du har\n" +" DEBUG = True i din django-inställningsfil och\n" +" ännu inte har lagt till några sidor.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Välkommen till django CMS" + +msgid "Add Another" +msgstr "Lägg till en till" + +msgid "Back" +msgstr "Tillbaka" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "Välj ett alternativ från nedan för att gå vidare till nästa steg" + +msgid "Next" +msgstr "Nästa" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Okänd" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Sidan hittades inte på %(domain)s " + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"En mall-tagg kunde inte hitta sidan med uppslags-argumenten `%(page_lookup)s\n" +"`. Webbadressen för begäran var: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Två kolumner" + +msgid "Three columns" +msgstr "Tre kolumner" + +msgid "username" +msgstr "användarnamn" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "Obligatorisk. Max 300 tecken. Bokstäver, nummer och @/./+/-/_" + +msgid "Enter a valid username." +msgstr "Ange ett giltigt användarnamn" + +msgid "email address" +msgstr "mailto" + +msgid "staff status" +msgstr "Personal status" + +msgid "Designates whether the user can log into this admin site." +msgstr "Anger om en användare kan logga in på administrationsgränsnittet." + +msgid "active" +msgstr "aktiv" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Anger om en användare är aktiv. Avaktivera detta i ställer för att ta bort " +"konton." + +msgid "users" +msgstr "användare" + +msgid "Title Extension" +msgstr "Titeltillägg" + +msgid "Page Extension" +msgstr "Sidtillägg" + +msgid "object ID" +msgstr "objekt ID" + +msgid "Example1 App" +msgstr "Exempel1 App" + +msgid "MultilingualExample1 App" +msgstr "FlerspråkigExempel1 App" + +msgid "Example1" +msgstr "Exmpel1" + +msgid "Examples" +msgstr "Exempel" + +msgid "Extra Context" +msgstr "Extra Innehåll" + +msgid "Articles" +msgstr "Artiklar" + +msgid "Sample App" +msgstr "Exempel-app" + +msgid "Sample App with config" +msgstr "Exempelapp med konfiguration" + +msgid "Sample App with excluded permissions" +msgstr "Exempelapp med uteslutna rättigheter" + +msgid "Sample App 2" +msgstr "Exempel App 2" + +msgid "Sample App 3" +msgstr "Exempel App 2" + +msgid "Sample App Without Landing Page" +msgstr "Exempelapp utan landningssida" + +msgid "Namespaced App" +msgstr "App med namnrymd" + +msgid "Parent app" +msgstr "Föräldraapp" + +msgid "Child app" +msgstr "Barnapp" + +msgid "Variable urls-menus App" +msgstr "App med variabla urls-menyer" + +msgid "sample root page" +msgstr "exempel-sida för root" + +msgid "sample settings page" +msgstr "exempel-sida för inställningar" + +msgid "sample account page" +msgstr "exempel-sida för konto" + +msgid "sample my profile page" +msgstr "exempel-sida för min profil" + +msgid "Static Menu" +msgstr "Statisk Meny" + +msgid "Static Menu2" +msgstr "Statisk Meny2" + +msgid "Static Menu3" +msgstr "Statisk meny3" + +msgid "Static Menu4" +msgstr "Statisk Meny" + +msgid "Category" +msgstr "Kategori" + +msgid "Categories" +msgstr "Kategorier" + +msgid "Add Category" +msgstr "Lägg till kategori" + +msgid "^account/$" +msgstr "^konto/$" + +msgid "Change Category" +msgstr "Ändra Kategori" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Tack för att du har spenderat lite kvalitetstid med websajten idag." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Ärv mall" + +msgid "UserSettings" +msgstr "Användarinställningar" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Lägg till plugins till placeholder \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Lägg till plugins till %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Enkel placeholder" + +msgid "CMS - your user account was created." +msgstr "CMS - ditt användarkonto har skapats." + +msgid "CMS - your user account was changed." +msgstr "CMS - ditt användarkonto har ändrats." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Denna platshållare har redan det maximala antalet plugins (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Denna placeholder har redan det maximalt tillåtna antalet (%(limit)s) " +"%(plugin_name)s plugin-objekt." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" +"Det gick inte att hitta den angivna CMS_REQUEST_IP_RESOLVER-modulen: " +"\"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Det gick inte att hitta den angivna CMS_REQUEST_IP_RESOLVER-funktionen: " +"\"{0}\" i modulen \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Skapa en ny %s instans." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "En guide har redan registrerats för modellen: %s" diff --git a/cms/locale/sv/LC_MESSAGES/djangojs.po b/cms/locale/sv/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..01252d82 --- /dev/null +++ b/cms/locale/sv/LC_MESSAGES/djangojs.po @@ -0,0 +1,25 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Mattias Lindvall , 2013 +# ooskar , 2014 +# ooskar , 2014 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: ooskar , 2014\n" +"Language-Team: Swedish (http://app.transifex.com/divio/django-cms/language/sv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Är du säker på att du vill ändra flikarna utan att spara sidan först?" diff --git a/cms/locale/ta/LC_MESSAGES/django.po b/cms/locale/ta/LC_MESSAGES/django.po new file mode 100644 index 00000000..2b8512a1 --- /dev/null +++ b/cms/locale/ta/LC_MESSAGES/django.po @@ -0,0 +1,1632 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2022 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2022\n" +"Language-Team: Tamil (https://app.transifex.com/divio/teams/58664/ta/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "" + +msgid "Copy permissions" +msgstr "" + +msgid "Slug" +msgstr "புடைப்பு" + +msgid "The part of the title that is used in the URL" +msgstr "" + +msgid "Page type" +msgstr "" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "" + +msgid "Keep this field empty if standard path should be used." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "பயன்பாடு" + +msgid "Hook application to this page." +msgstr "" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "காலி" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "கட்டமைப்பு" + +msgid "Content" +msgstr "உள்ளடக்கம்" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "பயனர்கள்" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "மொழி" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "பக்கங்கள்" + +msgid "Page" +msgstr "பக்கம்" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "புதிய பக்கம்" + +msgid "New Sub Page" +msgstr "புதிய துணைபக்கம்" + +msgid "Duplicate this Page" +msgstr "இந்த பக்கத்தை நகலெடு" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "படிம அச்சு" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "பக்கத்தை நீக்கு" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "மொழி" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "திருத்தம் செய்யலாம்" + +msgid "can add" +msgstr "கூட்டலாம்" + +msgid "can delete" +msgstr "அழிக்கலாம்" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "நகர்த்த முடியும்" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "பக்கங்களை மீட்டெடுக்கலாம்" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "வார்ப்புரு" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "பக்கம்" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "தலைப்பு" + +msgid "The default title" +msgstr "" + +msgid "Page Title" +msgstr "" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +msgid "Menu Title" +msgstr "" + +msgid "Overwrite what is displayed in the menu" +msgstr "" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "பக்கங்கள்" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "அழித்த எந்தவொரு பக்கத்தையும் மீட்டெடுக்க முடியும்" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "அகலம்" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "மின்னஞ்சல் முகவரி" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/ta/LC_MESSAGES/djangojs.po b/cms/locale/ta/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..069f470d --- /dev/null +++ b/cms/locale/ta/LC_MESSAGES/djangojs.po @@ -0,0 +1,24 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# L.Desigan , 2014 +# L.Desigan , 2014 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: L.Desigan , 2014\n" +"Language-Team: Tamil (http://app.transifex.com/divio/django-cms/language/ta/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "பக்கத்தை சேமிக்காமல் தத்தல்களை மாற்ற விரும்புகிறீர்களா?" diff --git a/cms/locale/th/LC_MESSAGES/django.po b/cms/locale/th/LC_MESSAGES/django.po new file mode 100644 index 00000000..9f7e100a --- /dev/null +++ b/cms/locale/th/LC_MESSAGES/django.po @@ -0,0 +1,2263 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Thai (https://app.transifex.com/divio/teams/58664/th/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: th\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/th/LC_MESSAGES/djangojs.po b/cms/locale/th/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..2159874f --- /dev/null +++ b/cms/locale/th/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Thai (http://app.transifex.com/divio/django-cms/language/th/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: th\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/th_TH/LC_MESSAGES/django.po b/cms/locale/th_TH/LC_MESSAGES/django.po new file mode 100644 index 00000000..53d7f458 --- /dev/null +++ b/cms/locale/th_TH/LC_MESSAGES/django.po @@ -0,0 +1,2263 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Thai (Thailand) (https://app.transifex.com/divio/teams/58664/th_TH/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: th_TH\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/th_TH/LC_MESSAGES/djangojs.po b/cms/locale/th_TH/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..40b0f95a --- /dev/null +++ b/cms/locale/th_TH/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Thai (Thailand) (http://app.transifex.com/divio/django-cms/language/th_TH/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: th_TH\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/tlh/LC_MESSAGES/django.po b/cms/locale/tlh/LC_MESSAGES/django.po new file mode 100644 index 00000000..a58646c4 --- /dev/null +++ b/cms/locale/tlh/LC_MESSAGES/django.po @@ -0,0 +1,2264 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Klingon (https://app.transifex.com/divio/teams/58664/tlh/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tlh\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/tlh/LC_MESSAGES/djangojs.po b/cms/locale/tlh/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..a6200d4e --- /dev/null +++ b/cms/locale/tlh/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Klingon (http://app.transifex.com/divio/django-cms/language/tlh/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tlh\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/tr/LC_MESSAGES/django.po b/cms/locale/tr/LC_MESSAGES/django.po new file mode 100644 index 00000000..58d61a9a --- /dev/null +++ b/cms/locale/tr/LC_MESSAGES/django.po @@ -0,0 +1,1758 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Cihad GÜNDOĞDU , 2025 +# Hamza SARI , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Turkish (https://app.transifex.com/divio/teams/58664/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgid "All" +msgstr "Hepsi" + +msgid "Copy permissions" +msgstr "Kopyalama yetkileri" + +msgid "Slug" +msgstr "Rumuz(slug)" + +msgid "The part of the title that is used in the URL" +msgstr "Başlığın URL'de kullanılan kısmı" + +msgid "Page type" +msgstr "Sayfa tipi" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Sayfa Tipleri" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "URL'nin üzerine yaz" + +msgid "Keep this field empty if standard path should be used." +msgstr "Standart yolu kullanmak için bu alanı boş bırakın." + +msgid "Start typing..." +msgstr "Yazmaya başla...." + +msgid "menu visibility" +msgstr "menü görünürlüğü" + +msgid "limit when this page is visible in the menu" +msgstr "Bu sayfanın menüde görünür olduğundaki sınırı" + +msgid "X Frame Options" +msgstr "X Frame Ayarları" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" +"Bu sayfanın diğer sayfalara veya web sitelerine gömülüp gömülemeyeceği." + +msgid "URL options" +msgstr "URL seçenekleri" + +msgid "Menu options" +msgstr "Menü seçenekleri" + +msgid "Headers" +msgstr "Başlıklar" + +msgid "Application" +msgstr "Uygulama" + +msgid "Hook application to this page." +msgstr "Uygulamayı bu sayfaya bağla." + +msgid "Application configurations" +msgstr "Uygulama ayarları" + +msgid "A page with this reverse URL id exists already." +msgstr "Bu ters URL id'si ile bir sayfa zaten var." + +msgid "Invalid application config value" +msgstr "Geçersiz uygulama konfigürasyon değeri" + +msgid "An application instance using this configuration already exists." +msgstr "Bu konfigurasyonu kullanan bir uygulama oluşumu zaten var." + +msgid "An application instance with this name already exists." +msgstr "Bu isimde bir uygulama oluşumu zaten var." + +msgid "You can't move the home page inside another page" +msgstr "Ana sayfayı başka bir sayfanın içine taşıyamazsınız." + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Aynı sayfa düzeyinde aynı rumuza sahip iki sayfanız olamaz. Lütfen tekrar " +"taşımayı denemeden önce sayfalardan birinin rumuzunu değiştirin." + +msgid "Yes" +msgstr "Evet" + +msgid "No" +msgstr "Hayır" + +msgid "user" +msgstr "kullanıcı" + +msgid "can_view" +msgstr "görebilir" + +msgid "Add" +msgstr "Ekle" + +msgid "Change" +msgstr "Düzenle" + +msgid "Delete" +msgstr "Sil" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Oluşturulmuş sayfayı düzenleme yetkisi olmayan kullanıcılar sayfa " +"oluşturamazlar. Düzenleme yetkisi gereklidir." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Sayfa düzenleme yetkisi olmayan kullanıcılar sayfa silemezler. Düzenleme " +"yetkisi gereklidir." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Sayfa düzenleme yetkisi olmayan kullanıcılar sayfa yetkilendirmesi " +"yapamazlar. Düzenleme yetkisi gereklidir." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Sayfa düzenleme yetkisi olmayan kullanıcılar sayfa yetkilendirmelerini " +"silemezler. Düzenleme yetkisi gereklidir." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Oluşturulmuş sayfa yetkisini düzenleme yetkisi olmayan kullanıcılar sayfa " +"yetkisi oluşturamazlar. Düzenleme yetkisi gereklidir." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Yetki düzenleme yetkisi olmayan kullanıcılar sayfa yetkisi silemezler. " +"Düzenleme yetkisi gereklidir." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Geçersiz eklenti tipi '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Dil, desteklenen bir dile ayarlanmalı!" + +msgid "Parent plugin language must be same as language!" +msgstr "Ana eklentinin dili aynı olmalıdır." + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Üst eklenti yer tutucusu, yer tutucu ile ile benzer olmalıdır." + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Eklenti konumu %(position)d değerinden büyük olmalıdır" + +msgid "Translations" +msgstr "Çeviriler" + +msgid "Advanced Settings" +msgstr "Gelişmiş Ayarlar" + +msgid "The page is not eligible to be home." +msgstr "Bu sayfa ana sayfa olmak için uygun değil." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(key)r birincil anahtarlı %(name)s nesnesi mevcut değil." + +msgid "error" +msgstr "hata" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Hata! Bu sayfayı taşımak için yetkiniz yok. Lütfen sayfayı yeniden yükleyin" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Hata! Bu sayfayı kopyalama yetkiniz yok." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Hata! Yapıştırdığınız sayfa, hedef sitede yapılandırılan dillerin hiçbirinde" +" çevrilmemiş." + +msgid "You do not have permission to edit this page" +msgstr "Bu sayfayı değiştirmek için yetkiniz yok" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(değiştirmek için, önce bu sayfanın şu anda yayınlanmış sürümünü yayından " +"kaldırın)" + +msgid "Add Translation" +msgstr "Çeviri Ekle" + +msgid "Add Page Copy" +msgstr "Sayfa Kopyası Ekle" + +msgid "New sub page" +msgstr "Yeni alt sayfa" + +msgid "New page" +msgstr "Yeni sayfa" + +msgid "Database error" +msgstr "Veritabanı hatası" + +msgid "Template not valid" +msgstr "Şablon geçerli değil" + +msgid "Placeholder selection not valid" +msgstr "Yer tutucu seçimi geçerli değil" + +msgid "The template was successfully changed" +msgstr "Şablon başarıyla değiştirildi." + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "'%s' yer tutucusu hedef dilde mevcut değil" + +msgid "You do not have permission to copy these plugins." +msgstr "Bu eklentileri kopyalamaya yetkiniz yok" + +msgid "You do not have permission to delete this page" +msgstr "Bu sayfayı silme yetkiniz yok" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "%(language)s dilindeki başlık ve eklenti silindi" + +msgid "Public content" +msgstr "Genel içerik" + +msgid "Empty" +msgstr "Boş" + +msgid "Create Content" +msgstr "İçerik Oluştur" + +msgid "View restriction" +msgstr "Kısıta bak" + +msgid "View restrictions" +msgstr "Kısıtlara bak" + +#, python-format +msgid "Field %s not found" +msgstr "Alan %s bulunamadı" + +msgid "You do not have permission to edit this item" +msgstr "Bu elemanı düzenlemek için yetkiniz yok" + +msgid "You do not have permission to add a plugin" +msgstr "Eklenti eklemeye yetkiniz yok." + +msgid "You do not have permission to copy this placeholder." +msgstr "Bu yer tutucuyu kopyalama yetkiniz yok." + +msgid "Plugin not found" +msgstr "Eklenti bulunamadı" + +msgid "You do not have permission to edit this plugin" +msgstr "Bu eklentiyi düzenlemek için yetkiniz yok" + +msgid "You have no permission to paste this plugin" +msgstr "Bu eklentiyi yapıştırma yetkiniz yok" + +msgid "You have no permission to paste this placeholder" +msgstr "Bu yer tutucuyu yapıştırma yetkiniz yok" + +msgid "You have no permission to move this plugin" +msgstr "Bu eklentiyi taşımak için yetkiniz yok" + +msgid "You have no permission to cut this plugin" +msgstr "Bu eklentiyi kesme yetkiniz yok." + +msgid "You do not have permission to delete this plugin" +msgstr "Bu eklentiyi silmek için yetkiniz yok" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "\"%(obj)s\" isimli %(name)s eklentisi başarıyla silindi." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "%(name)s silinemez" + +msgid "Are you sure?" +msgstr "Emin misiniz?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Bu yer tutucuyu silmeye yetkiniz yok" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "\"%(obj)s\" yer tutucusu başarıyla temizlendi" + +msgid "placeholder" +msgstr "yer tutucu" + +msgid "Page permissions" +msgstr "Sayfa yetkileri" + +msgid "User & Group permissions" +msgstr "Kullanıcı & Grup yetkileri" + +msgid "Page permissions management" +msgstr "Sayfa yetki yönetimi" + +msgid "Actions" +msgstr "Eylemler" + +msgid "Empty content" +msgstr "Boş içerik" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "%(object_name)s Özellikleri" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Yeni %(object_name)s ekle" + +msgid "Add content" +msgstr "İçerik ekle" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Geçerli dilin içeriği değiştirildi. Forma dönüp değişiklikleri kaydetmek " +"için \"İptal\"e tıklayın. Değişiklikleri silmek için \"Tamam\"a tıklayın." + +#, python-format +msgid "Add %(language)s content" +msgstr "%(language)s içeriği ekle" + +msgid "Preview" +msgstr "Önizleme" + +msgid "Settings" +msgstr "Ayarlar" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Geçersiz dil %(value)s. Bu form işlenemiyor. Dilleri değiştirmeyi deneyin." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Kayıtlı apphook(uygulama kancası) \"%r\" bulunamadı" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "yer tutucu" + +msgid "Create" +msgstr "Oluştur" + +msgid "Edit" +msgstr "Düzenle" + +msgid "Structure" +msgstr "Yapı" + +msgid "Content" +msgstr "İçerik" + +msgid "Sites" +msgstr "Alanlar" + +msgid "Admin Sites" +msgstr "Yönetici Alanları" + +msgid "Administration" +msgstr "Yönetim" + +msgid "User settings" +msgstr "Kullanıcı ayarları" + +msgid "Clipboard..." +msgstr "Pano..." + +msgid "Clear clipboard" +msgstr "Panoyu temizle" + +msgid "Disable toolbar" +msgstr "Araç çubuğunu etkisiz hale getir" + +msgid "Shortcuts..." +msgstr "Kısayollar..." + +msgid "Users" +msgstr "Kullanıcılar" + +#, python-format +msgid "Logout %s" +msgstr "Çıkış %s" + +msgid "Logout" +msgstr "Çıkış" + +msgid "Language" +msgstr "Dil" + +msgid "Delete Translation" +msgstr "Çeviri Sil" + +msgid "Copy all plugins" +msgstr "Tüm eklentileri kopyala" + +#, python-format +msgid "from %s" +msgstr "%s lokasyonundan" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" +"Tüm eklentileri %s lokasyonundan kopyalamak istediğinize emin misiniz?" + +msgid "Pages" +msgstr "Sayfalar" + +msgid "Page" +msgstr "Sayfa" + +msgid "Create Page" +msgstr "Sayfa Oluştur" + +msgid "New Page" +msgstr "Yeni Sayfa" + +msgid "New Sub Page" +msgstr "Yeni Alt Sayfa" + +msgid "Duplicate this Page" +msgstr "Bu sayfayı çoğalt" + +msgid "Page settings" +msgstr "Sayfa ayarları" + +msgid "Advanced settings" +msgstr "Gelişmiş ayarlar" + +msgid "Templates" +msgstr "Şablonlar" + +msgid "Placeholders" +msgstr "Yer tutucular" + +msgid "Hide in navigation" +msgstr "Menüde görünmesin" + +msgid "Display in navigation" +msgstr "Menüde görünsün" + +msgid "Delete page" +msgstr "Sayfayı Sil" + +msgid "Create a new page next to the current page." +msgstr "Seçili sayfanın yanına yeni sayfa yarat" + +msgid "Create a page below the current page." +msgstr "Seçili sayfanın altında yeni bir sayfa yarat" + +msgid "Select a valid site" +msgstr "Geçerli bir site seç" + +msgid "Select a valid page" +msgstr "Geçerli bir sayfa seç" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"%(conflict_page)s sayfası, geçerli sayfa \"%(instance)s\" ile aynı '%(url)s'" +" adresine sahip." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"%(conflict_page)s sayfası, geçerli sayfa ile aynı '%(url)s' adresine sahip." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"İsteğe bağlı. Sağlanırsa, yeni bir metin eklentisi içine otomatik olarak " +"eklenecektir." + +msgid "Provide a title for the new page." +msgstr "Yeni sayfa için bir başlık gir" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" +"Otomatik rumuz için boş bırakın veya gerekiyorsa varolanın üstüne yazın." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" +"Rumuz otomatik olarak oluşturulamıyor. Lütfen manuel olarak bir tane " +"sağlayın." + +msgid "Please provide a valid slug." +msgstr "Lütfen geçerli bir rumuz sağlayın." + +msgid "You don't have the permissions required to add a page." +msgstr "Sayfa eklemek için gereken yetkiye sahip değilsiniz." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "konum" + +msgid "language" +msgstr "dil" + +msgid "plugin_name" +msgstr "eklenti_adı" + +msgid "creation date" +msgstr "yaratma tarihi" + +msgid "can edit" +msgstr "düzenleyebilir" + +msgid "can add" +msgstr "ekleyebilir" + +msgid "can delete" +msgstr "silebilir" + +msgid "can change advanced settings" +msgstr "gelişmiş seçenekleri değiştirebilir" + +msgid "can publish" +msgstr "yayınlayabilir" + +msgid "can change permissions" +msgstr "yetkileri değiştirebilir" + +msgid "can move" +msgstr "taşıyabilir" + +msgid "view restricted" +msgstr "kısıtlanmışlara bak" + +msgid "can recover pages" +msgstr "sayfaları kurtarabilir" + +msgid "group" +msgstr "grup" + +msgid "sites" +msgstr "siteler" + +msgid "created by" +msgstr "oluşturan" + +msgid "changed by" +msgstr "değiştiren" + +msgid "publication date" +msgstr "yayınlanma tarihi" + +msgid "publication end date" +msgstr "yayınlama bitiş tarihi" + +msgid "in navigation" +msgstr "navigasyon" + +msgid "soft root" +msgstr "yumuşak kök" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "eklenmiş menü" + +msgid "template" +msgstr "şablon" + +msgid "login required" +msgstr "giriş yapılmış olması gerekiyor" + +msgid "application" +msgstr "uygulama" + +msgid "application instance name" +msgstr "uygulama oluşumu ismi" + +msgid "site" +msgstr "site" + +msgid "Grant on" +msgstr "İzin ver" + +msgid "page" +msgstr "sayfa" + +msgid "no limit set" +msgstr "sınır belirlenmedi" + +msgid "for logged in users only" +msgstr "sadece giriş yapmış kullanıcılar için" + +msgid "for anonymous users only" +msgstr "sadece anonim kullanıcılar için" + +msgid "Inherit from parent page" +msgstr "Üst sayfadan al" + +msgid "Deny" +msgstr "Reddet" + +msgid "Only this website" +msgstr "Sadece bu web sitesi" + +msgid "Allow" +msgstr "İzin ver" + +msgid "title" +msgstr "başlık" + +msgid "The default title" +msgstr "Öntanımlı başlık" + +msgid "Page Title" +msgstr "Sayfa Başlığı" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "Tarayıcınızın üstünde veya yerimlerinde yazanın üzerine yaz" + +msgid "Menu Title" +msgstr "Menü Başlığı" + +msgid "Overwrite what is displayed in the menu" +msgstr "Menüde gösterilenin üstüne yaz" + +msgid "Description meta tag" +msgstr "Açıklama meta etiketi" + +msgid "A description of the page used by search engines." +msgstr "" +"Virgül ile ayrılmış anahtar kelimeler, bazen arama motorları tarafından " +"kullanılır." + +msgid "redirect" +msgstr "yönlendirme" + +msgid "Redirects to this URL." +msgstr "Bu URL'e yönlendir." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Navigasyonda tüm alt sayfalar görüntülenmeyecektir" + +msgid "The template used to render the content." +msgstr "İçeriği göstermek için kullanılan şablon" + +msgid "page content" +msgstr "sayfa içeriği" + +msgid "page contents" +msgstr "sayfa içerikleri" + +msgid "default" +msgstr "öntanımlı" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"page_url şablon etiketi ile bu sayfaya bağlantı vermek için kullanılan " +"benzersiz bir tanımlayıcı" + +msgid "Mark this page as a page type" +msgstr "Bu sayfayı bir sayfa tipi olarak işaretle" + +msgid "pages" +msgstr "sayfalar" + +msgid "No available title" +msgstr "Uygun başlık yok" + +msgid "slug" +msgstr "rumuz " + +msgid "Path" +msgstr "Yol" + +msgid "Current page" +msgstr "Geçerli sayfa" + +msgid "Page children (immediate)" +msgstr "Alt sayfa (hemen)" + +msgid "Page and children (immediate)" +msgstr "Sayfa ve Alt sayfa (hemen)" + +msgid "Page descendants" +msgstr "Alt sayfalar" + +msgid "Page and descendants" +msgstr "Sayfa ve alt sayfalar" + +msgid "on page level" +msgstr "sayfa seviyesinde" + +msgid "frontend view restriction" +msgstr "Önyüz görünümü kısıtlamaları" + +msgid "Please select user or group." +msgstr "Lütfen kişi veya grup seçiniz." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Kullanıcılar, sayfayı değiştirme yetkisi olmadan bir sayfa yayınlayamaz. " +"Düzenleme yetkisi gereklidir." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Kullanıcılar, sayfayı değiştirme yetkisi olmadan sayfanın gelişmiş " +"ayarlarını değiştiremez. Düzenleme yetkisi gereklidir." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Kullanıcılar, sayfayı değiştirme yetkisi olmadan sayfa yetkilerini " +"değiştiremez. Düzenleme yetkisi gereklidir." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Kullanıcılar, sayfayı değiştirme yetkisi olmadan bir sayfayı taşıyamaz. " +"Düzenleme yetkisi gereklidir." + +msgid "can recover any deleted page" +msgstr "herhangi bir silinmiş sayfayı kurtarabilir" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "Eğer seçilmezse, kullanıcı tüm sitelerde yetkiye sahip olur." + +msgid "Page global permission" +msgstr "Evrensel sayfa izinleri" + +msgid "Pages global permissions" +msgstr "Sayfa genel izinleri" + +msgid "Page permission" +msgstr "Sayfa yetkileri" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Sayfa ekleme yetkisi aynı zamanda alt başlıkların yetkilerine de ihtiyaç " +"duyar, yoksa sayfa ekleyen kişi içeriğini değiştiremez." + +msgid "User (page)" +msgstr "Kullanıcı (sayfa)" + +msgid "Users (page)" +msgstr "Kullanıcılar (sayfa)" + +msgid "User group (page)" +msgstr "Kullanıcı grubu (sayfa)" + +msgid "User groups (page)" +msgstr "Kullanıcı grupları (sayfa)" + +msgid "slot" +msgstr "yuva" + +msgid "width" +msgstr "genişlik" + +msgid "Edit object" +msgstr "Nesneyi düzenle" + +msgid "This is an external placeholder" +msgstr "Bu harici bir yer tutucudur" + +msgid "plugin" +msgstr "eklenti" + +msgid "plugins" +msgstr "eklentiler" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Yönetim arayüzü ve araç çubuğu dili" + +msgid "user setting" +msgstr "kullanıcı ayarları" + +msgid "user settings" +msgstr "kullanıcı ayarları" + +msgid "by template" +msgstr "şablon ile" + +msgid "by code" +msgstr "kod ile" + +msgid "static placeholder name" +msgstr "statik yer tutucu adı" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Bu statik yer tutucuyu tanımlamak için açıklayıcı ad. Kullanıcılara " +"gösterilmez." + +msgid "placeholder code" +msgstr "yer tutucu kodu" + +msgid "To render the static placeholder in templates." +msgstr "Şablonlar içindeki sabit yer tutucuyu resmetmek(render etmek) için." + +msgid "placeholder content" +msgstr "yer tutucu içeriği" + +msgid "creation_method" +msgstr "olusturma_metodu" + +msgid "static placeholder" +msgstr "statik yer tutucu" + +msgid "static placeholders" +msgstr "statik yer tutucular" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Aynı site ve koda sahip bir statik yer tutucu zaten mevcut" + +msgid "Advanced options" +msgstr "Gelişmiş seçenekler" + +msgid "Generic" +msgstr "Jenerik" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" başarıyla değiştirildi." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "Bu eklenti için başka ayar yok. Lütfen kaydete basın" + +msgid "Moved" +msgstr "Taşındı" + +msgid "Changed" +msgstr "Değiştirildi" + +msgid "Deleted" +msgstr "Silindi" + +msgid "Added Page Translation" +msgstr "Sayfa Çevirisi Eklendi" + +msgid "Changed Page Translation" +msgstr "Sayfa Çevirisi Değiştirildi" + +msgid "Deleted Page Translation" +msgstr "Sayfa Çevirisi Silindi" + +msgid "Added Plugin" +msgstr "Eklenti Eklendi" + +msgid "Changed Plugin" +msgstr "Eklenti Değiştirildi" + +msgid "Moved Plugin" +msgstr "Eklenti Taşındı" + +msgid "Deleted Plugin" +msgstr "Eklenti Silindi" + +msgid "Cut Plugin" +msgstr "Eklenti Kesildi" + +msgid "Paste Plugin" +msgstr "Eklenti Yapıştır" + +msgid "Paste to Placeholder" +msgstr "Yer Tutucuya Yapıştır" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Panodan yer tutucuya eklentiler eklendi" + +msgid "Cleared Placeholder" +msgstr "Yer Tutucu Temizlendi" + +msgid "Save" +msgstr "Kaydet" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "Bazı alanlar salt okunur içerik oldukları için değiştirilemez." + +#, python-format +msgid "Log in to administration here." +msgstr "Yönetim için buraya giriş yapınız." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Giriş bağlantısı: %(login_url)s" + +msgid "Username:" +msgstr "Kullanıcı adı:" + +msgid "Password:" +msgstr "Parola:" + +msgid "Add a page" +msgstr "Sayfa ekle" + +msgid "Change a page" +msgstr "Bir sayfa düzenle" + +msgid "Home" +msgstr "Anasayfa" + +msgid "View on site" +msgstr "Sitede gör" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Aşağıdaki hataları düzeltin." +msgstr[1] "Aşağıdaki hataları düzeltin." + +msgid "All permissions" +msgstr "Tüm yetkiler" + +msgid "Loading..." +msgstr "Yüklüyor..." + +msgid "Save and continue editing" +msgstr "Kaydet ve düzenlemeye devam et" + +#, 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\" öğesini silmek istediğinizden emin " +"misiniz? Aşağıdaki ilgili öğelerin tümü silinecek:" + +msgid "Yes, I’m sure" +msgstr "Evet, eminim" + +msgid "No, take me back" +msgstr "Hayır, beni geri götür" + +msgid "Summary" +msgstr "Özet" + +msgid "User" +msgstr "Kullanıcı" + +msgid "Group" +msgstr "Grup" + +msgid "Can edit" +msgstr "Düzenleyebilir" + +msgid "Can add" +msgstr "Ekleyebilir" + +msgid "Can delete" +msgstr "Silebilir" + +msgid "Can publish" +msgstr "Yayınlayabilir" + +msgid "Can change permissions" +msgstr "Yetkileri değiştirebilir" + +msgid "Can move" +msgstr "Taşıyabilir" + +msgid "Can view" +msgstr "Görebilir" + +msgid "(global)" +msgstr "(evrensel)" + +msgid "(current)" +msgstr "(geçerli)" + +msgid "Page doesn't inherit any permissions." +msgstr "Sayfa hiçbir izin devralmıyor" + +msgid "Edit model" +msgstr "Model düzenle" + +msgid "Save as new" +msgstr "Yeni olarak kaydet" + +msgid "Save and add another" +msgstr "Kaydet ve yeni bir tane ekle" + +msgid "Copy" +msgstr "Kopyala" + +msgid "Cut" +msgstr "Kes" + +msgid "Paste" +msgstr "Yapıştır" + +msgid "Set as home" +msgstr "Ana sayfa olarak ayarla" + +msgid "is restricted" +msgstr "sınırlandırılmış" + +msgid "last change by" +msgstr "son değiştiren" + +msgid "last change on" +msgstr "son değişiklik tarihi" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Sayfa listesi" + +msgid "Search" +msgstr "Ara" + +msgid "Page Tree" +msgstr "Sayfa Ağacı" + +msgid "Reset filter" +msgstr "Filtreyi sıfırla" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Silinen %(name)s öğesini geri yükle\n" +" " + +msgid "Main Navigation" +msgstr "Ana Navigasyon" + +msgid "Options" +msgstr "Seçenekler" + +msgid "Successfully moved" +msgstr "Başarıyla taşındı" + +msgid "Changes within the tree might require a refresh." +msgstr "Ağaçtaki değişiklikler bir yenileme gerektirebilir." + +msgid "Error:" +msgstr "Hata:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Bu sayfa kopyalanamaz çünkü ona bir uygulama eklenmiş. Apphook'ları yönetmek" +" için sayfanın Gelişmiş ayarlarına bakın." + +msgid "Are you sure you want to § this page?" +msgstr "Bu sayfayı § etmek istediğinizden emin misiniz?" + +msgid "Reload" +msgstr "Tekrar yükle" + +msgid "New node" +msgstr "Yeni düğüm" + +msgid "nodes" +msgstr "düğümler" + +msgid "View" +msgstr "Görüntüle" + +msgid "Menu" +msgstr "Menü" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Henüz hiç %(object)s yok.\n" +"
\n" +" Şimdi %(object)s ekle.\n" +" " + +msgid "Copy options" +msgstr "Kopyalama seçenekleri" + +msgid "Choose copy options" +msgstr "Kopyalama seçeneklerin seç" + +msgid "Close" +msgstr "Kapat" + +msgid "Legend" +msgstr "Gösterge" + +msgid "In menu" +msgstr "Menüde" + +msgid "Not in menu" +msgstr "Menüde değil" + +msgid "View page" +msgstr "Sayfayı göster" + +msgid "Softroot" +msgstr "Softroot" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Uygulama: %(apphook)s" + +msgid "in menu" +msgstr "Menüde" + +msgid "not in menu" +msgstr "Menüde değil" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Sayfa ayarları (gelişmiş ayarlar için SHIFT tıklayın)" + +msgid "Permissions" +msgstr "Yetkiler" + +msgid "inherited" +msgstr "devralınan" + +msgid "This page has no preview!" +msgstr "Bu sayfanın önizlemesi yok!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "Muhtemelen ekli apphook kök için içerik sağlamıyor." + +msgid "It is being redirected to:" +msgstr "Yöndendiriliyor:" + +msgid "Clipboard" +msgstr "Pano" + +msgid "Add plugin" +msgstr "Eklenti ekle" + +msgid "Copy all" +msgstr "Hepsini Kopyala" + +msgid "Copy from" +msgstr "Kopyalanacak yer" + +msgid "Empty all" +msgstr "Hepsini boşalt" + +msgid "Filter plugins..." +msgstr "Eklentileri filtrele..." + +msgid "Expand all" +msgstr "Tümünü genişlet" + +msgid "Collapse all" +msgstr "Tümünü daralt" + +msgid "You cannot add plugins to this plugin." +msgstr "Bu eklentiye başka eklentiler ekleyemezsiniz." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"Bu eklenti üst öğesinin dışına taşınamaz veya üst öğesinin dışında " +"düzenlenemez" + +msgid "Clipboard is empty." +msgstr "Pano şu anda boş." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" +"Bu eklenti, bu tipteki eklentilere iç içe eklenti olarak izin vermiyor." + +msgid "This plugin cannot have nested plugins." +msgstr "Bu eklenti iç içe eklentilere sahip olamaz." + +msgid "Highlight" +msgstr "Vurgula" + +msgid "Available plugins" +msgstr "Uygun eklentiler" + +msgid "Toggle structure" +msgstr "Yapıyı aç/kapat" + +msgid "Login" +msgstr "Giriş" + +msgid "Add plugin to" +msgstr "Eklentiyi şuraya ekle" + +msgid "More" +msgstr "Daha fazla" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"django CMS %(cms_version)s, Django %(django_version)s, Python " +"%(python_version)s kullanan geliştirme sürümü" + +msgid "Cancel" +msgstr "İptal" + +msgid "The following error occurred:" +msgstr "Şu hata ile karşılaşıldı:" + +msgid "Action successful." +msgstr "Aksiyon başarılı." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Bu eklentiyi silmek istediğinize emin misiniz?" + +msgid "Are you sure you want to publish this page?" +msgstr "Bu sayfayı yayınlamak istediğinizde emin misiniz?" + +msgid "Plugin will be added here" +msgstr "Eklenti buraya eklenecek" + +msgid "You have unsaved changes." +msgstr "Kaydedilmemiş değişiklikleriniz bulunuyor." + +msgid "Loading" +msgstr "Yükleniyor" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Yaptığınız değişikliklerden vazgeçmek istediğinize emin misiniz?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "Form yüklenemedi. Lütfen sunucunun doğru çalıştığını kontrol edin." + +msgid "Most used" +msgstr "En sık kullanılan" + +msgid "Shortcuts" +msgstr "Kısayollar" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Sayfa bu sırada değiştirildi, yeniden yükleniyor..." + +msgid "CMS-wide Shortcuts" +msgstr "CMS Geneli Kısayollar" + +msgid "Bring up this help dialog" +msgstr "Bu yardım diyaloğunu getir" + +msgid "Close/cancel" +msgstr "Kapat/iptal" + +msgid "Toggle structure mode" +msgstr "Yapı modunu aç/kapat" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Yapı modunu aç/kapat ve üzerine gelinen eklentiyi vurgula" + +msgid "Open \"Create\" dialog" +msgstr "\"Oluştur\" diyaloğunu aç" + +msgid "Focus on Toolbar" +msgstr "Araç çubuğuna odaklan" + +msgid "Focus on placeholders" +msgstr "Yer tutuculara odaklan" + +msgid "Move to next/previous element" +msgstr "Sonraki/önceki öğeye hareket et" + +msgid "Focus on plugins of placeholder" +msgstr "Yer tutucunun eklentilerine odaklan" + +msgid "Edit plugin" +msgstr "Eklentiyi düzenle" + +msgid "Open actions menu" +msgstr "Aksiyonlar menüsünü aç" + +msgid "Expand/collapse" +msgstr "Genişlet/daralt" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Giriş başarısız. Lütfen bilgilerinizi kontrol edip tekrar " +"deneyiniz." + +msgid "Double-click to edit" +msgstr "Düzenlemek için çift tıklayınız" + +msgid "Tap to edit" +msgstr "Düzenlemek için dokunun" + +msgid "Click to go back" +msgstr "Geri dönmek için tıklayın" + +msgid "Click to go forward" +msgstr "İleri gitmek için tıklayın" + +msgid "Minimize" +msgstr "Küçült" + +msgid "Maximize" +msgstr "Büyüt" + +msgid "Placeholder not editable" +msgstr "Yer tutucu düzenlenebilir değil" + +msgid "Drop a plugin here" +msgstr "Eklentiyi buraya bırakın" + +msgid "Welcome to your new django CMS installation!" +msgstr "Yeni django CMS kurulumunuza hoş geldiniz!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Sürüm %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Birlikte harika bir şeyler inşa edelim!" + +msgid "Please log in" +msgstr "Lütfen giriş yapın" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" İlk sayfanızı ekleyin\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Fonlamaya Yardım Edin

\n" +"

\n" +" Fonlamanız, başlıca\n" +" django CMS Fellowship Programı aracılığıyla doğrudan ürüne fayda sağlar!\n" +"

\n" +"

\n" +" Kendiniz veya kuruluşunuz için bağış yapmanın hızlı bir yolu\n" +" Github Sponsors üzerindendir.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Bize Katılın

\n" +"

\n" +" django CMS Derneği, django CMS'in geliştirilmesini finanse eden ve yönlendiren kâr amacı gütmeyen bir kuruluştur.\n" +"

\n" +"

\n" +" Hem bir birey hem de bir kuruluş olarak katılabilirsiniz.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Katkıda Bulunun

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Kurulum Notları" + +msgid "Support" +msgstr "Destek" + +msgid "Documentation" +msgstr "Dokümantasyon" + +msgid "User guide" +msgstr "Kullanıcı kılavuzu" + +msgid "Give back" +msgstr "Geri verin" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Üstte django CMS logosunu görmüyorsanız,\n" +" static/cms klasörünü statik dosyalarınıza\n" +" bağladığınızdan emin olun.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Bu mesajı görüyorsunuz çünkü django ayar dosyanızda\n" +" DEBUG = True var ve\n" +" henüz hiç sayfa eklemediniz.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "djange CMS'e hoşgeldiniz" + +msgid "Add Another" +msgstr "Bir tane daha ekle" + +msgid "Back" +msgstr "Geri" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" +"Lütfen aşağıdaki seçeneklerden birini seçerek sonraki adıma ilerleyiniz." + +msgid "Next" +msgstr "Sonraki" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Bilinmeyen" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "%(domain)s 'da sayfa bulunamadı" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Şablon etiketi `%(page_lookup)s\n" +"` arama kriteri ile bir sayfa bulamadı. İstek yapılan URL: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "İki sütun" + +msgid "Three columns" +msgstr "Üç Sütun" + +msgid "username" +msgstr "kullanıcı adı" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Zorunlu. 300 karakter veya daha azı. Harfler, rakamlar ve @/./+/-/_ " +"karakterleri" + +msgid "Enter a valid username." +msgstr "Geçerli bir kullanıcı adı giriniz." + +msgid "email address" +msgstr "mailto" + +msgid "staff status" +msgstr "personel durumu" + +msgid "Designates whether the user can log into this admin site." +msgstr "Kullanıcının bu yönetim sitesine giriş yapıp yapamayacağını belirler." + +msgid "active" +msgstr "etkin" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Bu kullanıcının aktif olarak değerlendirilip değerlendirilmeyeceğini " +"belirler. Hesapları silmek yerine bunun seçimini kaldırın." + +msgid "users" +msgstr "kullanıcılar" + +msgid "Title Extension" +msgstr "Uzantı Başlık" + +msgid "Page Extension" +msgstr "Uzantı Sayfa" + +msgid "object ID" +msgstr "nesne kimlik no" + +msgid "Example1 App" +msgstr "Örnek1 Uygulaması" + +msgid "MultilingualExample1 App" +msgstr "ÇokluDilÖrnek1 Uygulaması" + +msgid "Example1" +msgstr "Örnek 1" + +msgid "Examples" +msgstr "Örnekler" + +msgid "Extra Context" +msgstr "İlave İçerik" + +msgid "Articles" +msgstr "Makaleler" + +msgid "Sample App" +msgstr "Örnek Uygulama" + +msgid "Sample App with config" +msgstr "Konfigürasyonlu örnek uygulama" + +msgid "Sample App with excluded permissions" +msgstr "Dahil edilmeyen yetkilerle Örnek Uygulama" + +msgid "Sample App 2" +msgstr "Örnek Uygulama 2" + +msgid "Sample App 3" +msgstr "Örnek Uygulama 2" + +msgid "Sample App Without Landing Page" +msgstr "Açılış Sayfası Olmayan Örnek Uygulama" + +msgid "Namespaced App" +msgstr "Ad Alanlı Uygulama" + +msgid "Parent app" +msgstr "Üst uygulama" + +msgid "Child app" +msgstr "Alt uygulama" + +msgid "Variable urls-menus App" +msgstr "Değişken urls-menus Uygulaması" + +msgid "sample root page" +msgstr "örnek ana sayfa" + +msgid "sample settings page" +msgstr "örnek ayarlar sayfası" + +msgid "sample account page" +msgstr "örnek hesap sayfası" + +msgid "sample my profile page" +msgstr "örnek bilgilerim sayfası" + +msgid "Static Menu" +msgstr "Statik Menü" + +msgid "Static Menu2" +msgstr "Statik Menü2" + +msgid "Static Menu3" +msgstr "Sabit Menu3" + +msgid "Static Menu4" +msgstr "Statik Menü" + +msgid "Category" +msgstr "Kategori" + +msgid "Categories" +msgstr "Kategoriler" + +msgid "Add Category" +msgstr "Kategori Ekle" + +msgid "^account/$" +msgstr "^hesap/$" + +msgid "Change Category" +msgstr "Kategori Düzenle" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Web sayfası için zaman ayırdığınız için teşekkürler." + +msgid "Inherit the template of the nearest ancestor" +msgstr "En yakın üst sayfanın şablonunu kullan" + +msgid "UserSettings" +msgstr "KullanıcıAyarları" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "\"%(placeholder_label)s\" yer tutucusuna eklenti ekle" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "%(plugin_name)s öğesine eklenti ekle" + +msgid "Single placeholder" +msgstr "Tek yer tutucu" + +msgid "CMS - your user account was created." +msgstr "CMS - kullanıcı hesabınız yaratıldı." + +msgid "CMS - your user account was changed." +msgstr "CMS - kullanıcı hesabınız güncellendi." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" +"Bu yer tutucusu sahip olabileceği en fazla eklenti sayısına sahip: (%s)" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Bu yer tutucu sahip olabileceği (%(limit)s) adet %(plugin_name)s eklentisi " +"limitine ulaştı" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Belirtilen CMS_REQUEST_IP_RESOLVER modülü bulunamadı: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Belirtilen CMS_REQUEST_IP_RESOLVER fonksiyonu bulunamadı: \"{0}\", \"{1}\" " +"modülünde." + +#, python-format +msgid "Create a new %s instance." +msgstr "Yeni bir %s oluşumu oluştur." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Şu model için zaten bir sihirbaz kayıtlıdır: %s" diff --git a/cms/locale/tr/LC_MESSAGES/djangojs.po b/cms/locale/tr/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..d0858063 --- /dev/null +++ b/cms/locale/tr/LC_MESSAGES/djangojs.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Cumhur Korkut , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Cumhur Korkut , 2013\n" +"Language-Team: Turkish (http://app.transifex.com/divio/django-cms/language/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Önce sayfayı kaydetmeden sekmeleri değiştirmek istediğinize emin misiniz?" diff --git a/cms/locale/tr_TR/LC_MESSAGES/django.po b/cms/locale/tr_TR/LC_MESSAGES/django.po new file mode 100644 index 00000000..f1f99873 --- /dev/null +++ b/cms/locale/tr_TR/LC_MESSAGES/django.po @@ -0,0 +1,2269 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Bilal Tonga , 2022 +# Ender Topaloğlu , 2023 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Ender Topaloğlu , 2023\n" +"Language-Team: Turkish (Turkey) (https://app.transifex.com/divio/teams/58664/tr_TR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr_TR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "Hepsi" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "Yetkileri kopyala" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "Kısa ad" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "Başlığın URL'de kullanılan kısmı" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "Sayfa Tipi" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "Sayfa Tipleri" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "Uygulama" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "Dil" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "Öntanımlı başlık" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "Sayfa Başlığı" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Tarayıcınızın üst kısmında veya yer işaretlerinde görüntülenenlerin üzerine " +"yazar" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "Menü Başlığı" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "Görüntülenen menünün üzerine yaz" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "Meta etiketi açıklaması" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "Arama motorları tarafından kullanılan sayfanın açıklaması." + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "Başlık" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "Slug boş olmamalı" diff --git a/cms/locale/tr_TR/LC_MESSAGES/djangojs.po b/cms/locale/tr_TR/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..16b112ba --- /dev/null +++ b/cms/locale/tr_TR/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Turkish (Turkey) (http://app.transifex.com/divio/django-cms/language/tr_TR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr_TR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/ug/LC_MESSAGES/django.po b/cms/locale/ug/LC_MESSAGES/django.po new file mode 100644 index 00000000..1ccddb58 --- /dev/null +++ b/cms/locale/ug/LC_MESSAGES/django.po @@ -0,0 +1,2264 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Uyghur (https://app.transifex.com/divio/teams/58664/ug/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ug\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/ug/LC_MESSAGES/djangojs.po b/cms/locale/ug/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..55029f73 --- /dev/null +++ b/cms/locale/ug/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Uyghur (http://app.transifex.com/divio/django-cms/language/ug/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ug\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/uk/LC_MESSAGES/django.po b/cms/locale/uk/LC_MESSAGES/django.po new file mode 100644 index 00000000..cae703a2 --- /dev/null +++ b/cms/locale/uk/LC_MESSAGES/django.po @@ -0,0 +1,1764 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Andrii Vozniuk, 2023 +# tarasyyyk , 2023 +# Петро Романчук , 2025 +# Panasoft, 2025 +# Anton Linevich , 2026 +# Volodymyr Bergman , 2026 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Ukrainian (https://app.transifex.com/divio/teams/58664/uk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" + +msgid "All" +msgstr "Усе" + +msgid "Copy permissions" +msgstr "Скопіювати дозволи" + +msgid "Slug" +msgstr "Скорочена назва для пошукових систем" + +msgid "The part of the title that is used in the URL" +msgstr "Частина назви, що використовується у адресному рядку" + +msgid "Page type" +msgstr "Тип сторінки" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Типи Сторінок" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Перезаписати URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Залиште це поле пустим, якщо використовується стандартний шлях." + +msgid "Start typing..." +msgstr "Розпочати друкування..." + +msgid "menu visibility" +msgstr "видимість меню" + +msgid "limit when this page is visible in the menu" +msgstr "обмеження, коли ця сторінка є видимою у меню" + +msgid "X Frame Options" +msgstr "Опції для X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "Чи можна вбудовувати цю сторінку в інші сторінки або вебсайти." + +msgid "URL options" +msgstr "Параметри URL" + +msgid "Menu options" +msgstr "Параметри меню" + +msgid "Headers" +msgstr "Заголовки" + +msgid "Application" +msgstr "Програма" + +msgid "Hook application to this page." +msgstr "Приєднати зовнішню програму до цієї сторінки." + +msgid "Application configurations" +msgstr "Конфігурації програми" + +msgid "A page with this reverse URL id exists already." +msgstr "Сторінка із таким реверсивним URL id вже існує." + +msgid "Invalid application config value" +msgstr "Неприпустиме значення конфігурації програми" + +msgid "An application instance using this configuration already exists." +msgstr "Екземпляр програми, що використовує цю конфігурацію вже існує." + +msgid "An application instance with this name already exists." +msgstr "Екземпляр програми з такою назвою вже існує." + +msgid "You can't move the home page inside another page" +msgstr "Ви не можете перемістити домашню сторінку до іншої сторінки" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Не можна мати дві сторінки з однаковим слаґом на одному рівні. Будь ласка, " +"змініть слаґ однієї зі сторінок, перш ніж знову намагатися перемістити." + +msgid "Yes" +msgstr "Так" + +msgid "No" +msgstr "Ні" + +msgid "user" +msgstr "користувач" + +msgid "can_view" +msgstr "Може_переглянути" + +msgid "Add" +msgstr "Додати" + +msgid "Change" +msgstr "Змінити" + +msgid "Delete" +msgstr "Видалити" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Користувачу не дозволено створювати сторінки без дозволу на зміну вже " +"створених сторінок. Змініть відповідні дозволи." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Користувачу не дозволено видаляти сторінки без дозволу на зміну сторінок. " +"Змініть відповідні дозволи." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Користувачу не дозволено змінювати дозволи сторінки без дозволу змінювати " +"сторінку. Змініть відповідні дозволи." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Користувачі не мають дозволу видаляти дозволи сторінок без дозволу змінювати" +" сторінки. Змініть відповідні дозволи." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Користувачі не можуть створювати дозволи сторінки без дозволу змінювати " +"дозволи, що вже існують. Змініть відповідні дозволи." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Користувачі не можуть видаляти дозволи сторінки без дозволу змінювати " +"дозволи сторінки. Змініть відповідні дозволи." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Невірний тип плагіну '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Мова повинна бути в переліку мов, що підтримуються!" + +msgid "Parent plugin language must be same as language!" +msgstr "Батьківка мова розширення повинна бути така сама!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" +"Заповнювач батьківського плагіна повинен бути таким же як сам заповнювач!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Позиція плагіну має бути більшою за %(position)d" + +msgid "Translations" +msgstr "Переклади" + +msgid "Advanced Settings" +msgstr "Розширені Налаштування" + +msgid "The page is not eligible to be home." +msgstr "Сторінка не може бути домашньою." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Об'єкта %(name)s з основним ключем %(key)r не існує." + +msgid "error" +msgstr "помилка" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" +"Помилка! Ви не маєте дозволу на переміщення цієї сторінки. Будь-ласка, " +"перезавантажте сторінку." + +msgid "Error! You don't have permissions to copy this page." +msgstr "Помилка! У Вас не достатньо прав щоб скопіювати цю сторінку." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Помилка! Сторінка, яку Ви намагаєтесь вставити не перекладена на жодну з " +"мов, які налаштовано в цільовому сайті." + +msgid "You do not have permission to edit this page" +msgstr "У Вас немає дозволу редагувати цю сторінку" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(щоб змінити це, спочатку скасуйте публікацію поточної опублікованої версії " +"цієї сторінки)" + +msgid "Add Translation" +msgstr "Додати Переклад" + +msgid "Add Page Copy" +msgstr "Додати Копію Сторінки" + +msgid "New sub page" +msgstr "Нова вкладена сторінка" + +msgid "New page" +msgstr "Нова сторінка" + +msgid "Database error" +msgstr "Помилка бази даних" + +msgid "Template not valid" +msgstr "Шаблон не дійсний" + +msgid "Placeholder selection not valid" +msgstr "Недійсний вибір заповнювача" + +msgid "The template was successfully changed" +msgstr "Шаблон було успішно змінено" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Заповнювач '%s' не існує цільовою мовою" + +msgid "You do not have permission to copy these plugins." +msgstr "Ви не маєте дозволу для копіювання даних розширень." + +msgid "You do not have permission to delete this page" +msgstr "У вас не достатньо прав щоб видалити цю сторінку" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Заголовок та розширення мовами %(language)s видалені" + +msgid "Public content" +msgstr "Публічний зміст" + +msgid "Empty" +msgstr "Очистити" + +msgid "Create Content" +msgstr "Створити зміст" + +msgid "View restriction" +msgstr "Обмеження перегляду" + +msgid "View restrictions" +msgstr "Обмеження переглядів" + +#, python-format +msgid "Field %s not found" +msgstr "Поле %s не знайдено" + +msgid "You do not have permission to edit this item" +msgstr "У Вас немає дозволу редагувати цю позицію" + +msgid "You do not have permission to add a plugin" +msgstr "У Вас немає дозволу додавати розширення" + +msgid "You do not have permission to copy this placeholder." +msgstr "У Вас немає дозволу на копіювання цього заповнювача." + +msgid "Plugin not found" +msgstr "Плагін не знайдено" + +msgid "You do not have permission to edit this plugin" +msgstr "У Вас немає прав для реданування цього розширення" + +msgid "You have no permission to paste this plugin" +msgstr "У Вас немає дозволу на вставку цього плагіну" + +msgid "You have no permission to paste this placeholder" +msgstr "У Вас немає дозволу на вставку цього заповнювача" + +msgid "You have no permission to move this plugin" +msgstr "У Вас немає дозволу на переміщення цього розширення" + +msgid "You have no permission to cut this plugin" +msgstr "У Вас немає дозволу вірізати цей плагін" + +msgid "You do not have permission to delete this plugin" +msgstr "У Вас немає дозволу на знищення цього розширення" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "%(name)s розширення \"%(obj)s\" було успішно видалено." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Неможна видалити %(name)s" + +msgid "Are you sure?" +msgstr "Ви впевнені?" + +msgid "You do not have permission to clear this placeholder" +msgstr "У Вас немає дозволу на очищення цього заповнювача" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Заповнювач \"%(obj)s\" був успішно очищений." + +msgid "placeholder" +msgstr "заповнювач" + +msgid "Page permissions" +msgstr "Дозволи сторінки" + +msgid "User & Group permissions" +msgstr "Дозволи Користувача та Групи" + +msgid "Page permissions management" +msgstr "Керування дозволами для сторінки" + +msgid "Actions" +msgstr "Дії" + +msgid "Empty content" +msgstr "Порожній зміст" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Властивості %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Додати новий %(object_name)s" + +msgid "Add content" +msgstr "Додати зміст" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Зміст для поточної мови було змінено. Натисніть \"Скасувати\", щоб " +"повернутися до форми та зберегти зміни. Натисніть \"OK\", щоб відхилити " +"зміни." + +#, python-format +msgid "Add %(language)s content" +msgstr "Додати зміст мовою %(language)s" + +msgid "Preview" +msgstr "Попередній перегляд" + +msgid "Settings" +msgstr "Налаштування" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Недійсна мова %(value)s. Цю форму неможливо обробити. Спробуйте змінити " +"мову." + +msgid "" +msgstr "<не вказано>" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Знайдено не зареєстрований apphook \"%r\"" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Заповнювач" + +msgid "Create" +msgstr "Створити" + +msgid "Edit" +msgstr "Редагувати" + +msgid "Structure" +msgstr "Структура" + +msgid "Content" +msgstr "Зміст" + +msgid "Sites" +msgstr "Сайти" + +msgid "Admin Sites" +msgstr "Адмін Сайти" + +msgid "Administration" +msgstr "Адміністрування" + +msgid "User settings" +msgstr "Налаштування користувача" + +msgid "Clipboard..." +msgstr "Буфер обміну..." + +msgid "Clear clipboard" +msgstr "Очистити буфер обміну" + +msgid "Disable toolbar" +msgstr "Відключити панель" + +msgid "Shortcuts..." +msgstr "Гарячі клавіші..." + +msgid "Users" +msgstr "Користувачі" + +#, python-format +msgid "Logout %s" +msgstr "Вийти %s" + +msgid "Logout" +msgstr "Вийти" + +msgid "Language" +msgstr "Мова" + +msgid "Delete Translation" +msgstr "Видалити Переклад" + +msgid "Copy all plugins" +msgstr "Копіювати усі плагіни" + +#, python-format +msgid "from %s" +msgstr "з %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Ви впевнені, що бажаєте скопіювати усі плагіни з %s?" + +msgid "Pages" +msgstr "Сторінки" + +msgid "Page" +msgstr "Сторінка" + +msgid "Create Page" +msgstr "Створити Сторінку" + +msgid "New Page" +msgstr "Нова Сторінка" + +msgid "New Sub Page" +msgstr "Нова Під-Сторінка" + +msgid "Duplicate this Page" +msgstr "Створити дуплікат цієї Сторінки" + +msgid "Page settings" +msgstr "Налаштування сторінки" + +msgid "Advanced settings" +msgstr "Розширені налаштування" + +msgid "Templates" +msgstr "Шаблони" + +msgid "Placeholders" +msgstr "Заповнювачі" + +msgid "Hide in navigation" +msgstr "Приховати в навігації" + +msgid "Display in navigation" +msgstr "Показати в навігації" + +msgid "Delete page" +msgstr "Видалити сторінку" + +msgid "Create a new page next to the current page." +msgstr "Створити нову сторінку одразу за активною сторінкою" + +msgid "Create a page below the current page." +msgstr "Створити сторінку під актиною сторінкою" + +msgid "Select a valid site" +msgstr "Виберіть чинний сайт" + +msgid "Select a valid page" +msgstr "Виберіть чинну сторінку" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"Сторінка%(conflict_page)sмає таке ж посилання '%(url)s' як і поточна " +"сторінка \"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" +"Сторінка %(conflict_page)sмає таке ж посилання '%(url)s' як і поточна " +"сторінка." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Опційно. Якщо вказується, то буде автоматично додано до нового текстового " +"плагіну." + +msgid "Provide a title for the new page." +msgstr "Вкажіть назву для нової сторінки" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "Залиште порожнім для автоматичного слагу або вкажіть самостійно." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" +"Не вдалося автоматично створити слаґ. Будь ласка, вкажіть його вручну." + +msgid "Please provide a valid slug." +msgstr "Будь ласка, вкажіть дійсний слаґ." + +msgid "You don't have the permissions required to add a page." +msgstr "Ви не маєте достатньо прав щоб додати сторінку." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "позиція" + +msgid "language" +msgstr "мова" + +msgid "plugin_name" +msgstr "назва_розширення" + +msgid "creation date" +msgstr "дата створення" + +msgid "can edit" +msgstr "може редагувати" + +msgid "can add" +msgstr "може додавати" + +msgid "can delete" +msgstr "може видаляти" + +msgid "can change advanced settings" +msgstr "може змінювати розширені налаштування" + +msgid "can publish" +msgstr "може публікувати" + +msgid "can change permissions" +msgstr "може змінювати дозволи" + +msgid "can move" +msgstr "може переміщати" + +msgid "view restricted" +msgstr "перегляд обмежено" + +msgid "can recover pages" +msgstr "може відновлювати сторінки" + +msgid "group" +msgstr "група" + +msgid "sites" +msgstr "сайти" + +msgid "created by" +msgstr "створено" + +msgid "changed by" +msgstr "змінено" + +msgid "publication date" +msgstr "дата публікації" + +msgid "publication end date" +msgstr "дата закінчення публікації" + +msgid "in navigation" +msgstr "в навігації" + +msgid "soft root" +msgstr "soft root" + +msgid "id" +msgstr "Ідентифікатор" + +msgid "attached menu" +msgstr "приєднане меню" + +msgid "template" +msgstr "шаблон" + +msgid "login required" +msgstr "потрібен login" + +msgid "application" +msgstr "Пристосунок" + +msgid "application instance name" +msgstr "назва екземпляру програми" + +msgid "site" +msgstr "сайт" + +msgid "Grant on" +msgstr "Призначити права на" + +msgid "page" +msgstr "сторінка" + +msgid "no limit set" +msgstr "обмеження не встановлено" + +msgid "for logged in users only" +msgstr "тільки для авторизованих користувачів" + +msgid "for anonymous users only" +msgstr "тільки для неавторизованих користувачів" + +msgid "Inherit from parent page" +msgstr "Наслідувати від батьківської сторінки" + +msgid "Deny" +msgstr "Відмовити" + +msgid "Only this website" +msgstr "Тільки цей вебсайт" + +msgid "Allow" +msgstr "Дозволити" + +msgid "title" +msgstr "заголовок" + +msgid "The default title" +msgstr "Заголовок за замовчуванням" + +msgid "Page Title" +msgstr "Назва сторінки" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" +"Переписати те, що буде показано в заголовку вашого браузера або в закладках" + +msgid "Menu Title" +msgstr "Назва меню" + +msgid "Overwrite what is displayed in the menu" +msgstr "Перезаписати те, що висвітлено в меню" + +msgid "Description meta tag" +msgstr "Описання мета ключового слова" + +msgid "A description of the page used by search engines." +msgstr "Описання сторінки, що використовується пошуковими системами." + +msgid "redirect" +msgstr "перенаправлення" + +msgid "Redirects to this URL." +msgstr "Перенаправляє на цей URL " + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Всі нащадки не будуть показані в навігації" + +msgid "The template used to render the content." +msgstr "Шаблон, що використовується для створення змісту." + +msgid "page content" +msgstr "зміст сторінки" + +msgid "page contents" +msgstr "зміст сторінок" + +msgid "default" +msgstr "типове" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Унікальний ідентифікатор, що був використаний з адресою ключового слова " +"шаблону сторінки для прив'язки до цієї сторінки" + +msgid "Mark this page as a page type" +msgstr "Позначити цю сторінку як тип сторінки" + +msgid "pages" +msgstr "сторінки" + +msgid "No available title" +msgstr "Немає доступного заголовка" + +msgid "slug" +msgstr "слаґ" + +msgid "Path" +msgstr "Шлях" + +msgid "Current page" +msgstr "Поточна сторінка" + +msgid "Page children (immediate)" +msgstr "Нащадок сторінки (безпосередній)" + +msgid "Page and children (immediate)" +msgstr "Сторінка та нащадок (безпосередній)" + +msgid "Page descendants" +msgstr "Нащадки сторінки" + +msgid "Page and descendants" +msgstr "Сторінка та нащадки" + +msgid "on page level" +msgstr "на рівні сторінки" + +msgid "frontend view restriction" +msgstr "обмеження перегляду зовнішнього інтерфейсу" + +msgid "Please select user or group." +msgstr "Будь-ласка, оберіть користувача або групу." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Користувачі не можуть публікувати сторінку без дозволу на зміну сторінки. " +"Змініть відповідні дозволи." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Користувачі не можуть змінювати розширені налаштування сторінки без дозволу " +"на зміну сторінки. Змініть відповідні дозволи." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Користувачі не можуть змінювати дозволи сторінки без дозволу на зміну " +"сторінки. Змініть відповідні дозволи." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Користувачі не можуть переміщувати сторінку без дозволу на зміну сторінки. " +"Змініть відповідні дозволи." + +msgid "can recover any deleted page" +msgstr "може відновлювати будь-які видалені сторінки" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "Якщо нічого не вибрано, то користувачу надаються права на всі сайти" + +msgid "Page global permission" +msgstr "Глобальний дозвіл доступу до сторінки" + +msgid "Pages global permissions" +msgstr "Глобальні дозволи доступу до сторінок" + +msgid "Page permission" +msgstr "Дозвіл сторінки" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Дозвіл на додавання сторінки вимагає також мати доступ до нащадків, інакше " +"додана сторінка не може бути змінена тим, хто її створив." + +msgid "User (page)" +msgstr "Користувач (сторінка)" + +msgid "Users (page)" +msgstr "Користувачі (сторінка)" + +msgid "User group (page)" +msgstr "Група користувачів (сторінка)" + +msgid "User groups (page)" +msgstr "Групи користувачів (сторінка)" + +msgid "slot" +msgstr "слот" + +msgid "width" +msgstr "ширина" + +msgid "Edit object" +msgstr "Редагувати об'єкт" + +msgid "This is an external placeholder" +msgstr "Це зовнішній заповнювач" + +msgid "plugin" +msgstr "плагін" + +msgid "plugins" +msgstr "плагіни" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Мова для адміністративного інтерфейсу та інструментальної панелі" + +msgid "user setting" +msgstr "налаштування користувача" + +msgid "user settings" +msgstr "налаштування користувача" + +msgid "by template" +msgstr "за шаблоном" + +msgid "by code" +msgstr "за кодом" + +msgid "static placeholder name" +msgstr "назва статичного заповнювача" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" +"Образна назва для ідентифікації даного заповнювача. Не показується " +"користувачам." + +msgid "placeholder code" +msgstr "код заповнювача" + +msgid "To render the static placeholder in templates." +msgstr "Для візуалізації статичного заповнювача у шаблонах." + +msgid "placeholder content" +msgstr "зміст заповнювача" + +msgid "creation_method" +msgstr "метод_створення" + +msgid "static placeholder" +msgstr "статичний заповнювач" + +msgid "static placeholders" +msgstr "статичні заповнювачі" + +msgid "A static placeholder with the same site and code already exists" +msgstr "Статичний заповнювач з тим самим сайтом та кодом вже існує" + +msgid "Advanced options" +msgstr "Розширені опції" + +msgid "Generic" +msgstr "Типовий" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" було змінено успішно." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" +"Більше немає налаштувань для цього розширення. Будь-ласка, натисніть " +"<Зберегти>" + +msgid "Moved" +msgstr "Переміщено" + +msgid "Changed" +msgstr "Змінено" + +msgid "Deleted" +msgstr "Видалено" + +msgid "Added Page Translation" +msgstr "Додано переклад сторінки" + +msgid "Changed Page Translation" +msgstr "Змінено переклад сторінки" + +msgid "Deleted Page Translation" +msgstr "Видалено переклад сторінки" + +msgid "Added Plugin" +msgstr "Додано плагін" + +msgid "Changed Plugin" +msgstr "Змінено плагін" + +msgid "Moved Plugin" +msgstr "Переміщено плагін" + +msgid "Deleted Plugin" +msgstr "Видалено плагін" + +msgid "Cut Plugin" +msgstr "Вирізано плагін" + +msgid "Paste Plugin" +msgstr "Вставлено плагін" + +msgid "Paste to Placeholder" +msgstr "Вставити в заповнювач" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Додано плагіни до заповнювача з буфера обміну" + +msgid "Cleared Placeholder" +msgstr "Очищено заповнювач" + +msgid "Save" +msgstr "Зберегти" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" +"Деякі поля не можна змінити, оскільки вони є вмістом лише для читання." + +#, python-format +msgid "Log in to administration here." +msgstr "Авторизуйтесь як адміністратор тут." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "Посилання [url] для входу: %(login_url)s" + +msgid "Username:" +msgstr "Ім'я користувача:" + +msgid "Password:" +msgstr "Пароль" + +msgid "Add a page" +msgstr "Додати сторінку" + +msgid "Change a page" +msgstr "Змінити сторінку" + +msgid "Home" +msgstr "Головна" + +msgid "View on site" +msgstr "Дивитись на сайті" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Будь-ласка, виправте помилку нижче." +msgstr[1] "Будь-ласка, виправте помилки нижче." +msgstr[2] "Будь-ласка, виправте помилки нижче." +msgstr[3] "Будь-ласка, виправте помилки нижче." + +msgid "All permissions" +msgstr "Усі дозволи" + +msgid "Loading..." +msgstr "Завантажується..." + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "Так, я впевнений" + +msgid "No, take me back" +msgstr "Ні, повернутися назад" + +msgid "Summary" +msgstr "Зведення" + +msgid "User" +msgstr "Користувач" + +msgid "Group" +msgstr "Група" + +msgid "Can edit" +msgstr "Може редагувати" + +msgid "Can add" +msgstr "Може додавати" + +msgid "Can delete" +msgstr "Може видаляти" + +msgid "Can publish" +msgstr "Може публікувати" + +msgid "Can change permissions" +msgstr "Може змінювати дозволи" + +msgid "Can move" +msgstr "Може переміщувати" + +msgid "Can view" +msgstr "Може переглядати" + +msgid "(global)" +msgstr "(глобально)" + +msgid "(current)" +msgstr "(місцево)" + +msgid "Page doesn't inherit any permissions." +msgstr "Сторінка не наслідує жодних дозволів." + +msgid "Edit model" +msgstr "Режим редагування" + +msgid "Save as new" +msgstr "Зберегти як новий" + +msgid "Save and add another" +msgstr "Зберегти та додати інший" + +msgid "Copy" +msgstr "Копія" + +msgid "Cut" +msgstr "Вирізати" + +msgid "Paste" +msgstr "Вставити" + +msgid "Set as home" +msgstr "Зробити головною" + +msgid "is restricted" +msgstr "обмежено" + +msgid "last change by" +msgstr "в останнє змінено" + +msgid "last change on" +msgstr "в останнє змінено" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Список сторінок" + +msgid "Search" +msgstr "Пошук" + +msgid "Page Tree" +msgstr "Дерево Сторінок" + +msgid "Reset filter" +msgstr "Зняти фільтр" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Відновити видалене: %(name)s\n" +" " + +msgid "Main Navigation" +msgstr "Головне Меню" + +msgid "Options" +msgstr "Опції" + +msgid "Successfully moved" +msgstr "Успішно переміщено" + +msgid "Changes within the tree might require a refresh." +msgstr "" +"Зміни в межах дерева можуть потребувати поновлення зображення для перегляду." + +msgid "Error:" +msgstr "Помилка:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Ця сторінка не може бути скопійована через наявність додатку, що " +"прикріплений до неї. Дивіться розширені налаштування сторінки для управління" +" цим додатком (apphook)." + +msgid "Are you sure you want to § this page?" +msgstr "Ви впевнені, що хочете § цю сторінку?" + +msgid "Reload" +msgstr "Перезавантажити" + +msgid "New node" +msgstr "Новий пункт" + +msgid "nodes" +msgstr "пункти" + +msgid "View" +msgstr "Вигляд" + +msgid "Menu" +msgstr "Меню" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Поки що немає %(object)s\n" +"
\n" +" Додати %(object)s.\n" +" " + +msgid "Copy options" +msgstr "Опції копіювання" + +msgid "Choose copy options" +msgstr "Обрати опції копіювання" + +msgid "Close" +msgstr "Закрити" + +msgid "Legend" +msgstr "Легенда" + +msgid "In menu" +msgstr "В меню" + +msgid "Not in menu" +msgstr "Не в меню" + +msgid "View page" +msgstr "Перегляд сторінки" + +msgid "Softroot" +msgstr "Softroot" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Програма: %(apphook)s" + +msgid "in menu" +msgstr "у меню" + +msgid "not in menu" +msgstr "не у меню" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Налаштування сторінки (SHIFT для розширених налаштувань)" + +msgid "Permissions" +msgstr "Дозволи" + +msgid "inherited" +msgstr "успадковано" + +msgid "This page has no preview!" +msgstr "Ця сторінка не має перегляду!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "Можливо, приєднаний apphook не надає вмісту для свого кореня." + +msgid "It is being redirected to:" +msgstr "Це було перенапрвлено на:" + +msgid "Clipboard" +msgstr "Буфер обміну" + +msgid "Add plugin" +msgstr "Додати плагін" + +msgid "Copy all" +msgstr "Копіювати все" + +msgid "Copy from" +msgstr "Копіювати з" + +msgid "Empty all" +msgstr "Очистити все" + +msgid "Filter plugins..." +msgstr "Фільтрувати плагіни..." + +msgid "Expand all" +msgstr "Розгорнути все" + +msgid "Collapse all" +msgstr "Згорнути все" + +msgid "You cannot add plugins to this plugin." +msgstr "Ви не можете додавати плагіни до цього плагіну" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"Цей плагін не може переміщуватись або редагуватися за межами своїх " +"порождувачів" + +msgid "Clipboard is empty." +msgstr "Буфер обміну порожній." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Цей плагін не може бути вкладеним." + +msgid "This plugin cannot have nested plugins." +msgstr "Цей плагін не може вміщати вкладені плагіни." + +msgid "Highlight" +msgstr "Виділення" + +msgid "Available plugins" +msgstr "Доступні плагіни" + +msgid "Toggle structure" +msgstr "Увімк./Вимк. структуру" + +msgid "Login" +msgstr "Увійти" + +msgid "Add plugin to" +msgstr "Додати плагін до" + +msgid "More" +msgstr "Більше" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Версія, що знаходиться у розробці з використанням django CMS " +"%(cms_version)s, Django %(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Скасувати" + +msgid "The following error occurred:" +msgstr "Сталася помилка:" + +msgid "Action successful." +msgstr "Виконано успішно" + +msgid "Are you sure you want to delete this plugin?" +msgstr "Ви впевнені, що хочете видалити цей плагін?" + +msgid "Are you sure you want to publish this page?" +msgstr "Ви впевнені, що ви хочете опублікувати цю сторінку?" + +msgid "Plugin will be added here" +msgstr "Плагін буде додано сюди" + +msgid "You have unsaved changes." +msgstr "У Вас є зміни, що не збережені." + +msgid "Loading" +msgstr "Завантаження" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Ви певні, що бажаєте знехтувати цими змінами?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"Форма не може бути завантажена. Будь ласка, перевірте, чи наразі запущений " +"сервер." + +msgid "Most used" +msgstr "Найбільш використовуване" + +msgid "Shortcuts" +msgstr "Гарячі клавіші" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Сторінку було змінено, перезавантаження..." + +msgid "CMS-wide Shortcuts" +msgstr "Гарячі клавіші CMS" + +msgid "Bring up this help dialog" +msgstr "Достати цей діалог допомоги" + +msgid "Close/cancel" +msgstr "Закрити/відмінити" + +msgid "Toggle structure mode" +msgstr "Переключити в режим структури" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Переключити в режим структури і підсвічувати плагіни" + +msgid "Open \"Create\" dialog" +msgstr "Відкрити діалог \"Створити\"" + +msgid "Focus on Toolbar" +msgstr "Зфокусувати на Панелі" + +msgid "Focus on placeholders" +msgstr "Зфоркусувати на заповнювачах" + +msgid "Move to next/previous element" +msgstr "Перемістити до наступного/попереднього елемента" + +msgid "Focus on plugins of placeholder" +msgstr "Зфокусувати на плагінах заповнювача" + +msgid "Edit plugin" +msgstr "Редагувати плагін" + +msgid "Open actions menu" +msgstr "Відкрити меню дій" + +msgid "Expand/collapse" +msgstr "Розгорнути/згорнути" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Увійти не вдалося. Будь ласка, перевірте ваші облікові дані" +" і повторіть спробу." + +msgid "Double-click to edit" +msgstr "Двічі клацніть, щоб редагувати" + +msgid "Tap to edit" +msgstr "Тацьніть для редагування" + +msgid "Click to go back" +msgstr "Клікніть для повернення" + +msgid "Click to go forward" +msgstr "Клікніть для переходу вперед" + +msgid "Minimize" +msgstr "Згорнути" + +msgid "Maximize" +msgstr "Розгорнути" + +msgid "Placeholder not editable" +msgstr "Заповнювач не редагується" + +msgid "Drop a plugin here" +msgstr "Перетягніть сюди плагін" + +msgid "Welcome to your new django CMS installation!" +msgstr "Ласкаво просимо до вашої нової інсталяції django CMS!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Версія %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Побудуймо щось чудове разом!" + +msgid "Please log in" +msgstr "Будь ласка, увійдіть в обліковий запис" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Додайте свою першу сторінку\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Допоможіть фінансуванням

\n" +"

\n" +" Ваше фінансування безпосередньо приносить користь продукту, головним чином через\n" +" програму стипендій django CMS!\n" +"

\n" +"

\n" +" Швидкий спосіб для вас або вашої організації зробити пожертву —\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Приєднуйтесь до нас

\n" +"

\n" +" Асоціація django CMS — це некомерційна організація, яка фінансує та спрямовує розробку\n" +" django CMS.\n" +"

\n" +"

\n" +" Ви можете приєднатися як приватна особа, так і як\n" +" організація.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Зробіть внесок

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Нотатки з інсталяції" + +msgid "Support" +msgstr "Підтримка" + +msgid "Documentation" +msgstr "Документація" + +msgid "User guide" +msgstr "Посібник користувача" + +msgid "Give back" +msgstr "Віддячити" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Якщо Ви не бачите вгорі логотип CMS django, переконайтесь,\n" +"що Ви посилаєтесь на статичні файли у своєму каталозі static/cms

" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Ви бачите це повідомлення, оскільки у конфігурації django  наявна директива DEBUG = True і Ви ще не додали жодної сторінки

" + +msgid "Welcome to django CMS" +msgstr "Вітаємо у django CMS" + +msgid "Add Another" +msgstr "Додати Інше" + +msgid "Back" +msgstr "Назад" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "Будь ласка, оберіть опцію нижче для переходу до наступного кроку." + +msgid "Next" +msgstr "Далі" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "Невідомо" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Сторінка не знайдена на %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Шаблонне ключове слово не може знайти сторінку з пошуковими аргументами `%(page_lookup)s\n" +"`. URL запиту був такий: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Два стовпці" + +msgid "Three columns" +msgstr "Три стовпці" + +msgid "username" +msgstr "ім'я користувача" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Обов'язково. 300 символів або менше. Літери, числа and @/./+/-/_ символи" + +msgid "Enter a valid username." +msgstr "Введіть чинне ім'я користувача." + +msgid "email address" +msgstr "електронна адреса" + +msgid "staff status" +msgstr "статус персоналу" + +msgid "Designates whether the user can log into this admin site." +msgstr "" +"Показує чи може користувач авторизуватись на цьому адміністративному сайті." + +msgid "active" +msgstr "активний" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Показує чи повинен цей користувач вважатись активним. Зніміть відмітку " +"замість видалення реєстраційного запису." + +msgid "users" +msgstr "користувачі" + +msgid "Title Extension" +msgstr "Розширення назви" + +msgid "Page Extension" +msgstr "Розширення" + +msgid "object ID" +msgstr "дентифікатор об'єкта" + +msgid "Example1 App" +msgstr "Приклад1 Програми" + +msgid "MultilingualExample1 App" +msgstr "БагатомовнийПриклад1 Програми" + +msgid "Example1" +msgstr "Приклад1" + +msgid "Examples" +msgstr "Приклади" + +msgid "Extra Context" +msgstr "Додатковий Зміст" + +msgid "Articles" +msgstr "Статті" + +msgid "Sample App" +msgstr "Приклад Прграми" + +msgid "Sample App with config" +msgstr "Демонстраційний додаток з конфігурацією" + +msgid "Sample App with excluded permissions" +msgstr "Приклад Програми з видаленими дозволами" + +msgid "Sample App 2" +msgstr "Приклад Програми 2" + +msgid "Sample App 3" +msgstr "Приклад Програми 2" + +msgid "Sample App Without Landing Page" +msgstr "Зразок додатку без цільової сторінки" + +msgid "Namespaced App" +msgstr "Простороіменна Прграма" + +msgid "Parent app" +msgstr "Батьківській додаток" + +msgid "Child app" +msgstr "Дочірній додаток" + +msgid "Variable urls-menus App" +msgstr "Змінна urls-menus App" + +msgid "sample root page" +msgstr "приклад корінної сторінки" + +msgid "sample settings page" +msgstr "приклад сторінки налаштувань" + +msgid "sample account page" +msgstr "приклад реєстраційної стрінки" + +msgid "sample my profile page" +msgstr "приклад сторінки з моїм профілем" + +msgid "Static Menu" +msgstr "Статичне меню" + +msgid "Static Menu2" +msgstr "Статичне меню2" + +msgid "Static Menu3" +msgstr "Статичне меню3" + +msgid "Static Menu4" +msgstr "Статичне меню" + +msgid "Category" +msgstr "Категорія" + +msgid "Categories" +msgstr "Категорії" + +msgid "Add Category" +msgstr "Додати категорію" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Зміна категорію" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Дякуємо за якісно проведений час з веб-сайтом сьогодні." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Успадкувати шаблон від найближчого пращура" + +msgid "UserSettings" +msgstr "Користувацькі Налаштування" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Додати плагін до заповнювача \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Додати плагін до %(plugin_name)s" + +msgid "Single placeholder" +msgstr "Один заповнювач" + +msgid "CMS - your user account was created." +msgstr "CMS - створено обліковий запис користувача." + +msgid "CMS - your user account was changed." +msgstr "CMS - ваш обліковий запис було змінено." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Заповнювач вже містить максимальну кількість розширень (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Це місце заповнення вже має максимальну кількість (%(limit)s) дозволеного " +"%(plugin_name)s в плагіні." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Не можу знайти вказаний CMS_REQUEST_IP_RESOLVER модуль: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Не можу знайти вказану CMS_REQUEST_IP_RESOLVER функцію: \"{0}\" in module " +"\"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Додати новий %s екземпляр." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Помічник вже було зареєстровано для моделі: %s" diff --git a/cms/locale/uk/LC_MESSAGES/djangojs.po b/cms/locale/uk/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..fb518b5f --- /dev/null +++ b/cms/locale/uk/LC_MESSAGES/djangojs.po @@ -0,0 +1,27 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Pylyp Dukhlii , 2014 +# Roman Kozlovskyi , 2012 +# Roman Kozlovskyi , 2012 +# Volodymyr Bergman , 2017 +# Volodymyr Bergman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Volodymyr Bergman , 2017\n" +"Language-Team: Ukrainian (http://app.transifex.com/divio/django-cms/language/uk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Ви впевнені, що хочете змінити вкладки без попереднього збереження сторінки?" diff --git a/cms/locale/ur/LC_MESSAGES/django.po b/cms/locale/ur/LC_MESSAGES/django.po new file mode 100644 index 00000000..33a12584 --- /dev/null +++ b/cms/locale/ur/LC_MESSAGES/django.po @@ -0,0 +1,1630 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Urdu (https://app.transifex.com/divio/teams/58664/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "All" +msgstr "" + +msgid "Copy permissions" +msgstr "" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "" + +msgid "Page type" +msgstr "" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "" + +msgid "Keep this field empty if standard path should be used." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +msgid "X Frame Options" +msgstr "" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +msgid "URL options" +msgstr "" + +msgid "Menu options" +msgstr "" + +msgid "Headers" +msgstr "" + +msgid "Application" +msgstr "" + +msgid "Hook application to this page." +msgstr "" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" + +msgid "Add Translation" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "" + +msgid "Placeholder selection not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "Public content" +msgstr "" + +msgid "Empty" +msgstr "" + +msgid "Create Content" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +msgid "You have no permission to paste this plugin" +msgstr "" + +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +msgid "Actions" +msgstr "" + +msgid "Empty content" +msgstr "" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +msgid "Add content" +msgstr "" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#, python-format +msgid "Add %(language)s content" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Settings" +msgstr "" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "" + +msgid "Delete Translation" +msgstr "" + +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +msgid "Please provide a valid slug." +msgstr "" + +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "" + +msgid "no limit set" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "" + +msgid "The default title" +msgstr "" + +msgid "Page Title" +msgstr "" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +msgid "Menu Title" +msgstr "" + +msgid "Overwrite what is displayed in the menu" +msgstr "" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "page content" +msgstr "" + +msgid "page contents" +msgstr "" + +msgid "default" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "Mark this page as a page type" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "No available title" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +msgid "Changed" +msgstr "" + +msgid "Deleted" +msgstr "" + +msgid "Added Page Translation" +msgstr "" + +msgid "Changed Page Translation" +msgstr "" + +msgid "Deleted Page Translation" +msgstr "" + +msgid "Added Plugin" +msgstr "" + +msgid "Changed Plugin" +msgstr "" + +msgid "Moved Plugin" +msgstr "" + +msgid "Deleted Plugin" +msgstr "" + +msgid "Cut Plugin" +msgstr "" + +msgid "Paste Plugin" +msgstr "" + +msgid "Paste to Placeholder" +msgstr "" + +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "" + +msgid "No, take me back" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "last change on" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "Main Navigation" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +msgid "In menu" +msgstr "" + +msgid "Not in menu" +msgstr "" + +msgid "View page" +msgstr "" + +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "inherited" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occurred:" +msgstr "" + +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +msgid "You have unsaved changes." +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "CMS-wide Shortcuts" +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +msgid "Focus on plugins of placeholder" +msgstr "" + +msgid "Edit plugin" +msgstr "" + +msgid "Open actions menu" +msgstr "" + +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +msgid "Let’s build something great together!" +msgstr "" + +msgid "Please log in" +msgstr "" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +msgid "User guide" +msgstr "" + +msgid "Give back" +msgstr "" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "Select what you would like to create" +msgstr "" + +msgid "Unknown" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +msgid "Sample App 3" +msgstr "" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" diff --git a/cms/locale/ur/LC_MESSAGES/djangojs.po b/cms/locale/ur/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..58ca7c8f --- /dev/null +++ b/cms/locale/ur/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Urdu (http://app.transifex.com/divio/django-cms/language/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/vi/LC_MESSAGES/django.po b/cms/locale/vi/LC_MESSAGES/django.po new file mode 100644 index 00000000..70539c5d --- /dev/null +++ b/cms/locale/vi/LC_MESSAGES/django.po @@ -0,0 +1,1748 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Vietnamese (https://app.transifex.com/divio/teams/58664/vi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "All" +msgstr "Tất cả" + +msgid "Copy permissions" +msgstr "Sao chép quyền" + +msgid "Slug" +msgstr "Slug" + +msgid "The part of the title that is used in the URL" +msgstr "Phần của tiêu đề được sử dụng trong URL" + +msgid "Page type" +msgstr "Loại trang" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "Các loại trang" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "Ghi đè URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "Để trống trường này nếu muốn sử dụng đường dẫn tiêu chuẩn." + +msgid "Start typing..." +msgstr "Bắt đầu gõ..." + +msgid "menu visibility" +msgstr "hiển thị trong menu" + +msgid "limit when this page is visible in the menu" +msgstr "giới hạn khi trang này được hiển thị trong menu" + +msgid "X Frame Options" +msgstr "Tùy chọn X Frame" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" +"Trang này có thể được nhúng vào các trang hoặc website khác hay không." + +msgid "URL options" +msgstr "Tùy chọn URL" + +msgid "Menu options" +msgstr "Tùy chọn menu" + +msgid "Headers" +msgstr "Tiêu đề HTTP" + +msgid "Application" +msgstr "Ứng dụng" + +msgid "Hook application to this page." +msgstr "Gắn ứng dụng vào trang này." + +msgid "Application configurations" +msgstr "Cấu hình ứng dụng" + +msgid "A page with this reverse URL id exists already." +msgstr "Đã tồn tại một trang với mã reverse URL này." + +msgid "Invalid application config value" +msgstr "Giá trị cấu hình ứng dụng không hợp lệ" + +msgid "An application instance using this configuration already exists." +msgstr "Đã tồn tại một thực thể ứng dụng sử dụng cấu hình này." + +msgid "An application instance with this name already exists." +msgstr "Đã tồn tại một thực thể ứng dụng với tên này." + +msgid "You can't move the home page inside another page" +msgstr "Bạn không thể di chuyển trang chủ vào bên trong một trang khác" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" +"Bạn không thể có hai trang với cùng một slug ở cùng cấp trang. Vui lòng thay" +" đổi slug của một trong các trang trước khi thử di chuyển lại." + +msgid "Yes" +msgstr "Có" + +msgid "No" +msgstr "Không" + +msgid "user" +msgstr "người dùng" + +msgid "can_view" +msgstr "có thể xem" + +msgid "Add" +msgstr "Thêm" + +msgid "Change" +msgstr "Thay đổi" + +msgid "Delete" +msgstr "Xóa" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" +"Người dùng không thể tạo trang nếu không có quyền thay đổi trang đã tạo. Yêu" +" cầu quyền chỉnh sửa." + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Người dùng không thể xóa trang nếu không có quyền thay đổi trang. Yêu cầu " +"quyền chỉnh sửa." + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" +"Người dùng không thể thiết lập quyền cho trang nếu không có quyền thay đổi " +"trang. Yêu cầu quyền chỉnh sửa." + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" +"Người dùng không thể xóa quyền của trang nếu không có quyền thay đổi trang. " +"Yêu cầu quyền chỉnh sửa." + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" +"Người dùng không thể tạo quyền cho trang nếu không có quyền thay đổi quyền " +"đã tạo. Yêu cầu quyền chỉnh sửa." + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" +"Người dùng không thể xóa quyền của trang nếu không có quyền thay đổi quyền. " +"Yêu cầu quyền chỉnh sửa." + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "Loại plugin không hợp lệ '%s'" + +msgid "Language must be set to a supported language!" +msgstr "Ngôn ngữ phải được đặt là một ngôn ngữ được hỗ trợ!" + +msgid "Parent plugin language must be same as language!" +msgstr "Ngôn ngữ của plugin cha phải giống với ngôn ngữ!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "Placeholder của plugin cha phải giống với placeholder!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "Vị trí của plugin phải lớn hơn %(position)d" + +msgid "Translations" +msgstr "" + +msgid "Advanced Settings" +msgstr "Cài đặt nâng cao" + +msgid "The page is not eligible to be home." +msgstr "Trang này không đủ điều kiện để làm trang chủ." + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "Đối tượng %(name)s với khóa chính %(key)r không tồn tại." + +msgid "error" +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "Lỗi! Bạn không có quyền di chuyển trang này. Vui lòng tải lại trang" + +msgid "Error! You don't have permissions to copy this page." +msgstr "Lỗi! Bạn không có quyền sao chép trang này." + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" +"Lỗi! Trang bạn đang dán không được dịch sang bất kỳ ngôn ngữ nào được cấu " +"hình bởi trang đích." + +msgid "You do not have permission to edit this page" +msgstr "Bạn không có quyền chỉnh sửa trang này" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "" +"(để thay đổi, trước tiên hãy hủy xuất bản phiên bản hiện đang được xuất bản " +"của trang này)" + +msgid "Add Translation" +msgstr "Thêm bản dịch" + +msgid "Add Page Copy" +msgstr "Thêm bản sao trang" + +msgid "New sub page" +msgstr "Trang con mới" + +msgid "New page" +msgstr "Trang mới" + +msgid "Database error" +msgstr "Lỗi cơ sở dữ liệu" + +msgid "Template not valid" +msgstr "Template không hợp lệ" + +msgid "Placeholder selection not valid" +msgstr "Lựa chọn placeholder không hợp lệ" + +msgid "The template was successfully changed" +msgstr "Template đã được thay đổi thành công" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "Placeholder '%s' không tồn tại trong ngôn ngữ đích" + +msgid "You do not have permission to copy these plugins." +msgstr "Bạn không có quyền sao chép các plugin này." + +msgid "You do not have permission to delete this page" +msgstr "Bạn không có quyền xóa trang này" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "Tiêu đề và các plugin với ngôn ngữ %(language)s đã bị xóa" + +msgid "Public content" +msgstr "Nội dung công khai" + +msgid "Empty" +msgstr "Trống" + +msgid "Create Content" +msgstr "Tạo nội dung" + +msgid "View restriction" +msgstr "Hạn chế xem" + +msgid "View restrictions" +msgstr "Các hạn chế xem" + +#, python-format +msgid "Field %s not found" +msgstr "Không tìm thấy trường %s" + +msgid "You do not have permission to edit this item" +msgstr "Bạn không có quyền chỉnh sửa mục này" + +msgid "You do not have permission to add a plugin" +msgstr "Bạn không có quyền thêm plugin" + +msgid "You do not have permission to copy this placeholder." +msgstr "Bạn không có quyền sao chép placeholder này." + +msgid "Plugin not found" +msgstr "Không tìm thấy plugin" + +msgid "You do not have permission to edit this plugin" +msgstr "Bạn không có quyền chỉnh sửa plugin này" + +msgid "You have no permission to paste this plugin" +msgstr "Bạn không có quyền dán plugin này" + +msgid "You have no permission to paste this placeholder" +msgstr "Bạn không có quyền dán placeholder này" + +msgid "You have no permission to move this plugin" +msgstr "Bạn không có quyền di chuyển plugin này" + +msgid "You have no permission to cut this plugin" +msgstr "Bạn không có quyền cắt plugin này" + +msgid "You do not have permission to delete this plugin" +msgstr "Bạn không có quyền xóa plugin này" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "Plugin %(name)s \"%(obj)s\" đã được xóa thành công." + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "Không thể xóa %(name)s" + +msgid "Are you sure?" +msgstr "Bạn có chắc chắn không?" + +msgid "You do not have permission to clear this placeholder" +msgstr "Bạn không có quyền xóa nội dung placeholder này" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "Placeholder \"%(obj)s\" đã được xóa nội dung thành công." + +msgid "placeholder" +msgstr "placeholder" + +msgid "Page permissions" +msgstr "Quyền của trang" + +msgid "User & Group permissions" +msgstr "Quyền của người dùng & nhóm" + +msgid "Page permissions management" +msgstr "Quản lý quyền của trang" + +msgid "Actions" +msgstr "Hành động" + +msgid "Empty content" +msgstr "Nội dung trống" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "Thuộc tính %(object_name)s" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "Thêm %(object_name)s mới" + +msgid "Add content" +msgstr "Thêm nội dung" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" +"Nội dung cho ngôn ngữ hiện tại đã được thay đổi. Nhấp \"Hủy\" để quay lại " +"biểu mẫu và lưu thay đổi. Nhấp \"OK\" để bỏ qua các thay đổi." + +#, python-format +msgid "Add %(language)s content" +msgstr "Thêm nội dung %(language)s" + +msgid "Preview" +msgstr "Xem trước" + +msgid "Settings" +msgstr "Cài đặt" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" +"Ngôn ngữ không hợp lệ %(value)s. Không thể xử lý biểu mẫu này. Hãy thử thay " +"đổi ngôn ngữ." + +msgid "" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "Không tìm thấy apphook đã đăng ký \"%r\"" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "Placeholder" + +msgid "Create" +msgstr "Tạo" + +msgid "Edit" +msgstr "Chỉnh sửa" + +msgid "Structure" +msgstr "Cấu trúc" + +msgid "Content" +msgstr "Nội dung" + +msgid "Sites" +msgstr "Các trang web" + +msgid "Admin Sites" +msgstr "Quản trị trang web" + +msgid "Administration" +msgstr "Quản trị" + +msgid "User settings" +msgstr "Cài đặt người dùng" + +msgid "Clipboard..." +msgstr "Bộ nhớ tạm..." + +msgid "Clear clipboard" +msgstr "Xóa bộ nhớ tạm" + +msgid "Disable toolbar" +msgstr "Tắt thanh công cụ" + +msgid "Shortcuts..." +msgstr "Phím tắt..." + +msgid "Users" +msgstr "Người dùng" + +#, python-format +msgid "Logout %s" +msgstr "Đăng xuất %s" + +msgid "Logout" +msgstr "Đăng xuất" + +msgid "Language" +msgstr "Ngôn ngữ" + +msgid "Delete Translation" +msgstr "Xóa bản dịch" + +msgid "Copy all plugins" +msgstr "Sao chép tất cả plugin" + +#, python-format +msgid "from %s" +msgstr "từ %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "Bạn có chắc chắn muốn sao chép tất cả plugin từ %s không?" + +msgid "Pages" +msgstr "Các trang" + +msgid "Page" +msgstr "Trang" + +msgid "Create Page" +msgstr "Tạo trang" + +msgid "New Page" +msgstr "Trang mới" + +msgid "New Sub Page" +msgstr "Trang con mới" + +msgid "Duplicate this Page" +msgstr "Nhân bản trang này" + +msgid "Page settings" +msgstr "Cài đặt trang" + +msgid "Advanced settings" +msgstr "Cài đặt nâng cao" + +msgid "Templates" +msgstr "Mẫu (template)" + +msgid "Placeholders" +msgstr "" + +msgid "Hide in navigation" +msgstr "Ẩn khỏi điều hướng" + +msgid "Display in navigation" +msgstr "Hiển thị trong điều hướng" + +msgid "Delete page" +msgstr "Xóa trang" + +msgid "Create a new page next to the current page." +msgstr "Tạo một trang mới bên cạnh trang hiện tại." + +msgid "Create a page below the current page." +msgstr "Tạo một trang bên dưới trang hiện tại." + +msgid "Select a valid site" +msgstr "Chọn một trang web hợp lệ" + +msgid "Select a valid page" +msgstr "Chọn một trang hợp lệ" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" +"Trang %(conflict_page)s có cùng url '%(url)s' với trang hiện tại " +"\"%(instance)s\"." + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "Trang %(conflict_page)s có cùng url '%(url)s' với trang hiện tại." + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" +"Tùy chọn. Nếu được cung cấp, sẽ tự động được thêm vào trong một plugin văn " +"bản mới." + +msgid "Provide a title for the new page." +msgstr "Cung cấp tiêu đề cho trang mới." + +msgid "Leave empty for automatic slug, or override as required." +msgstr "Để trống để tạo slug tự động, hoặc ghi đè nếu cần." + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "Không thể tự động tạo slug. Vui lòng cung cấp thủ công." + +msgid "Please provide a valid slug." +msgstr "Vui lòng cung cấp một slug hợp lệ." + +msgid "You don't have the permissions required to add a page." +msgstr "Bạn không có quyền cần thiết để thêm trang." + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "vị trí" + +msgid "language" +msgstr "ngôn ngữ" + +msgid "plugin_name" +msgstr "tên plugin" + +msgid "creation date" +msgstr "ngày tạo" + +msgid "can edit" +msgstr "có thể chỉnh sửa" + +msgid "can add" +msgstr "có thể thêm" + +msgid "can delete" +msgstr "có thể xóa" + +msgid "can change advanced settings" +msgstr "có thể thay đổi cài đặt nâng cao" + +msgid "can publish" +msgstr "có thể xuất bản" + +msgid "can change permissions" +msgstr "có thể thay đổi quyền" + +msgid "can move" +msgstr "có thể di chuyển" + +msgid "view restricted" +msgstr "bị hạn chế xem" + +msgid "can recover pages" +msgstr "có thể khôi phục trang" + +msgid "group" +msgstr "nhóm" + +msgid "sites" +msgstr "các trang web" + +msgid "created by" +msgstr "được tạo bởi" + +msgid "changed by" +msgstr "được thay đổi bởi" + +msgid "publication date" +msgstr "ngày xuất bản" + +msgid "publication end date" +msgstr "ngày kết thúc xuất bản" + +msgid "in navigation" +msgstr "trong điều hướng" + +msgid "soft root" +msgstr "gốc mềm" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "menu đính kèm" + +msgid "template" +msgstr "template" + +msgid "login required" +msgstr "yêu cầu đăng nhập" + +msgid "application" +msgstr "ứng dụng" + +msgid "application instance name" +msgstr "tên thực thể ứng dụng" + +msgid "site" +msgstr "trang web" + +msgid "Grant on" +msgstr "Cấp quyền cho" + +msgid "page" +msgstr "trang" + +msgid "no limit set" +msgstr "không đặt giới hạn" + +msgid "for logged in users only" +msgstr "chỉ dành cho người dùng đã đăng nhập" + +msgid "for anonymous users only" +msgstr "chỉ dành cho người dùng ẩn danh" + +msgid "Inherit from parent page" +msgstr "Kế thừa từ trang cha" + +msgid "Deny" +msgstr "Từ chối" + +msgid "Only this website" +msgstr "Chỉ website này" + +msgid "Allow" +msgstr "Cho phép" + +msgid "title" +msgstr "tiêu đề" + +msgid "The default title" +msgstr "Tiêu đề mặc định" + +msgid "Page Title" +msgstr "Tiêu đề trang" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "Ghi đè nội dung hiển thị ở phía trên trình duyệt hoặc trong dấu trang" + +msgid "Menu Title" +msgstr "Tiêu đề menu" + +msgid "Overwrite what is displayed in the menu" +msgstr "Ghi đè nội dung hiển thị trong menu" + +msgid "Description meta tag" +msgstr "Thẻ meta mô tả" + +msgid "A description of the page used by search engines." +msgstr "Mô tả của trang được các công cụ tìm kiếm sử dụng." + +msgid "redirect" +msgstr "chuyển hướng" + +msgid "Redirects to this URL." +msgstr "Chuyển hướng đến URL này." + +msgid "All ancestors will not be displayed in the navigation" +msgstr "Tất cả các trang tổ tiên sẽ không được hiển thị trong điều hướng" + +msgid "The template used to render the content." +msgstr "Template được sử dụng để hiển thị nội dung." + +msgid "page content" +msgstr "nội dung trang" + +msgid "page contents" +msgstr "các nội dung trang" + +msgid "default" +msgstr "mặc định" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" +"Một mã định danh duy nhất được sử dụng với templatetag page_url để liên kết " +"đến trang này" + +msgid "Mark this page as a page type" +msgstr "Đánh dấu trang này là một loại trang" + +msgid "pages" +msgstr "các trang" + +msgid "No available title" +msgstr "Không có tiêu đề" + +msgid "slug" +msgstr "slug" + +msgid "Path" +msgstr "Đường dẫn" + +msgid "Current page" +msgstr "Trang hiện tại" + +msgid "Page children (immediate)" +msgstr "Trang con (trực tiếp)" + +msgid "Page and children (immediate)" +msgstr "Trang và các trang con (trực tiếp)" + +msgid "Page descendants" +msgstr "Các trang hậu duệ" + +msgid "Page and descendants" +msgstr "Trang và các trang hậu duệ" + +msgid "on page level" +msgstr "ở cấp trang" + +msgid "frontend view restriction" +msgstr "hạn chế xem ở giao diện người dùng" + +msgid "Please select user or group." +msgstr "Vui lòng chọn người dùng hoặc nhóm." + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Người dùng không thể xuất bản trang nếu không có quyền thay đổi trang. Yêu " +"cầu quyền chỉnh sửa." + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" +"Người dùng không thể thay đổi cài đặt nâng cao của trang nếu không có quyền " +"thay đổi trang. Yêu cầu quyền chỉnh sửa." + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" +"Người dùng không thể thay đổi quyền của trang nếu không có quyền thay đổi " +"trang. Yêu cầu quyền chỉnh sửa." + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" +"Người dùng không thể di chuyển trang nếu không có quyền thay đổi trang. Yêu " +"cầu quyền chỉnh sửa." + +msgid "can recover any deleted page" +msgstr "có thể khôi phục bất kỳ trang nào đã xóa" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" +"Nếu không chọn gì, người dùng được cấp quyền cho tất cả các trang web." + +msgid "Page global permission" +msgstr "Quyền toàn cục của trang" + +msgid "Pages global permissions" +msgstr "Các quyền toàn cục của trang" + +msgid "Page permission" +msgstr "Quyền của trang" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" +"Thêm quyền cho trang cũng yêu cầu quyền truy cập vào các trang con hoặc " +"trang hậu duệ, nếu không trang được thêm sẽ không thể được thay đổi bởi " +"người tạo nó." + +msgid "User (page)" +msgstr "Người dùng (trang)" + +msgid "Users (page)" +msgstr "Người dùng (trang)" + +msgid "User group (page)" +msgstr "Nhóm người dùng (trang)" + +msgid "User groups (page)" +msgstr "Các nhóm người dùng (trang)" + +msgid "slot" +msgstr "khe" + +msgid "width" +msgstr "chiều rộng" + +msgid "Edit object" +msgstr "" + +msgid "This is an external placeholder" +msgstr "" + +msgid "plugin" +msgstr "" + +msgid "plugins" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "Ngôn ngữ cho giao diện quản trị và thanh công cụ" + +msgid "user setting" +msgstr "cài đặt người dùng" + +msgid "user settings" +msgstr "các cài đặt người dùng" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "Advanced options" +msgstr "Tùy chọn nâng cao" + +msgid "Generic" +msgstr "Chung" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" đã được thay đổi thành công." + +msgid "There are no further settings for this plugin. Please press save." +msgstr "Không còn cài đặt nào khác cho plugin này. Vui lòng nhấn lưu." + +msgid "Moved" +msgstr "Đã di chuyển" + +msgid "Changed" +msgstr "Đã thay đổi" + +msgid "Deleted" +msgstr "Đã xóa" + +msgid "Added Page Translation" +msgstr "Đã thêm bản dịch trang" + +msgid "Changed Page Translation" +msgstr "Đã thay đổi bản dịch trang" + +msgid "Deleted Page Translation" +msgstr "Đã xóa bản dịch trang" + +msgid "Added Plugin" +msgstr "Đã thêm plugin" + +msgid "Changed Plugin" +msgstr "Đã thay đổi plugin" + +msgid "Moved Plugin" +msgstr "Đã di chuyển plugin" + +msgid "Deleted Plugin" +msgstr "Đã xóa plugin" + +msgid "Cut Plugin" +msgstr "Đã cắt plugin" + +msgid "Paste Plugin" +msgstr "Đã dán plugin" + +msgid "Paste to Placeholder" +msgstr "Đã dán vào placeholder" + +msgid "Added plugins to placeholder from clipboard" +msgstr "Đã thêm plugin vào placeholder từ bộ nhớ tạm" + +msgid "Cleared Placeholder" +msgstr "Đã xóa nội dung placeholder" + +msgid "Save" +msgstr "Lưu" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "Một số trường không thể thay đổi vì chúng là nội dung chỉ đọc." + +#, python-format +msgid "Log in to administration here." +msgstr "Đăng nhập vào trang quản trị tại đây." + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "URL đăng nhập: %(login_url)s" + +msgid "Username:" +msgstr "Tên đăng nhập:" + +msgid "Password:" +msgstr "Mật khẩu:" + +msgid "Add a page" +msgstr "Thêm một trang" + +msgid "Change a page" +msgstr "Thay đổi một trang" + +msgid "Home" +msgstr "Trang chủ" + +msgid "View on site" +msgstr "Xem trên trang web" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Vui lòng sửa các lỗi bên dưới." + +msgid "All permissions" +msgstr "Tất cả quyền" + +msgid "Loading..." +msgstr "Đang tải..." + +msgid "Save and continue editing" +msgstr "Lưu và tiếp tục chỉnh sửa" + +#, 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 "" +"Bạn có chắc chắn muốn xóa %(object_name)s \"%(escaped_object)s\" không? Tất " +"cả các mục liên quan sau đây sẽ bị xóa:" + +msgid "Yes, I’m sure" +msgstr "Có, tôi chắc chắn" + +msgid "No, take me back" +msgstr "Không, đưa tôi quay lại" + +msgid "Summary" +msgstr "Tóm tắt" + +msgid "User" +msgstr "Người dùng" + +msgid "Group" +msgstr "Nhóm" + +msgid "Can edit" +msgstr "Có thể chỉnh sửa" + +msgid "Can add" +msgstr "Có thể thêm" + +msgid "Can delete" +msgstr "Có thể xóa" + +msgid "Can publish" +msgstr "Có thể xuất bản" + +msgid "Can change permissions" +msgstr "Có thể thay đổi quyền" + +msgid "Can move" +msgstr "Có thể di chuyển" + +msgid "Can view" +msgstr "Có thể xem" + +msgid "(global)" +msgstr "(toàn cục)" + +msgid "(current)" +msgstr "(hiện tại)" + +msgid "Page doesn't inherit any permissions." +msgstr "Trang không kế thừa bất kỳ quyền nào." + +msgid "Edit model" +msgstr "Chỉnh sửa model" + +msgid "Save as new" +msgstr "Lưu thành mới" + +msgid "Save and add another" +msgstr "Lưu và thêm cái khác" + +msgid "Copy" +msgstr "Sao chép" + +msgid "Cut" +msgstr "Cắt" + +msgid "Paste" +msgstr "Dán" + +msgid "Set as home" +msgstr "Đặt làm trang chủ" + +msgid "is restricted" +msgstr "bị hạn chế" + +msgid "last change by" +msgstr "thay đổi cuối bởi" + +msgid "last change on" +msgstr "thay đổi cuối vào" + +msgid "meta" +msgstr "meta" + +msgid "List of pages" +msgstr "Danh sách các trang" + +msgid "Search" +msgstr "Tìm kiếm" + +msgid "Page Tree" +msgstr "Cây trang" + +msgid "Reset filter" +msgstr "Đặt lại bộ lọc" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" Khôi phục %(name)s đã xóa\n" +" " + +msgid "Main Navigation" +msgstr "Điều hướng chính" + +msgid "Options" +msgstr "Tùy chọn" + +msgid "Successfully moved" +msgstr "Đã di chuyển thành công" + +msgid "Changes within the tree might require a refresh." +msgstr "Các thay đổi trong cây có thể yêu cầu làm mới." + +msgid "Error:" +msgstr "Lỗi:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" +"Không thể sao chép trang này vì có một ứng dụng được gắn vào nó. Xem Cài đặt" +" nâng cao của trang để quản lý apphook." + +msgid "Are you sure you want to § this page?" +msgstr "Bạn có chắc chắn muốn § trang này không?" + +msgid "Reload" +msgstr "Tải lại" + +msgid "New node" +msgstr "Nút mới" + +msgid "nodes" +msgstr "các nút" + +msgid "View" +msgstr "Xem" + +msgid "Menu" +msgstr "Menu" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" Chưa có %(object)s nào.\n" +"
\n" +" Thêm %(object)s ngay.\n" +" " + +msgid "Copy options" +msgstr "Tùy chọn sao chép" + +msgid "Choose copy options" +msgstr "Chọn tùy chọn sao chép" + +msgid "Close" +msgstr "Đóng" + +msgid "Legend" +msgstr "Chú thích" + +msgid "In menu" +msgstr "Trong menu" + +msgid "Not in menu" +msgstr "Không trong menu" + +msgid "View page" +msgstr "Xem trang" + +msgid "Softroot" +msgstr "Gốc mềm" + +msgid "Apphook" +msgstr "Apphook" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "Ứng dụng: %(apphook)s" + +msgid "in menu" +msgstr "trong menu" + +msgid "not in menu" +msgstr "không trong menu" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "Cài đặt trang (nhấn SHIFT để xem cài đặt nâng cao)" + +msgid "Permissions" +msgstr "Quyền" + +msgid "inherited" +msgstr "được kế thừa" + +msgid "This page has no preview!" +msgstr "Trang này không có bản xem trước!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "Có thể apphook được gắn không cung cấp nội dung cho gốc của nó." + +msgid "It is being redirected to:" +msgstr "Đang được chuyển hướng đến:" + +msgid "Clipboard" +msgstr "Bộ nhớ tạm" + +msgid "Add plugin" +msgstr "Thêm plugin" + +msgid "Copy all" +msgstr "Sao chép tất cả" + +msgid "Copy from" +msgstr "Sao chép từ" + +msgid "Empty all" +msgstr "Làm trống tất cả" + +msgid "Filter plugins..." +msgstr "Lọc plugin..." + +msgid "Expand all" +msgstr "Mở rộng tất cả" + +msgid "Collapse all" +msgstr "Thu gọn tất cả" + +msgid "You cannot add plugins to this plugin." +msgstr "Bạn không thể thêm plugin vào plugin này." + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" +"Plugin này không thể được di chuyển hoặc chỉnh sửa bên ngoài plugin cha" + +msgid "Clipboard is empty." +msgstr "Bộ nhớ tạm trống." + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "Plugin này không cho phép plugin loại này làm plugin lồng nhau." + +msgid "This plugin cannot have nested plugins." +msgstr "Plugin này không thể có plugin lồng nhau." + +msgid "Highlight" +msgstr "Làm nổi bật" + +msgid "Available plugins" +msgstr "Các plugin có sẵn" + +msgid "Toggle structure" +msgstr "Bật/tắt cấu trúc" + +msgid "Login" +msgstr "Đăng nhập" + +msgid "Add plugin to" +msgstr "Thêm plugin vào" + +msgid "More" +msgstr "Thêm" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"Phiên bản phát triển sử dụng django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" + +msgid "Cancel" +msgstr "Hủy" + +msgid "The following error occurred:" +msgstr "Đã xảy ra lỗi sau:" + +msgid "Action successful." +msgstr "Hành động thành công." + +msgid "Are you sure you want to delete this plugin?" +msgstr "Bạn có chắc chắn muốn xóa plugin này không?" + +msgid "Are you sure you want to publish this page?" +msgstr "Bạn có chắc chắn muốn xuất bản trang này không?" + +msgid "Plugin will be added here" +msgstr "Plugin sẽ được thêm vào đây" + +msgid "You have unsaved changes." +msgstr "Bạn có những thay đổi chưa được lưu." + +msgid "Loading" +msgstr "Đang tải" + +msgid "Are you sure you want to abandon these changes?" +msgstr "Bạn có chắc chắn muốn bỏ qua những thay đổi này không?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" +"Không thể tải biểu mẫu. Vui lòng kiểm tra xem máy chủ có đang chạy đúng cách" +" không." + +msgid "Most used" +msgstr "Được dùng nhiều nhất" + +msgid "Shortcuts" +msgstr "Phím tắt" + +msgid "The page was changed in the meantime, reloading..." +msgstr "Trang đã bị thay đổi trong thời gian đó, đang tải lại..." + +msgid "CMS-wide Shortcuts" +msgstr "Phím tắt toàn CMS" + +msgid "Bring up this help dialog" +msgstr "Hiển thị hộp thoại trợ giúp này" + +msgid "Close/cancel" +msgstr "Đóng/hủy" + +msgid "Toggle structure mode" +msgstr "Bật/tắt chế độ cấu trúc" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "Bật/tắt chế độ cấu trúc và làm nổi bật plugin đang di chuột qua" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "Tập trung vào thanh công cụ" + +msgid "Focus on placeholders" +msgstr "Tập trung vào các placeholder" + +msgid "Move to next/previous element" +msgstr "Chuyển đến phần tử tiếp theo/trước đó" + +msgid "Focus on plugins of placeholder" +msgstr "Tập trung vào các plugin của placeholder" + +msgid "Edit plugin" +msgstr "Chỉnh sửa plugin" + +msgid "Open actions menu" +msgstr "Mở menu hành động" + +msgid "Expand/collapse" +msgstr "Mở rộng/thu gọn" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" +"Đăng nhập thất bại. Vui lòng kiểm tra thông tin đăng nhập " +"và thử lại." + +msgid "Double-click to edit" +msgstr "Nhấp đúp để chỉnh sửa" + +msgid "Tap to edit" +msgstr "Chạm để chỉnh sửa" + +msgid "Click to go back" +msgstr "Nhấp để quay lại" + +msgid "Click to go forward" +msgstr "Nhấp để tiến tới" + +msgid "Minimize" +msgstr "Thu nhỏ" + +msgid "Maximize" +msgstr "Phóng to" + +msgid "Placeholder not editable" +msgstr "" + +msgid "Drop a plugin here" +msgstr "Thả một plugin vào đây" + +msgid "Welcome to your new django CMS installation!" +msgstr "" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "Phiên bản %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "Hãy cùng nhau xây dựng điều gì đó tuyệt vời!" + +msgid "Please log in" +msgstr "Vui lòng đăng nhập" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" Thêm trang đầu tiên của bạn\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

Hỗ trợ tài chính

\n" +"

\n" +" Sự đóng góp của bạn mang lại lợi ích trực tiếp cho sản phẩm, chủ yếu thông qua\n" +" Chương trình Fellowship của django CMS!\n" +"

\n" +"

\n" +" Một cách nhanh chóng để bạn hoặc tổ chức của bạn quyên góp là tại\n" +" Github Sponsors.\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

Tham gia với chúng tôi

\n" +"

\n" +" Hiệp hội django CMS là một tổ chức phi lợi nhuận tài trợ và định hướng cho sự phát triển của\n" +" django CMS.\n" +"

\n" +"

\n" +" Bạn có thể tham gia với tư cách cá nhân hoặc\n" +" tổ chức.\n" +"

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

Đóng góp

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "Ghi chú cài đặt" + +msgid "Support" +msgstr "Hỗ trợ" + +msgid "Documentation" +msgstr "Tài liệu" + +msgid "User guide" +msgstr "Hướng dẫn người dùng" + +msgid "Give back" +msgstr "Đóng góp lại" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

Nếu bạn không thấy logo django CMS ở phía trên, hãy chắc chắn\n" +" rằng bạn đã liên kết thư mục static/cms với các tệp\n" +" tĩnh của bạn.

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

Bạn đang thấy thông báo này vì bạn có\n" +" DEBUG = True trong tệp cài đặt django của bạn và\n" +" chưa thêm bất kỳ trang nào.\n" +"

\n" +" " + +msgid "Welcome to django CMS" +msgstr "Chào mừng đến với django CMS" + +msgid "Add Another" +msgstr "Thêm cái khác" + +msgid "Back" +msgstr "Quay lại" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "Vui lòng chọn một tùy chọn bên dưới để tiếp tục sang bước tiếp theo." + +msgid "Next" +msgstr "Tiếp theo" + +msgid "Select what you would like to create" +msgstr "Chọn nội dung bạn muốn tạo" + +msgid "Unknown" +msgstr "Không xác định" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "Không tìm thấy trang trên %(domain)s" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"Một template tag không thể tìm thấy trang với các đối số tra cứu `%(page_lookup)s\n" +"`. URL của yêu cầu là: http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "Hai cột" + +msgid "Three columns" +msgstr "Ba cột" + +msgid "username" +msgstr "tên đăng nhập" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" +"Bắt buộc. Tối đa 300 ký tự. Chỉ gồm chữ cái, số và các ký tự @/./+/-/_" + +msgid "Enter a valid username." +msgstr "Nhập một tên đăng nhập hợp lệ." + +msgid "email address" +msgstr "địa chỉ email" + +msgid "staff status" +msgstr "trạng thái nhân viên" + +msgid "Designates whether the user can log into this admin site." +msgstr "" +"Xác định liệu người dùng có thể đăng nhập vào trang quản trị này hay không." + +msgid "active" +msgstr "đang hoạt động" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Xác định liệu người dùng này có được coi là đang hoạt động hay không. Bỏ " +"chọn mục này thay vì xóa tài khoản." + +msgid "users" +msgstr "người dùng" + +msgid "Title Extension" +msgstr "Phần mở rộng tiêu đề" + +msgid "Page Extension" +msgstr "Phần mở rộng trang" + +msgid "object ID" +msgstr "ID đối tượng" + +msgid "Example1 App" +msgstr "Ứng dụng Example1" + +msgid "MultilingualExample1 App" +msgstr "Ứng dụng MultilingualExample1" + +msgid "Example1" +msgstr "Example1" + +msgid "Examples" +msgstr "Các ví dụ" + +msgid "Extra Context" +msgstr "Ngữ cảnh bổ sung" + +msgid "Articles" +msgstr "Bài viết" + +msgid "Sample App" +msgstr "Ứng dụng mẫu" + +msgid "Sample App with config" +msgstr "Ứng dụng mẫu có cấu hình" + +msgid "Sample App with excluded permissions" +msgstr "Ứng dụng mẫu với các quyền bị loại trừ" + +msgid "Sample App 2" +msgstr "Ứng dụng mẫu 2" + +msgid "Sample App 3" +msgstr "Ứng dụng mẫu 3" + +msgid "Sample App Without Landing Page" +msgstr "" + +msgid "Namespaced App" +msgstr "Ứng dụng có namespace" + +msgid "Parent app" +msgstr "Ứng dụng cha" + +msgid "Child app" +msgstr "Ứng dụng con" + +msgid "Variable urls-menus App" +msgstr "Ứng dụng urls-menus biến đổi" + +msgid "sample root page" +msgstr "trang gốc mẫu" + +msgid "sample settings page" +msgstr "trang cài đặt mẫu" + +msgid "sample account page" +msgstr "trang tài khoản mẫu" + +msgid "sample my profile page" +msgstr "trang hồ sơ của tôi mẫu" + +msgid "Static Menu" +msgstr "Menu tĩnh" + +msgid "Static Menu2" +msgstr "Menu tĩnh 2" + +msgid "Static Menu3" +msgstr "Menu tĩnh 3" + +msgid "Static Menu4" +msgstr "Menu tĩnh 4" + +msgid "Category" +msgstr "Danh mục" + +msgid "Categories" +msgstr "Các danh mục" + +msgid "Add Category" +msgstr "Thêm danh mục" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "Thay đổi danh mục" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Cảm ơn bạn đã dành thời gian quý báu với trang web hôm nay." + +msgid "Inherit the template of the nearest ancestor" +msgstr "Kế thừa template của trang tổ tiên gần nhất" + +msgid "UserSettings" +msgstr "Cài đặt người dùng" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "Thêm plugin vào placeholder \"%(placeholder_label)s\"" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "Thêm plugin vào %(plugin_name)s" + +msgid "Single placeholder" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "CMS - tài khoản người dùng của bạn đã được tạo." + +msgid "CMS - your user account was changed." +msgstr "CMS - tài khoản người dùng của bạn đã được thay đổi." + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "Placeholder này đã có số lượng plugin tối đa (%s)." + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" +"Placeholder này đã có số lượng tối đa (%(limit)s) plugin %(plugin_name)s " +"được phép." + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "Không thể tìm thấy module CMS_REQUEST_IP_RESOLVER được chỉ định: \"{0}\"." + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" +"Không thể tìm thấy hàm CMS_REQUEST_IP_RESOLVER được chỉ định: \"{0}\" trong " +"module \"{1}\"." + +#, python-format +msgid "Create a new %s instance." +msgstr "Tạo một thực thể %s mới." + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "Một wizard đã được đăng ký cho model: %s" diff --git a/cms/locale/vi/LC_MESSAGES/djangojs.po b/cms/locale/vi/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..40297cb1 --- /dev/null +++ b/cms/locale/vi/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Vietnamese (http://app.transifex.com/divio/django-cms/language/vi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "Bạn có chắc chắn muốn chuyển tab mà không lưu trang trước không?" diff --git a/cms/locale/vi_VN/LC_MESSAGES/django.po b/cms/locale/vi_VN/LC_MESSAGES/django.po new file mode 100644 index 00000000..119e7ffe --- /dev/null +++ b/cms/locale/vi_VN/LC_MESSAGES/django.po @@ -0,0 +1,2263 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Language-Team: Vietnamese (Viet Nam) (https://app.transifex.com/divio/teams/58664/vi_VN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi_VN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "" + +#: admin/forms.py:712 +msgid "Application" +msgstr "" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "" + +#: admin/utils.py:810 +msgid "" +msgstr "" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "" + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "" + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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 "" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "by template" +#~ msgstr "" + +#~ msgid "by code" +#~ msgstr "" + +#~ msgid "static placeholder name" +#~ msgstr "" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "" + +#~ msgid "placeholder code" +#~ msgstr "" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "" + +#~ msgid "placeholder content" +#~ msgstr "" + +#~ msgid "creation_method" +#~ msgstr "" + +#~ msgid "static placeholder" +#~ msgstr "" + +#~ msgid "static placeholders" +#~ msgstr "" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "" + +#~ msgid "Soft root" +#~ msgstr "" + +#~ msgid "Redirect" +#~ msgstr "" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "" + +#~ msgid "Create Alias" +#~ msgstr "" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "" + +#~ msgid "description" +#~ msgstr "" + +#~ msgid "The text displayed in search engines." +#~ msgstr "" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "" + +#~ msgid "Add your first page" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "" diff --git a/cms/locale/vi_VN/LC_MESSAGES/djangojs.po b/cms/locale/vi_VN/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..723286be --- /dev/null +++ b/cms/locale/vi_VN/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Vietnamese (Viet Nam) (http://app.transifex.com/divio/django-cms/language/vi_VN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi_VN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/zh-Hans/LC_MESSAGES/django.po b/cms/locale/zh-Hans/LC_MESSAGES/django.po new file mode 100644 index 00000000..ef8f8571 --- /dev/null +++ b/cms/locale/zh-Hans/LC_MESSAGES/django.po @@ -0,0 +1,1984 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# brad luo , 2019 +# leaf fly , 2016 +# spaceoi , 2016 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-05 12:20+0000\n" +"PO-Revision-Date: 2020-10-29 15:33+0000\n" +"Last-Translator: Aiky30 \n" +"Language-Team: Chinese Simplified (http://www.transifex.com/divio/django-cms/language/zh-Hans/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh-Hans\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "All" +msgstr "全部" + +msgid "Copy permissions" +msgstr "复制权限" + +msgid "Title" +msgstr "标题" + +msgid "The default title" +msgstr "默认标题" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "在URL中使用的标题部分" + +msgid "Menu Title" +msgstr "菜单标题" + +msgid "Overwrite what is displayed in the menu" +msgstr "覆盖菜单中显示的内容" + +msgid "Page Title" +msgstr "页标题" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "覆盖浏览器顶部或书签中显示的内容" + +msgid "Description meta tag" +msgstr "meta(元)标签描述" + +msgid "A description of the page used by search engines." +msgstr "搜索引擎使用的页面描述。" + +msgid "Slug must not be empty." +msgstr "Slug不能为空" + +msgid "Page type" +msgstr "页面类型" + +msgid "Page Types" +msgstr "页面类型" + +msgid "Overwrite URL" +msgstr "重写 URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "如果应该使用标准路径,则保持该字段为空。" + +#| msgid "softroot" +msgid "Soft root" +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "Redirect" +msgstr "重定向" + +msgid "Redirects to this URL." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +#| msgid "Copy options" +msgid "URL options" +msgstr "" + +#| msgid "Copy options" +msgid "Menu options" +msgstr "" + +msgid "Application" +msgstr "应用程序" + +msgid "Hook application to this page." +msgstr "将应用程序连接到此页面。" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +#| msgid "Application configurations" +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "用户没有权限增加一个页面。需要编辑权限。" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +#| msgid "Parent plugin language must be same as language!" +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +#| msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "错误!您没有权限移动该页面。请刷新页面" + +#| msgid "You do not have permission to clear this placeholder" +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "新建子页面" + +msgid "New page" +msgstr "新建页面" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "无效模板" + +msgid "The template was successfully changed" +msgstr "模板已修改成功" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +#| msgid "You do not have permission to delete this plugin" +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "You do not have permission to change this page's in_navigation status" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +#| msgid "You do not have permission to clear this placeholder" +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +#| msgid "You have no permission to move this plugin" +msgid "You have no permission to paste this plugin" +msgstr "" + +#| msgid "You have no permission to move this plugin" +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +#| msgid "You have no permission to move this plugin" +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Alias" +msgstr "" + +msgid "Create Alias" +msgstr "" + +#, python-format +msgid "" +"This is an alias reference, you can edit the content only on the %(page_title)s page." +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "语言" + +#| msgid "Add %(language)s Translation" +msgid "Add Translation" +msgstr "" + +#| msgid "Delete %(language)s Translation" +msgid "Delete Translation" +msgstr "" + +#| msgid "Copy all plugins from %s" +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +#| msgid "Are you sure you want copy all plugins from %s?" +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +#| msgid "Create" +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Edit this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +#, python-format +#| msgid "" +#| "(pages)s has the same url '%(url)s' as current page \"%(instance)s" +#| msgid_plural "" +#| "%(pages)s have the same url '%(url)s' as current page \"%(instance)s" +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +#| msgid "" +#| "(pages)s has the same url '%(url)s' as current page \"%(instance)s" +#| msgid_plural "" +#| "%(pages)s have the same url '%(url)s' as current page \"%(instance)s" +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#| msgid "You do not have permission to add a plugin" +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "default" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +#| msgid "Please select user or group first." +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "款" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "" + +msgid "overwrite the title (html title tag)" +msgstr "" + +msgid "overwrite the title in the menu" +msgstr "" + +msgid "description" +msgstr "" + +msgid "The text displayed in search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "" + +#, python-format +#| msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +#| msgid "Change" +msgid "Changed" +msgstr "" + +#| msgid "Delete" +msgid "Deleted" +msgstr "" + +#| msgid "Add %(language)s Translation" +msgid "Added Page Translation" +msgstr "" + +#| msgid "Delete %(language)s Translation" +msgid "Changed Page Translation" +msgstr "" + +#| msgid "Delete %(language)s Translation" +msgid "Deleted Page Translation" +msgstr "" + +#| msgid "Add plugin" +msgid "Added Plugin" +msgstr "" + +#| msgid "Change" +msgid "Changed Plugin" +msgstr "" + +#| msgid "Add plugin" +msgid "Moved Plugin" +msgstr "" + +#| msgid "Delete page" +msgid "Deleted Plugin" +msgstr "" + +#| msgid "Add plugin" +msgid "Cut Plugin" +msgstr "" + +#| msgid "Add plugin" +msgid "Paste Plugin" +msgstr "" + +#| msgid "static placeholder" +msgid "Paste to Placeholder" +msgstr "" + +#| msgid "Copied plugins to %(placeholder)s" +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#| msgid "Placeholder" +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +#| msgid "Add Page" +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +#| msgid "Save as new" +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +#| msgid "Page Title" +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "" +"\n" +" New Page\n" +" " +msgstr "" + +#| msgid "in navigation" +msgid "Main Navigation" +msgstr "" + +#| msgid "Actions" +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +#| msgid "New Page" +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +#| msgid "" +#| " JavaScript seems to be disabled so please\n" +#| " add a page manually.\n" +#| " " +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +#| msgid "published" +msgid "Published" +msgstr "" + +#| msgid "unpublished" +msgid "Unpublished" +msgstr "" + +msgid "Empty" +msgstr "" + +#| msgid "in menu" +msgid "In menu" +msgstr "" + +#| msgid "not in menu" +msgid "Not in menu" +msgstr "" + +#| msgid "New page" +msgid "View page" +msgstr "" + +#| msgid "softroot" +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +#| msgid "Page settings (SHIFT-click for advanced settings)" +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "This is a static placeholder" +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +#| msgid "Structure" +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +#| msgid "Development version using django CMS %(cms_version)s" +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occured:" +msgstr "" + +#| msgid "Action successfull... reloading." +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +#| msgid "This page has unpublished changes." +msgid "You have unsaved changes." +msgstr "" + +#| msgid "Loading..." +msgid "Loading" +msgstr "" + +#| msgid "Are you sure you want to § this page?" +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#| msgid "Notify user" +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +#| msgid "Cancel" +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +#| msgid "static placeholders" +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +#| msgid "Add plugin to placeholder" +msgid "Focus on plugins of placeholder" +msgstr "" + +#| msgid "Add plugin" +msgid "Edit plugin" +msgstr "" + +#| msgid "not in menu" +msgid "Open actions menu" +msgstr "" + +#| msgid "Expand all" +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Installation successful!" +msgstr "" + +msgid "Add your first page" +msgstr "" + +msgid "Please log in" +msgstr "" + +#, python-format +msgid "" +"\n" +" Welcome to django CMS version %(cms_version)s.\n" +" " +msgstr "" + +#, python-format +msgid "" +"\n" +" Add the first page to the system to continue.\n" +" " +msgstr "" + +#, python-format +msgid "" +"\n" +" JavaScript seems to be disabled so please\n" +" add a page manually.\n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +#| msgid "" +#| "

If you don't see the ngo CMS logo at the top, make sure\n" +#| " you linked the static/cms folder to r\n" +#| " static files.

\n" +#| "

You're seeing this message ause you have\n" +#| " DEBUG = True in your django settings e and\n" +#| " haven't added any pages yet.\n" +#| "

\n" +#| " " +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#| msgid "" +#| "

If you don't see the ngo CMS logo at the top, make sure\n" +#| " you linked the static/cms folder to r\n" +#| " static files.

\n" +#| "

You're seeing this message ause you have\n" +#| " DEBUG = True in your django settings e and\n" +#| " haven't added any pages yet.\n" +#| "

\n" +#| " " +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "no content" +msgstr "" + +#| msgid "no content" +msgid "has contents" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +#| msgid "Sample App with excluded permissions" +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +#| msgid "Sample App 2" +msgid "Sample App 3" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +#| msgid "Static Menu" +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +#| msgid "Add plugin to placeholder" +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +#| msgid "Add plugin to placeholder" +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "CMS - 您的用户账号已创建。" + +msgid "CMS - your user account was changed." +msgstr "CMS - 您的用户账号已修改。" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "X Frame Options" +#~ msgstr "X Frame Options" + +#~ msgid "Whether this page can be embedded in other pages or websites" +#~ msgstr "Whether this page can be embedded in other pages or websites" + +#~ msgid "Language independent options" +#~ msgstr "Language independent options" + +#~ msgid "Publishing dates" +#~ msgstr "Publishing dates" + +#~ msgid "Change Permissions" +#~ msgstr "Change Permissions" + +#~ msgid "You do not have permission to revert this page." +#~ msgstr "You do not have permission to edit this page" + +#~ msgid "You do not have permission to publish this page" +#~ msgstr "You do not have permission to publish this page" + +#~ msgid "Page not published! A parent page is not published yet." +#~ msgstr "Page not published! A parent page is not published yet." + +#~ msgid "The content was successfully published." +#~ msgstr "The content was successfully published." + +#~ msgid "There was a problem publishing your content" +#~ msgstr "There was a problem publishing your content" + +#~ msgid "You do not have permission to unpublish this page" +#~ msgstr "You do not have permission to unpublish this page" + +#~ msgid "This page was never published" +#~ msgstr "This page was never published" + +#~ msgid "The %(language)s page \"%(page)s\" was successfully unpublished" +#~ msgstr "The %(language)s page \"%(page)s\" was successfully unpublished" + +#~ msgid "You don't have permissions to see page \"%(title)s\"" +#~ msgstr "You do not have permission to change pages." + +#~ msgid "parent must be in the same placeholder" +#~ msgstr "parent must be in the same placeholder" + +#~ msgid "parent must be in the same language as plugin_language" +#~ msgstr "parent must be in the same language as plugin_language" + +#~ msgid "Publish page changes" +#~ msgstr "Publish changes" + +#~ msgid "Publish page now" +#~ msgstr "Publish page now" + +#~ msgid "Save as Page Type" +#~ msgstr "Save as Page Type" + +#~ msgid "Unpublish page" +#~ msgstr "Unpublish page" + +#~ msgid "Publish page" +#~ msgstr "Publish page" + +#~ msgid "Are you sure you want to revert to live?" +#~ msgstr "Are you sure you want to revert to live?" + +#~ msgid "Revert to live" +#~ msgstr "Revert to live" + +#~ msgid "" +#~ "When the page should go live. Status must be \"Published\" for page to go " +#~ "live." +#~ msgstr "" +#~ "When the page should go live. Status must be \"Published\" for page to go " +#~ "live." + +#~ msgid "When to expire the page. Leave empty to never expire." +#~ msgstr "When to expire the page. Leave empty to never expire." + +#~ msgid "has url overwrite" +#~ msgstr "has url overwrite" + +#~ msgid "is published" +#~ msgstr "is published" + +#~ msgid "Basic Settings" +#~ msgstr "Basic Settings" + +#~ msgid "Preview this page in %(language)s " +#~ msgstr "Edit this page in %(language)s " + +#~ msgid "Publish" +#~ msgstr "Publish" + +#~ msgid "Unpublish" +#~ msgstr "Unpublish" + +#~ msgid "View published" +#~ msgstr "View published" + +#~ msgid "This page has unpublished changes." +#~ msgstr "This page has unpublished changes." + +#~ msgid "unpublished changes" +#~ msgstr "unpublished changes" + +#~ msgid "published" +#~ msgstr "published" + +#~ msgid "unpublished parent" +#~ msgstr "unpublished parent" + +#~ msgid "unpublished" +#~ msgstr "unpublished" + +#~ msgid "The current language of the content fields." +#~ msgstr "The current language of the content fields." + +#~ msgid "Another page with this slug already exists" +#~ msgstr "Another page with this slug already exists" + +#~ msgid "Add Page Type" +#~ msgstr "Add Page Type" + +#~ msgid "You do not have permission to change the template" +#~ msgstr "You do not have permission to change the template" + +#~ msgid "You do not have permission to change this page" +#~ msgstr "You do not have permission to change this page" + +#~ msgid "There only exists one translation for this page" +#~ msgstr "There only exists one translation for this page" + +#~ msgid "User does not have permission to add page." +#~ msgstr "User does not have permission to add page." + +#~ msgid "The site the page is accessible at." +#~ msgstr "The site the page is accessible at." + +#~ msgid "Edit page" +#~ msgstr "Edit this Page" + +#~ msgid "Toggle toolbar" +#~ msgstr "Toggle toolbar" + +#~ msgid "Invalid URL, use /my/url format." +#~ msgstr "Invalid URL, use /my/url format." + +#~ msgid "Add page permission also requires edit page permission." +#~ msgstr "Add page permission also requires edit page permission." + +#~ msgid "Recover (any) pages" +#~ msgstr "Recover (any) pages" + +#~ msgid "" +#~ "Send email notification to user about username or password change. Requires " +#~ "user email." +#~ msgstr "" +#~ "Send email notification to user about username or password change. Requires " +#~ "user email." + +#~ msgid "New password" +#~ msgstr "New password" + +#~ msgid "New password confirmation" +#~ msgstr "New password confirmation" + +#~ msgid "Email notification requires valid email address." +#~ msgstr "Email notification requires valid email address." + +#~ msgid "" +#~ "The permission to add new pages requires the permission to change pages!" +#~ msgstr "" +#~ "The permission to add new pages requires the permission to change pages!" + +#~ msgid "" +#~ "The permission to add new users requires the permission to change users!" +#~ msgstr "" +#~ "The permission to add new users requires the permission to change users!" + +#~ msgid "To add permissions you also need to edit them!" +#~ msgstr "To add permissions you also need to edit them!" + +#~ msgid "%(plugin_name)s plugin added to %(placeholder)s" +#~ msgstr "%(plugin_name)s plugin added to %(placeholder)s" + +#~ msgid "Copied plugins to %(placeholder)s" +#~ msgstr "Copied plugins to %(placeholder)s" + +#~ msgid "" +#~ "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +#~ msgstr "" +#~ "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" + +#~ msgid "" +#~ "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " +#~ "deleted." +#~ msgstr "" +#~ "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " +#~ "deleted." + +#~ msgid "All plugins in the placeholder \"%(name)s\" were deleted." +#~ msgstr "All plugins in the placeholder \"%(name)s\" were deleted." + +#~ msgid "Page reverted but slug stays the same because of url collisions." +#~ msgstr "Page reverted but slug stays the same because of url collisions." + +#~ msgid "Template changed to %s" +#~ msgstr "Template changed to %s" + +#~ msgid "Page moved" +#~ msgstr "Page moved" + +#~ msgid "Copied plugins from %(source_language)s to %(target_language)s" +#~ msgstr "Copied plugins from %(source_language)s to %(target_language)s" + +#~ msgid "The page \"%s\" was successfully reverted." +#~ msgstr "The page \"%s\" was successfully reverted." + +#~ msgid "History" +#~ msgstr "History" + +#~ msgid "Undo" +#~ msgstr "Undo" + +#~ msgid "Redo" +#~ msgstr "Redo" + +#~ msgid "View history" +#~ msgstr "View history" + +#~ msgid "" +#~ "\n" +#~ " Recover deleted %(verbose_name)s\n" +#~ " " +#~ msgstr "Recover deleted %(verbose_name)s" + +#~ msgid "Press the save button below to recover this version of the object." +#~ msgstr "Press the save button below to recover this version of the object." + +#~ msgid "Revert %(verbose_name)s" +#~ msgstr "Revert %(verbose_name)s" + +#~ msgid "Press the save button below to revert to this version of the object." +#~ msgstr "Press the save button below to revert to this version of the object." + +#~ msgid "home" +#~ msgstr "home" + +#~ msgid "softroot" +#~ msgstr "softroot" + +#~ msgid "({1}) plugin is empty. Remove it?" +#~ msgstr "({1}) plugin is empty. Remove it?" + +#~ msgid "sample second page" +#~ msgstr "sample account page" + +#~ msgid "Plugins were moved" +#~ msgstr "Plugins were moved" + +#~ msgid "Path Overflow from: '%s'" +#~ msgstr "Path Overflow from: '%s'" + +#~ msgid "" +#~ "The new node is too deep in the tree, try increasing the path.max_length " +#~ "property and UPDATE your database" +#~ msgstr "" +#~ "The new node is too deep in the tree, try increasing the path.max_length " +#~ "property and UPDATE your database" + +#~ msgid "An error occured. Please reload the page" +#~ msgstr "An error occured. Please reload the page" + +#~ msgid "Recover deleted %(name)s" +#~ msgstr "Recover deleted %(name)s" + +#~ msgid "Add %(name)s" +#~ msgstr "Add %(name)s" + +#~ msgid "Pages on:" +#~ msgstr "Pages on:" + +#~ msgid "%(counter)s result" +#~ msgid_plural "%(counter)s results" +#~ msgstr[0] "a848884d0af974a125106fa2043a5716_pl_0" + +#~ msgid "%(full_result_count)s total" +#~ msgstr "%(full_result_count)s total" + +#~ msgid "Show all" +#~ msgstr "Show all" + +#~ msgid "Filter:" +#~ msgstr "Filter:" + +#~ msgid "on" +#~ msgstr "on" + +#~ msgid "off" +#~ msgstr "off" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "" +#~ "There is no page around yet.
Add page now." +#~ msgstr "" +#~ "There is no page around yet.
Add page now." + +#~ msgid "insert above" +#~ msgstr "insert above" + +#~ msgid "insert below" +#~ msgstr "insert below" + +#~ msgid "insert inside" +#~ msgstr "insert inside" + +#~ msgid "Pick an action:" +#~ msgstr "Pick an action:" + +#~ msgid "page settings" +#~ msgstr "page settings" + +#~ msgid "copy" +#~ msgstr "copy" + +#~ msgid "Add Child" +#~ msgstr "Add Child" + +#~ msgid "add" +#~ msgstr "add" + +#~ msgid "cut" +#~ msgstr "cut" + +#~ msgid "delete" +#~ msgstr "delete" + +#~ msgid "info" +#~ msgstr "info" + +#~ msgid "Information" +#~ msgstr "Information" + +#~ msgid "%(icon)s" +#~ msgstr "%(icon)s" + +#~ msgid "English" +#~ msgstr "English" + +#~ msgid "French" +#~ msgstr "French" + +#~ msgid "German" +#~ msgstr "German" + +#~ msgid "Brazilian Portuguese" +#~ msgstr "Brazilian Portuguese" + +#~ msgid "Dutch" +#~ msgstr "Dutch" + +#~ msgid "two columns" +#~ msgstr "two columns" + +#~ msgid "three columns" +#~ msgstr "three columns" + +#~ msgid "navigation examples" +#~ msgstr "navigation examples" + +#~ msgid "sidebar column" +#~ msgstr "sidebar column" + +#~ msgid "left column" +#~ msgstr "left column" + +#~ msgid "Add a link" +#~ msgstr "Add a link" + +#~ msgid "right column" +#~ msgstr "right column" diff --git a/cms/locale/zh-Hans/LC_MESSAGES/djangojs.po b/cms/locale/zh-Hans/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..0a07600f --- /dev/null +++ b/cms/locale/zh-Hans/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-05 12:20+0000\n" +"PO-Revision-Date: 2018-01-11 16:38+0000\n" +"Last-Translator: Paulo Alvarado \n" +"Language-Team: Chinese Simplified (http://www.transifex.com/divio/django-cms/language/zh-Hans/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh-Hans\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/zh/LC_MESSAGES/django.po b/cms/locale/zh/LC_MESSAGES/django.po new file mode 100644 index 00000000..4af0c5fb --- /dev/null +++ b/cms/locale/zh/LC_MESSAGES/django.po @@ -0,0 +1,2312 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Angxiao Lu , 2025 +# Fabian Braun , 2025 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-30 19:36+0100\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2025\n" +"Language-Team: Chinese (https://app.transifex.com/divio/teams/58664/zh/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: admin/forms.py:85 admin/forms.py:92 admin/forms.py:1060 +#: templates/admin/cms/page/permissions.html:45 +msgid "All" +msgstr "全部" + +#: admin/forms.py:146 +msgid "Copy permissions" +msgstr "复制权限" + +#: admin/forms.py:204 +msgid "Slug" +msgstr "缩略名" + +#: admin/forms.py:206 +msgid "The part of the title that is used in the URL" +msgstr "标题中被用在URL中的部分" + +#: admin/forms.py:248 +msgid "Page type" +msgstr "页面类型" + +#: admin/forms.py:471 +msgid "Page Types" +msgstr "页面类型" + +#: admin/forms.py:523 +msgid "Overwrite URL" +msgstr "重写 URL" + +#: admin/forms.py:526 +msgid "Keep this field empty if standard path should be used." +msgstr "如果使用标准路径则本项目为空。" + +#: admin/forms.py:537 +msgid "Start typing..." +msgstr "开始输入……" + +#: admin/forms.py:542 migrations/0001_initial.py:96 +#: models/contentmodels.py:120 +msgid "menu visibility" +msgstr "菜单可见性" + +#: admin/forms.py:543 models/contentmodels.py:126 +msgid "limit when this page is visible in the menu" +msgstr "该页在菜单可见时限制" + +#: admin/forms.py:551 models/contentmodels.py:133 +msgid "X Frame Options" +msgstr "X 框架选项" + +#: admin/forms.py:552 +msgid "Whether this page can be embedded in other pages or websites." +msgstr "此页面是否可以嵌入其他页面或网站。" + +#: admin/forms.py:570 +msgid "URL options" +msgstr "URL选项" + +#: admin/forms.py:577 +msgid "Menu options" +msgstr "菜单选项" + +#: admin/forms.py:584 +msgid "Headers" +msgstr "标头" + +#: admin/forms.py:712 +msgid "Application" +msgstr "应用" + +#: admin/forms.py:715 +msgid "Hook application to this page." +msgstr "附加第三方应用到本页面。" + +#: admin/forms.py:720 +msgid "Application configurations" +msgstr "应用程序设置" + +#: admin/forms.py:798 +msgid "A page with this reverse URL id exists already." +msgstr "该URL id已经被使用。" + +#: admin/forms.py:817 admin/forms.py:823 +msgid "Invalid application config value" +msgstr "无效的应用设置值" + +#: admin/forms.py:830 +msgid "An application instance using this configuration already exists." +msgstr "已经存在使用此设置的应用实例。" + +#: admin/forms.py:838 admin/forms.py:849 +msgid "An application instance with this name already exists." +msgstr "已经存在使用此名称的应用实例。" + +#: admin/forms.py:955 +msgid "You can't move the home page inside another page" +msgstr "你不能将主页移入到另一页面" + +#: admin/forms.py:1010 admin/forms.py:1026 +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "同一页面层级下不能有相同缩略名的两个页面。请先修改其中一个页面的缩略名后再尝试移动。" + +#: admin/forms.py:1061 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:87 +msgid "Yes" +msgstr "是" + +#: admin/forms.py:1062 templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:89 +msgid "No" +msgstr "否" + +#: admin/forms.py:1117 admin/forms.py:1190 migrations/0001_initial.py:72 +#: migrations/0001_initial.py:135 models/permissionmodels.py:71 +#: test_utils/project/customuserapp/models.py:70 +msgid "user" +msgstr "用户" + +#: admin/forms.py:1195 +msgid "can_view" +msgstr "can_view" + +#: admin/forms.py:1236 admin/forms.py:1242 admin/forms.py:1246 +#: templates/admin/cms/page/change_form.html:11 +#: templates/admin/cms/usersettings/change_form.html:33 +#: templatetags/cms_tags.py:544 +msgid "Add" +msgstr "新建" + +#: admin/forms.py:1237 admin/forms.py:1243 admin/forms.py:1247 +msgid "Change" +msgstr "修改" + +#: admin/forms.py:1238 admin/forms.py:1244 admin/forms.py:1248 +#: templates/admin/cms/extensions/change_form.html:9 +#: templates/admin/cms/page/plugin/submit_line.html:5 +#: templates/admin/cms/page/submit_row.html:7 +#: templates/admin/cms/page/tree/actions_dropdown.html:42 +#: templates/admin/cms/page/tree/actions_dropdown.html:47 +#: templates/admin/cms/page/tree/menu.html:203 +#: templates/admin/cms/page/tree/menu.html:205 +#: templates/cms/toolbar/dragitem.html:46 +#: templates/cms/toolbar/dragitem.html:54 +msgid "Delete" +msgstr "删除" + +#: admin/forms.py:1267 models/permissionmodels.py:109 +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "用户没有权限修改已创建的页面,不能创建页面。需要编辑权限。" + +#: admin/forms.py:1274 models/permissionmodels.py:114 +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "用户没有权限修改页面,不能删除页面。需要编辑权限。" + +#: admin/forms.py:1280 +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "用户没有权限修改页面,不能设置页面的权限。需要编辑权限。" + +#: admin/forms.py:1286 +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "用户没有修改页面的权限,不能删除页面的权限。需要编辑权限。" + +#: admin/forms.py:1295 +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "用户没有修改已创建页面的权限,不能创建页面权限。需要编辑权限。" + +#: admin/forms.py:1302 +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "用户没有修改权限的权限,不能删除页面权限。需要编辑权限。" + +#: admin/forms.py:1420 +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "无效的插件类型 '%s'" + +#: admin/forms.py:1438 admin/pageadmin.py:1217 admin/placeholderadmin.py:467 +msgid "Language must be set to a supported language!" +msgstr "语言项目必须被设置为支持的语言!" + +#: admin/forms.py:1444 +msgid "Parent plugin language must be same as language!" +msgstr "父层插件语言必须与当前语言一致!" + +#: admin/forms.py:1449 +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "父层插件占位符必须与当前占位符一致!" + +#: admin/forms.py:1454 +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "插件位置必须大于 %(position)d" + +#: admin/pageadmin.py:320 +msgid "Advanced Settings" +msgstr "高级设置" + +#: admin/pageadmin.py:320 cms_toolbars.py:664 +msgid "Change Permissions" +msgstr "修改权限" + +#: admin/pageadmin.py:355 +msgid "The page is not eligible to be home." +msgstr "此页面不能用于主页" + +#: admin/pageadmin.py:502 admin/pageadmin.py:990 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "拥有 %(key)r 主键的 %(name)s 对象不存在。" + +#: admin/pageadmin.py:574 +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "错误!您没有权限移动页面。请刷新页面" + +#: admin/pageadmin.py:677 +msgid "Error! You don't have permissions to copy this page." +msgstr "出错!您没有权限复制此页" + +#: admin/pageadmin.py:685 +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "出错!您复制的页面尚未翻译成任何一种目标网站设定的语言" + +#: admin/pageadmin.py:698 +msgid "You do not have permission to edit this page" +msgstr "您没有权限编辑本页面" + +#: admin/pageadmin.py:907 +msgid "Add Page Copy" +msgstr "添加页面拷贝" + +#: admin/pageadmin.py:913 cms_wizards.py:50 +#: templates/admin/cms/page/tree/menu.html:159 +#: templates/admin/cms/page/tree/menu.html:166 +msgid "New sub page" +msgstr "新建子页面" + +#: admin/pageadmin.py:919 cms_wizards.py:42 +msgid "New page" +msgstr "新建页面" + +#: admin/pageadmin.py:1127 +msgid "Database error" +msgstr "数据库错误" + +#: admin/pageadmin.py:1192 +msgid "Template not valid" +msgstr "模板不可用" + +#: admin/pageadmin.py:1200 +msgid "The template was successfully changed" +msgstr "模板修改成功" + +#: admin/pageadmin.py:1227 admin/placeholderadmin.py:507 +#: admin/placeholderadmin.py:511 admin/placeholderadmin.py:578 +#: admin/placeholderadmin.py:582 +msgid "You do not have permission to copy these plugins." +msgstr "您没有复制插件的权限" + +#: admin/pageadmin.py:1236 +msgid "You do not have permission to delete this page" +msgstr "您没有权限删除本页面" + +#: admin/pageadmin.py:1264 +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "使用 %(language)s 译文的标题和插件被删除" + +#: admin/pageadmin.py:1412 +msgid "Public content" +msgstr "公开内容" + +#: admin/pageadmin.py:1413 templatetags/cms_admin.py:112 +msgid "Empty" +msgstr "清空" + +#: admin/pageadmin.py:1422 +msgid "Create Content" +msgstr "创建内容" + +#: admin/permissionadmin.py:119 +msgid "View restriction" +msgstr "视图限制" + +#: admin/permissionadmin.py:120 +msgid "View restrictions" +msgstr "视图限制" + +#: admin/placeholderadmin.py:102 +#, python-format +msgid "Field %s not found" +msgstr "未找到字段 %s" + +#: admin/placeholderadmin.py:108 templates/cms/toolbar/dragbar.html:5 +#: templates/cms/toolbar/dragitem.html:14 +#: templates/cms/toolbar/dragitem.html:24 +msgid "You do not have permission to edit this item" +msgstr "您没有权限编辑当前项" + +#: admin/placeholderadmin.py:388 admin/placeholderadmin.py:392 +msgid "You do not have permission to add a plugin" +msgstr "您没有添加插件的权限" + +#: admin/placeholderadmin.py:532 admin/placeholderadmin.py:536 +msgid "You do not have permission to copy this placeholder." +msgstr "没有权限复制该占位符" + +#: admin/placeholderadmin.py:627 +msgid "Plugin not found" +msgstr "找不到该插件" + +#: admin/placeholderadmin.py:635 admin/placeholderadmin.py:638 +msgid "You do not have permission to edit this plugin" +msgstr "您没有编辑插件的权限" + +#: admin/placeholderadmin.py:797 admin/placeholderadmin.py:801 +msgid "You have no permission to paste this plugin" +msgstr "你没有权限粘贴这个插件" + +#: admin/placeholderadmin.py:857 admin/placeholderadmin.py:861 +msgid "You have no permission to paste this placeholder" +msgstr "你没有权限粘贴这个占位符" + +#: admin/placeholderadmin.py:914 admin/placeholderadmin.py:918 +#: admin/placeholderadmin.py:922 admin/placeholderadmin.py:926 +msgid "You have no permission to move this plugin" +msgstr "没有移动插件权限" + +#: admin/placeholderadmin.py:977 admin/placeholderadmin.py:981 +msgid "You have no permission to cut this plugin" +msgstr "你没有权限剪切这个插件" + +#: admin/placeholderadmin.py:1026 admin/placeholderadmin.py:1030 +#: admin/placeholderadmin.py:1042 +msgid "You do not have permission to delete this plugin" +msgstr "没有删除插件权限" + +#: admin/placeholderadmin.py:1059 +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "插件%(name)s“%(obj)s”已被成功删除。" + +#: admin/placeholderadmin.py:1079 admin/placeholderadmin.py:1170 +#, python-format +msgid "Cannot delete %(name)s" +msgstr "无法删除%(name)s" + +#: admin/placeholderadmin.py:1081 admin/placeholderadmin.py:1172 +msgid "Are you sure?" +msgstr "您确认码?" + +#: admin/placeholderadmin.py:1117 admin/placeholderadmin.py:1121 +#: admin/placeholderadmin.py:1138 +msgid "You do not have permission to clear this placeholder" +msgstr "没有权限清楚该占位符" + +#: admin/placeholderadmin.py:1151 +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "占位符“%(obj)s”已被成功清除。" + +#: admin/placeholderadmin.py:1176 +msgid "placeholder" +msgstr "占位符" + +#: admin/useradmin.py:126 models/permissionmodels.py:260 +msgid "Page permissions" +msgstr "页面权限" + +#: admin/useradmin.py:127 +msgid "User & Group permissions" +msgstr "用户/组权限" + +#: admin/useradmin.py:128 +msgid "Page permissions management" +msgstr "页面权限管理" + +#: admin/utils.py:90 +msgid "Actions" +msgstr "操作" + +#: admin/utils.py:262 +msgid "Empty content" +msgstr "内容为空" + +#: admin/utils.py:503 +#, python-format +msgid "%(object_name)s Properties" +msgstr "%(object_name)s 属性" + +#: admin/utils.py:507 +#, python-format +msgid "Add new %(object_name)s" +msgstr "添加新的%(object_name)s" + +#: admin/utils.py:512 admin/utils.py:583 +msgid "Add content" +msgstr "添加内容" + +#: admin/utils.py:516 +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "当前语言的内容已更改。点击“取消”返回表单并保存更改。点击“确定”放弃更改。" + +#: admin/utils.py:536 +#, python-format +msgid "Add %(language)s content" +msgstr "添加%(language)s内容" + +#: admin/utils.py:570 cms_toolbars.py:199 +#: templates/cms/toolbar/items/live_draft.html:6 tests/test_views.py:324 +msgid "Preview" +msgstr "预览" + +#: admin/utils.py:583 +msgid "Settings" +msgstr "设置" + +#: admin/utils.py:809 +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "无效的语言 %(value)s。此表单无法处理。请尝试切换语言。" + +#: admin/utils.py:810 +msgid "" +msgstr "未指定" + +#: apphook_pool.py:98 +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "找不到与 \"%r\" 对应的已注册应用" + +#: apps.py:7 templates/cms/noapphook.html:6 +#: templates/cms/toolbar/items/logo.html:2 templates/cms/welcome.html:6 +#: templates/cms/welcome.html:23 templates/cms/welcome.html:86 +msgid "django CMS" +msgstr "django 新闻发布系统" + +#: cms_plugins.py:9 +msgid "Placeholder" +msgstr "占位符" + +#: cms_toolbars.py:76 +msgid "Getting started developer guide" +msgstr "开发者入门指南" + +#: cms_toolbars.py:77 templates/cms/welcome.html:88 utils/conf.py:102 +msgid "Documentation" +msgstr "文档" + +#: cms_toolbars.py:78 templates/cms/welcome.html:89 +msgid "User guide" +msgstr "用户指南" + +#: cms_toolbars.py:79 +msgid "Discord community" +msgstr "Discord 社区" + +#: cms_toolbars.py:80 +msgid "What's new" +msgstr "最新动态" + +#: cms_toolbars.py:100 templates/cms/wizards/create.html:5 +#: templates/cms/wizards/create.html:22 templates/cms/wizards/start.html:5 +msgid "Create" +msgstr "创建" + +#: cms_toolbars.py:187 templates/cms/toolbar/dragbar.html:17 +#: templates/cms/toolbar/dragitem.html:18 +#: templates/cms/toolbar/items/live_draft.html:11 templatetags/cms_tags.py:534 +#: templatetags/cms_tags.py:537 tests/test_views.py:338 +msgid "Edit" +msgstr "编辑" + +#: cms_toolbars.py:217 templates/admin/cms/page/delete_confirmation.html:49 +msgid "Structure" +msgstr "结构" + +#: cms_toolbars.py:224 forms/wizards.py:31 +msgid "Content" +msgstr "内容" + +#: cms_toolbars.py:262 +msgid "Help" +msgstr "帮助" + +#: cms_toolbars.py:306 templates/admin/cms/page/tree/base.html:107 +msgid "Sites" +msgstr "站点" + +#: cms_toolbars.py:307 +msgid "Admin Sites" +msgstr "管理后台" + +#: cms_toolbars.py:314 +msgid "Administration" +msgstr "管理" + +#: cms_toolbars.py:318 +msgid "User settings" +msgstr "用户设定" + +#: cms_toolbars.py:327 +msgid "Clipboard..." +msgstr "剪贴板" + +#: cms_toolbars.py:332 +msgid "Clear clipboard" +msgstr "清空剪贴板" + +#: cms_toolbars.py:340 +msgid "Disable toolbar" +msgstr "禁用工具栏" + +#: cms_toolbars.py:344 +msgid "Shortcuts..." +msgstr "快捷键..." + +#: cms_toolbars.py:360 +msgid "Users" +msgstr "用户" + +#: cms_toolbars.py:378 tests/test_toolbar.py:1009 tests/test_toolbar.py:1026 +#: tests/test_toolbar.py:1060 +#, python-format +msgid "Logout %s" +msgstr "退出 %s" + +#: cms_toolbars.py:378 +msgid "Logout" +msgstr "退出" + +#: cms_toolbars.py:394 models/settingmodels.py:20 +#: templates/admin/cms/grouper/change_list.html:4 +msgid "Language" +msgstr "语言" + +#: cms_toolbars.py:520 +msgid "Add Translation" +msgstr "加翻译" + +#: cms_toolbars.py:533 +msgid "Delete Translation" +msgstr "删除翻译" + +#: cms_toolbars.py:545 tests/test_toolbar.py:961 tests/test_toolbar.py:968 +msgid "Copy all plugins" +msgstr "复制所有插件" + +#: cms_toolbars.py:547 +#, python-format +msgid "from %s" +msgstr "从 %s" + +#: cms_toolbars.py:548 +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "确定要从 %s 复制所有插件吗?" + +#: cms_toolbars.py:576 +msgid "Pages" +msgstr "页" + +#: cms_toolbars.py:596 templates/admin/cms/page/permissions.html:5 +#: tests/test_wizards.py:92 tests/test_wizards.py:115 +#: tests/test_wizards.py:172 +msgid "Page" +msgstr "页" + +#: cms_toolbars.py:628 +msgid "Create Page" +msgstr "创建页面" + +#: cms_toolbars.py:632 templates/admin/cms/page/tree/base.html:140 +msgid "New Page" +msgstr "新建页面" + +#: cms_toolbars.py:633 +msgid "New Sub Page" +msgstr "新建子页面" + +#: cms_toolbars.py:645 +msgid "Duplicate this Page" +msgstr "复制当前页" + +#: cms_toolbars.py:656 +msgid "Page settings" +msgstr "页面设置" + +#: cms_toolbars.py:664 templates/admin/cms/page/tree/actions_dropdown.html:67 +#: templates/admin/cms/page/tree/actions_dropdown.html:72 +#: templates/admin/cms/page/tree/menu.html:209 +#: templates/admin/cms/page/tree/menu.html:211 +msgid "Advanced settings" +msgstr "高级设置" + +#: cms_toolbars.py:674 +msgid "Templates" +msgstr "模板" + +#: cms_toolbars.py:694 +msgid "Hide in navigation" +msgstr "隐藏导航" + +#: cms_toolbars.py:694 +msgid "Display in navigation" +msgstr "在导航栏中显示" + +#: cms_toolbars.py:707 +msgid "Delete page" +msgstr "删除页" + +#: cms_wizards.py:46 +msgid "Create a new page next to the current page." +msgstr "在当前页面后新建页面" + +#: cms_wizards.py:54 +msgid "Create a page below the current page." +msgstr "在当前页面以下新建页面" + +#: forms/fields.py:24 +msgid "Select a valid site" +msgstr "选择一个有效站点" + +#: forms/fields.py:25 +msgid "Select a valid page" +msgstr "选择一个有效页面" + +#: forms/validators.py:77 +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "页面 %(conflict_page)s 与当前页面 \"%(instance)s\" 具有相同的 URL '%(url)s'。" + +#: forms/validators.py:79 +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "页面 %(conflict_page)s 与当前页面具有相同的 URL '%(url)s'。" + +#: forms/wizards.py:32 +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "可选。如果提供,会自动添加在在新的文本插件里" + +#: forms/wizards.py:45 +msgid "Provide a title for the new page." +msgstr "给新建页面标题" + +#: forms/wizards.py:47 +msgid "Leave empty for automatic slug, or override as required." +msgstr "留空以自动生成缩略名,或按需覆盖。" + +#: forms/wizards.py:83 +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "无法自动创建缩略名。请手动提供一个。" + +#: forms/wizards.py:99 +msgid "Please provide a valid slug." +msgstr "请提供有效的缩略名。" + +#: forms/wizards.py:123 +msgid "You don't have the permissions required to add a page." +msgstr "您没有添加页面所需的权限。" + +#: migrations/0001_initial.py:26 migrations/0001_initial.py:60 +#: migrations/0001_initial.py:83 migrations/0001_initial.py:123 +msgid "ID" +msgstr "ID" + +#: migrations/0001_initial.py:27 models/pluginmodel.py:172 +msgid "position" +msgstr "位置" + +#: migrations/0001_initial.py:28 models/contentmodels.py:40 +#: models/pagemodel.py:1098 models/pluginmodel.py:174 +msgid "language" +msgstr "语言" + +#: migrations/0001_initial.py:29 models/pluginmodel.py:176 +msgid "plugin_name" +msgstr "插件名称" + +#: migrations/0001_initial.py:30 models/contentmodels.py:82 +#: models/pluginmodel.py:178 +msgid "creation date" +msgstr "创建日期" + +#: migrations/0001_initial.py:61 migrations/0001_initial.py:124 +#: models/permissionmodels.py:84 +msgid "can edit" +msgstr "可以修改" + +#: migrations/0001_initial.py:62 migrations/0001_initial.py:125 +#: models/permissionmodels.py:85 +msgid "can add" +msgstr "允许新建" + +#: migrations/0001_initial.py:63 migrations/0001_initial.py:126 +#: models/permissionmodels.py:86 +msgid "can delete" +msgstr "允许删除" + +#: migrations/0001_initial.py:64 migrations/0001_initial.py:127 +#: models/permissionmodels.py:88 +msgid "can change advanced settings" +msgstr "允许修改高级设置" + +#: migrations/0001_initial.py:65 migrations/0001_initial.py:128 +#: models/permissionmodels.py:87 +msgid "can publish" +msgstr "可以发布" + +#: migrations/0001_initial.py:66 migrations/0001_initial.py:129 +#: models/permissionmodels.py:90 +msgid "can change permissions" +msgstr "允许修改权限" + +#: migrations/0001_initial.py:67 migrations/0001_initial.py:130 +#: models/permissionmodels.py:92 +msgid "can move" +msgstr "允许移动" + +#: migrations/0001_initial.py:68 migrations/0001_initial.py:131 +#: models/permissionmodels.py:93 +msgid "view restricted" +msgstr "视图受限" + +#: migrations/0001_initial.py:69 models/permissionmodels.py:196 +msgid "can recover pages" +msgstr "允许恢复页面" + +#: migrations/0001_initial.py:70 migrations/0001_initial.py:133 +#: models/permissionmodels.py:78 +msgid "group" +msgstr "组" + +#: migrations/0001_initial.py:71 models/permissionmodels.py:204 +msgid "sites" +msgstr "站点" + +#: migrations/0001_initial.py:84 models/contentmodels.py:90 +#: models/pagemodel.py:65 +msgid "created by" +msgstr "创建者" + +#: migrations/0001_initial.py:85 models/contentmodels.py:95 +#: models/pagemodel.py:70 +msgid "changed by" +msgstr "修正者" + +#: migrations/0001_initial.py:88 +#: templates/admin/cms/page/tree/actions_dropdown.html:79 +msgid "publication date" +msgstr "发表日期" + +#: migrations/0001_initial.py:89 +#: templates/admin/cms/page/tree/actions_dropdown.html:82 +msgid "publication end date" +msgstr "发表结束日期" + +#: migrations/0001_initial.py:90 models/contentmodels.py:102 +msgid "in navigation" +msgstr "导航中" + +#: migrations/0001_initial.py:91 models/contentmodels.py:107 +msgid "soft root" +msgstr "伪根节点" + +#: migrations/0001_initial.py:92 models/pagemodel.py:82 +msgid "id" +msgstr "编号" + +#: migrations/0001_initial.py:93 models/pagemodel.py:90 +msgid "attached menu" +msgstr "附带的菜单" + +#: migrations/0001_initial.py:94 models/contentmodels.py:113 +#: templates/admin/cms/page/tree/actions_dropdown.html:99 +msgid "template" +msgstr "模板" + +#: migrations/0001_initial.py:95 models/pagemodel.py:97 +msgid "login required" +msgstr "需要登录" + +#: migrations/0001_initial.py:98 models/pagemodel.py:106 +msgid "application" +msgstr "应用" + +#: migrations/0001_initial.py:99 models/pagemodel.py:113 +msgid "application instance name" +msgstr "应用实例名" + +#: migrations/0001_initial.py:110 models/pagemodel.py:60 +#: templates/admin/cms/page/tree/actions_dropdown.html:105 +msgid "site" +msgstr "站点" + +#: migrations/0001_initial.py:132 models/permissionmodels.py:253 +#: templates/admin/cms/page/permissions.html:15 +msgid "Grant on" +msgstr "授权给" + +#: migrations/0001_initial.py:134 models/contentmodels.py:78 +#: models/pagemodel.py:133 models/pagemodel.py:1102 +#: models/permissionmodels.py:254 templates/admin/cms/page/tree/base.html:298 +#: test_utils/project/sampleapp/ns_urls.py:8 +msgid "page" +msgstr "页面" + +#: models/contentmodels.py:14 +msgid "no limit set" +msgstr "未设置限制" + +#: models/contentmodels.py:15 +msgid "for logged in users only" +msgstr "登录用户专用" + +#: models/contentmodels.py:16 +msgid "for anonymous users only" +msgstr "匿名用户专用" + +#: models/contentmodels.py:22 +msgid "Inherit from parent page" +msgstr "继承于父页面" + +#: models/contentmodels.py:23 +msgid "Deny" +msgstr "拒绝" + +#: models/contentmodels.py:24 +msgid "Only this website" +msgstr "仅这个网站" + +#: models/contentmodels.py:25 +msgid "Allow" +msgstr "允许" + +#: models/contentmodels.py:42 +msgid "title" +msgstr "标题" + +#: models/contentmodels.py:44 +msgid "The default title" +msgstr "默认标题" + +#: models/contentmodels.py:47 +msgid "Page Title" +msgstr "页面标题" + +#: models/contentmodels.py:52 +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "覆盖显示在浏览器顶部标题栏或书签中的信息" + +#: models/contentmodels.py:56 +msgid "Menu Title" +msgstr "菜单标题" + +#: models/contentmodels.py:60 +msgid "Overwrite what is displayed in the menu" +msgstr "覆盖菜单上的显示" + +#: models/contentmodels.py:63 +msgid "Description meta tag" +msgstr "描述性的原标签" + +#: models/contentmodels.py:66 +msgid "A description of the page used by search engines." +msgstr "被搜索引擎收录的常见关键字列表" + +#: models/contentmodels.py:69 +msgid "redirect" +msgstr "转向" + +#: models/contentmodels.py:73 +msgid "Redirects to this URL." +msgstr "转到这个链接" + +#: models/contentmodels.py:110 +msgid "All ancestors will not be displayed in the navigation" +msgstr "所有的上级页面将不会在导航中显示" + +#: models/contentmodels.py:116 +msgid "The template used to render the content." +msgstr "用于生成页面内容的模板。" + +#: models/contentmodels.py:146 +msgid "page content" +msgstr "页面内容" + +#: models/contentmodels.py:147 +msgid "page contents" +msgstr "页面内容" + +#: models/contentmodels.py:289 models/pagemodel.py:985 +msgid "default" +msgstr "默认" + +#: models/pagemodel.py:87 +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "与 page_url 模板标签共同用来链接到当前页的唯一识别码" + +#: models/pagemodel.py:120 +msgid "Mark this page as a page type" +msgstr "将此页面标记为页面类型" + +#: models/pagemodel.py:134 +msgid "pages" +msgstr "页面" + +#: models/pagemodel.py:153 +msgid "No available title" +msgstr "无可用标题" + +#: models/pagemodel.py:1096 +msgid "slug" +msgstr "缩略名" + +#: models/pagemodel.py:1097 +msgid "Path" +msgstr "路径" + +#: models/permissionmodels.py:55 +msgid "Current page" +msgstr "当前页" + +#: models/permissionmodels.py:56 +msgid "Page children (immediate)" +msgstr "最接近的子页面" + +#: models/permissionmodels.py:57 +msgid "Page and children (immediate)" +msgstr "页面以及最接近的子页面" + +#: models/permissionmodels.py:58 +msgid "Page descendants" +msgstr "子页面" + +#: models/permissionmodels.py:59 +msgid "Page and descendants" +msgstr "页面及所有下级页面" + +#: models/permissionmodels.py:90 +msgid "on page level" +msgstr "在页面级别" + +#: models/permissionmodels.py:93 +msgid "frontend view restriction" +msgstr "前端视图限制" + +#: models/permissionmodels.py:103 +msgid "Please select user or group." +msgstr "请选择用户或组" + +#: models/permissionmodels.py:119 +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "没有修改页面的权限,用户无法发布页面。需要编辑权限。" + +#: models/permissionmodels.py:124 +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "没有修改页面的权限,用户无法更改页面高级设置。需要编辑权限。" + +#: models/permissionmodels.py:129 +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "没有修改页面的权限,用户无法更改页面权限。需要编辑权限。" + +#: models/permissionmodels.py:134 +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "没有修改页面的权限,用户无法移动页面。需要编辑权限。" + +#: models/permissionmodels.py:198 +msgid "can recover any deleted page" +msgstr "允许恢复任何已删除的页面" + +#: models/permissionmodels.py:203 +msgid "If none selected, user haves granted permissions to all sites." +msgstr "如果没有选择,用户将被授予整个网站的权限" + +#: models/permissionmodels.py:210 +msgid "Page global permission" +msgstr "页面全局权限" + +#: models/permissionmodels.py:211 +msgid "Pages global permissions" +msgstr "页面全局权限" + +#: models/permissionmodels.py:259 +msgid "Page permission" +msgstr "页面权限" + +#: models/permissionmodels.py:274 +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "新增页面的权限同时赋予其子页面,否则新增页面不能被其建立者修改" + +#: models/permissionmodels.py:320 +msgid "User (page)" +msgstr "用户(页面)" + +#: models/permissionmodels.py:321 +msgid "Users (page)" +msgstr "用户(页面)" + +#: models/permissionmodels.py:336 +msgid "User group (page)" +msgstr "用户组(页面)" + +#: models/permissionmodels.py:337 +msgid "User groups (page)" +msgstr "用户组(页面)" + +#: models/placeholdermodel.py:30 +msgid "slot" +msgstr "插槽" + +#: models/placeholdermodel.py:32 +msgid "width" +msgstr "宽" + +#: models/pluginmodel.py:212 +msgid "" +msgstr "<空>" + +#: models/settingmodels.py:21 +msgid "The language for the admin interface and toolbar" +msgstr "管理界面的语言和工具栏" + +#: models/settingmodels.py:31 +msgid "user setting" +msgstr "用户设定" + +#: models/settingmodels.py:32 +msgid "user settings" +msgstr "用户设定" + +#: plugin_base.py:70 +msgid "Advanced options" +msgstr "高级选项" + +#: plugin_base.py:125 +msgid "Generic" +msgstr "普通的" + +#: plugin_base.py:612 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s“%(obj)s”已成功更改。" + +#: plugin_base.py:700 +msgid "There are no further settings for this plugin. Please press save." +msgstr "当前插件没有更多设置选项。请点击保存。" + +#: signals/log_entries.py:12 tests/test_log_entries.py:141 +msgid "Moved" +msgstr "已移动" + +#: signals/log_entries.py:16 +msgid "Changed" +msgstr "已修改" + +#: signals/log_entries.py:20 tests/test_log_entries.py:171 +msgid "Deleted" +msgstr "已删除" + +#: signals/log_entries.py:24 +msgid "Added Page Translation" +msgstr "已添加页面翻译" + +#: signals/log_entries.py:28 tests/test_log_entries.py:201 +msgid "Changed Page Translation" +msgstr "已修改页面翻译" + +#: signals/log_entries.py:32 tests/test_log_entries.py:234 +msgid "Deleted Page Translation" +msgstr "已删除页面翻译" + +#: signals/log_entries.py:39 tests/test_log_entries.py:301 +msgid "Added Plugin" +msgstr "已添加插件" + +#: signals/log_entries.py:44 tests/test_log_entries.py:362 +msgid "Changed Plugin" +msgstr "已修改插件" + +#: signals/log_entries.py:49 tests/test_log_entries.py:334 +msgid "Moved Plugin" +msgstr "已移动插件" + +#: signals/log_entries.py:54 tests/test_log_entries.py:390 +msgid "Deleted Plugin" +msgstr "已删除插件" + +#: signals/log_entries.py:59 tests/test_log_entries.py:427 +msgid "Cut Plugin" +msgstr "已剪切插件" + +#: signals/log_entries.py:64 tests/test_log_entries.py:466 +msgid "Paste Plugin" +msgstr "已粘贴插件" + +#: signals/log_entries.py:69 tests/test_log_entries.py:546 +msgid "Paste to Placeholder" +msgstr "已粘贴到占位符" + +#: signals/log_entries.py:74 tests/test_log_entries.py:499 +msgid "Added plugins to placeholder from clipboard" +msgstr "已从剪贴板向占位符添加插件" + +#: signals/log_entries.py:79 tests/test_log_entries.py:573 +msgid "Cleared Placeholder" +msgstr "已清空占位符" + +#: templates/admin/cms/extensions/change_form.html:5 +#: templates/admin/cms/page/change_form.html:84 +#: templates/admin/cms/page/plugin/submit_line.html:3 +#: templates/admin/cms/page/submit_row.html:4 +#: templates/admin/cms/page/tree/copy_premissions.html:10 +#: templates/admin/cms/usersettings/change_form.html:41 +msgid "Save" +msgstr "保存" + +#: templates/admin/cms/grouper/change_form.html:17 +msgid "Some fields cannot be changed since they are read-only content." +msgstr "部分字段为只读内容,无法更改。" + +#: templates/admin/cms/mail/base.html:55 +#, python-format +msgid "Log in to administration here." +msgstr "登录到管理界面 请点这里。" + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "登录地址:%(login_url)s" + +#: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 +msgid "Username:" +msgstr "用户名:" + +#: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 +msgid "Password:" +msgstr "密码:" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Add a page" +msgstr "添加页面" + +#: templates/admin/cms/page/change_form.html:4 +msgid "Change a page" +msgstr "修改一个页面" + +#: templates/admin/cms/page/change_form.html:8 +#: templates/admin/cms/page/tree/base.html:23 +#: templates/admin/cms/page/tree/legend.html:34 +#: templates/admin/cms/page/tree/menu.html:41 +#: templates/admin/cms/usersettings/change_form.html:30 +msgid "Home" +msgstr "首页" + +#: templates/admin/cms/page/change_form.html:28 +#: templates/admin/cms/page/tree/menu.html:80 +#: templates/admin/cms/page/tree/menu.html:83 +msgid "View on site" +msgstr "查看结果" + +#: templates/admin/cms/page/change_form.html:56 +#: templates/cms/wizards/create.html:14 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "请更正以下的错误。" + +#: templates/admin/cms/page/change_form.html:73 +msgid "All permissions" +msgstr "所有权限" + +#: templates/admin/cms/page/change_form.html:74 +#: templates/admin/cms/page/tree/base.html:206 +#: templates/admin/cms/page/tree/base.html:270 +msgid "Loading..." +msgstr "加载中..." + +#: templates/admin/cms/page/change_form.html:85 +#: templates/admin/cms/page/plugin/submit_line.html:9 +#: templates/admin/cms/page/submit_row.html:12 +msgid "Save and continue editing" +msgstr "保存并继续编辑" + +#: templates/admin/cms/page/delete_confirmation.html:39 +#, 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”吗?以下相关项也将被删除:" + +#: templates/admin/cms/page/delete_confirmation.html:57 +msgid "Yes, I’m sure" +msgstr "是的,确定" + +#: templates/admin/cms/page/delete_confirmation.html:58 +msgid "No, take me back" +msgstr "不,返回" + +#: templates/admin/cms/page/delete_summary.html:2 +msgid "Summary" +msgstr "摘要" + +#: templates/admin/cms/page/permissions.html:6 +msgid "User" +msgstr "用户" + +#: templates/admin/cms/page/permissions.html:7 +msgid "Group" +msgstr "组" + +#: templates/admin/cms/page/permissions.html:8 +msgid "Can edit" +msgstr "允许修改" + +#: templates/admin/cms/page/permissions.html:9 +msgid "Can add" +msgstr "允许添加" + +#: templates/admin/cms/page/permissions.html:10 +msgid "Can delete" +msgstr "允许删除" + +#: templates/admin/cms/page/permissions.html:11 +msgid "Can publish" +msgstr "允许发表" + +#: templates/admin/cms/page/permissions.html:12 +msgid "Can change permissions" +msgstr "允许修改权限" + +#: templates/admin/cms/page/permissions.html:13 +msgid "Can move" +msgstr "允许移动" + +#: templates/admin/cms/page/permissions.html:14 +msgid "Can view" +msgstr "Can view" + +#: templates/admin/cms/page/permissions.html:23 +#: templates/admin/cms/page/permissions.html:24 +msgid "(global)" +msgstr "(全局的)" + +#: templates/admin/cms/page/permissions.html:28 +msgid "(current)" +msgstr "(当前的)" + +#: templates/admin/cms/page/permissions.html:54 +msgid "Page doesn't inherit any permissions." +msgstr "页面不继承任何权限。" + +#: templates/admin/cms/page/plugin/error_form.html:4 +msgid "Edit model" +msgstr "编辑模型" + +#: templates/admin/cms/page/plugin/submit_line.html:7 +#: templates/admin/cms/page/submit_row.html:10 +msgid "Save as new" +msgstr "另存为" + +#: templates/admin/cms/page/plugin/submit_line.html:8 +#: templates/admin/cms/page/submit_row.html:11 +msgid "Save and add another" +msgstr "保存并追加" + +#: templates/admin/cms/page/tree/actions_dropdown.html:13 +#: templates/admin/cms/page/tree/actions_dropdown.html:15 +#: templates/admin/cms/page/tree/menu.html:185 +#: templates/admin/cms/page/tree/menu.html:187 +#: templates/cms/toolbar/dragitem.html:41 +msgid "Copy" +msgstr "复制" + +#: templates/admin/cms/page/tree/actions_dropdown.html:26 +#: templates/admin/cms/page/tree/actions_dropdown.html:28 +#: templates/admin/cms/page/tree/menu.html:191 +#: templates/admin/cms/page/tree/menu.html:193 +#: templates/cms/toolbar/dragitem.html:40 +msgid "Cut" +msgstr "剪切" + +#: templates/admin/cms/page/tree/actions_dropdown.html:37 +#: templates/admin/cms/page/tree/base.html:170 +#: templates/admin/cms/page/tree/menu.html:199 +#: templates/cms/toolbar/dragbar.html:25 templates/cms/toolbar/dragbar.html:28 +#: templates/cms/toolbar/dragitem.html:44 +#: templates/cms/toolbar/dragitem.html:49 +msgid "Paste" +msgstr "粘贴" + +#: templates/admin/cms/page/tree/actions_dropdown.html:52 +#: templates/admin/cms/page/tree/actions_dropdown.html:54 +#: templates/admin/cms/page/tree/actions_dropdown.html:61 +msgid "Set as home" +msgstr "设为首页" + +#: templates/admin/cms/page/tree/actions_dropdown.html:84 +#: templates/admin/cms/page/tree/actions_dropdown.html:85 +msgid "is restricted" +msgstr "受限的" + +#: templates/admin/cms/page/tree/actions_dropdown.html:93 +msgid "last change by" +msgstr "最后修改者" + +#: templates/admin/cms/page/tree/actions_dropdown.html:96 +msgid "last change on" +msgstr "最后修改于" + +#: templates/admin/cms/page/tree/actions_dropdown.html:102 +msgid "meta" +msgstr "元信息" + +#: templates/admin/cms/page/tree/base.html:5 +msgid "List of pages" +msgstr "页面一览" + +#: templates/admin/cms/page/tree/base.html:28 +#: templates/admin/cms/page/tree/base.html:58 +#: templates/admin/cms/page/tree/base.html:60 +#: templates/admin/cms/page/tree/base.html:89 +msgid "Search" +msgstr "搜索" + +#: templates/admin/cms/page/tree/base.html:46 +msgid "Page Tree" +msgstr "页面树" + +#: templates/admin/cms/page/tree/base.html:52 +msgid "Reset filter" +msgstr "重置筛选" + +#: templates/admin/cms/page/tree/base.html:118 +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" 恢复已删除的%(name)s\n" +" " + +#: templates/admin/cms/page/tree/base.html:150 +msgid "Main Navigation" +msgstr "主导航" + +#: templates/admin/cms/page/tree/base.html:162 +#: templates/admin/cms/page/tree/menu.html:176 +msgid "Options" +msgstr "选项" + +#: templates/admin/cms/page/tree/base.html:200 +#: templates/admin/cms/page/tree/base.html:264 +msgid "Successfully moved" +msgstr "移动完成" + +#: templates/admin/cms/page/tree/base.html:201 +#: templates/admin/cms/page/tree/base.html:265 +msgid "Changes within the tree might require a refresh." +msgstr "树中的修改可能需要刷新。" + +#: templates/admin/cms/page/tree/base.html:202 +#: templates/admin/cms/page/tree/base.html:266 +msgid "Error:" +msgstr "错误:" + +#: templates/admin/cms/page/tree/base.html:203 +#: templates/admin/cms/page/tree/base.html:267 +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "此页面无法复制,因为已附加应用。请在页面的“高级设置”中管理应用挂钩(apphook)。" + +#: templates/admin/cms/page/tree/base.html:204 +#: templates/admin/cms/page/tree/base.html:268 +msgid "Are you sure you want to § this page?" +msgstr "确定要 § 这个页面吗?" + +#: templates/admin/cms/page/tree/base.html:205 +#: templates/admin/cms/page/tree/base.html:269 +msgid "Reload" +msgstr "重新加载" + +#: templates/admin/cms/page/tree/base.html:207 +#: templates/admin/cms/page/tree/base.html:271 +msgid "New node" +msgstr "新节点" + +#: templates/admin/cms/page/tree/base.html:208 +#: templates/admin/cms/page/tree/base.html:272 +msgid "nodes" +msgstr "节点" + +#: templates/admin/cms/page/tree/base.html:219 +#: templates/admin/cms/page/tree/base.html:283 +msgid "View" +msgstr "查看" + +#: templates/admin/cms/page/tree/base.html:225 +#: templates/admin/cms/page/tree/base.html:289 +msgid "Menu" +msgstr "目录" + +#: templates/admin/cms/page/tree/base.html:298 +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" 尚未存在 %(object)s。\n" +"
\n" +" 立即添加 %(object)s。\n" +" " + +#: templates/admin/cms/page/tree/copy_premissions.html:4 +msgid "Copy options" +msgstr "复制选项" + +#: templates/admin/cms/page/tree/copy_premissions.html:5 +msgid "Choose copy options" +msgstr "选择复制选项" + +#: templates/admin/cms/page/tree/copy_premissions.html:11 +#: templates/cms/toolbar/toolbar_with_structure.html:12 +#: templates/cms/toolbar/toolbar_with_structure.html:49 +msgid "Close" +msgstr "关闭" + +#: templates/admin/cms/page/tree/legend.html:7 +msgid "Legend" +msgstr "图例" + +#: templates/admin/cms/page/tree/legend.html:16 +msgid "In menu" +msgstr "在目录中" + +#: templates/admin/cms/page/tree/legend.html:22 +msgid "Not in menu" +msgstr "不在目录中" + +#: templates/admin/cms/page/tree/legend.html:28 +msgid "View page" +msgstr "查看页面" + +#: templates/admin/cms/page/tree/legend.html:40 +#: templates/admin/cms/page/tree/menu.html:51 +msgid "Softroot" +msgstr "伪根节点" + +#: templates/admin/cms/page/tree/legend.html:46 +msgid "Apphook" +msgstr "应用挂钩" + +#: templates/admin/cms/page/tree/menu.html:63 +#, python-format +msgid "Application: %(apphook)s" +msgstr "应用:%(apphook)s" + +#: templates/admin/cms/page/tree/menu.html:118 +msgid "in menu" +msgstr "目录中" + +#: templates/admin/cms/page/tree/menu.html:123 +msgid "not in menu" +msgstr "不在目录中" + +#: templates/admin/cms/page/tree/menu.html:140 +#: templates/admin/cms/page/tree/menu.html:151 +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "页面设置(按住 SHIFT 点击打开高级设置)" + +#: templates/admin/cms/page/tree/menu.html:218 +msgid "Permissions" +msgstr "权限" + +#: templates/cms/headless/placeholder.html:17 +msgid "inherited" +msgstr "继承" + +#: templates/cms/noapphook.html:18 +#: templates/cms/toolbar/toolbar_with_structure.html:90 +msgid "This page has no preview!" +msgstr "当前页面没有预览!" + +#: templates/cms/noapphook.html:19 +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "可能附加的 apphook 没有为其根节点提供内容。" + +#: templates/cms/noapphook.html:20 +#: templates/cms/toolbar/toolbar_with_structure.html:91 +msgid "It is being redirected to:" +msgstr "它被重定向到:" + +#: templates/cms/toolbar/clipboard.html:3 +msgid "Clipboard" +msgstr "剪贴板" + +#: templates/cms/toolbar/dragbar.html:9 templates/cms/toolbar/dragitem.html:28 +#: templates/cms/toolbar/toolbar_javascript.html:91 +msgid "Add plugin" +msgstr "添加插件" + +#: templates/cms/toolbar/dragbar.html:20 +msgid "Copy all" +msgstr "复制全部" + +#: templates/cms/toolbar/dragbar.html:22 +msgid "Copy from" +msgstr "复制来源" + +#: templates/cms/toolbar/dragbar.html:26 templates/cms/toolbar/dragbar.html:29 +msgid "Empty all" +msgstr "清空全部" + +#: templates/cms/toolbar/dragbar.html:35 +#: templates/cms/toolbar/dragitem.html:61 +msgid "Filter plugins..." +msgstr "筛选插件" + +#: templates/cms/toolbar/dragbar.html:41 +msgid "This is a static placeholder" +msgstr "这是一个静态占位符" + +#: templates/cms/toolbar/dragbar.html:43 +msgid "Expand all" +msgstr "全部展开" + +#: templates/cms/toolbar/dragbar.html:44 +msgid "Collapse all" +msgstr "全部收起" + +#: templates/cms/toolbar/dragitem.html:26 +msgid "You cannot add plugins to this plugin." +msgstr "无法在该插件中添加其它插件" + +#: templates/cms/toolbar/dragitem.html:34 +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "此插件不能在其父级之外移动或编辑" + +#: templates/cms/toolbar/dragitem.html:50 +msgid "Clipboard is empty." +msgstr "剪贴板已空" + +#: templates/cms/toolbar/dragitem.html:51 +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "该插件不能允许该类型插件作为嵌套插件" + +#: templates/cms/toolbar/dragitem.html:52 +msgid "This plugin cannot have nested plugins." +msgstr "该插件无法有嵌套插件" + +#: templates/cms/toolbar/dragitem_extra_menu.html:2 +msgid "Highlight" +msgstr "高亮显示" + +#: templates/cms/toolbar/dragitem_menu.html:4 +msgid "Available plugins" +msgstr "可用的插件" + +#: templates/cms/toolbar/items/button_list.html:4 +msgid "Toggle structure" +msgstr "切换结构" + +#: templates/cms/toolbar/items/login.html:16 +msgid "Login" +msgstr "登陆" + +#: templates/cms/toolbar/plugin.html:24 +msgid "Add plugin to" +msgstr "添加插件到" + +#: templates/cms/toolbar/toolbar.html:28 +msgid "More" +msgstr "更多" + +#: templates/cms/toolbar/toolbar_javascript.html:25 +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"开发版本:django CMS %(cms_version)s,Django %(django_version)s,Python " +"%(python_version)s" + +#: templates/cms/toolbar/toolbar_javascript.html:27 +msgid "Cancel" +msgstr "取消" + +#: templates/cms/toolbar/toolbar_javascript.html:28 +msgid "The following error occurred:" +msgstr "发生了下述错误:" + +#: templates/cms/toolbar/toolbar_javascript.html:29 +msgid "Action successful." +msgstr "操作成功。" + +#: templates/cms/toolbar/toolbar_javascript.html:30 +msgid "Are you sure you want to delete this plugin?" +msgstr "您确认要删除当前插件吗?" + +#: templates/cms/toolbar/toolbar_javascript.html:31 +msgid "Are you sure you want to publish this page?" +msgstr "您确定您要发布该页面吗?" + +#: templates/cms/toolbar/toolbar_javascript.html:32 +msgid "Plugin will be added here" +msgstr "插件将被添加到这里" + +#: templates/cms/toolbar/toolbar_javascript.html:33 +msgid "You have unsaved changes." +msgstr "您有未保存的更改。" + +#: templates/cms/toolbar/toolbar_javascript.html:34 +msgid "Loading" +msgstr "加载中" + +#: templates/cms/toolbar/toolbar_javascript.html:35 +msgid "Are you sure you want to abandon these changes?" +msgstr "确定要放弃这些更改吗?" + +#: templates/cms/toolbar/toolbar_javascript.html:36 +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "无法加载表单。请检查服务器是否正常运行。" + +#: templates/cms/toolbar/toolbar_javascript.html:37 +msgid "Most used" +msgstr "常用" + +#: templates/cms/toolbar/toolbar_javascript.html:38 +msgid "Shortcuts" +msgstr "快捷键" + +#: templates/cms/toolbar/toolbar_javascript.html:39 +msgid "The page was changed in the meantime, reloading..." +msgstr "页面在此期间已被更改,正在重新加载…" + +#: templates/cms/toolbar/toolbar_javascript.html:42 +msgid "CMS-wide Shortcuts" +msgstr "CMS 全局快捷键" + +#: templates/cms/toolbar/toolbar_javascript.html:46 +msgid "Bring up this help dialog" +msgstr "显示此帮助对话框" + +#: templates/cms/toolbar/toolbar_javascript.html:50 +msgid "Close/cancel" +msgstr "关闭/取消" + +#: templates/cms/toolbar/toolbar_javascript.html:54 +msgid "Toggle structure mode" +msgstr "切换结构模式" + +#: templates/cms/toolbar/toolbar_javascript.html:58 +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "切换结构模式并高亮悬停插件" + +#: templates/cms/toolbar/toolbar_javascript.html:62 +msgid "Open \\" +msgstr "打开" + +#: templates/cms/toolbar/toolbar_javascript.html:66 +msgid "Focus on Toolbar" +msgstr "聚焦到工具栏" + +#: templates/cms/toolbar/toolbar_javascript.html:75 +msgid "Focus on placeholders" +msgstr "聚焦到占位符" + +#: templates/cms/toolbar/toolbar_javascript.html:79 +msgid "Move to next/previous element" +msgstr "移动到下一个/上一个元素" + +#: templates/cms/toolbar/toolbar_javascript.html:83 +msgid "Focus on plugins of placeholder" +msgstr "聚焦到占位符的插件" + +#: templates/cms/toolbar/toolbar_javascript.html:87 +msgid "Edit plugin" +msgstr "编辑插件" + +#: templates/cms/toolbar/toolbar_javascript.html:95 +msgid "Open actions menu" +msgstr "打开操作菜单" + +#: templates/cms/toolbar/toolbar_javascript.html:99 +msgid "Expand/collapse" +msgstr "展开/折叠" + +#: templates/cms/toolbar/toolbar_javascript.html:126 +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "登录失败。请检查您的认证信息并重试。" + +#: templates/cms/toolbar/toolbar_with_structure.html:5 +msgid "Double-click to edit" +msgstr "双击进行编辑" + +#: templates/cms/toolbar/toolbar_with_structure.html:6 +msgid "Tap to edit" +msgstr "点击来编辑" + +#: templates/cms/toolbar/toolbar_with_structure.html:25 +msgid "Click to go back" +msgstr "点击返回" + +#: templates/cms/toolbar/toolbar_with_structure.html:26 +msgid "Click to go forward" +msgstr "点击前进" + +#: templates/cms/toolbar/toolbar_with_structure.html:47 +msgid "Minimize" +msgstr "最小化" + +#: templates/cms/toolbar/toolbar_with_structure.html:48 +msgid "Maximize" +msgstr "最大化" + +#: templates/cms/toolbar/toolbar_with_structure.html:74 +msgid "Drop a plugin here" +msgstr "拖放一个插件到这里" + +#: templates/cms/welcome.html:26 +#, python-format +msgid "Version %(cms_version)s" +msgstr "版本 %(cms_version)s" + +#: templates/cms/welcome.html:30 +msgid "Let’s build something great together!" +msgstr "让我们一起创造伟大的作品!" + +#: templates/cms/welcome.html:32 +msgid "Please log in" +msgstr "请登录" + +#: templates/cms/welcome.html:36 +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" 添加您的第一个页面\n" +" " + +#: templates/cms/welcome.html:43 +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

资助我们

\n" +"

\n" +" 您的资助将直接促进产品改进,主要通过 django CMS 奖学金项目!\n" +"

\n" +"

\n" +" 您或组织可以通过 Github 赞助 快速捐助。\n" +"

\n" +" " + +#: templates/cms/welcome.html:56 +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

加入我们

\n" +"

django CMS 协会是一个资助并引导 django CMS 开发的非营利组织。

\n" +"

您可以作为个人或组织加入。

\n" +" " + +#: templates/cms/welcome.html:69 +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

参与贡献

\n" +" \n" +" " + +#: templates/cms/welcome.html:84 +msgid "Installation Notes" +msgstr "安装备注" + +#: templates/cms/welcome.html:87 +msgid "Support" +msgstr "支持" + +#: templates/cms/welcome.html:90 +msgid "Give back" +msgstr "回馈" + +#: templates/cms/welcome.html:92 +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

若顶部未显示 django CMS 标志,请确认已将 static/cms 目录链接到静态文件。

\n" +" " + +#: templates/cms/welcome.html:98 +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

出现此消息是因为在设置中 DEBUG = True 且尚未添加任何页面。

\n" +" " + +#: templates/cms/welcome.html:120 +msgid "Welcome to django CMS" +msgstr "欢迎来到django CMS" + +#: templates/cms/widgets/applicationconfigselect.html:6 +msgid "Add Another" +msgstr "添加其他" + +#: templates/cms/wizards/create.html:25 +msgid "Back" +msgstr "返回" + +#: templates/cms/wizards/start.html:15 +msgid "Please choose an option from below to proceed to the next step." +msgstr "请在下面选择一选项来继续下一步" + +#: templates/cms/wizards/start.html:23 +msgid "Next" +msgstr "下一个" + +#: templatetags/cms_admin.py:129 +msgid "Unknown" +msgstr "未知" + +#: templatetags/cms_tags.py:87 +#, python-format +msgid "Page not found on %(domain)s" +msgstr "该页面在 %(domain)s 中未找到" + +#: templatetags/cms_tags.py:89 +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "模板标签无法找到`%(page_lookup)s `所对应的页面。源请求页面为http://%(host)s%(path)s" + +#: test_utils/project/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:4 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:4 +msgid "Two columns" +msgstr "两列" + +#: test_utils/project/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates/__init__.py:5 +#: test_utils/project/templates/inner_dir/custom_templates_2/__init__.py:5 +msgid "Three columns" +msgstr "三列" + +#: test_utils/project/customuserapp/models.py:44 +msgid "username" +msgstr "用户名" + +#: test_utils/project/customuserapp/models.py:45 +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "300个字符以内,必须是字母、数字及@/./+/-/_ " + +#: test_utils/project/customuserapp/models.py:48 +msgid "Enter a valid username." +msgstr "输入一个有效的用户名" + +#: test_utils/project/customuserapp/models.py:51 +msgid "email address" +msgstr "电子邮件地址" + +#: test_utils/project/customuserapp/models.py:53 +msgid "staff status" +msgstr "状态" + +#: test_utils/project/customuserapp/models.py:54 +msgid "Designates whether the user can log into this admin site." +msgstr "指定该用户是否可以登录到网站管理界面。" + +#: test_utils/project/customuserapp/models.py:58 +msgid "active" +msgstr "活动" + +#: test_utils/project/customuserapp/models.py:59 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "指定该用户是否应被视为活跃的用户。不选择的话,不代表删除帐户。" + +#: test_utils/project/customuserapp/models.py:71 +msgid "users" +msgstr "用户" + +#: test_utils/project/extensionapp/cms_toolbars.py:44 +msgid "Title Extension" +msgstr "标题扩展" + +#: test_utils/project/extensionapp/cms_toolbars.py:75 +msgid "Page Extension" +msgstr "页面扩展" + +#: test_utils/project/objectpermissionsapp/models.py:45 +msgid "object ID" +msgstr "对象ID" + +#: test_utils/project/placeholderapp/cms_apps.py:8 +msgid "Example1 App" +msgstr "样例1 App" + +#: test_utils/project/placeholderapp/cms_apps.py:15 +msgid "MultilingualExample1 App" +msgstr "多语言样例1 App" + +#: test_utils/project/placeholderapp/cms_toolbars.py:25 +msgid "Example1" +msgstr "样例1" + +#: test_utils/project/placeholderapp/cms_toolbars.py:26 +msgid "Examples" +msgstr "样例" + +#: test_utils/project/pluginapp/plugins/extra_context/cms_plugins.py:10 +msgid "Extra Context" +msgstr "额外内容" + +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:16 +#: test_utils/project/pluginapp/plugins/manytomany_rel/cms_plugins.py:35 +msgid "Articles" +msgstr "文章" + +#: test_utils/project/sampleapp/cms_apps.py:25 +msgid "Sample App" +msgstr "样板程序" + +#: test_utils/project/sampleapp/cms_apps.py:36 +msgid "Sample App with config" +msgstr "带配置的样板程序" + +#: test_utils/project/sampleapp/cms_apps.py:56 +msgid "Sample App with excluded permissions" +msgstr "排除权限的示例" + +#: test_utils/project/sampleapp/cms_apps.py:65 +msgid "Sample App 2" +msgstr "样板程序2" + +#: test_utils/project/sampleapp/cms_apps.py:76 +msgid "Sample App 3" +msgstr "样板程序2" + +#: test_utils/project/sampleapp/cms_apps.py:97 +msgid "Namespaced App" +msgstr "程序命名空间" + +#: test_utils/project/sampleapp/cms_apps.py:111 +msgid "Parent app" +msgstr "母应用程序" + +#: test_utils/project/sampleapp/cms_apps.py:118 +msgid "Child app" +msgstr "子应用程序" + +#: test_utils/project/sampleapp/cms_apps.py:125 +msgid "Variable urls-menus App" +msgstr "可变 URL 菜单应用" + +#: test_utils/project/sampleapp/cms_menus.py:18 +msgid "sample root page" +msgstr "根页样板" + +#: test_utils/project/sampleapp/cms_menus.py:19 +msgid "sample settings page" +msgstr "设置页样板" + +#: test_utils/project/sampleapp/cms_menus.py:20 +msgid "sample account page" +msgstr "账户页样板" + +#: test_utils/project/sampleapp/cms_menus.py:21 +msgid "sample my profile page" +msgstr "个人资料页样板" + +#: test_utils/project/sampleapp/cms_menus.py:35 +msgid "Static Menu" +msgstr "静态菜单" + +#: test_utils/project/sampleapp/cms_menus.py:54 +msgid "Static Menu2" +msgstr "静态菜单2" + +#: test_utils/project/sampleapp/cms_menus.py:61 +msgid "Static Menu3" +msgstr "静态菜单3" + +#: test_utils/project/sampleapp/cms_menus.py:68 +msgid "Static Menu4" +msgstr "静态菜单" + +#: test_utils/project/sampleapp/cms_toolbars.py:21 +#: test_utils/project/sampleapp/views.py:30 +msgid "Category" +msgstr "分类" + +#: test_utils/project/sampleapp/cms_toolbars.py:22 +msgid "Categories" +msgstr "分类" + +#: test_utils/project/sampleapp/cms_toolbars.py:23 +msgid "Add Category" +msgstr "添加分类" + +#: test_utils/project/sampleapp/urls.py:14 +msgid "^account/$" +msgstr "^account/$" + +#: test_utils/project/sampleapp/views.py:32 +msgid "Change Category" +msgstr "修改分类" + +#: test_utils/project/templates/registration/logged_out.html:7 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "感谢您今天在网站上花费了宝贵的时间!" + +#: tests/test_templates.py:57 utils/conf.py:186 +msgid "Inherit the template of the nearest ancestor" +msgstr "继承最近的上级页面模板" + +#: tests/test_wizards.py:104 +msgid "UserSettings" +msgstr "用户设置" + +#: toolbar/utils.py:30 +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "向占位符“%(placeholder_label)s”添加插件" + +#: toolbar/utils.py:50 +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "向 %(plugin_name)s 添加插件" + +#: utils/conf.py:101 +msgid "Community forum" +msgstr "社区论坛" + +#: utils/conf.py:103 +msgid "Getting started" +msgstr "快速开始" + +#: utils/conf.py:104 +msgid "Talk to us" +msgstr "联系我们" + +#: utils/mail.py:37 +msgid "CMS - your user account was created." +msgstr "CMS - 您的用户帐号已创建。" + +#: utils/mail.py:39 +msgid "CMS - your user account was changed." +msgstr "CMS - 您的用户帐号已变更。" + +#: utils/plugins.py:520 +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "当前位置已经到达插件(%s)允许的最大数量." + +#: utils/plugins.py:526 +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "当前位置已经到达插件%(plugin_name)s允许的最大数量限制(%(limit)s)." + +#: utils/request_ip_resolvers.py:22 +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "无法找到指定的 CMS_REQUEST_IP_RESOLVER 模块:\"{0}\"。" + +#: utils/request_ip_resolvers.py:26 +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "无法在模块“{1}”中找到指定的 CMS_REQUEST_IP_RESOLVER 函数:\"{0}\"。" + +#: wizards/wizard_base.py:145 +#, python-format +msgid "Create a new %s instance." +msgstr "创建一个新的%s实例" + +#: wizards/wizard_pool.py:54 +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "一向导程序已经注册在模型%s" + +#~ msgid "by template" +#~ msgstr "按模板" + +#~ msgid "by code" +#~ msgstr "按代码" + +#~ msgid "static placeholder name" +#~ msgstr "静态占位符名称" + +#~ msgid "" +#~ "Descriptive name to identify this static placeholder. Not displayed to " +#~ "users." +#~ msgstr "表明这个静态占位符的描述性名称。不会呈现给用户。" + +#~ msgid "placeholder code" +#~ msgstr "占位符代码" + +#~ msgid "To render the static placeholder in templates." +#~ msgstr "加载这个静态占位符到模板中。" + +#~ msgid "placeholder content" +#~ msgstr "占位符内容" + +#~ msgid "creation_method" +#~ msgstr "创建方法" + +#~ msgid "static placeholder" +#~ msgstr "静态占位符" + +#~ msgid "static placeholders" +#~ msgstr "静态占位符" + +#~ msgid "A static placeholder with the same site and code already exists" +#~ msgstr "已存在一个相同站点、相同编码的静态占位符。" + +#~ msgid "Title" +#~ msgstr "标题" + +#~ msgid "Soft root" +#~ msgstr "伪根节点" + +#~ msgid "Redirect" +#~ msgstr "转向" + +#~ msgid "The %(name)s \"%(obj)s\" was deleted successfully." +#~ msgstr "" + +#~ msgid "Alias" +#~ msgstr "別名" + +#~ msgid "Create Alias" +#~ msgstr "创建别名" + +#~ msgid "" +#~ "This is an alias reference, you can edit the content only on the %(page_title)s page." +#~ msgstr "" + +#~ msgid "Edit this Page" +#~ msgstr "编辑当前页面" + +#~ msgid "overwrite the title (html title tag)" +#~ msgstr "重写标题(使用 HTML 标题标签)" + +#~ msgid "overwrite the title in the menu" +#~ msgstr "代用的菜单标题" + +#~ msgid "description" +#~ msgstr "详细描述" + +#~ msgid "The text displayed in search engines." +#~ msgstr "搜索引擎中显示的文本" + +#~ msgid "Open \"Create\" dialog" +#~ msgstr "" + +#~ msgid "Installation successful!" +#~ msgstr "安装成功!" + +#~ msgid "Add your first page" +#~ msgstr "添加您的第一个页面" + +#~ msgid "" +#~ "\n" +#~ " Welcome to django CMS version %(cms_version)s.\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ "欢迎来到django CMS版本 %(cms_version)s." + +#~ msgid "" +#~ "\n" +#~ " JavaScript seems to be disabled so please\n" +#~ " add a page manually.\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ "JavaScript好像被禁用所以请手动\n" +#~ "添加页面 ." + +#~ msgid "You do not have permission to change a page's navigation status" +#~ msgstr "" + +#~ msgid "You cannot change this page's navigation status" +#~ msgstr "" + +#~ msgid "Slug must not be empty." +#~ msgstr "缩略名不能为空。" diff --git a/cms/locale/zh/LC_MESSAGES/djangojs.po b/cms/locale/zh/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..1db3c5d4 --- /dev/null +++ b/cms/locale/zh/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: yakky \n" +"Language-Team: Chinese (http://app.transifex.com/divio/django-cms/language/zh/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/zh_CN.GB2312/LC_MESSAGES/django.po b/cms/locale/zh_CN.GB2312/LC_MESSAGES/django.po new file mode 100644 index 00000000..489549c2 --- /dev/null +++ b/cms/locale/zh_CN.GB2312/LC_MESSAGES/django.po @@ -0,0 +1,1981 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-05 12:20+0000\n" +"PO-Revision-Date: 2020-10-29 15:33+0000\n" +"Last-Translator: Aiky30 \n" +"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/divio/django-cms/language/zh_CN.GB2312/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN.GB2312\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "All" +msgstr "" + +msgid "Copy permissions" +msgstr "" + +msgid "Title" +msgstr "" + +msgid "The default title" +msgstr "" + +msgid "Slug" +msgstr "" + +msgid "The part of the title that is used in the URL" +msgstr "" + +msgid "Menu Title" +msgstr "" + +msgid "Overwrite what is displayed in the menu" +msgstr "" + +msgid "Page Title" +msgstr "" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "" + +msgid "Description meta tag" +msgstr "" + +msgid "A description of the page used by search engines." +msgstr "" + +msgid "Slug must not be empty." +msgstr "" + +msgid "Page type" +msgstr "" + +msgid "Page Types" +msgstr "" + +msgid "Overwrite URL" +msgstr "" + +msgid "Keep this field empty if standard path should be used." +msgstr "" + +#| msgid "softroot" +msgid "Soft root" +msgstr "" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "" + +msgid "Redirect" +msgstr "" + +msgid "Redirects to this URL." +msgstr "" + +msgid "Start typing..." +msgstr "" + +msgid "menu visibility" +msgstr "" + +msgid "limit when this page is visible in the menu" +msgstr "" + +#| msgid "Copy options" +msgid "URL options" +msgstr "" + +#| msgid "Copy options" +msgid "Menu options" +msgstr "" + +msgid "Application" +msgstr "" + +msgid "Hook application to this page." +msgstr "" + +msgid "Application configurations" +msgstr "" + +msgid "A page with this reverse URL id exists already." +msgstr "" + +#| msgid "Application configurations" +msgid "Invalid application config value" +msgstr "" + +msgid "An application instance using this configuration already exists." +msgstr "" + +msgid "An application instance with this name already exists." +msgstr "" + +msgid "You can't move the home page inside another page" +msgstr "" + +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + +msgid "user" +msgstr "" + +msgid "can_view" +msgstr "" + +msgid "Add" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "" + +msgid "Language must be set to a supported language!" +msgstr "" + +msgid "Parent plugin language must be same as language!" +msgstr "" + +#| msgid "Parent plugin language must be same as language!" +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "" + +msgid "Advanced Settings" +msgstr "" + +msgid "The page is not eligible to be home." +msgstr "" + +#, python-format +#| msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "" + +#| msgid "You do not have permission to clear this placeholder" +msgid "Error! You don't have permissions to copy this page." +msgstr "" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "" + +msgid "You do not have permission to edit this page" +msgstr "" + +msgid "Add Page Copy" +msgstr "" + +msgid "New sub page" +msgstr "" + +msgid "New page" +msgstr "" + +msgid "Database error" +msgstr "" + +msgid "Template not valid" +msgstr "" + +msgid "The template was successfully changed" +msgstr "" + +msgid "You do not have permission to copy these plugins." +msgstr "" + +#| msgid "You do not have permission to delete this plugin" +msgid "You do not have permission to delete this page" +msgstr "" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "" + +msgid "You do not have permission to change this page's in_navigation status" +msgstr "" + +msgid "View restriction" +msgstr "" + +msgid "View restrictions" +msgstr "" + +#, python-format +msgid "Field %s not found" +msgstr "" + +msgid "You do not have permission to edit this item" +msgstr "" + +msgid "You do not have permission to add a plugin" +msgstr "" + +#| msgid "You do not have permission to clear this placeholder" +msgid "You do not have permission to copy this placeholder." +msgstr "" + +msgid "Plugin not found" +msgstr "" + +msgid "You do not have permission to edit this plugin" +msgstr "" + +#| msgid "You have no permission to move this plugin" +msgid "You have no permission to paste this plugin" +msgstr "" + +#| msgid "You have no permission to move this plugin" +msgid "You have no permission to paste this placeholder" +msgstr "" + +msgid "You have no permission to move this plugin" +msgstr "" + +#| msgid "You have no permission to move this plugin" +msgid "You have no permission to cut this plugin" +msgstr "" + +msgid "You do not have permission to delete this plugin" +msgstr "" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "" + +msgid "You do not have permission to clear this placeholder" +msgstr "" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "" + +msgid "placeholder" +msgstr "" + +msgid "Page permissions" +msgstr "" + +msgid "User & Group permissions" +msgstr "" + +msgid "Page permissions management" +msgstr "" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "" + +msgid "django CMS" +msgstr "" + +msgid "Placeholder" +msgstr "" + +msgid "Alias" +msgstr "" + +msgid "Create Alias" +msgstr "" + +#, python-format +msgid "" +"This is an alias reference, you can edit the content only on the %(page_title)s page." +msgstr "" + +msgid "Create" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Structure" +msgstr "" + +msgid "Content" +msgstr "" + +msgid "Sites" +msgstr "" + +msgid "Admin Sites" +msgstr "" + +msgid "Administration" +msgstr "" + +msgid "User settings" +msgstr "" + +msgid "Clipboard..." +msgstr "" + +msgid "Clear clipboard" +msgstr "" + +msgid "Disable toolbar" +msgstr "" + +msgid "Shortcuts..." +msgstr "" + +msgid "Users" +msgstr "" + +#, python-format +msgid "Logout %s" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Language" +msgstr "" + +#| msgid "Add %(language)s Translation" +msgid "Add Translation" +msgstr "" + +#| msgid "Delete %(language)s Translation" +msgid "Delete Translation" +msgstr "" + +#| msgid "Copy all plugins from %s" +msgid "Copy all plugins" +msgstr "" + +#, python-format +msgid "from %s" +msgstr "" + +#, python-format +#| msgid "Are you sure you want copy all plugins from %s?" +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "" + +msgid "Pages" +msgstr "" + +msgid "Page" +msgstr "" + +#| msgid "Create" +msgid "Create Page" +msgstr "" + +msgid "New Page" +msgstr "" + +msgid "New Sub Page" +msgstr "" + +msgid "Duplicate this Page" +msgstr "" + +msgid "Edit this Page" +msgstr "" + +msgid "Page settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Templates" +msgstr "" + +msgid "Hide in navigation" +msgstr "" + +msgid "Display in navigation" +msgstr "" + +msgid "Delete page" +msgstr "" + +msgid "Create a new page next to the current page." +msgstr "" + +msgid "Create a page below the current page." +msgstr "" + +msgid "Select a valid site" +msgstr "" + +msgid "Select a valid page" +msgstr "" + +#, python-format +#| msgid "" +#| "(pages)s has the same url '%(url)s' as current page \"%(instance)s" +#| msgid_plural "" +#| "%(pages)s have the same url '%(url)s' as current page \"%(instance)s" +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "" + +#, python-format +#| msgid "" +#| "(pages)s has the same url '%(url)s' as current page \"%(instance)s" +#| msgid_plural "" +#| "%(pages)s have the same url '%(url)s' as current page \"%(instance)s" +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "" + +msgid "Provide a title for the new page." +msgstr "" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "" + +#| msgid "You do not have permission to add a plugin" +msgid "You don't have the permissions required to add a page." +msgstr "" + +msgid "ID" +msgstr "" + +msgid "position" +msgstr "" + +msgid "language" +msgstr "" + +msgid "plugin_name" +msgstr "" + +msgid "creation date" +msgstr "" + +msgid "can edit" +msgstr "" + +msgid "can add" +msgstr "" + +msgid "can delete" +msgstr "" + +msgid "can change advanced settings" +msgstr "" + +msgid "can publish" +msgstr "" + +msgid "can change permissions" +msgstr "" + +msgid "can move" +msgstr "" + +msgid "view restricted" +msgstr "" + +msgid "can recover pages" +msgstr "" + +msgid "group" +msgstr "" + +msgid "sites" +msgstr "" + +msgid "created by" +msgstr "" + +msgid "changed by" +msgstr "" + +msgid "publication date" +msgstr "" + +msgid "publication end date" +msgstr "" + +msgid "in navigation" +msgstr "" + +msgid "soft root" +msgstr "" + +msgid "id" +msgstr "" + +msgid "attached menu" +msgstr "" + +msgid "template" +msgstr "" + +msgid "login required" +msgstr "" + +msgid "application" +msgstr "" + +msgid "application instance name" +msgstr "" + +msgid "site" +msgstr "" + +msgid "Grant on" +msgstr "" + +msgid "page" +msgstr "" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "" + +msgid "pages" +msgstr "" + +msgid "default" +msgstr "" + +msgid "slug" +msgstr "" + +msgid "Path" +msgstr "" + +msgid "Current page" +msgstr "" + +msgid "Page children (immediate)" +msgstr "" + +msgid "Page and children (immediate)" +msgstr "" + +msgid "Page descendants" +msgstr "" + +msgid "Page and descendants" +msgstr "" + +msgid "on page level" +msgstr "" + +msgid "frontend view restriction" +msgstr "" + +#| msgid "Please select user or group first." +msgid "Please select user or group." +msgstr "" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "" + +msgid "can recover any deleted page" +msgstr "" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "" + +msgid "Page global permission" +msgstr "" + +msgid "Pages global permissions" +msgstr "" + +msgid "Page permission" +msgstr "" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "" + +msgid "User (page)" +msgstr "" + +msgid "Users (page)" +msgstr "" + +msgid "User group (page)" +msgstr "" + +msgid "User groups (page)" +msgstr "" + +msgid "slot" +msgstr "" + +msgid "width" +msgstr "" + +msgid "" +msgstr "" + +msgid "The language for the admin interface and toolbar" +msgstr "" + +msgid "user setting" +msgstr "" + +msgid "user settings" +msgstr "" + +msgid "by template" +msgstr "" + +msgid "by code" +msgstr "" + +msgid "static placeholder name" +msgstr "" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "" + +msgid "placeholder code" +msgstr "" + +msgid "To render the static placeholder in templates." +msgstr "" + +msgid "placeholder content" +msgstr "" + +msgid "creation_method" +msgstr "" + +msgid "static placeholder" +msgstr "" + +msgid "static placeholders" +msgstr "" + +msgid "A static placeholder with the same site and code already exists" +msgstr "" + +msgid "for logged in users only" +msgstr "" + +msgid "for anonymous users only" +msgstr "" + +msgid "Inherit from parent page" +msgstr "" + +msgid "Deny" +msgstr "" + +msgid "Only this website" +msgstr "" + +msgid "Allow" +msgstr "" + +msgid "title" +msgstr "" + +msgid "overwrite the title (html title tag)" +msgstr "" + +msgid "overwrite the title in the menu" +msgstr "" + +msgid "description" +msgstr "" + +msgid "The text displayed in search engines." +msgstr "" + +msgid "redirect" +msgstr "" + +msgid "The template used to render the content." +msgstr "" + +msgid "Advanced options" +msgstr "" + +msgid "Generic" +msgstr "" + +#, python-format +#| msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "" + +msgid "Moved" +msgstr "" + +#| msgid "Change" +msgid "Changed" +msgstr "" + +#| msgid "Delete" +msgid "Deleted" +msgstr "" + +#| msgid "Add %(language)s Translation" +msgid "Added Page Translation" +msgstr "" + +#| msgid "Delete %(language)s Translation" +msgid "Changed Page Translation" +msgstr "" + +#| msgid "Delete %(language)s Translation" +msgid "Deleted Page Translation" +msgstr "" + +#| msgid "Add plugin" +msgid "Added Plugin" +msgstr "" + +#| msgid "Change" +msgid "Changed Plugin" +msgstr "" + +#| msgid "Add plugin" +msgid "Moved Plugin" +msgstr "" + +#| msgid "Delete page" +msgid "Deleted Plugin" +msgstr "" + +#| msgid "Add plugin" +msgid "Cut Plugin" +msgstr "" + +#| msgid "Add plugin" +msgid "Paste Plugin" +msgstr "" + +#| msgid "static placeholder" +msgid "Paste to Placeholder" +msgstr "" + +#| msgid "Copied plugins to %(placeholder)s" +msgid "Added plugins to placeholder from clipboard" +msgstr "" + +#| msgid "Placeholder" +msgid "Cleared Placeholder" +msgstr "" + +msgid "Save" +msgstr "" + +#, python-format +msgid "Log in to administration here." +msgstr "" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + +msgid "Username:" +msgstr "" + +msgid "Password:" +msgstr "" + +#| msgid "Add Page" +msgid "Add a page" +msgstr "" + +msgid "Change a page" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "View on site" +msgstr "" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" + +msgid "All permissions" +msgstr "" + +msgid "Loading..." +msgstr "" + +msgid "Save and continue editing" +msgstr "" + +msgid "User" +msgstr "" + +msgid "Group" +msgstr "" + +msgid "Can edit" +msgstr "" + +msgid "Can add" +msgstr "" + +msgid "Can delete" +msgstr "" + +msgid "Can publish" +msgstr "" + +msgid "Can change permissions" +msgstr "" + +msgid "Can move" +msgstr "" + +msgid "Can view" +msgstr "" + +msgid "(global)" +msgstr "" + +msgid "(current)" +msgstr "" + +msgid "Page doesn't inherit any permissions." +msgstr "" + +msgid "Edit model" +msgstr "" + +msgid "Save as new" +msgstr "" + +msgid "Save and add another" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Cut" +msgstr "" + +msgid "Paste" +msgstr "" + +#| msgid "Save as new" +msgid "Set as home" +msgstr "" + +msgid "is restricted" +msgstr "" + +msgid "last change by" +msgstr "" + +msgid "meta" +msgstr "" + +msgid "List of pages" +msgstr "" + +msgid "Search" +msgstr "" + +#| msgid "Page Title" +msgid "Page Tree" +msgstr "" + +msgid "Reset filter" +msgstr "" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" + +msgid "" +"\n" +" New Page\n" +" " +msgstr "" + +#| msgid "in navigation" +msgid "Main Navigation" +msgstr "" + +#| msgid "Actions" +msgid "Options" +msgstr "" + +msgid "Successfully moved" +msgstr "" + +msgid "Changes within the tree might require a refresh." +msgstr "" + +msgid "Error:" +msgstr "" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "" + +msgid "Are you sure you want to § this page?" +msgstr "" + +msgid "Reload" +msgstr "" + +#| msgid "New Page" +msgid "New node" +msgstr "" + +msgid "nodes" +msgstr "" + +msgid "View" +msgstr "" + +msgid "Menu" +msgstr "" + +#, python-format +#| msgid "" +#| " JavaScript seems to be disabled so please\n" +#| " add a page manually.\n" +#| " " +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" + +msgid "Copy options" +msgstr "" + +msgid "Choose copy options" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Legend" +msgstr "" + +#| msgid "published" +msgid "Published" +msgstr "" + +#| msgid "unpublished" +msgid "Unpublished" +msgstr "" + +msgid "Empty" +msgstr "" + +#| msgid "in menu" +msgid "In menu" +msgstr "" + +#| msgid "not in menu" +msgid "Not in menu" +msgstr "" + +#| msgid "New page" +msgid "View page" +msgstr "" + +#| msgid "softroot" +msgid "Softroot" +msgstr "" + +msgid "Apphook" +msgstr "" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "" + +msgid "in menu" +msgstr "" + +msgid "not in menu" +msgstr "" + +#| msgid "Page settings (SHIFT-click for advanced settings)" +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "" + +msgid "Permissions" +msgstr "" + +msgid "Clipboard" +msgstr "" + +msgid "Add plugin" +msgstr "" + +msgid "Copy all" +msgstr "" + +msgid "Copy from" +msgstr "" + +msgid "Empty all" +msgstr "" + +msgid "Filter plugins..." +msgstr "" + +msgid "This is a static placeholder" +msgstr "" + +msgid "Expand all" +msgstr "" + +msgid "Collapse all" +msgstr "" + +msgid "You cannot add plugins to this plugin." +msgstr "" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "" + +msgid "Clipboard is empty." +msgstr "" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "" + +msgid "This plugin cannot have nested plugins." +msgstr "" + +msgid "Highlight" +msgstr "" + +msgid "Available plugins" +msgstr "" + +#| msgid "Structure" +msgid "Toggle structure" +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Add plugin to" +msgstr "" + +msgid "More" +msgstr "" + +#, python-format +#| msgid "Development version using django CMS %(cms_version)s" +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The following error occured:" +msgstr "" + +#| msgid "Action successfull... reloading." +msgid "Action successful." +msgstr "" + +msgid "Are you sure you want to delete this plugin?" +msgstr "" + +msgid "Are you sure you want to publish this page?" +msgstr "" + +msgid "Plugin will be added here" +msgstr "" + +#| msgid "This page has unpublished changes." +msgid "You have unsaved changes." +msgstr "" + +#| msgid "Loading..." +msgid "Loading" +msgstr "" + +#| msgid "Are you sure you want to § this page?" +msgid "Are you sure you want to abandon these changes?" +msgstr "" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "" + +#| msgid "Notify user" +msgid "Most used" +msgstr "" + +msgid "Shortcuts" +msgstr "" + +msgid "The page was changed in the meantime, reloading..." +msgstr "" + +msgid "Bring up this help dialog" +msgstr "" + +#| msgid "Cancel" +msgid "Close/cancel" +msgstr "" + +msgid "Toggle structure mode" +msgstr "" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "" + +#| msgid "static placeholders" +msgid "Focus on placeholders" +msgstr "" + +msgid "Move to next/previous element" +msgstr "" + +#| msgid "Add plugin to placeholder" +msgid "Focus on plugins of placeholder" +msgstr "" + +#| msgid "Add plugin" +msgid "Edit plugin" +msgstr "" + +#| msgid "not in menu" +msgid "Open actions menu" +msgstr "" + +#| msgid "Expand all" +msgid "Expand/collapse" +msgstr "" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "" + +msgid "Double-click to edit" +msgstr "" + +msgid "Tap to edit" +msgstr "" + +msgid "Click to go back" +msgstr "" + +msgid "Click to go forward" +msgstr "" + +msgid "Minimize" +msgstr "" + +msgid "Maximize" +msgstr "" + +msgid "Drop a plugin here" +msgstr "" + +msgid "This page has no preview!" +msgstr "" + +msgid "It is being redirected to:" +msgstr "" + +msgid "Installation successful!" +msgstr "" + +msgid "Add your first page" +msgstr "" + +msgid "Please log in" +msgstr "" + +#, python-format +msgid "" +"\n" +" Welcome to django CMS version %(cms_version)s.\n" +" " +msgstr "" + +#, python-format +msgid "" +"\n" +" Add the first page to the system to continue.\n" +" " +msgstr "" + +#, python-format +msgid "" +"\n" +" JavaScript seems to be disabled so please\n" +" add a page manually.\n" +" " +msgstr "" + +msgid "Installation Notes" +msgstr "" + +msgid "Support" +msgstr "" + +msgid "Documentation" +msgstr "" + +#| msgid "" +#| "

If you don't see the ngo CMS logo at the top, make sure\n" +#| " you linked the static/cms folder to r\n" +#| " static files.

\n" +#| "

You're seeing this message ause you have\n" +#| " DEBUG = True in your django settings e and\n" +#| " haven't added any pages yet.\n" +#| "

\n" +#| " " +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" + +#| msgid "" +#| "

If you don't see the ngo CMS logo at the top, make sure\n" +#| " you linked the static/cms folder to r\n" +#| " static files.

\n" +#| "

You're seeing this message ause you have\n" +#| " DEBUG = True in your django settings e and\n" +#| " haven't added any pages yet.\n" +#| "

\n" +#| " " +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" + +msgid "Welcome to django CMS" +msgstr "" + +msgid "Add Another" +msgstr "" + +msgid "Back" +msgstr "" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "" + +msgid "Next" +msgstr "" + +msgid "no content" +msgstr "" + +#| msgid "no content" +msgid "has contents" +msgstr "" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" + +msgid "Two columns" +msgstr "" + +msgid "Three columns" +msgstr "" + +msgid "username" +msgstr "" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +msgid "Enter a valid username." +msgstr "" + +msgid "email address" +msgstr "" + +msgid "staff status" +msgstr "" + +msgid "Designates whether the user can log into this admin site." +msgstr "" + +msgid "active" +msgstr "" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +msgid "users" +msgstr "" + +msgid "Title Extension" +msgstr "" + +msgid "Page Extension" +msgstr "" + +msgid "object ID" +msgstr "" + +msgid "Example1 App" +msgstr "" + +msgid "MultilingualExample1 App" +msgstr "" + +msgid "Example1" +msgstr "" + +msgid "Examples" +msgstr "" + +msgid "Extra Context" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Sample App" +msgstr "" + +#| msgid "Sample App with excluded permissions" +msgid "Sample App with config" +msgstr "" + +msgid "Sample App with excluded permissions" +msgstr "" + +msgid "Sample App 2" +msgstr "" + +#| msgid "Sample App 2" +msgid "Sample App 3" +msgstr "" + +msgid "Namespaced App" +msgstr "" + +msgid "Parent app" +msgstr "" + +msgid "Child app" +msgstr "" + +msgid "Variable urls-menus App" +msgstr "" + +msgid "sample root page" +msgstr "" + +msgid "sample settings page" +msgstr "" + +msgid "sample account page" +msgstr "" + +msgid "sample my profile page" +msgstr "" + +msgid "Static Menu" +msgstr "" + +msgid "Static Menu2" +msgstr "" + +msgid "Static Menu3" +msgstr "" + +#| msgid "Static Menu" +msgid "Static Menu4" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Categories" +msgstr "" + +msgid "Add Category" +msgstr "" + +msgid "^account/$" +msgstr "" + +msgid "Change Category" +msgstr "" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +msgid "Inherit the template of the nearest ancestor" +msgstr "" + +msgid "UserSettings" +msgstr "" + +#, python-format +#| msgid "Add plugin to placeholder" +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "" + +#, python-format +#| msgid "Add plugin to placeholder" +msgid "Add plugin to %(plugin_name)s" +msgstr "" + +msgid "CMS - your user account was created." +msgstr "" + +msgid "CMS - your user account was changed." +msgstr "" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "" + +#, python-format +msgid "Create a new %s instance." +msgstr "" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "" + +#~ msgid "X Frame Options" +#~ msgstr "X Frame Options" + +#~ msgid "Whether this page can be embedded in other pages or websites" +#~ msgstr "Whether this page can be embedded in other pages or websites" + +#~ msgid "Language independent options" +#~ msgstr "Language independent options" + +#~ msgid "Publishing dates" +#~ msgstr "Publishing dates" + +#~ msgid "Change Permissions" +#~ msgstr "Change Permissions" + +#~ msgid "You do not have permission to revert this page." +#~ msgstr "You do not have permission to edit this page" + +#~ msgid "You do not have permission to publish this page" +#~ msgstr "You do not have permission to publish this page" + +#~ msgid "Page not published! A parent page is not published yet." +#~ msgstr "Page not published! A parent page is not published yet." + +#~ msgid "The content was successfully published." +#~ msgstr "The content was successfully published." + +#~ msgid "There was a problem publishing your content" +#~ msgstr "There was a problem publishing your content" + +#~ msgid "You do not have permission to unpublish this page" +#~ msgstr "You do not have permission to unpublish this page" + +#~ msgid "This page was never published" +#~ msgstr "This page was never published" + +#~ msgid "The %(language)s page \"%(page)s\" was successfully unpublished" +#~ msgstr "The %(language)s page \"%(page)s\" was successfully unpublished" + +#~ msgid "You don't have permissions to see page \"%(title)s\"" +#~ msgstr "You do not have permission to change pages." + +#~ msgid "parent must be in the same placeholder" +#~ msgstr "parent must be in the same placeholder" + +#~ msgid "parent must be in the same language as plugin_language" +#~ msgstr "parent must be in the same language as plugin_language" + +#~ msgid "Publish page changes" +#~ msgstr "Publish changes" + +#~ msgid "Publish page now" +#~ msgstr "Publish page now" + +#~ msgid "Save as Page Type" +#~ msgstr "Save as Page Type" + +#~ msgid "Unpublish page" +#~ msgstr "Unpublish page" + +#~ msgid "Publish page" +#~ msgstr "Publish page" + +#~ msgid "Are you sure you want to revert to live?" +#~ msgstr "Are you sure you want to revert to live?" + +#~ msgid "Revert to live" +#~ msgstr "Revert to live" + +#~ msgid "" +#~ "When the page should go live. Status must be \"Published\" for page to go " +#~ "live." +#~ msgstr "" +#~ "When the page should go live. Status must be \"Published\" for page to go " +#~ "live." + +#~ msgid "When to expire the page. Leave empty to never expire." +#~ msgstr "When to expire the page. Leave empty to never expire." + +#~ msgid "has url overwrite" +#~ msgstr "has url overwrite" + +#~ msgid "is published" +#~ msgstr "is published" + +#~ msgid "Basic Settings" +#~ msgstr "Basic Settings" + +#~ msgid "Preview this page in %(language)s " +#~ msgstr "Edit this page in %(language)s " + +#~ msgid "Publish" +#~ msgstr "Publish" + +#~ msgid "Unpublish" +#~ msgstr "Unpublish" + +#~ msgid "View published" +#~ msgstr "View published" + +#~ msgid "This page has unpublished changes." +#~ msgstr "This page has unpublished changes." + +#~ msgid "unpublished changes" +#~ msgstr "unpublished changes" + +#~ msgid "published" +#~ msgstr "published" + +#~ msgid "unpublished parent" +#~ msgstr "unpublished parent" + +#~ msgid "unpublished" +#~ msgstr "unpublished" + +#~ msgid "The current language of the content fields." +#~ msgstr "The current language of the content fields." + +#~ msgid "Another page with this slug already exists" +#~ msgstr "Another page with this slug already exists" + +#~ msgid "Add Page Type" +#~ msgstr "Add Page Type" + +#~ msgid "You do not have permission to change the template" +#~ msgstr "You do not have permission to change the template" + +#~ msgid "You do not have permission to change this page" +#~ msgstr "You do not have permission to change this page" + +#~ msgid "There only exists one translation for this page" +#~ msgstr "There only exists one translation for this page" + +#~ msgid "User does not have permission to add page." +#~ msgstr "User does not have permission to add page." + +#~ msgid "The site the page is accessible at." +#~ msgstr "The site the page is accessible at." + +#~ msgid "Edit page" +#~ msgstr "Edit this Page" + +#~ msgid "Toggle toolbar" +#~ msgstr "Toggle toolbar" + +#~ msgid "Invalid URL, use /my/url format." +#~ msgstr "Invalid URL, use /my/url format." + +#~ msgid "Add page permission also requires edit page permission." +#~ msgstr "Add page permission also requires edit page permission." + +#~ msgid "Recover (any) pages" +#~ msgstr "Recover (any) pages" + +#~ msgid "" +#~ "Send email notification to user about username or password change. Requires " +#~ "user email." +#~ msgstr "" +#~ "Send email notification to user about username or password change. Requires " +#~ "user email." + +#~ msgid "New password" +#~ msgstr "New password" + +#~ msgid "New password confirmation" +#~ msgstr "New password confirmation" + +#~ msgid "Email notification requires valid email address." +#~ msgstr "Email notification requires valid email address." + +#~ msgid "" +#~ "The permission to add new pages requires the permission to change pages!" +#~ msgstr "" +#~ "The permission to add new pages requires the permission to change pages!" + +#~ msgid "" +#~ "The permission to add new users requires the permission to change users!" +#~ msgstr "" +#~ "The permission to add new users requires the permission to change users!" + +#~ msgid "To add permissions you also need to edit them!" +#~ msgstr "To add permissions you also need to edit them!" + +#~ msgid "%(plugin_name)s plugin added to %(placeholder)s" +#~ msgstr "%(plugin_name)s plugin added to %(placeholder)s" + +#~ msgid "Copied plugins to %(placeholder)s" +#~ msgstr "Copied plugins to %(placeholder)s" + +#~ msgid "" +#~ "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +#~ msgstr "" +#~ "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" + +#~ msgid "" +#~ "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " +#~ "deleted." +#~ msgstr "" +#~ "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " +#~ "deleted." + +#~ msgid "All plugins in the placeholder \"%(name)s\" were deleted." +#~ msgstr "All plugins in the placeholder \"%(name)s\" were deleted." + +#~ msgid "Page reverted but slug stays the same because of url collisions." +#~ msgstr "Page reverted but slug stays the same because of url collisions." + +#~ msgid "Template changed to %s" +#~ msgstr "Template changed to %s" + +#~ msgid "Page moved" +#~ msgstr "Page moved" + +#~ msgid "Copied plugins from %(source_language)s to %(target_language)s" +#~ msgstr "Copied plugins from %(source_language)s to %(target_language)s" + +#~ msgid "The page \"%s\" was successfully reverted." +#~ msgstr "The page \"%s\" was successfully reverted." + +#~ msgid "History" +#~ msgstr "History" + +#~ msgid "Undo" +#~ msgstr "Undo" + +#~ msgid "Redo" +#~ msgstr "Redo" + +#~ msgid "View history" +#~ msgstr "View history" + +#~ msgid "" +#~ "\n" +#~ " Recover deleted %(verbose_name)s\n" +#~ " " +#~ msgstr "Recover deleted %(verbose_name)s" + +#~ msgid "Press the save button below to recover this version of the object." +#~ msgstr "Press the save button below to recover this version of the object." + +#~ msgid "Revert %(verbose_name)s" +#~ msgstr "Revert %(verbose_name)s" + +#~ msgid "Press the save button below to revert to this version of the object." +#~ msgstr "Press the save button below to revert to this version of the object." + +#~ msgid "home" +#~ msgstr "home" + +#~ msgid "softroot" +#~ msgstr "softroot" + +#~ msgid "({1}) plugin is empty. Remove it?" +#~ msgstr "({1}) plugin is empty. Remove it?" + +#~ msgid "sample second page" +#~ msgstr "sample account page" + +#~ msgid "Plugins were moved" +#~ msgstr "Plugins were moved" + +#~ msgid "Path Overflow from: '%s'" +#~ msgstr "Path Overflow from: '%s'" + +#~ msgid "" +#~ "The new node is too deep in the tree, try increasing the path.max_length " +#~ "property and UPDATE your database" +#~ msgstr "" +#~ "The new node is too deep in the tree, try increasing the path.max_length " +#~ "property and UPDATE your database" + +#~ msgid "An error occured. Please reload the page" +#~ msgstr "An error occured. Please reload the page" + +#~ msgid "Recover deleted %(name)s" +#~ msgstr "Recover deleted %(name)s" + +#~ msgid "Add %(name)s" +#~ msgstr "Add %(name)s" + +#~ msgid "Pages on:" +#~ msgstr "Pages on:" + +#~ msgid "%(counter)s result" +#~ msgid_plural "%(counter)s results" +#~ msgstr[0] "a848884d0af974a125106fa2043a5716_pl_0" + +#~ msgid "%(full_result_count)s total" +#~ msgstr "%(full_result_count)s total" + +#~ msgid "Show all" +#~ msgstr "Show all" + +#~ msgid "Filter:" +#~ msgstr "Filter:" + +#~ msgid "on" +#~ msgstr "on" + +#~ msgid "off" +#~ msgstr "off" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "" +#~ "There is no page around yet.
Add page now." +#~ msgstr "" +#~ "There is no page around yet.
Add page now." + +#~ msgid "insert above" +#~ msgstr "insert above" + +#~ msgid "insert below" +#~ msgstr "insert below" + +#~ msgid "insert inside" +#~ msgstr "insert inside" + +#~ msgid "Pick an action:" +#~ msgstr "Pick an action:" + +#~ msgid "page settings" +#~ msgstr "page settings" + +#~ msgid "copy" +#~ msgstr "copy" + +#~ msgid "Add Child" +#~ msgstr "Add Child" + +#~ msgid "add" +#~ msgstr "add" + +#~ msgid "cut" +#~ msgstr "cut" + +#~ msgid "delete" +#~ msgstr "delete" + +#~ msgid "info" +#~ msgstr "info" + +#~ msgid "Information" +#~ msgstr "Information" + +#~ msgid "%(icon)s" +#~ msgstr "%(icon)s" + +#~ msgid "English" +#~ msgstr "English" + +#~ msgid "French" +#~ msgstr "French" + +#~ msgid "German" +#~ msgstr "German" + +#~ msgid "Brazilian Portuguese" +#~ msgstr "Brazilian Portuguese" + +#~ msgid "Dutch" +#~ msgstr "Dutch" + +#~ msgid "two columns" +#~ msgstr "two columns" + +#~ msgid "three columns" +#~ msgstr "three columns" + +#~ msgid "navigation examples" +#~ msgstr "navigation examples" + +#~ msgid "sidebar column" +#~ msgstr "sidebar column" + +#~ msgid "left column" +#~ msgstr "left column" + +#~ msgid "Add a link" +#~ msgstr "Add a link" + +#~ msgid "right column" +#~ msgstr "right column" diff --git a/cms/locale/zh_CN.GB2312/LC_MESSAGES/djangojs.po b/cms/locale/zh_CN.GB2312/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..47b0b566 --- /dev/null +++ b/cms/locale/zh_CN.GB2312/LC_MESSAGES/djangojs.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-05 12:20+0000\n" +"PO-Revision-Date: 2018-01-11 16:38+0000\n" +"Last-Translator: Paulo Alvarado \n" +"Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/divio/django-cms/language/zh_CN.GB2312/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN.GB2312\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "" diff --git a/cms/locale/zh_CN/LC_MESSAGES/django.po b/cms/locale/zh_CN/LC_MESSAGES/django.po new file mode 100644 index 00000000..3af0af6d --- /dev/null +++ b/cms/locale/zh_CN/LC_MESSAGES/django.po @@ -0,0 +1,1678 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# 华鹏 刘 , 2023 +# Aosp T, 2023 +# da27e4edd0c28b0ec121570dac46e169_947ca9c, 2023 +# Scott Jiang, 2023 +# libingchao , 2025 +# spaceoi , 2025 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Chinese (China) (https://app.transifex.com/divio/teams/58664/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "All" +msgstr "全部" + +msgid "Copy permissions" +msgstr "复制权限" + +msgid "Slug" +msgstr "缩略名" + +msgid "The part of the title that is used in the URL" +msgstr "标题中被用在URL中的部分" + +msgid "Page type" +msgstr "页面类型" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "页面类型" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "重写 URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "如果使用标准路径则本项目为空。" + +msgid "Start typing..." +msgstr "开始输入…" + +msgid "menu visibility" +msgstr "菜单可见性" + +msgid "limit when this page is visible in the menu" +msgstr "该页在菜单可见时限制" + +msgid "X Frame Options" +msgstr "X 框架选项" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "此页面是否可以嵌入其他页面或网站。" + +msgid "URL options" +msgstr "URL选项" + +msgid "Menu options" +msgstr "菜单选项" + +msgid "Headers" +msgstr "标头" + +msgid "Application" +msgstr "应用" + +msgid "Hook application to this page." +msgstr "附加第三方应用到本页面。" + +msgid "Application configurations" +msgstr "应用程序设置" + +msgid "A page with this reverse URL id exists already." +msgstr "该URL id已经被使用。" + +msgid "Invalid application config value" +msgstr "无效的应用设置值" + +msgid "An application instance using this configuration already exists." +msgstr "已经存在使用此设置的应用实例。" + +msgid "An application instance with this name already exists." +msgstr "已经存在使用此名称的应用实例。" + +msgid "You can't move the home page inside another page" +msgstr "你不能将主页移入到另一页面" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "同一页面层级下不能有相同缩略名的两个页面。请先修改其中一个页面的缩略名后再尝试移动。" + +msgid "Yes" +msgstr "是" + +msgid "No" +msgstr "否" + +msgid "user" +msgstr "用户" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "添加" + +msgid "Change" +msgstr "修改" + +msgid "Delete" +msgstr "删除" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "用户没有权限修改已创建的页面,不能创建页面。需要编辑权限。" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "用户没有权限修改页面,不能删除页面。需要编辑权限。" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "用户没有权限修改页面,不能设置页面的权限。需要编辑权限。" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "用户没有修改页面的权限,不能删除页面的权限。需要编辑权限。" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "用户没有修改已创建页面的权限,不能创建页面权限。需要编辑权限。" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "用户没有修改权限的权限,不能删除页面权限。需要编辑权限。" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "无效的插件类型 '%s'" + +msgid "Language must be set to a supported language!" +msgstr "语言项目必须被设置为支持的语言!" + +msgid "Parent plugin language must be same as language!" +msgstr "父层插件语言必须与当前语言一致!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "父层插件占位符必须与当前占位符一致!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "插件位置必须大于 %(position)d" + +msgid "Translations" +msgstr "翻译" + +msgid "Advanced Settings" +msgstr "高级设置" + +msgid "The page is not eligible to be home." +msgstr "此页面不能用于主页" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "具有主键 %(key)r 的对象 %(name)s 不存在。" + +msgid "error" +msgstr "错误" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "错误!你没有权限移动页面。请刷新页面" + +msgid "Error! You don't have permissions to copy this page." +msgstr "出错!你没有权限复制此页" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "出错!你复制的页面尚未翻译成任何一种目标网站设定的语言" + +msgid "You do not have permission to edit this page" +msgstr "你没有权限编辑本页面" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "(若要修改它,请先取消发布该页面当前已发布的版本)" + +msgid "Add Translation" +msgstr "添加翻译" + +msgid "Add Page Copy" +msgstr "添加页面拷贝" + +msgid "New sub page" +msgstr "新建子页面" + +msgid "New page" +msgstr "新建页面" + +msgid "Database error" +msgstr "数据库错误" + +msgid "Template not valid" +msgstr "模板不可用" + +msgid "Placeholder selection not valid" +msgstr "占位符选择无效" + +msgid "The template was successfully changed" +msgstr "模板修改成功" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "占位符 '%s' 在目标语言中不存在" + +msgid "You do not have permission to copy these plugins." +msgstr "你没有复制插件的权限" + +msgid "You do not have permission to delete this page" +msgstr "你没有权限删除本页面" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "使用 %(language)s 译文的标题和插件被删除" + +msgid "Public content" +msgstr "公开内容" + +msgid "Empty" +msgstr "空" + +msgid "Create Content" +msgstr "创建内容" + +msgid "View restriction" +msgstr "视图限制" + +msgid "View restrictions" +msgstr "视图限制" + +#, python-format +msgid "Field %s not found" +msgstr "未找到字段 %s" + +msgid "You do not have permission to edit this item" +msgstr "你没有权限编辑当前项" + +msgid "You do not have permission to add a plugin" +msgstr "你没有添加插件的权限" + +msgid "You do not have permission to copy this placeholder." +msgstr "没有权限复制该占位符" + +msgid "Plugin not found" +msgstr "找不到该插件" + +msgid "You do not have permission to edit this plugin" +msgstr "你没有编辑插件的权限" + +msgid "You have no permission to paste this plugin" +msgstr "你没有权限粘贴这个插件" + +msgid "You have no permission to paste this placeholder" +msgstr "你没有权限粘贴这个占位符" + +msgid "You have no permission to move this plugin" +msgstr "没有移动插件权限" + +msgid "You have no permission to cut this plugin" +msgstr "你没有权限剪切这个插件" + +msgid "You do not have permission to delete this plugin" +msgstr "没有删除插件权限" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "插件%(name)s“%(obj)s”已被成功删除。" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "无法删除 %(name)s" + +msgid "Are you sure?" +msgstr "你确认码?" + +msgid "You do not have permission to clear this placeholder" +msgstr "没有权限清楚该占位符" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "占位符“%(obj)s”已被成功清除。" + +msgid "placeholder" +msgstr "占位符" + +msgid "Page permissions" +msgstr "页面权限" + +msgid "User & Group permissions" +msgstr "用户/组权限" + +msgid "Page permissions management" +msgstr "页面权限管理" + +msgid "Actions" +msgstr "操作" + +msgid "Empty content" +msgstr "内容为空" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "%(object_name)s 属性" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "添加新的%(object_name)s" + +msgid "Add content" +msgstr "添加内容" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "当前语言的内容已更改。点击“取消”返回表单并保存更改。点击“确定”放弃更改。" + +#, python-format +msgid "Add %(language)s content" +msgstr "添加%(language)s内容" + +msgid "Preview" +msgstr "预览" + +msgid "Settings" +msgstr "设置" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "无效的语言 %(value)s。此表单无法处理。请尝试切换语言。" + +msgid "" +msgstr "(未指定)" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "找不到与 \"%r\" 对应的已注册应用" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "占位符" + +msgid "Create" +msgstr "创建" + +msgid "Edit" +msgstr "编辑" + +msgid "Structure" +msgstr "结构" + +msgid "Content" +msgstr "内容" + +msgid "Sites" +msgstr "站点" + +msgid "Admin Sites" +msgstr "管理后台" + +msgid "Administration" +msgstr "管理" + +msgid "User settings" +msgstr "用户设定" + +msgid "Clipboard..." +msgstr "剪贴板" + +msgid "Clear clipboard" +msgstr "清空剪贴板" + +msgid "Disable toolbar" +msgstr "禁用工具栏" + +msgid "Shortcuts..." +msgstr "快捷键…" + +msgid "Users" +msgstr "用户" + +#, python-format +msgid "Logout %s" +msgstr "退出 %s" + +msgid "Logout" +msgstr "退出" + +msgid "Language" +msgstr "语言" + +msgid "Delete Translation" +msgstr "删除翻译" + +msgid "Copy all plugins" +msgstr "复制所有插件" + +#, python-format +msgid "from %s" +msgstr "从 %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "确定要从 %s 复制所有插件吗?" + +msgid "Pages" +msgstr "页" + +msgid "Page" +msgstr "页" + +msgid "Create Page" +msgstr "创建页面" + +msgid "New Page" +msgstr "新建页面" + +msgid "New Sub Page" +msgstr "新建子页面" + +msgid "Duplicate this Page" +msgstr "复制当前页" + +msgid "Page settings" +msgstr "页面设置" + +msgid "Advanced settings" +msgstr "高级设置" + +msgid "Templates" +msgstr "模板" + +msgid "Placeholders" +msgstr "占位符" + +msgid "Hide in navigation" +msgstr "隐藏导航" + +msgid "Display in navigation" +msgstr "在导航栏中显示" + +msgid "Delete page" +msgstr "删除页" + +msgid "Create a new page next to the current page." +msgstr "在当前页面后创建页面" + +msgid "Create a page below the current page." +msgstr "在当前页面以下创建页面" + +msgid "Select a valid site" +msgstr "选择一个有效站点" + +msgid "Select a valid page" +msgstr "选择一个有效页面" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "页面 %(conflict_page)s 与当前页面 \"%(instance)s\" 具有相同的 URL '%(url)s'。" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "页面 %(conflict_page)s 与当前页面具有相同的 URL '%(url)s'。" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "可选。如果提供,会自动添加在在新的文本插件里" + +msgid "Provide a title for the new page." +msgstr "给新建页面标题" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "留空以自动生成缩略名,或按需覆盖。" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "无法自动创建缩略名。请手动提供一个。" + +msgid "Please provide a valid slug." +msgstr "请提供有效的缩略名。" + +msgid "You don't have the permissions required to add a page." +msgstr "你没有添加页面所需的权限。" + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "位置" + +msgid "language" +msgstr "语言" + +msgid "plugin_name" +msgstr "插件名称" + +msgid "creation date" +msgstr "创建日期" + +msgid "can edit" +msgstr "可以修改" + +msgid "can add" +msgstr "允许新建" + +msgid "can delete" +msgstr "允许删除" + +msgid "can change advanced settings" +msgstr "允许修改高级设置" + +msgid "can publish" +msgstr "可以发布" + +msgid "can change permissions" +msgstr "允许修改权限" + +msgid "can move" +msgstr "允许移动" + +msgid "view restricted" +msgstr "视图受限" + +msgid "can recover pages" +msgstr "允许恢复页面" + +msgid "group" +msgstr "组" + +msgid "sites" +msgstr "站点" + +msgid "created by" +msgstr "创建者" + +msgid "changed by" +msgstr "修正者" + +msgid "publication date" +msgstr "发表日期" + +msgid "publication end date" +msgstr "发表结束日期" + +msgid "in navigation" +msgstr "导航中" + +msgid "soft root" +msgstr "伪根节点" + +msgid "id" +msgstr "编号" + +msgid "attached menu" +msgstr "附带的菜单" + +msgid "template" +msgstr "模板" + +msgid "login required" +msgstr "需要登录" + +msgid "application" +msgstr "应用" + +msgid "application instance name" +msgstr "应用实例名" + +msgid "site" +msgstr "站点" + +msgid "Grant on" +msgstr "授权给" + +msgid "page" +msgstr "页面" + +msgid "no limit set" +msgstr "未设置限制" + +msgid "for logged in users only" +msgstr "登录用户专用" + +msgid "for anonymous users only" +msgstr "匿名用户专用" + +msgid "Inherit from parent page" +msgstr "继承于父页面" + +msgid "Deny" +msgstr "拒绝" + +msgid "Only this website" +msgstr "仅这个网站" + +msgid "Allow" +msgstr "允许" + +msgid "title" +msgstr "标题" + +msgid "The default title" +msgstr "默认标题" + +msgid "Page Title" +msgstr "页面标题" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "覆盖显示在浏览器顶部标题栏或书签中的信息" + +msgid "Menu Title" +msgstr "菜单标题" + +msgid "Overwrite what is displayed in the menu" +msgstr "覆盖菜单上的显示" + +msgid "Description meta tag" +msgstr "描述性的原标签" + +msgid "A description of the page used by search engines." +msgstr "被搜索引擎收录的常见关键字列表" + +msgid "redirect" +msgstr "重定向" + +msgid "Redirects to this URL." +msgstr "转到这个链接" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "所有的上级页面将不会在导航中显示" + +msgid "The template used to render the content." +msgstr "用于生成页面内容的模板。" + +msgid "page content" +msgstr "页面内容" + +msgid "page contents" +msgstr "页面内容" + +msgid "default" +msgstr "默认" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "与 page_url 模板标签共同用来链接到当前页的唯一识别码" + +msgid "Mark this page as a page type" +msgstr "将此页面标记为页面类型" + +msgid "pages" +msgstr "页面" + +msgid "No available title" +msgstr "无可用标题" + +msgid "slug" +msgstr "缩略名" + +msgid "Path" +msgstr "路径" + +msgid "Current page" +msgstr "当前页" + +msgid "Page children (immediate)" +msgstr "最接近的子页面" + +msgid "Page and children (immediate)" +msgstr "页面以及最接近的子页面" + +msgid "Page descendants" +msgstr "子页面" + +msgid "Page and descendants" +msgstr "页面及所有下级页面" + +msgid "on page level" +msgstr "在页面级别" + +msgid "frontend view restriction" +msgstr "前端视图限制" + +msgid "Please select user or group." +msgstr "请选择用户或组" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "没有修改页面的权限,用户无法发布页面。需要编辑权限。" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "没有修改页面的权限,用户无法更改页面高级设置。需要编辑权限。" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "没有修改页面的权限,用户无法更改页面权限。需要编辑权限。" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "没有修改页面的权限,用户无法移动页面。需要编辑权限。" + +msgid "can recover any deleted page" +msgstr "允许恢复任何已删除的页面" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "如果没有选择,用户将被授予整个网站的权限" + +msgid "Page global permission" +msgstr "页面全局权限" + +msgid "Pages global permissions" +msgstr "页面全局权限" + +msgid "Page permission" +msgstr "页面权限" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "添加页面的权限同时赋予其子页面,否则添加页面不能被其创建者修改" + +msgid "User (page)" +msgstr "用户(页面)" + +msgid "Users (page)" +msgstr "用户(页面)" + +msgid "User group (page)" +msgstr "用户组(页面)" + +msgid "User groups (page)" +msgstr "用户组(页面)" + +msgid "slot" +msgstr "插槽" + +msgid "width" +msgstr "宽" + +msgid "Edit object" +msgstr "编辑对象" + +msgid "This is an external placeholder" +msgstr "这是一个外部占位符" + +msgid "plugin" +msgstr "插件" + +msgid "plugins" +msgstr "插件" + +msgid "" +msgstr "(空)" + +msgid "The language for the admin interface and toolbar" +msgstr "管理界面的语言和工具栏" + +msgid "user setting" +msgstr "用户设定" + +msgid "user settings" +msgstr "用户设定" + +msgid "by template" +msgstr "按模板" + +msgid "by code" +msgstr "按代码" + +msgid "static placeholder name" +msgstr "静态占位符名称" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "表明这个静态占位符的描述性名称。不会呈现给用户。" + +msgid "placeholder code" +msgstr "占位符代码" + +msgid "To render the static placeholder in templates." +msgstr "加载这个静态占位符到模板中。" + +msgid "placeholder content" +msgstr "占位符内容" + +msgid "creation_method" +msgstr "创建方法" + +msgid "static placeholder" +msgstr "静态占位符" + +msgid "static placeholders" +msgstr "静态占位符" + +msgid "A static placeholder with the same site and code already exists" +msgstr "已存在一个相同站点、相同编码的静态占位符。" + +msgid "Advanced options" +msgstr "高级选项" + +msgid "Generic" +msgstr "普通的" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s“%(obj)s”已成功更改。" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "当前插件没有更多设置选项。请点击保存。" + +msgid "Moved" +msgstr "已移动" + +msgid "Changed" +msgstr "已修改" + +msgid "Deleted" +msgstr "已删除" + +msgid "Added Page Translation" +msgstr "已添加页面翻译" + +msgid "Changed Page Translation" +msgstr "已修改页面翻译" + +msgid "Deleted Page Translation" +msgstr "已删除页面翻译" + +msgid "Added Plugin" +msgstr "已添加插件" + +msgid "Changed Plugin" +msgstr "已修改插件" + +msgid "Moved Plugin" +msgstr "已移动插件" + +msgid "Deleted Plugin" +msgstr "已删除插件" + +msgid "Cut Plugin" +msgstr "已剪切插件" + +msgid "Paste Plugin" +msgstr "已粘贴插件" + +msgid "Paste to Placeholder" +msgstr "已粘贴到占位符" + +msgid "Added plugins to placeholder from clipboard" +msgstr "已从剪贴板向占位符添加插件" + +msgid "Cleared Placeholder" +msgstr "已清空占位符" + +msgid "Save" +msgstr "保存" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "部分字段为只读内容,无法更改。" + +#, python-format +msgid "Log in to administration here." +msgstr "登录到管理界面 请点这里。" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "登录地址:%(login_url)s" + +msgid "Username:" +msgstr "用户名:" + +msgid "Password:" +msgstr "密码:" + +msgid "Add a page" +msgstr "添加页面" + +msgid "Change a page" +msgstr "修改一个页面" + +msgid "Home" +msgstr "首页" + +msgid "View on site" +msgstr "在站点上查看" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "请更正以下的错误。" + +msgid "All permissions" +msgstr "所有权限" + +msgid "Loading..." +msgstr "加载中…" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "是的,我确定" + +msgid "No, take me back" +msgstr "不,返回" + +msgid "Summary" +msgstr "概览" + +msgid "User" +msgstr "用户" + +msgid "Group" +msgstr "组" + +msgid "Can edit" +msgstr "允许修改" + +msgid "Can add" +msgstr "允许添加" + +msgid "Can delete" +msgstr "允许删除" + +msgid "Can publish" +msgstr "允许发表" + +msgid "Can change permissions" +msgstr "允许修改权限" + +msgid "Can move" +msgstr "允许移动" + +msgid "Can view" +msgstr "Can view" + +msgid "(global)" +msgstr "(全局的)" + +msgid "(current)" +msgstr "(当前的)" + +msgid "Page doesn't inherit any permissions." +msgstr "页面不继承任何权限。" + +msgid "Edit model" +msgstr "编辑模型" + +msgid "Save as new" +msgstr "保存为新的" + +msgid "Save and add another" +msgstr "保存并增加另一个" + +msgid "Copy" +msgstr "复制" + +msgid "Cut" +msgstr "剪切" + +msgid "Paste" +msgstr "粘贴" + +msgid "Set as home" +msgstr "设为首页" + +msgid "is restricted" +msgstr "受限的" + +msgid "last change by" +msgstr "最后修改者" + +msgid "last change on" +msgstr "最后修改于" + +msgid "meta" +msgstr "元信息" + +msgid "List of pages" +msgstr "页面一览" + +msgid "Search" +msgstr "搜索" + +msgid "Page Tree" +msgstr "页面树" + +msgid "Reset filter" +msgstr "重置筛选" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" 恢复已删除的%(name)s\n" +" " + +msgid "Main Navigation" +msgstr "主导航" + +msgid "Options" +msgstr "选项" + +msgid "Successfully moved" +msgstr "移动完成" + +msgid "Changes within the tree might require a refresh." +msgstr "树中的修改可能需要刷新。" + +msgid "Error:" +msgstr "错误:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "此页面无法复制,因为已附加应用。请在页面的“高级设置”中管理应用挂钩(apphook)。" + +msgid "Are you sure you want to § this page?" +msgstr "确定要 § 这个页面吗?" + +msgid "Reload" +msgstr "重新加载" + +msgid "New node" +msgstr "新节点" + +msgid "nodes" +msgstr "节点" + +msgid "View" +msgstr "查看" + +msgid "Menu" +msgstr "目录" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" 尚未存在 %(object)s。\n" +"
\n" +" 立即添加 %(object)s。\n" +" " + +msgid "Copy options" +msgstr "复制选项" + +msgid "Choose copy options" +msgstr "选择复制选项" + +msgid "Close" +msgstr "关闭" + +msgid "Legend" +msgstr "图例" + +msgid "In menu" +msgstr "在菜单中" + +msgid "Not in menu" +msgstr "不在菜单中" + +msgid "View page" +msgstr "查看页面" + +msgid "Softroot" +msgstr "伪根节点" + +msgid "Apphook" +msgstr "应用挂钩" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "应用:%(apphook)s" + +msgid "in menu" +msgstr "目录中" + +msgid "not in menu" +msgstr "不在目录中" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "页面设置(按住 SHIFT 点击打开高级设置)" + +msgid "Permissions" +msgstr "权限" + +msgid "inherited" +msgstr "继承" + +msgid "This page has no preview!" +msgstr "当前页面没有预览!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "可能附加的 apphook 没有为其根节点提供内容。" + +msgid "It is being redirected to:" +msgstr "它被重定向到:" + +msgid "Clipboard" +msgstr "剪贴板" + +msgid "Add plugin" +msgstr "添加插件" + +msgid "Copy all" +msgstr "复制全部" + +msgid "Copy from" +msgstr "复制来源" + +msgid "Empty all" +msgstr "清空全部" + +msgid "Filter plugins..." +msgstr "筛选插件" + +msgid "Expand all" +msgstr "全部展开" + +msgid "Collapse all" +msgstr "全部收起" + +msgid "You cannot add plugins to this plugin." +msgstr "无法在该插件中添加其它插件" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "此插件不能在其父级之外移动或编辑" + +msgid "Clipboard is empty." +msgstr "剪贴板已空" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "该插件不能允许该类型插件作为嵌套插件" + +msgid "This plugin cannot have nested plugins." +msgstr "该插件无法有嵌套插件" + +msgid "Highlight" +msgstr "高亮显示" + +msgid "Available plugins" +msgstr "可用的插件" + +msgid "Toggle structure" +msgstr "切换结构" + +msgid "Login" +msgstr "登陆" + +msgid "Add plugin to" +msgstr "添加插件到" + +msgid "More" +msgstr "更多" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"开发版本:django CMS %(cms_version)s, Django %(django_version)s, Python " +"%(python_version)s" + +msgid "Cancel" +msgstr "取消" + +msgid "The following error occurred:" +msgstr "发生了下述错误:" + +msgid "Action successful." +msgstr "操作成功。" + +msgid "Are you sure you want to delete this plugin?" +msgstr "你确认要删除当前插件吗?" + +msgid "Are you sure you want to publish this page?" +msgstr "你确定你要发布该页面吗?" + +msgid "Plugin will be added here" +msgstr "插件将被添加到这里" + +msgid "You have unsaved changes." +msgstr "你有未保存的更改。" + +msgid "Loading" +msgstr "加载中" + +msgid "Are you sure you want to abandon these changes?" +msgstr "确定要放弃这些更改吗?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "无法加载表单。请检查服务器是否正常运行。" + +msgid "Most used" +msgstr "常用" + +msgid "Shortcuts" +msgstr "快捷键" + +msgid "The page was changed in the meantime, reloading..." +msgstr "页面在此期间已被更改,正在重新加载…" + +msgid "CMS-wide Shortcuts" +msgstr "CMS 全局快捷键" + +msgid "Bring up this help dialog" +msgstr "显示此帮助对话框" + +msgid "Close/cancel" +msgstr "关闭/取消" + +msgid "Toggle structure mode" +msgstr "切换结构模式" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "切换结构模式并高亮悬停插件" + +msgid "Open \"Create\" dialog" +msgstr "打开\"创建\"对话框" + +msgid "Focus on Toolbar" +msgstr "聚焦到工具栏" + +msgid "Focus on placeholders" +msgstr "聚焦到占位符" + +msgid "Move to next/previous element" +msgstr "移动到下一个/上一个元素" + +msgid "Focus on plugins of placeholder" +msgstr "聚焦到占位符的插件" + +msgid "Edit plugin" +msgstr "编辑插件" + +msgid "Open actions menu" +msgstr "打开操作菜单" + +msgid "Expand/collapse" +msgstr "展开/折叠" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "登录失败。请检查你的认证信息并重试。" + +msgid "Double-click to edit" +msgstr "双击进行编辑" + +msgid "Tap to edit" +msgstr "点击来编辑" + +msgid "Click to go back" +msgstr "点击返回" + +msgid "Click to go forward" +msgstr "点击前进" + +msgid "Minimize" +msgstr "最小化" + +msgid "Maximize" +msgstr "最大化" + +msgid "Placeholder not editable" +msgstr "占位符不可编辑" + +msgid "Drop a plugin here" +msgstr "拖放一个插件到这里" + +msgid "Welcome to your new django CMS installation!" +msgstr "欢迎使用你全新安装的 django CMS!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "版本 %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "让我们一起创造伟大的作品!" + +msgid "Please log in" +msgstr "请登录" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" 添加你的第一个页面\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

资助我们

\n" +"

\n" +" 你的资助将直接促进产品改进,主要通过 django CMS 奖学金项目!\n" +"

\n" +"

\n" +" 你或组织可以通过 Github 赞助 快速捐助。\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

加入我们

\n" +"

django CMS 协会是一个资助并引导 django CMS 开发的非营利组织。

\n" +"

你可以作为个人或组织加入。

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

参与贡献

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "安装备注" + +msgid "Support" +msgstr "支持" + +msgid "Documentation" +msgstr "文档" + +msgid "User guide" +msgstr "用户指南" + +msgid "Give back" +msgstr "回馈" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

若顶部未显示 django CMS 标志,请确认已将 static/cms 目录链接到静态文件。

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

出现此消息是因为在设置中 DEBUG = True 且尚未添加任何页面。

\n" +" " + +msgid "Welcome to django CMS" +msgstr "欢迎来到django CMS" + +msgid "Add Another" +msgstr "添加其他" + +msgid "Back" +msgstr "返回" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "请在下面选择一选项来继续下一步" + +msgid "Next" +msgstr "下一个" + +msgid "Select what you would like to create" +msgstr "选择你要创建的内容" + +msgid "Unknown" +msgstr "未知" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "该页面在 %(domain)s 中未找到" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "模板标签无法找到`%(page_lookup)s `所对应的页面。源请求页面为http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "两列" + +msgid "Three columns" +msgstr "三列" + +msgid "username" +msgstr "用户名" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "300个字符以内,必须是字母、数字及@/./+/-/_ " + +msgid "Enter a valid username." +msgstr "输入一个有效的用户名" + +msgid "email address" +msgstr "电子邮件地址" + +msgid "staff status" +msgstr "工作人员状态" + +msgid "Designates whether the user can log into this admin site." +msgstr "指明用户是否可以登录到这个管理站点。" + +msgid "active" +msgstr "有效" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "指明用户是否被认为是活跃的。以反选代替删除帐号。" + +msgid "users" +msgstr "用户" + +msgid "Title Extension" +msgstr "标题扩展" + +msgid "Page Extension" +msgstr "页面扩展" + +msgid "object ID" +msgstr "对象ID" + +msgid "Example1 App" +msgstr "样例1 App" + +msgid "MultilingualExample1 App" +msgstr "多语言样例1 App" + +msgid "Example1" +msgstr "样例1" + +msgid "Examples" +msgstr "样例" + +msgid "Extra Context" +msgstr "额外内容" + +msgid "Articles" +msgstr "文章" + +msgid "Sample App" +msgstr "样板程序" + +msgid "Sample App with config" +msgstr "带配置的样板程序" + +msgid "Sample App with excluded permissions" +msgstr "排除权限的示例" + +msgid "Sample App 2" +msgstr "样板程序2" + +msgid "Sample App 3" +msgstr "样板程序2" + +msgid "Sample App Without Landing Page" +msgstr "无着陆页的示例应用" + +msgid "Namespaced App" +msgstr "程序命名空间" + +msgid "Parent app" +msgstr "母应用程序" + +msgid "Child app" +msgstr "子应用程序" + +msgid "Variable urls-menus App" +msgstr "可变 URL 菜单应用" + +msgid "sample root page" +msgstr "根页样板" + +msgid "sample settings page" +msgstr "设置页样板" + +msgid "sample account page" +msgstr "账户页样板" + +msgid "sample my profile page" +msgstr "个人资料页样板" + +msgid "Static Menu" +msgstr "静态菜单" + +msgid "Static Menu2" +msgstr "静态菜单2" + +msgid "Static Menu3" +msgstr "静态菜单3" + +msgid "Static Menu4" +msgstr "静态菜单" + +msgid "Category" +msgstr "分类" + +msgid "Categories" +msgstr "分类" + +msgid "Add Category" +msgstr "添加分类" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "修改分类" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "感谢你今天在网站上花费了宝贵的时间!" + +msgid "Inherit the template of the nearest ancestor" +msgstr "继承最近的上级页面模板" + +msgid "UserSettings" +msgstr "用户设置" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "向占位符“%(placeholder_label)s”添加插件" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "向 %(plugin_name)s 添加插件" + +msgid "Single placeholder" +msgstr "单个占位符" + +msgid "CMS - your user account was created." +msgstr "CMS - 你的用户帐号已创建。" + +msgid "CMS - your user account was changed." +msgstr "CMS - 你的用户帐号已变更。" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "当前位置已经到达插件(%s)允许的最大数量。" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "当前位置已经到达插件%(plugin_name)s允许的最大数量限制(%(limit)s)。" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "无法找到指定的 CMS_REQUEST_IP_RESOLVER 模块:\"{0}\"。" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "无法在模块“{1}”中找到指定的 CMS_REQUEST_IP_RESOLVER 函数:\"{0}\"。" + +#, python-format +msgid "Create a new %s instance." +msgstr "创建一个新的%s实例" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "一向导程序已经注册在模型%s" diff --git a/cms/locale/zh_CN/LC_MESSAGES/djangojs.po b/cms/locale/zh_CN/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..bbcbbfca --- /dev/null +++ b/cms/locale/zh_CN/LC_MESSAGES/djangojs.po @@ -0,0 +1,25 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# aaffdd11 , 2011 +# Fabian Braun , 2026 +# Fabian Braun , 2026 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Chinese (China) (http://app.transifex.com/divio/django-cms/language/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "你确认将在没有保存本页面之前改变当前标签页吗?" diff --git a/cms/locale/zh_TW/LC_MESSAGES/django.po b/cms/locale/zh_TW/LC_MESSAGES/django.po new file mode 100644 index 00000000..00bcb2c3 --- /dev/null +++ b/cms/locale/zh_TW/LC_MESSAGES/django.po @@ -0,0 +1,1675 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Wei Ming Liao , 2025 +# Fabian Braun , 2026 +# Jonas Obrist , 2011 +msgid "" +msgstr "" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-10 11:47+0000\n" +"PO-Revision-Date: 2022-12-12 10:32+0000\n" +"Last-Translator: Fabian Braun , 2026\n" +"Language-Team: Chinese (Taiwan) (https://app.transifex.com/divio/teams/58664/zh_TW/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "All" +msgstr "全部" + +msgid "Copy permissions" +msgstr "複製權限" + +msgid "Slug" +msgstr "簡略標題" + +msgid "The part of the title that is used in the URL" +msgstr "在 URL 中使用的部分標題" + +msgid "Page type" +msgstr "頁面型態" + +msgid "You do not have permission to change this page." +msgstr "" + +msgid "Page Types" +msgstr "頁面類型" + +msgid "You do not have permission to copy this page." +msgstr "" + +msgid "Overwrite URL" +msgstr "取代 URL" + +msgid "Keep this field empty if standard path should be used." +msgstr "如果標準路徑應該被使用,請將這一欄位保持空白。" + +msgid "Start typing..." +msgstr "開始輸入…" + +msgid "menu visibility" +msgstr "選單可視性" + +msgid "limit when this page is visible in the menu" +msgstr "限制此頁於選單中的可視性" + +msgid "X Frame Options" +msgstr "X 框架選項" + +msgid "Whether this page can be embedded in other pages or websites." +msgstr "此頁面是否可以嵌入其他頁面或網站。" + +msgid "URL options" +msgstr "URL選項" + +msgid "Menu options" +msgstr "選單選項" + +msgid "Headers" +msgstr "標頭" + +msgid "Application" +msgstr "應用套件" + +msgid "Hook application to this page." +msgstr "將應用套件掛入此網頁" + +msgid "Application configurations" +msgstr "應用程式設置" + +msgid "A page with this reverse URL id exists already." +msgstr "一個有相同的反向 URL id 的網頁已經存在。" + +msgid "Invalid application config value" +msgstr "無效的應用設置值" + +msgid "An application instance using this configuration already exists." +msgstr "已經存在使用此設置的應用實例。" + +msgid "An application instance with this name already exists." +msgstr "已經存在使用此名稱的應用實例。" + +msgid "You can't move the home page inside another page" +msgstr "您不能將主頁移至到另一頁面" + +msgid "" +"You cannot have two pages with the same slug at the same page level. Please " +"alter the slug of one of the pages before trying to move again." +msgstr "同一頁面層級下不能有相同簡稱的兩個頁面。請先修改其中一個頁面的簡稱後再嘗試移動。" + +msgid "Yes" +msgstr "是" + +msgid "No" +msgstr "否" + +msgid "user" +msgstr "使用者" + +msgid "can_view" +msgstr "can_view" + +msgid "Add" +msgstr "新增" + +msgid "Change" +msgstr "修改" + +msgid "Delete" +msgstr "刪除" + +msgid "" +"Users can't create a page without permissions to change the created page. " +"Edit permissions required." +msgstr "使用者沒有權限修改已建立的頁面,不能建立頁面。需要編輯權限。" + +msgid "" +"Users can't delete a page without permissions to change the page. Edit " +"permissions required." +msgstr "使用者沒有權限修改頁面,不能刪除頁面。需要編輯權限。" + +msgid "" +"Users can't set page permissions without permissions to change a page. Edit " +"permissions required." +msgstr "使用者沒有權限修改頁面,不能設置頁面的權限。需要編輯權限。" + +msgid "" +"Users can't delete page permissions without permissions to change a page. " +"Edit permissions required." +msgstr "使用者沒有修改頁面的權限,不能刪除頁面的權限。需要編輯權限。" + +msgid "" +"Users can't create page permissions without permissions to change the " +"created permission. Edit permissions required." +msgstr "使用者沒有修改已建立頁面的權限,不能建立頁面權限。需要編輯權限。" + +msgid "" +"Users can't delete page permissions without permissions to change " +"permissions. Edit permissions required." +msgstr "使用者沒有修改權限的權限,不能刪除頁面權限。需要編輯權限。" + +#, python-format +msgid "Invalid plugin type '%s'" +msgstr "無效的外掛類型 '%s'" + +msgid "Language must be set to a supported language!" +msgstr "語言必須設定為一種被支持的語言!" + +msgid "Parent plugin language must be same as language!" +msgstr "父層外掛語言必須與當前語言一致!" + +msgid "Parent plugin placeholder must be same as placeholder!" +msgstr "父層外掛佔位符必須與當前佔位符一致!" + +#, python-format +msgid "Plugin position must be greater than %(position)d" +msgstr "外掛位置必須大於 %(position)d" + +msgid "Translations" +msgstr "翻譯" + +msgid "Advanced Settings" +msgstr "進階設置" + +msgid "The page is not eligible to be home." +msgstr "此頁面不能用於主頁" + +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "主鍵 %(key)r 的 %(name)s 物件不存在。" + +msgid "error" +msgstr "錯誤" + +msgid "" +"Error! You don't have permissions to move this page. Please reload the page" +msgstr "錯誤!您沒有權限搬移此網頁。請重新載入此網頁。" + +msgid "Error! You don't have permissions to copy this page." +msgstr "發生錯誤!您沒有權限複製此頁" + +msgid "" +"Error! The page you're pasting is not translated in any of the languages " +"configured by the target site." +msgstr "發生錯誤!您複製的頁面尚未翻譯成任何一種目標網站設定的語言" + +msgid "You do not have permission to edit this page" +msgstr "您沒有編輯此頁面的權限" + +msgid "" +"(to change it, first unpublish the currently published version of this page)" +msgstr "(要變更它,請先取消發佈該頁面目前已發佈的版本)" + +msgid "Add Translation" +msgstr "新增翻譯" + +msgid "Add Page Copy" +msgstr "新增頁面複本" + +msgid "New sub page" +msgstr "新增子頁面" + +msgid "New page" +msgstr "新增頁面" + +msgid "Database error" +msgstr "資料庫錯誤" + +msgid "Template not valid" +msgstr "模板無效" + +msgid "Placeholder selection not valid" +msgstr "佔位符選擇無效" + +msgid "The template was successfully changed" +msgstr "模板被成功地改變。" + +#, python-format +msgid "Placeholder '%s' does not exist in target language" +msgstr "佔位符 '%s' 不存在於目標語言中" + +msgid "You do not have permission to copy these plugins." +msgstr "您沒有複製外掛的權限" + +msgid "You do not have permission to delete this page" +msgstr "您沒有權限刪除本頁面" + +#, python-format +msgid "Title and plugins with language %(language)s was deleted" +msgstr "標題和插件的 %(language)s 語言被刪除了" + +msgid "Public content" +msgstr "公開內容" + +msgid "Empty" +msgstr "空的" + +msgid "Create Content" +msgstr "建立內容" + +msgid "View restriction" +msgstr "查看限制" + +msgid "View restrictions" +msgstr "查看限制" + +#, python-format +msgid "Field %s not found" +msgstr "未找到欄位 %s" + +msgid "You do not have permission to edit this item" +msgstr "您沒有權限編輯當前項" + +msgid "You do not have permission to add a plugin" +msgstr "您沒有權限新增一個插件" + +msgid "You do not have permission to copy this placeholder." +msgstr "您沒有權限複製該佔位符" + +msgid "Plugin not found" +msgstr "找不到該外掛" + +msgid "You do not have permission to edit this plugin" +msgstr "您沒有編輯外掛的權限" + +msgid "You have no permission to paste this plugin" +msgstr "您沒有權限貼上這個外掛" + +msgid "You have no permission to paste this placeholder" +msgstr "您沒有權限貼上這個佔位符" + +msgid "You have no permission to move this plugin" +msgstr "您沒有移動外掛的權限" + +msgid "You have no permission to cut this plugin" +msgstr "您沒有權限剪切這個外掛" + +msgid "You do not have permission to delete this plugin" +msgstr "您沒有刪除外掛的權限" + +#, python-format +msgid "The %(name)s plugin \"%(obj)s\" was deleted successfully." +msgstr "外掛%(name)s「%(obj)s」已被成功刪除。" + +#, python-format +msgid "Cannot delete %(name)s" +msgstr "無法刪除 %(name)s" + +msgid "Are you sure?" +msgstr "您確定嗎?" + +msgid "You do not have permission to clear this placeholder" +msgstr "您沒有權限清除該佔位符" + +#, python-format +msgid "The placeholder \"%(obj)s\" was cleared successfully." +msgstr "佔位符「%(obj)s」已被成功清除。" + +msgid "placeholder" +msgstr "佔位符" + +msgid "Page permissions" +msgstr "網頁的權限" + +msgid "User & Group permissions" +msgstr "使用者和群組的權限" + +msgid "Page permissions management" +msgstr "網頁權限管理" + +msgid "Actions" +msgstr "操作" + +msgid "Empty content" +msgstr "內容空白" + +#, python-format +msgid "%(object_name)s Properties" +msgstr "%(object_name)s 屬性" + +#, python-format +msgid "Add new %(object_name)s" +msgstr "新增%(object_name)s" + +msgid "Add content" +msgstr "新增內容" + +msgid "" +"Content for the current language has been changed. Click \"Cancel\" to " +"return to the form and save changes. Click \"OK\" to discard changes." +msgstr "當前語言的內容已更改。點擊「取消」返回表單並儲存更改。點擊「確定」放棄更改。" + +#, python-format +msgid "Add %(language)s content" +msgstr "新增%(language)s內容" + +msgid "Preview" +msgstr "預覽" + +msgid "Settings" +msgstr "設置" + +#, python-format +msgid "" +"Invalid language %(value)s. This form cannot be processed. Try changing " +"languages." +msgstr "無效的語言 %(value)s。此表單無法處理。請嘗試切換語言。" + +msgid "" +msgstr "(未指定)" + +#, python-format +msgid "No registered apphook \"%r\" found" +msgstr "找不到與 \"%r\" 對應的已註冊應用" + +msgid "django CMS" +msgstr "django CMS" + +msgid "Placeholder" +msgstr "定位器" + +msgid "Create" +msgstr "建立" + +msgid "Edit" +msgstr "編輯" + +msgid "Structure" +msgstr "結構" + +msgid "Content" +msgstr "內容" + +msgid "Sites" +msgstr "網站" + +msgid "Admin Sites" +msgstr "管理站台" + +msgid "Administration" +msgstr "管理" + +msgid "User settings" +msgstr "使用者設定" + +msgid "Clipboard..." +msgstr "剪貼簿" + +msgid "Clear clipboard" +msgstr "清除剪貼簿" + +msgid "Disable toolbar" +msgstr "停用工具列" + +msgid "Shortcuts..." +msgstr "快速鍵…" + +msgid "Users" +msgstr "使用者" + +#, python-format +msgid "Logout %s" +msgstr "登出 %s" + +msgid "Logout" +msgstr "登出" + +msgid "Language" +msgstr "語言" + +msgid "Delete Translation" +msgstr "刪除翻譯" + +msgid "Copy all plugins" +msgstr "複製所有外掛" + +#, python-format +msgid "from %s" +msgstr "從 %s" + +#, python-format +msgid "Are you sure you want to copy all plugins from %s?" +msgstr "確定要從 %s 複製所有外掛嗎?" + +msgid "Pages" +msgstr "頁面" + +msgid "Page" +msgstr "網頁" + +msgid "Create Page" +msgstr "建立頁面" + +msgid "New Page" +msgstr "新頁面" + +msgid "New Sub Page" +msgstr "新的子頁面" + +msgid "Duplicate this Page" +msgstr "重複此頁" + +msgid "Page settings" +msgstr "頁面設定" + +msgid "Advanced settings" +msgstr "進階設定" + +msgid "Templates" +msgstr "模版" + +msgid "Placeholders" +msgstr "佔位符" + +msgid "Hide in navigation" +msgstr "從選單隱藏" + +msgid "Display in navigation" +msgstr "顯示在選單中" + +msgid "Delete page" +msgstr "刪除網頁" + +msgid "Create a new page next to the current page." +msgstr "在當前頁面後建立頁面" + +msgid "Create a page below the current page." +msgstr "在當前頁面以下建立頁面" + +msgid "Select a valid site" +msgstr "選擇一個有效的網站" + +msgid "Select a valid page" +msgstr "選擇一頁有效的網頁" + +msgid "Enter a valid relative or absolute URL." +msgstr "" + +#, python-format +msgid "" +"Page %(conflict_page)s has the same url '%(url)s' as current page " +"\"%(instance)s\"." +msgstr "頁面 %(conflict_page)s 與當前頁面 \"%(instance)s\" 具有相同的 URL '%(url)s'。" + +#, python-format +msgid "Page %(conflict_page)s has the same url '%(url)s' as current page." +msgstr "頁面 %(conflict_page)s 與當前頁面具有相同的 URL '%(url)s'。" + +msgid "" +"Optional. If supplied, will be automatically added within a new text plugin." +msgstr "可選。如果提供,會自動添加在在新的文本外掛裡" + +msgid "Provide a title for the new page." +msgstr "給新增頁面標題" + +msgid "Leave empty for automatic slug, or override as required." +msgstr "留空以自動生成簡稱,或按需覆蓋。" + +msgid "Cannot automatically create slug. Please provide one manually." +msgstr "無法自動建立簡稱。請手動提供一個。" + +msgid "Please provide a valid slug." +msgstr "請提供有效的簡稱。" + +msgid "You don't have the permissions required to add a page." +msgstr "您沒有新增頁面所需的權限。" + +msgid "ID" +msgstr "ID" + +msgid "position" +msgstr "位置" + +msgid "language" +msgstr "語言" + +msgid "plugin_name" +msgstr "外掛名稱" + +msgid "creation date" +msgstr "建立日期" + +msgid "can edit" +msgstr "可以編輯" + +msgid "can add" +msgstr "可以添加" + +msgid "can delete" +msgstr "可以刪除" + +msgid "can change advanced settings" +msgstr "可以更改進階設置" + +msgid "can publish" +msgstr "可以發佈" + +msgid "can change permissions" +msgstr "可以更改權限" + +msgid "can move" +msgstr "可搬移" + +msgid "view restricted" +msgstr "查看受限制" + +msgid "can recover pages" +msgstr "可以復原網頁" + +msgid "group" +msgstr "群組" + +msgid "sites" +msgstr "網站" + +msgid "created by" +msgstr "建立者" + +msgid "changed by" +msgstr "修改者" + +msgid "publication date" +msgstr "發佈日期" + +msgid "publication end date" +msgstr "發佈結束日期" + +msgid "in navigation" +msgstr "出現在導航中" + +msgid "soft root" +msgstr "軟性根目錄" + +msgid "id" +msgstr "id" + +msgid "attached menu" +msgstr "附屬選單" + +msgid "template" +msgstr "模板" + +msgid "login required" +msgstr "需要登入" + +msgid "application" +msgstr "應用套件" + +msgid "application instance name" +msgstr "應用實例名" + +msgid "site" +msgstr "網站" + +msgid "Grant on" +msgstr "授權於" + +msgid "page" +msgstr "網頁" + +msgid "no limit set" +msgstr "未設置限制" + +msgid "for logged in users only" +msgstr "只針對登入的使用者" + +msgid "for anonymous users only" +msgstr "只針對匿名使用者" + +msgid "Inherit from parent page" +msgstr "繼承於父頁面" + +msgid "Deny" +msgstr "拒絕" + +msgid "Only this website" +msgstr "僅這個網站" + +msgid "Allow" +msgstr "允許" + +msgid "title" +msgstr "標題" + +msgid "The default title" +msgstr "預設標題" + +msgid "Page Title" +msgstr "網頁標題" + +msgid "" +"Overwrites what is displayed at the top of your browser or in bookmarks" +msgstr "取代在瀏覽器頂端或書籤內的顯示標題" + +msgid "Menu Title" +msgstr "選單標題" + +msgid "Overwrite what is displayed in the menu" +msgstr "取代在選單中的顯示標題" + +msgid "Description meta tag" +msgstr "描述媒體標籤" + +msgid "A description of the page used by search engines." +msgstr "用逗號分隔的關鍵字列表,有時會被搜索引擎使用。" + +msgid "redirect" +msgstr "重新導向" + +msgid "Redirects to this URL." +msgstr "重新導向到這個 URL" + +msgid "All ancestors will not be displayed in the navigation" +msgstr "所有的上層網頁將不會顯示在導航中" + +msgid "The template used to render the content." +msgstr "用於呈現內容的模板。" + +msgid "page content" +msgstr "頁面內容" + +msgid "page contents" +msgstr "頁面內容" + +msgid "default" +msgstr "預設" + +msgid "" +"A unique identifier that is used with the page_url templatetag for linking " +"to this page" +msgstr "與 page_url 模板標籤共同用來連結到當前頁的唯一識別碼" + +msgid "Mark this page as a page type" +msgstr "將此頁面標記為頁面類型" + +msgid "pages" +msgstr "網頁" + +msgid "No available title" +msgstr "無可用標題" + +msgid "slug" +msgstr "簡略標題" + +msgid "Path" +msgstr "路徑" + +msgid "Current page" +msgstr "目前網頁" + +msgid "Page children (immediate)" +msgstr "子網頁(直接的)" + +msgid "Page and children (immediate)" +msgstr "網頁與子網頁(直接的)" + +msgid "Page descendants" +msgstr "下層網頁" + +msgid "Page and descendants" +msgstr "網頁與下層網頁" + +msgid "on page level" +msgstr "於網頁層級" + +msgid "frontend view restriction" +msgstr "前台查看限制" + +msgid "Please select user or group." +msgstr "請選擇使用者或組" + +msgid "" +"Users can't publish a page without permissions to change the page. Edit " +"permissions required." +msgstr "沒有修改頁面的權限,使用者無法發佈頁面。需要編輯權限。" + +msgid "" +"Users can't change page advanced settings without permissions to change the " +"page. Edit permissions required." +msgstr "沒有修改頁面的權限,使用者無法更改頁面進階設定。需要編輯權限。" + +msgid "" +"Users can't change page permissions without permissions to change the page. " +"Edit permissions required." +msgstr "沒有修改頁面的權限,使用者無法更改頁面權限。需要編輯權限。" + +msgid "" +"Users can't move a page without permissions to change the page. Edit " +"permissions required." +msgstr "沒有修改頁面的權限,使用者無法移動頁面。需要編輯權限。" + +msgid "can recover any deleted page" +msgstr "可以復原任何已刪除的網頁" + +msgid "If none selected, user haves granted permissions to all sites." +msgstr "如果沒有選任何項目,使用者則授予所有網站的權限。" + +msgid "Page global permission" +msgstr "網頁全站權限" + +msgid "Pages global permissions" +msgstr "網頁全站權限" + +msgid "Page permission" +msgstr "網頁權限" + +msgid "" +"Add page permission requires also access to children, or descendants, " +"otherwise added page can't be changed by its creator." +msgstr "新增網頁的權限也需要能存取子網頁或下層網頁,否則它的建造者將無法對所新增的網頁做更改。" + +msgid "User (page)" +msgstr "使用者(網頁)" + +msgid "Users (page)" +msgstr "使用者(網頁)" + +msgid "User group (page)" +msgstr "使用者群組(網頁)" + +msgid "User groups (page)" +msgstr "使用者群組(網頁)" + +msgid "slot" +msgstr "插槽" + +msgid "width" +msgstr "寬度" + +msgid "Edit object" +msgstr "編輯物件" + +msgid "This is an external placeholder" +msgstr "這是一個外部佔位符" + +msgid "plugin" +msgstr "外掛" + +msgid "plugins" +msgstr "外掛" + +msgid "" +msgstr "(空)" + +msgid "The language for the admin interface and toolbar" +msgstr "管理界面和工具列的語言" + +msgid "user setting" +msgstr "使用者設定" + +msgid "user settings" +msgstr "使用者設定" + +msgid "by template" +msgstr "按模板" + +msgid "by code" +msgstr "按代碼" + +msgid "static placeholder name" +msgstr "靜態佔位符名稱" + +msgid "" +"Descriptive name to identify this static placeholder. Not displayed to " +"users." +msgstr "表明這個靜態佔位符的描述性名稱。不會呈現給使用者。" + +msgid "placeholder code" +msgstr "佔位符代碼" + +msgid "To render the static placeholder in templates." +msgstr "加載這個靜態佔位符到模板中。" + +msgid "placeholder content" +msgstr "佔位符內容" + +msgid "creation_method" +msgstr "創建方法" + +msgid "static placeholder" +msgstr "靜態佔位符" + +msgid "static placeholders" +msgstr "靜態佔位符" + +msgid "A static placeholder with the same site and code already exists" +msgstr "已存在一個相同網站、相同編碼的靜態佔位符。" + +msgid "Advanced options" +msgstr "進階選項" + +msgid "Generic" +msgstr "泛用" + +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s「%(obj)s」已成功更改。" + +msgid "There are no further settings for this plugin. Please press save." +msgstr "沒有更進一步設定可使用,請按儲存。" + +msgid "Moved" +msgstr "已移動" + +msgid "Changed" +msgstr "已修改" + +msgid "Deleted" +msgstr "已刪除" + +msgid "Added Page Translation" +msgstr "已新增頁面翻譯" + +msgid "Changed Page Translation" +msgstr "已修改頁面翻譯" + +msgid "Deleted Page Translation" +msgstr "已刪除頁面翻譯" + +msgid "Added Plugin" +msgstr "已添加外掛" + +msgid "Changed Plugin" +msgstr "已修改外掛" + +msgid "Moved Plugin" +msgstr "已移動外掛" + +msgid "Deleted Plugin" +msgstr "已刪除外掛" + +msgid "Cut Plugin" +msgstr "已剪切外掛" + +msgid "Paste Plugin" +msgstr "已貼上外掛" + +msgid "Paste to Placeholder" +msgstr "已貼上到佔位符" + +msgid "Added plugins to placeholder from clipboard" +msgstr "已從剪貼簿向佔位符添加外掛" + +msgid "Cleared Placeholder" +msgstr "已清除佔位符" + +msgid "Save" +msgstr "儲存" + +msgid "Some fields cannot be changed since they are read-only content." +msgstr "部分欄位為只讀內容,無法更改。" + +#, python-format +msgid "Log in to administration here." +msgstr "由此處登入到管理。" + +#, python-format +msgid "Login url: %(login_url)s" +msgstr "登入網址 :%(login_url)s" + +msgid "Username:" +msgstr "使用者名稱:" + +msgid "Password:" +msgstr "密碼:" + +msgid "Add a page" +msgstr "新增頁面" + +msgid "Change a page" +msgstr "修改一個網頁" + +msgid "Home" +msgstr "首頁" + +msgid "View on site" +msgstr "在網站上檢視" + +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Please correct the errors below." + +msgid "All permissions" +msgstr "所有權限" + +msgid "Loading..." +msgstr "載入中…" + +msgid "Save and continue editing" +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 "Yes, I’m sure" +msgstr "是的,我確定" + +msgid "No, take me back" +msgstr "不,返回" + +msgid "Summary" +msgstr "總結" + +msgid "User" +msgstr "使用者" + +msgid "Group" +msgstr "群組" + +msgid "Can edit" +msgstr "允許編輯" + +msgid "Can add" +msgstr "允許添加" + +msgid "Can delete" +msgstr "允許刪除" + +msgid "Can publish" +msgstr "允許發佈" + +msgid "Can change permissions" +msgstr "允許更改權限" + +msgid "Can move" +msgstr "允許搬移" + +msgid "Can view" +msgstr "可查看" + +msgid "(global)" +msgstr "(全站)" + +msgid "(current)" +msgstr "(目前)" + +msgid "Page doesn't inherit any permissions." +msgstr "網頁不繼承任何權限" + +msgid "Edit model" +msgstr "編輯模型" + +msgid "Save as new" +msgstr "儲存為新的" + +msgid "Save and add another" +msgstr "儲存並新增另一個" + +msgid "Copy" +msgstr "複製" + +msgid "Cut" +msgstr "剪切" + +msgid "Paste" +msgstr "貼上" + +msgid "Set as home" +msgstr "設為首頁" + +msgid "is restricted" +msgstr "受限的" + +msgid "last change by" +msgstr "最後修改者" + +msgid "last change on" +msgstr "最後修改於" + +msgid "meta" +msgstr "元信息" + +msgid "List of pages" +msgstr "網頁列表" + +msgid "Search" +msgstr "搜尋" + +msgid "Page Tree" +msgstr "頁面樹" + +msgid "Reset filter" +msgstr "重置篩選" + +#, python-format +msgid "" +"\n" +" Restore deleted %(name)s\n" +" " +msgstr "" +"\n" +" 恢復已刪除的%(name)s\n" +" " + +msgid "Main Navigation" +msgstr "主導航" + +msgid "Options" +msgstr "選項" + +msgid "Successfully moved" +msgstr "成功地被搬移" + +msgid "Changes within the tree might require a refresh." +msgstr "樹中的修改可能需要刷新。" + +msgid "Error:" +msgstr "錯誤:" + +msgid "" +"This page cannot be copied because an application is attached to it. See the" +" Page's Advanced settings to manage apphooks." +msgstr "此頁面無法複製,因為已附加應用。請在頁面的「進階設定」中管理應用掛鈎(apphook)。" + +msgid "Are you sure you want to § this page?" +msgstr "確定要 § 這個頁面嗎?" + +msgid "Reload" +msgstr "重新載入" + +msgid "New node" +msgstr "新節點" + +msgid "nodes" +msgstr "節點" + +msgid "View" +msgstr "查看" + +msgid "Menu" +msgstr "選單" + +#, python-format +msgid "" +"\n" +" There is no %(object)s around yet.\n" +"
\n" +" Add %(object)s now.\n" +" " +msgstr "" +"\n" +" 尚未存在 %(object)s。\n" +"
\n" +" 立即添加 %(object)s。\n" +" " + +msgid "Copy options" +msgstr "複製選項" + +msgid "Choose copy options" +msgstr "選擇複製選項" + +msgid "Close" +msgstr "關閉" + +msgid "Legend" +msgstr "圖例" + +msgid "In menu" +msgstr "在選單中" + +msgid "Not in menu" +msgstr "不在選單中" + +msgid "View page" +msgstr "查看頁面" + +msgid "Softroot" +msgstr "虛擬根節點" + +msgid "Apphook" +msgstr "應用掛鈎" + +#, python-format +msgid "Application: %(apphook)s" +msgstr "應用:%(apphook)s" + +msgid "in menu" +msgstr "在選單中" + +msgid "not in menu" +msgstr "不在選單中" + +msgid "Page settings (SHIFT click for advanced settings)" +msgstr "頁面設定(按住 SHIFT 點擊打開進階設定)" + +msgid "Permissions" +msgstr "權限" + +msgid "inherited" +msgstr "繼承" + +msgid "This page has no preview!" +msgstr "當前頁面沒有預覽!" + +msgid "" +"Potentially the attached apphook does not provide content for its root." +msgstr "可能附加的 apphook 沒有為其根節點提供內容。" + +msgid "It is being redirected to:" +msgstr "它被重新導向到:" + +msgid "Clipboard" +msgstr "剪貼簿" + +msgid "Add plugin" +msgstr "新增外掛" + +msgid "Copy all" +msgstr "複製全部" + +msgid "Copy from" +msgstr "複製來源" + +msgid "Empty all" +msgstr "清除全部" + +msgid "Filter plugins..." +msgstr "篩選外掛" + +msgid "Expand all" +msgstr "全部展開" + +msgid "Collapse all" +msgstr "全部收合" + +msgid "You cannot add plugins to this plugin." +msgstr "無法在該外掛中添加其它外掛" + +msgid "This plugin cannot be moved or edited outside of its parent" +msgstr "此外掛不能在其父級之外移動或編輯" + +msgid "Clipboard is empty." +msgstr "剪貼簿已空" + +msgid "This plugin does not allow plugins of this type as nested plugins." +msgstr "該外掛不能允許該類型外掛作為嵌套外掛" + +msgid "This plugin cannot have nested plugins." +msgstr "該外掛無法有嵌套外掛" + +msgid "Highlight" +msgstr "醒目提示顯示" + +msgid "Available plugins" +msgstr "可用插件" + +msgid "Toggle structure" +msgstr "切換結構" + +msgid "Login" +msgstr "登入" + +msgid "Add plugin to" +msgstr "新增外掛到" + +msgid "More" +msgstr "更多" + +#, python-format +msgid "" +"Development version using django CMS %(cms_version)s, Django " +"%(django_version)s, Python %(python_version)s" +msgstr "" +"開發版本:django CMS %(cms_version)s, Django %(django_version)s, Python " +"%(python_version)s" + +msgid "Cancel" +msgstr "取消" + +msgid "The following error occurred:" +msgstr "發生了下述錯誤:" + +msgid "Action successful." +msgstr "操作成功。" + +msgid "Are you sure you want to delete this plugin?" +msgstr "您確定要刪除這個插件?" + +msgid "Are you sure you want to publish this page?" +msgstr "您確定您要發佈該頁面嗎?" + +msgid "Plugin will be added here" +msgstr "外掛將被添加到這裡" + +msgid "You have unsaved changes." +msgstr "您有未儲存的更改。" + +msgid "Loading" +msgstr "載入中" + +msgid "Are you sure you want to abandon these changes?" +msgstr "確定要放棄這些更改嗎?" + +msgid "" +"The form could not be loaded. Please check that the server is running " +"correctly." +msgstr "無法載入表單。請檢查伺服器是否正常運行。" + +msgid "Most used" +msgstr "常用" + +msgid "Shortcuts" +msgstr "快速鍵" + +msgid "The page was changed in the meantime, reloading..." +msgstr "頁面在此期間已被更改,正在重新載入…" + +msgid "CMS-wide Shortcuts" +msgstr "CMS 全局快速鍵" + +msgid "Bring up this help dialog" +msgstr "顯示此幫助對話框" + +msgid "Close/cancel" +msgstr "關閉/取消" + +msgid "Toggle structure mode" +msgstr "切換結構模式" + +msgid "Toggle structure mode and highlight hovered-over plugin" +msgstr "切換結構模式並醒目提示懸停外掛" + +msgid "Open \"Create\" dialog" +msgstr "" + +msgid "Focus on Toolbar" +msgstr "聚焦到工具列" + +msgid "Focus on placeholders" +msgstr "聚焦到佔位符" + +msgid "Move to next/previous element" +msgstr "移動到下一個/上一個元素" + +msgid "Focus on plugins of placeholder" +msgstr "聚焦到佔位符的外掛" + +msgid "Edit plugin" +msgstr "編輯外掛" + +msgid "Open actions menu" +msgstr "打開操作選單" + +msgid "Expand/collapse" +msgstr "展開/摺疊" + +msgid "" +"Login failed. Please check your credentials and try again." +msgstr "登入失敗。請檢查您的認證信息並重試。" + +msgid "Double-click to edit" +msgstr "按兩下以編輯" + +msgid "Tap to edit" +msgstr "點擊以編輯" + +msgid "Click to go back" +msgstr "點擊返回" + +msgid "Click to go forward" +msgstr "點擊向前" + +msgid "Minimize" +msgstr "最小化" + +msgid "Maximize" +msgstr "最大化" + +msgid "Placeholder not editable" +msgstr "佔位符不可編輯" + +msgid "Drop a plugin here" +msgstr "拖放一個外掛到這裡" + +msgid "Welcome to your new django CMS installation!" +msgstr "歡迎來到您全新的 django CMS 安裝!" + +#, python-format +msgid "Version %(cms_version)s" +msgstr "版本 %(cms_version)s" + +msgid "Let’s build something great together!" +msgstr "讓我們一起創造偉大的作品!" + +msgid "Please log in" +msgstr "請登入" + +msgid "" +"\n" +" Add your first page\n" +" " +msgstr "" +"\n" +" 添加您的第一個頁面\n" +" " + +msgid "" +"\n" +"

Help Funding

\n" +"

\n" +" Your funding directly benefits the product, mainly through the\n" +" django CMS Fellowship Program!\n" +"

\n" +"

\n" +" A quick way for yourself or your organisation to donate is on\n" +" Github Sponsors.\n" +"

\n" +" " +msgstr "" +"\n" +"

資助我們

\n" +"

\n" +" 您的資助將直接促進產品改進,主要通過 django CMS 獎學金項目!\n" +"

\n" +"

\n" +" 您或組織可以通過 Github 贊助 快速捐助。\n" +"

\n" +" " + +msgid "" +"\n" +"

Join Us

\n" +"

\n" +" The django CMS Association is a non-profit organisation that funds and steers the development of\n" +" django CMS.\n" +"

\n" +"

\n" +" You can join both as an individual or as an\n" +" organisation.\n" +"

\n" +" " +msgstr "" +"\n" +"

加入我們

\n" +"

django CMS 協會是一個資助並引導 django CMS 開發的非營利組織。

\n" +"

您可以作為個人或組織加入。

\n" +" " + +msgid "" +"\n" +"

Contribute

\n" +" \n" +" " +msgstr "" +"\n" +"

參與貢獻

\n" +" \n" +" " + +msgid "Installation Notes" +msgstr "安裝備註" + +msgid "Support" +msgstr "支持" + +msgid "Documentation" +msgstr "文件" + +msgid "User guide" +msgstr "使用者指南" + +msgid "Give back" +msgstr "回饋" + +msgid "" +"\n" +"

If you don't see the django CMS logo at the top, make sure\n" +" you linked the static/cms folder to your\n" +" static files.

\n" +" " +msgstr "" +"\n" +"

若頂部未顯示 django CMS 標誌,請確認已將 static/cms 目錄連結到靜態檔案。

\n" +" " + +msgid "" +"\n" +"

You're seeing this message because you have\n" +" DEBUG = True in your django settings file and\n" +" haven't added any pages yet.\n" +"

\n" +" " +msgstr "" +"\n" +"

出現此消息是因為在設置中 DEBUG = True 且尚未添加任何頁面。

\n" +" " + +msgid "Welcome to django CMS" +msgstr "歡迎來到django CMS" + +msgid "Add Another" +msgstr "新增另一個" + +msgid "Back" +msgstr "返回" + +msgid "Please choose an option from below to proceed to the next step." +msgstr "請在下面選擇一選項來繼續下一步" + +msgid "Next" +msgstr "下一個" + +msgid "Select what you would like to create" +msgstr "選擇您要建立的內容" + +msgid "Unknown" +msgstr "未知" + +#, python-format +msgid "Page not found on %(domain)s" +msgstr "網頁無法於 %(domain)s 內找到" + +#, python-format +msgid "" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" +msgstr "" +"有一個模板標籤無法找到以查詢參數找到網頁 `%(page_lookup)s\n" +"`。該請求的 URL 為:http://%(host)s%(path)s" + +msgid "Two columns" +msgstr "兩列" + +msgid "Three columns" +msgstr "三列" + +msgid "username" +msgstr "使用者名稱" + +msgid "" +"Required. 300 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "300個字符以內,必須是字母、數字及@/./+/-/_ " + +msgid "Enter a valid username." +msgstr "輸入一個有效的使用者名" + +msgid "email address" +msgstr "電子郵件" + +msgid "staff status" +msgstr "工作人員狀態" + +msgid "Designates whether the user can log into this admin site." +msgstr "指定使用者是否可以登入此管理網站。" + +msgid "active" +msgstr "有效" + +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "指定是否將此使用者視為活躍使用者。取消選擇此選項而不是刪除帳戶。" + +msgid "users" +msgstr "使用者" + +msgid "Title Extension" +msgstr "標題擴展" + +msgid "Page Extension" +msgstr "頁面擴展" + +msgid "object ID" +msgstr "對象ID" + +msgid "Example1 App" +msgstr "樣例1 App" + +msgid "MultilingualExample1 App" +msgstr "多語言樣例1 App" + +msgid "Example1" +msgstr "樣例1" + +msgid "Examples" +msgstr "樣例" + +msgid "Extra Context" +msgstr "額外景況(Context)" + +msgid "Articles" +msgstr "文章" + +msgid "Sample App" +msgstr "樣品應用" + +msgid "Sample App with config" +msgstr "帶配置的樣板程序" + +msgid "Sample App with excluded permissions" +msgstr "排除權限的示例" + +msgid "Sample App 2" +msgstr "樣品應用 2" + +msgid "Sample App 3" +msgstr "樣品應用 2" + +msgid "Sample App Without Landing Page" +msgstr "無登陸頁面的範例應用程式" + +msgid "Namespaced App" +msgstr "名稱空間應用" + +msgid "Parent app" +msgstr "母應用程式" + +msgid "Child app" +msgstr "子應用程式" + +msgid "Variable urls-menus App" +msgstr "可變 URL 選單應用" + +msgid "sample root page" +msgstr "樣品根網頁" + +msgid "sample settings page" +msgstr "樣品設置網頁" + +msgid "sample account page" +msgstr "樣品帳戶網頁" + +msgid "sample my profile page" +msgstr "樣品我的個人資料頁" + +msgid "Static Menu" +msgstr "靜態選單" + +msgid "Static Menu2" +msgstr "靜態選單2" + +msgid "Static Menu3" +msgstr "靜態選單3" + +msgid "Static Menu4" +msgstr "靜態選單" + +msgid "Category" +msgstr "分類" + +msgid "Categories" +msgstr "分類" + +msgid "Add Category" +msgstr "新增分類" + +msgid "^account/$" +msgstr "^account/$" + +msgid "Change Category" +msgstr "修改分類" + +msgid "Thanks for spending some quality time with the Web site today." +msgstr "感謝您今天在網站上花費了寶貴的時間!" + +msgid "Inherit the template of the nearest ancestor" +msgstr "繼承最近的上層網頁模板" + +msgid "UserSettings" +msgstr "使用者設置" + +#, python-format +msgid "Add plugin to placeholder \"%(placeholder_label)s\"" +msgstr "向佔位符「%(placeholder_label)s」新增外掛" + +#, python-format +msgid "Add plugin to %(plugin_name)s" +msgstr "向 %(plugin_name)s 新增外掛" + +msgid "Single placeholder" +msgstr "單一佔位符" + +msgid "CMS - your user account was created." +msgstr "CMS - 您的使用者帳號已被建立。" + +msgid "CMS - your user account was changed." +msgstr "CMS - 您的使用者帳號已被更改。" + +#, python-format +msgid "This placeholder already has the maximum number of plugins (%s)." +msgstr "佔位空間內已經含有最大數量的插件(%s)。" + +#, python-format +msgid "" +"This placeholder already has the maximum number (%(limit)s) of allowed " +"%(plugin_name)s plugins." +msgstr "佔位空間內已經含有最大數量 (%(limit)s) 所允許的 %(plugin_name)s 插件。" + +#, python-brace-format +msgid "Unable to find the specified CMS_REQUEST_IP_RESOLVER module: \"{0}\"." +msgstr "無法找到指定的 CMS_REQUEST_IP_RESOLVER 模塊:\"{0}\"。" + +#, python-brace-format +msgid "" +"Unable to find the specified CMS_REQUEST_IP_RESOLVER function: \"{0}\" in " +"module \"{1}\"." +msgstr "無法在模塊「{1}」中找到指定的 CMS_REQUEST_IP_RESOLVER 函數:\"{0}\"。" + +#, python-format +msgid "Create a new %s instance." +msgstr "建立一個新的%s實例" + +#, python-format +msgid "A wizard has already been registered for model: %s" +msgstr "一嚮導程序已經註冊在模型%s" diff --git a/cms/locale/zh_TW/LC_MESSAGES/djangojs.po b/cms/locale/zh_TW/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..9d013e99 --- /dev/null +++ b/cms/locale/zh_TW/LC_MESSAGES/djangojs.po @@ -0,0 +1,26 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Fabian Braun , 2026 +# Fabian Braun , 2026 +# kochin , 2013 +# kochin , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django CMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-11 19:18+0000\n" +"PO-Revision-Date: 2010-11-30 06:49+0000\n" +"Last-Translator: kochin , 2013\n" +"Language-Team: Chinese (Taiwan) (http://app.transifex.com/divio/django-cms/language/zh_TW/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Are you sure you want to change tabs without saving the page first?" +msgstr "您確定您想要變換分頁而不先儲存該頁面嗎?" diff --git a/cms/management/__init__.py b/cms/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cms/management/commands/__init__.py b/cms/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cms/management/commands/cms.py b/cms/management/commands/cms.py new file mode 100644 index 00000000..6b730446 --- /dev/null +++ b/cms/management/commands/cms.py @@ -0,0 +1,33 @@ +from collections import OrderedDict + +import cms + +from .subcommands.base import SubcommandsCommand +from .subcommands.check import CheckInstallation +from .subcommands.copy import CopyCommand +from .subcommands.delete_orphaned_plugins import DeleteOrphanedPluginsCommand +from .subcommands.list import ListCommand +from .subcommands.tree import FixTreeCommand +from .subcommands.uninstall import UninstallCommand + + +class Command(SubcommandsCommand): + command_name = 'cms' + subcommands = OrderedDict(( + ('check', CheckInstallation), + ('copy', CopyCommand), + ('delete-orphaned-plugins', DeleteOrphanedPluginsCommand), + ('fix-tree', FixTreeCommand), + ('list', ListCommand), + ('uninstall', UninstallCommand), + )) + missing_args_message = 'one of the available sub commands must be provided' + + subcommand_dest = 'cmd' + + def get_version(self): + return cms.__version__ + + def add_arguments(self, parser): + parser.add_argument('--version', action='version', version=self.get_version()) + super().add_arguments(parser) diff --git a/cms/management/commands/djangocms_install_rules.json b/cms/management/commands/djangocms_install_rules.json new file mode 100644 index 00000000..7ffc072b --- /dev/null +++ b/cms/management/commands/djangocms_install_rules.json @@ -0,0 +1,127 @@ +{ + "comment": "Rules used by `djangocms .` to add django CMS to an existing project. Fetched from the cms-template repository (branch matching the installed django CMS major.minor), with this file as the bundled fallback. Top-level keys starting with `$` (such as `$schema`) and this comment are ignored. The `options` object describes template-owned command options. Each `when` condition may contain a `flag` (truthy command option) and/or a `mode` (list of matching --mode values). For installed_apps and middleware a rule may also carry a `before` or `after` anchor (an existing entry) for positional insertion; otherwise items are appended. A url rule may carry `\"i18n\": true` to route its pattern through `i18n_patterns()` (so the CMS catch-all keeps its language prefix) when the project's urls.py already uses i18n_patterns; otherwise the pattern is added to the plain urlpatterns list. The `warnings` list holds `{message, when}` entries; each message whose condition matches is printed to the screen (for example, should djangocms-stories be discontinued, add {\"message\": \"The --stories option no longer has any effect: djangocms-stories has been discontinued.\", \"when\": {\"flag\": \"stories\"}}).", + "options": { + "mode": { + "type": "choice", + "default": "traditional", + "choices": ["traditional", "headless", "hybrid"], + "label": "CMS mode", + "help": "Selects the CMS mode: traditional, headless or hybrid (default: traditional)." + }, + "versioning": { + "type": "boolean", + "default": true, + "label": "Enable content versioning", + "help": "Adds content versioning (djangocms-versioning) to the project (default: on)." + }, + "moderation": { + "type": "boolean", + "default": false, + "label": "Enable content moderation", + "requires": {"versioning": true}, + "help": "Adds content moderation (djangocms-moderation) to the project (default: off)." + }, + "alias": { + "type": "boolean", + "default": true, + "label": "Add reusable aliases", + "help": "Adds reusable aliases (djangocms-alias) to the project (default: on)." + }, + "stories": { + "type": "boolean", + "default": false, + "label": "Add the stories component library", + "help": "Adds the stories component library (djangocms-stories) to the project (default: off)." + }, + "history": { + "type": "boolean", + "default": false, + "label": "Add undo/redo history", + "help": "Adds djangocms-history to the project (default: off)." + } + }, + "installed_apps": [ + {"items": ["djangocms_simple_admin_style"], "before": "django.contrib.admin"}, + { + "items": [ + "django.contrib.sites", + "cms", + "menus", + "sekizai", + "filer", + "easy_thumbnails", + "djangocms_frontend", + "djangocms_frontend.contrib.accordion", + "djangocms_frontend.contrib.alert", + "djangocms_frontend.contrib.badge", + "djangocms_frontend.contrib.card", + "djangocms_frontend.contrib.carousel", + "djangocms_frontend.contrib.collapse", + "djangocms_frontend.contrib.content", + "djangocms_frontend.contrib.grid", + "djangocms_frontend.contrib.image", + "djangocms_frontend.contrib.jumbotron", + "djangocms_frontend.contrib.link", + "djangocms_frontend.contrib.listgroup", + "djangocms_frontend.contrib.media", + "djangocms_frontend.contrib.tabs", + "djangocms_frontend.contrib.utilities", + "djangocms_text", + "djangocms_link" + ] + }, + {"items": ["djangocms_versioning"], "when": {"flag": "versioning"}}, + {"items": ["djangocms_moderation"], "when": {"flag": "moderation"}}, + {"items": ["djangocms_alias"], "when": {"flag": "alias"}}, + {"items": ["djangocms_stories", "taggit"], "when": {"flag": "stories"}}, + {"items": ["djangocms_history"], "when": {"flag": "history"}}, + {"items": ["rest_framework", "djangocms_rest"], "when": {"mode": ["headless", "hybrid"]}} + ], + "middleware": [ + { + "items": ["django.middleware.locale.LocaleMiddleware"], + "after": "django.contrib.sessions.middleware.SessionMiddleware" + }, + { + "items": [ + "cms.middleware.user.CurrentUserMiddleware", + "cms.middleware.page.CurrentPageMiddleware", + "cms.middleware.toolbar.ToolbarMiddleware", + "cms.middleware.language.LanguageCookieMiddleware" + ] + } + ], + "context_processors": [ + { + "items": [ + "django.template.context_processors.i18n", + "sekizai.context_processors.sekizai", + "cms.context_processors.cms_settings" + ] + } + ], + "settings": [ + {"name": "SITE_ID", "snippet": "SITE_ID = 1"}, + {"name": "X_FRAME_OPTIONS", "snippet": "X_FRAME_OPTIONS = \"SAMEORIGIN\""}, + {"name": "LANGUAGES", "snippet": "LANGUAGES = [\n (\"{language_code}\", \"{language_name}\"),\n]"}, + {"name": "CMS_TEMPLATES", "snippet": "CMS_TEMPLATES = [\n (\"cms-base.html\", \"Default\"),\n]", "when": {"mode": ["traditional", "hybrid"]}}, + {"name": "CMS_PLACEHOLDERS", "snippet": "CMS_PLACEHOLDERS = [\n (\"cms-base.html\", (\"content\",), \"Content\"),\n]", "when": {"mode": ["headless"]}} + ], + "urls": [ + {"pattern": "path(\"api/\", include(\"djangocms_rest.urls\"))", "when": {"mode": ["headless", "hybrid"]}}, + {"pattern": "path(\"\", include(\"cms.urls\"))", "i18n": true, "when": {"mode": ["traditional", "hybrid"]}} + ], + "packages": { + "filer": "django-filer", + "djangocms_history": "djangocms-history>=3", + "rest_framework": "djangorestframework", + "taggit": "django-taggit" + }, + "template_dir": { + "path": "templates", + "base_template": "cms-base.html", + "base_template_content": "{% extends \"bootstrap5/base.html\" %}{# Replace this with your CMS base template #}\n", + "when": {"mode": ["traditional", "hybrid"]} + }, + "warnings": [] +} diff --git a/cms/management/commands/startcmsproject.py b/cms/management/commands/startcmsproject.py new file mode 100644 index 00000000..db4e2715 --- /dev/null +++ b/cms/management/commands/startcmsproject.py @@ -0,0 +1,1292 @@ +#!/usr/bin/env python +import argparse +import difflib +import io +import json +import os +import re +import shlex +import shutil +import subprocess +import sys +import tarfile +import urllib.error +import urllib.request +import zipfile + +from django.core.checks.security.base import SECRET_KEY_INSECURE_PREFIX +from django.core.management import CommandError +from django.core.management.templates import TemplateCommand +from django.core.management.utils import get_random_secret_key + +from cms import __version__ as cms_version + + +class ShellMixin: # pragma: no cover + """Run subprocesses / management commands and echo them to the user. + + Shared by both the new-project and existing-project flows. Expects the + ``COMMAND`` style callable and ``stdout``/``stderr`` provided by the + command class it is mixed into. + """ + + def write_command(self, command): + self.stderr.write(self.COMMAND(command)) + + def run_management_command(self, commands, capture_output=False): + self.write_command("python -m manage " + " ".join(commands)) + result = subprocess.run([sys.executable, "-m", "manage"] + commands, capture_output=capture_output, check=False) + if result.returncode: + if capture_output: + self.stderr.write(self.style.ERROR(result.stderr.decode())) + raise CommandError(f"{sys.executable} -m manage {' '.join(commands)} failed.") + + @staticmethod + def running_in_venv(): + return sys.prefix != sys.base_prefix + + +class PromptMixin: # pragma: no cover + """Interactive prompting for the project name and the project options.""" + + def ask(self, label, default=None): + suffix = f" [{default}]" if default not in (None, "") else "" + try: + return input(f"{label}{suffix}: ").strip() or default + except EOFError as exc: + raise CommandError( + "Input is not available. Provide a project name, or use --noinput to disable prompts." + ) from exc + + def ask_choice(self, label, choices, default): + while True: + value = self.ask(f"{label} ({'/'.join(choices)})", default) + if value in choices: + return value + self.stderr.write(self.style.ERROR(f"Please choose one of: {', '.join(choices)}")) + + def ask_bool(self, label, default): + while True: + value = self.ask(f"{label} (yes/no)", "yes" if default else "no").lower() + if value in ("y", "yes", "true", "1", "on"): + return True + if value in ("n", "no", "false", "0", "off"): + return False + self.stderr.write(self.style.ERROR("Please answer yes or no.")) + + def prompt_for_options(self, name, options): + """Ask for the project name and any option still unset (``None``).""" + self.stdout.write(self.HEADING(f"Create django CMS {cms_version} project")) + if not name: + while not name: + name = self.ask("Project name") + if not name: + self.stderr.write(self.style.ERROR("A project name is required.")) + for option_name, definition in self.get_template_options().items(): + if options.get(option_name) is not None: + continue + if not self._requirements_met(definition.get("requires"), options): + options[option_name] = False if definition["type"] == "boolean" else definition["default"] + continue + label = definition.get("label", option_name.replace("_", " ").title()) + if definition["type"] == "choice": + options[option_name] = self.ask_choice(label, tuple(definition["choices"]), definition["default"]) + elif definition["type"] == "boolean": + options[option_name] = self.ask_bool(label, definition["default"]) + else: + raise CommandError(f"Unsupported option type for --{option_name}: {definition['type']}") + return name + + +class SourceEditorMixin: + """Best-effort, regex-based editing of a project's ``settings.py`` / ``urls.py``. + + A self-contained toolkit of (mostly static) text-manipulation helpers used + when adding django CMS to an existing project. It knows nothing about the + command options; the install rules in :class:`ExistingProjectMixin` decide + *what* to insert, these helpers decide *how* to splice it into the source. + """ + + @staticmethod + def _read(path): + with open(path, encoding="utf-8") as handle: + return handle.read() + + @staticmethod + def _write(path, text): + with open(path, "w", encoding="utf-8") as handle: + handle.write(text) + + def _show_diff(self, path, original, new): + """Print a coloured unified diff of an edit (for ``--dry-run``). + + An empty ``original`` renders as a new file (``--- /dev/null``). + """ + if original == new: + return + rel = os.path.relpath(path) + diff = difflib.unified_diff( + original.splitlines(), new.splitlines(), + fromfile="/dev/null" if not original else rel, tofile=rel, lineterm="", + ) + for line in diff: + if line.startswith(("+++", "---")): + self.stdout.write(line) + elif line.startswith("+"): + self.stdout.write(self.style.SUCCESS(line)) + elif line.startswith("-"): + self.stdout.write(self.style.ERROR(line)) + elif line.startswith("@@"): + self.stdout.write(self.style.WARNING(line)) + else: + self.stdout.write(line) + + @staticmethod + def module_to_path(module): + """Resolve a dotted module path to a file below the current directory.""" + parts = module.split(".") + base = os.path.join(os.getcwd(), *parts) + if os.path.isfile(base + ".py"): + return base + ".py" + if os.path.isfile(os.path.join(base, "__init__.py")): + return os.path.join(base, "__init__.py") + return None + + def get_settings_module(self, manage_py): + """Extract the DJANGO_SETTINGS_MODULE value from a manage.py file.""" + text = self._read(manage_py) + match = re.search(r"""DJANGO_SETTINGS_MODULE['"]?\s*,\s*['"]([\w.]+)['"]""", text) + if not match: + raise CommandError("Could not determine DJANGO_SETTINGS_MODULE from manage.py.") + return match.group(1) + + def get_urlconf(self, settings_text, settings_module): + """Return the ROOT_URLCONF module, falling back to ``.urls``.""" + match = re.search(r"""(?m)^ROOT_URLCONF\s*=\s*['"]([\w.]+)['"]""", settings_text) + if match: + return match.group(1) + return settings_module.rsplit(".", 1)[0] + ".urls" + + @staticmethod + def _get_setting_value(text, name): + """Return the quoted string value of a top-level ``NAME = "..."`` setting.""" + match = re.search(rf"""(?m)^{name}\s*=\s*['"]([^'"]+)['"]""", text) + return match.group(1) if match else None + + @staticmethod + def _language_name(language_code): + """Human-readable name for a language code, falling back to the code.""" + try: + from django.utils.translation import get_language_info + + return get_language_info(language_code)["name"] + except KeyError: + return language_code + + @staticmethod + def _uses_i18n_patterns(text): + """Whether the urls module already routes patterns through ``i18n_patterns``.""" + return bool(re.search(r"\bi18n_patterns\s*\(", text)) + + @staticmethod + def _append_i18n_patterns(text, items): + """Append ``urlpatterns += i18n_patterns(...)`` with ``items`` to the module. + + A new block is added at the end of the file (after any existing + ``i18n_patterns`` call) so the CMS catch-all stays last. The + ``i18n_patterns`` import is assumed present -- this is only called when + the module already uses it. + """ + if not text.endswith("\n"): + text += "\n" + lines = "\n".join(f" {item}," for item in items) + block = "\n# django CMS URLs (added by `djangocms .`)\nurlpatterns += i18n_patterns(\n" + lines + "\n)\n" + return text + block, list(items) + + @classmethod + def _ensure_include_import(cls, text): + """Make sure ``include`` is importable from ``django.urls`` in urls.py.""" + if re.search(r"(?m)^\s*from django\.urls import .*\binclude\b", text): + return text + return cls._insert_import(text, "from django.urls import include") + + @staticmethod + def _insert_import(text, statement): + """Insert an import ``statement`` at a safe top-level position. + + Inserts after the last existing top-level ``import``/``from`` line so the + statement never lands before a shebang, encoding comment, module + docstring, or ``from __future__`` imports (which must stay at the top). + If the module has no imports yet, the statement is placed after any + shebang, encoding declaration, and module docstring. + """ + lines = text.splitlines(keepends=True) + insert_at = 0 + for i, line in enumerate(lines): + if line.startswith(("import ", "from ")): + insert_at = i + 1 + if insert_at == 0: + # No imports found: skip over shebang, encoding comment and docstring. + if insert_at < len(lines) and lines[insert_at].startswith("#!"): + insert_at += 1 + if insert_at < len(lines) and re.match(r"#.*coding[:=]", lines[insert_at]): + insert_at += 1 + match = re.match(r'\s*(?P"""|\'\'\')', lines[insert_at]) if insert_at < len(lines) else None + if match: + quote = match.group("quote") + # Single-line docstring (opening and closing quotes on one line). + if lines[insert_at].count(quote) >= 2: + insert_at += 1 + else: + insert_at += 1 + while insert_at < len(lines) and quote not in lines[insert_at]: + insert_at += 1 + if insert_at < len(lines): + insert_at += 1 + lines.insert(insert_at, statement + "\n") + return "".join(lines) + + @staticmethod + def _insert_into_list(text, name, items, quote=True): + """Insert ``items`` into a list/tuple assignment ``name = [...]``. + + Works for top-level assignments (``NAME = [`` / ``NAME += [``) as well as + dict entries (``"name": [``). Existing entries are left untouched. + Returns ``(new_text, added_items)``. + """ + pattern = re.compile(rf"""(?m)^(?P[ \t]*)['"]?{re.escape(name)}['"]?\s*(?:\+?=|:)\s*[\[(]""") + match = pattern.search(text) + if not match: + return text, [] + open_pos = match.end() - 1 + depth = 0 + close_pos = None + for i in range(open_pos, len(text)): + char = text[i] + if char in "[(": + depth += 1 + elif char in ")]": + depth -= 1 + if depth == 0: + close_pos = i + break + if close_pos is None: + return text, [] + + body = text[open_pos + 1:close_pos] + # Derive the indentation of the list items. + indent = None + for line in body.splitlines(): + if line.strip(): + indent = line[: len(line) - len(line.lstrip())] + break + if indent is None: + indent = match.group("indent") + " " + + added, rendered = [], [] + for item in items: + token = f'"{item}"' if quote else item + present = (f'"{item}"' in body or f"'{item}'" in body) if quote else (item in body) + if present: + continue + rendered.append(f"{indent}{token},") + added.append(item) + if not added: + return text, [] + + # Splice the new lines in just before the closing bracket, preserving + # that bracket's own indentation when it sits on its own line. + line_start = text.rfind("\n", 0, close_pos) + 1 + if text[line_start:close_pos].strip() == "": + head, tail = text[:line_start], text[line_start:] + else: + # Inline list (e.g. ``"DIRS": []``): the closing bracket moves to its + # own line, indented like the assignment for readability. + head, tail = text[:close_pos], match.group("indent") + text[close_pos:] + head = head.rstrip() + if head and head[-1] not in "[(,": + head += "," + new_text = head + "\n" + "\n".join(rendered) + "\n" + tail + return new_text, added + + def _insert_near_anchor(self, text, item, anchor, before=False, list_name=None): + """Insert quoted ``item`` immediately before/after the ``anchor`` entry. + + Used for entries with a required position (e.g. Django's LocaleMiddleware + after ``SessionMiddleware``, or the admin style before + ``django.contrib.admin``). Falls back to appending to ``list_name`` when + the anchor is not found. + """ + if f'"{item}"' in text or f"'{item}'" in text: + return text, [] + pattern = re.compile(rf"""(?m)^([ \t]*)(["']){re.escape(anchor)}\2(\s*,)?""") + match = pattern.search(text) + if not match: + return self._insert_into_list(text, list_name, [item]) if list_name else (text, []) + indent, quote, comma = match.group(1), match.group(2), match.group(3) + if before: + new_line = f"{indent}{quote}{item}{quote},\n" + text = text[: match.start()] + new_line + text[match.start():] + else: + # Make sure the anchor line keeps its trailing comma. + prefix = "" if comma else "," + new_line = f"\n{indent}{quote}{item}{quote}," + text = text[: match.end()] + prefix + new_line + text[match.end():] + return text, [item] + + @staticmethod + def _list_assignment_kind(text, name): + """Classify the first top-level assignment to ``name``. + + Returns ``"literal"`` for an editable ``NAME = [`` / ``NAME = (`` list or + tuple, ``"computed"`` for any other value (e.g. ``NAME = DJANGO + EXTRA``, + which has no list literal to splice into), or ``"none"`` when there is no + such assignment. The *first* assignment wins, so a recovery reassignment + appended later (see :meth:`_append_list_extension`) does not flip a + computed list back to "literal" on a rerun. + """ + match = re.search(rf"(?m)^[ \t]*{re.escape(name)}\s*\+?=\s*(\S)", text) + if not match: + return "none" + return "literal" if match.group(1) in "[(" else "computed" + + def _append_list_extension(self, text, name, before_items, after_items): + """Recover when ``name`` is a computed value rather than a literal list. + + Appends a ``name = [before] + name + [after]`` reassignment to the end of + the module so the new entries are added without rewriting the original + expression. This is best-effort: exact ``before``/``after`` anchors are + reduced to 'prepend' / 'append', so the caller flags the result for + review. Items already present anywhere in the module are skipped, which + keeps reruns idempotent. Returns ``(new_text, added_items)``. + """ + before_new = [item for item in before_items if f'"{item}"' not in text and f"'{item}'" not in text] + after_new = [item for item in after_items if f'"{item}"' not in text and f"'{item}'" not in text] + if not before_new and not after_new: + return text, [] + if not text.endswith("\n"): + text += "\n" + prefix = "[\n" + "".join(f' "{item}",\n' for item in before_new) + "] + " if before_new else "" + suffix = " + [\n" + "".join(f' "{item}",\n' for item in after_new) + "]" if after_new else "" + block = ( + f"\n# django CMS: {name} is a computed value, not a literal list, so the new\n" + f"# entries were appended here instead of inserted in place (`djangocms .`).\n" + f"# Review their position relative to your existing entries.\n" + f"{name} = {prefix}{name}{suffix}\n" + ) + return text + block, before_new + after_new + + +class NewProjectMixin: # pragma: no cover + """Create a brand-new project by cloning the cms-template, then bootstrap it. + + Covers the default flow (a project name other than ``"."``): rendering the + template, installing its requirements, running migrations, creating the + superuser and reporting success. + """ + + def get_default_template(self): + return f"https://github.com/django-cms/cms-template/archive/{self.major_minor}.tar.gz" + + def handle_template(self, template, subdir): + if not template: + template = self.get_default_template() + return super().handle_template(template, subdir) + + def postprocess(self, project, options): + # Go to project dir + self.write_command(f'cd "{project}"') + os.chdir(project) + + # Install requirements + self.install_requirements(project) + + # Create database by running migrations + self.stdout.write(self.HEADING("Run migrations")) + self.run_management_command(["migrate"], capture_output=True) + + # Create superuser (respecting command line arguments) + self.stdout.write(self.HEADING("Create superuser")) + command = ["createsuperuser"] + if options.get("username"): + command.append("--username") + command.append(options.get("username")) + if options.get("email"): + command.append("--email") + command.append(options.get("email")) + if not options["interactive"]: + if "--username" not in command: + command.append("--username") + command.append(os.environ.get("DJANGO_SUPERUSER_USERNAME", "admin")) + if "--email" not in command: + command.append("--email") + command.append(os.environ.get("DJANGO_SUPERUSER_EMAIL", "none@nowhere.com")) + command.append("--noinput") + self.run_management_command(command) + + # Check installation + self.stdout.write(self.HEADING("Check installation")) + self.run_management_command(["cms", "check"], capture_output=True) + + # Display success message + message = f"django CMS {cms_version} installed successfully" + separator = "*" * len(message) + self.stdout.write(self.HEADING(f"{separator}\n{message}\n{separator}")) + self.stdout.write( + f""" +Congratulations! You have successfully installed django CMS, +the lean enterprise content management powered by Django! + +Now, to start the development server first go to your newly +created project and then call the runserver management command: +$ {self.style.SUCCESS("cd " + project)} +$ {self.style.SUCCESS("python -m manage runserver")} + +Learn more at https://docs.django-cms.org/ +Join the django CMS Discord Server at https://discord-main-channel.django-cms.org + +Enjoy! +""" + ) + + def install_requirements(self, project): + for req_file in ("requirements.txt", "requirements.in"): + requirements = os.path.join(project, req_file) + if os.path.isfile(requirements): + if self.running_in_venv() or os.environ.get("DJANGOCMS_ALLOW_PIP_INSTALL", "False") == "True": + self.stdout.write(self.HEADING(f"Install requirements in {requirements}")) + self.write_command(f"python -m pip install -r {shlex.quote(requirements)}") + result = subprocess.run( + [sys.executable, "-m", "pip", "install", "-r", requirements], + capture_output=True, check=False, + ) + if result.returncode: + self.stderr.write(self.style.ERROR(result.stderr.decode())) + raise CommandError(f"Failed to install requirements in {requirements}") + break + else: + self.stderr.write( + self.style.ERROR( + "To automatically install requirements for your new django CMS " + "project use this command in a virtual environment." + ) + ) + raise CommandError("Requirements not installed") + + +class ExistingProjectMixin: + """Add django CMS to the existing Django project in the current directory. + + Covers the ``djangocms .`` flow: it reads the install rules (fetched from + the cms-template repository, with a bundled fallback), edits the project's + ``settings.py`` and ``urls.py`` through :class:`SourceEditorMixin`, and + installs the resulting package set. + """ + + # The rules for installing django CMS into an *existing* project (name ".") + # live in a JSON file that is fetched from the cms-template repository (the + # branch matching the installed django CMS major.minor), with the file + # bundled next to this command serving as the offline fallback. + INSTALL_RULES_FILENAME = "djangocms_install_rules.json" + + # Package specs are intentionally narrow: a package name plus an optional + # lower-bound version pin from trusted install rules. + SAFE_PACKAGE_RE = re.compile(r"^[A-Za-z0-9_-]+(>=[0-9][A-Za-z0-9_.-]*)?$") + BUNDLED_RULES_OPTION = "--use-bundled-install-rules" + + def get_install_rules_url(self): + return ( + "https://raw.githubusercontent.com/django-cms/cms-template/" + f"{self.major_minor}/{self.INSTALL_RULES_FILENAME}" + ) + + @staticmethod + def _command_line_option(name): + """Return an option value from ``sys.argv`` before argparse runs.""" + for index, argument in enumerate(sys.argv[1:]): + if argument.startswith(name + "="): + return argument.split("=", 1)[1] + if argument == name and index + 2 < len(sys.argv): + return sys.argv[index + 2] + return None + + def load_template_install_rules(self, template): + """Load install rules stored at the root of a custom project template.""" + if os.path.isdir(template): + path = os.path.join(template, self.INSTALL_RULES_FILENAME) + if not os.path.isfile(path): + return None + return json.loads(self._read(path)) + + if os.path.isfile(template): + with open(template, "rb") as template_file: + content = template_file.read() + else: + with urllib.request.urlopen(template, timeout=15) as response: # noqa: S310 (user-provided template URL) + content = response.read() + + archive = io.BytesIO(content) + try: + with zipfile.ZipFile(archive) as template_zip: + matches = [ + name + for name in template_zip.namelist() + if name.rsplit("/", 1)[-1] == self.INSTALL_RULES_FILENAME + ] + if not matches: + return None + return json.loads(template_zip.read(min(matches, key=lambda name: name.count("/"))).decode("utf-8")) + except zipfile.BadZipFile: + archive.seek(0) + + try: + with tarfile.open(fileobj=archive, mode="r:*") as template_tar: + matches = [ + member + for member in template_tar.getmembers() + if member.isfile() and member.name.rsplit("/", 1)[-1] == self.INSTALL_RULES_FILENAME + ] + if not matches: + return None + rules_file = template_tar.extractfile(min(matches, key=lambda member: member.name.count("/"))) + return json.loads(rules_file.read().decode("utf-8")) + except tarfile.TarError as exc: + raise ValueError("custom template is not a supported directory, ZIP, or tar archive") from exc + + def add_to_existing_project(self, options): + """Add django CMS to the existing Django project in the current directory. + + The project's settings module is read from ``manage.py``; INSTALLED_APPS, + MIDDLEWARE and the template context processors are updated according to + the rules (and the given flags), and the project's ``urls.py`` (from + ``ROOT_URLCONF``) is wired up for the selected mode. + """ + cwd = os.getcwd() + manage_py = os.path.join(cwd, "manage.py") + if not os.path.isfile(manage_py): + raise CommandError("Cannot add django CMS: no manage.py found in the current directory.") + + settings_module = self.get_settings_module(manage_py) + settings_file = self.module_to_path(settings_module) + if not settings_file: + raise CommandError(f"Cannot locate the settings file for '{settings_module}'.") + + dry_run = options.get("dry_run") + self.stdout.write(self.HEADING(f"Add django CMS {cms_version} to an existing project")) + if dry_run: + # Dry run: nothing is written, so there is nothing to confirm. + self.stdout.write( + f"Dry run: showing the changes that would be made to {os.path.relpath(settings_file, cwd)}\n" + "and your project's urls. No files are created, modified or installed." + ) + else: + # Make sure the user understands these are automated, best-effort edits + # to their own project files before anything is changed. + self.stdout.write( + f"This will make automated changes to {os.path.relpath(settings_file, cwd)} and your\n" + "project's urls, and may create a templates directory. These edits are best-effort\n" + "and must be reviewed afterwards, so make sure your project is under version control\n" + "(or backed up) to inspect the changes." + ) + if options.get("interactive", True) and not self.ask_bool("Continue", True): + self.stdout.write("Aborted; no changes made.") + return + + rules = self.load_install_rules() + + # Emit any warnings whose condition matches (e.g. an option that no + # longer has an effect). These are defined by the rules file so they can + # be added/updated without changing django CMS. + for warning in rules.get("warnings", []): + if self._rule_applies(warning.get("when"), options): + self.stderr.write(self.style.WARNING(warning["message"])) + + self.stdout.write(self.HEADING(f"Add django CMS {cms_version} to {settings_module}")) + + # --- settings.py --------------------------------------------------- + original_settings = self._read(settings_file) + text = original_settings + + # Apps to add from the rules, honouring each rule's condition (a flag + # and/or the selected mode). Rules with a `before`/`after` anchor are + # positioned relative to an existing entry; the rest are appended. + text, apps, added_apps, apps_recovered = self._apply_list_rules( + text, "INSTALLED_APPS", rules.get("installed_apps", []), options + ) + text, _, added_mw, mw_recovered = self._apply_list_rules( + text, "MIDDLEWARE", rules.get("middleware", []), options + ) + + context_processors = [] + for rule in rules.get("context_processors", []): + if self._rule_applies(rule.get("when"), options): + context_processors += rule["items"] + text, added_cp = self._insert_into_list(text, "context_processors", context_processors) + + text, added_dirs, created_paths = self._ensure_template_dir(text, cwd, rules.get("template_dir"), options) + text, added_settings = self._append_cms_settings(text, rules.get("settings", []), options) + + if dry_run: + # In a dry run the diff is the whole report: the settings change plus + # any files that would be created (e.g. the base template). + self._show_diff(settings_file, original_settings, text) + template_content = (rules.get("template_dir") or {}).get("base_template_content", "") + for path in created_paths: + if not path.endswith("/"): + self._show_diff(path, "", template_content) + else: + self._write(settings_file, text) + self.stdout.write(f"Updated {os.path.relpath(settings_file, cwd)}") + for app in added_apps: + self.stdout.write(f" + INSTALLED_APPS: {app}") + for mw in added_mw: + self.stdout.write(f" + MIDDLEWARE: {mw}") + for cp in added_cp: + self.stdout.write(f" + context_processors: {cp}") + for entry in added_dirs: + self.stdout.write(f" + TEMPLATES DIRS: {entry}") + for setting in added_settings: + self.stdout.write(f" + {setting}") + for path in created_paths: + self.stdout.write(f" + created {path}") + + # When a setting is a computed value rather than a literal list, the + # entries could not be spliced in place and were appended through a + # reassignment instead -- the order is a best-effort guess to review. + if apps_recovered and added_apps: + self.stderr.write( + self.style.WARNING( + "INSTALLED_APPS is a computed value, so the new apps were appended via a " + "reassignment at the end of the settings file. Review their order." + ) + ) + if mw_recovered and added_mw: + self.stderr.write( + self.style.WARNING( + "MIDDLEWARE is a computed value, so the new middleware was appended via a " + "reassignment at the end of the settings file. Review the order carefully, " + "as middleware ordering is significant." + ) + ) + + # --- urls.py ------------------------------------------------------- + urls_module = self.get_urlconf(text, settings_module) + urls_file = self.module_to_path(urls_module) + if urls_file: + added_urls, urls_original, urls_text = self.update_urls(urls_file, options, rules.get("urls", [])) + if dry_run: + self._show_diff(urls_file, urls_original, urls_text) + else: + self._write(urls_file, urls_text) + self.stdout.write(f"Updated {os.path.relpath(urls_file, cwd)}") + for url in added_urls: + self.stdout.write(f" + urlpatterns: {url}") + else: + self.stderr.write( + self.style.WARNING( + f"Could not locate the urls file for '{urls_module}'. " + "Please add the django CMS urls manually." + ) + ) + + self._finish_existing_project(apps, rules.get("packages", {}), options) + + def load_install_rules(self): + """Load custom-template rules, or use the official and bundled fallbacks.""" + cached = getattr(self, "_install_rules", None) + if cached is not None: + return cached + if getattr(self, "_use_bundled_install_rules", False): + rules = self.load_bundled_install_rules() + else: + rules = None + template = getattr(self, "_requested_template", None) + if template: + try: + rules = self.load_template_install_rules(template) + except (urllib.error.URLError, OSError, ValueError) as exc: + self.stderr.write( + self.style.WARNING( + f"Could not load installation rules from custom template {template} ({exc})." + ) + ) + if rules is None: + self.stderr.write( + self.style.WARNING( + f"Custom template {template} does not provide {self.INSTALL_RULES_FILENAME}; " + "using the official installation rules." + ) + ) + if rules is None: + url = self.get_install_rules_url() + try: + with urllib.request.urlopen(url, timeout=15) as response: # noqa: S310 (https URL) + rules = json.loads(response.read().decode("utf-8")) + except (urllib.error.URLError, OSError, ValueError) as exc: + self.stderr.write( + self.style.WARNING( + f"Could not fetch installation rules from {url} ({exc}); using bundled defaults." + ) + ) + rules = self.load_bundled_install_rules() + if not isinstance(rules, dict): + raise CommandError("Invalid installation rules: expected a JSON object.") + # Metadata keys such as "$schema" or "comment" carry no rules. + rules = {key: value for key, value in rules.items() if not key.startswith("$")} + if "options" not in rules: + bundled_rules = { + key: value for key, value in self.load_bundled_install_rules().items() if not key.startswith("$") + } + rules["options"] = bundled_rules["options"] + self._validate_install_rules(rules) + self._install_rules = rules + return rules + + def load_bundled_install_rules(self): + """Read the bundled install rules without fetching from cms-template.""" + bundled = os.path.join(os.path.dirname(__file__), self.INSTALL_RULES_FILENAME) + return json.loads(self._read(bundled)) + + def get_template_options(self): + """Return the template-owned command options from the install rules.""" + return self.load_install_rules()["options"] + + def get_template_option_defaults(self): + """Effective defaults for template-owned options.""" + return {name: definition["default"] for name, definition in self.get_template_options().items()} + + def apply_template_option_defaults(self, options): + """Fill unset template-owned options from the JSON metadata.""" + for key, value in self.get_template_option_defaults().items(): + if options.get(key) is None: + options[key] = value + + def validate_template_option_requirements(self, options): + """Validate simple option dependencies from the JSON metadata.""" + for option_name, definition in self.get_template_options().items(): + required = definition.get("requires") + if options.get(option_name) and not self._requirements_met(required, options): + requirements = ", ".join(name if value is True else f"{name}={value}" for name, value in required.items()) + raise CommandError(f"--{option_name} requires {requirements}.") + + @classmethod + def _validate_install_rules(cls, rules): + """Validate the parts of the install rules that the command executes.""" + options = rules.get("options") + if not isinstance(options, dict) or not options: + raise CommandError("Invalid installation rules: expected a non-empty 'options' object.") + for option_name, definition in options.items(): + if not re.match(r"^[A-Za-z][A-Za-z0-9_]*$", option_name): + raise CommandError(f"Invalid installation rules: invalid option name '{option_name}'.") + if not isinstance(definition, dict): + raise CommandError(f"Invalid installation rules: option '{option_name}' must be an object.") + option_type = definition.get("type") + if option_type not in ("boolean", "choice"): + raise CommandError( + f"Invalid installation rules: option '{option_name}' has unsupported type '{option_type}'." + ) + if "default" not in definition: + raise CommandError(f"Invalid installation rules: option '{option_name}' needs a default.") + if option_type == "boolean" and not isinstance(definition["default"], bool): + raise CommandError(f"Invalid installation rules: option '{option_name}' default must be boolean.") + if option_type == "choice": + choices = definition.get("choices") + if not isinstance(choices, list) or not choices: + raise CommandError(f"Invalid installation rules: option '{option_name}' needs choices.") + if definition["default"] not in choices: + raise CommandError( + f"Invalid installation rules: option '{option_name}' default must be one of its choices." + ) + requires = definition.get("requires", {}) + if not isinstance(requires, dict): + raise CommandError(f"Invalid installation rules: option '{option_name}' requires must be an object.") + for required_name in requires: + if required_name not in options: + raise CommandError( + f"Invalid installation rules: option '{option_name}' requires unknown option " + f"'{required_name}'." + ) + + declared_options = set(options) + for when in cls._iter_when_conditions(rules): + flag = when.get("flag") + if flag and flag not in declared_options: + raise CommandError(f"Invalid installation rules: unknown option flag '{flag}'.") + modes = when.get("mode") + if modes is not None: + mode_definition = options.get("mode") + if not mode_definition or mode_definition["type"] != "choice": + raise CommandError("Invalid installation rules: 'mode' conditions require a choice option.") + unknown_modes = set(modes) - set(mode_definition["choices"]) + if unknown_modes: + raise CommandError( + "Invalid installation rules: unknown mode value(s) " + ", ".join(sorted(unknown_modes)) + ) + + @classmethod + def _iter_when_conditions(cls, rules): + for section in ("installed_apps", "middleware", "context_processors", "settings", "urls", "warnings"): + for rule in rules.get(section, []): + when = rule.get("when") if isinstance(rule, dict) else None + if when: + yield when + template_dir = rules.get("template_dir") + if isinstance(template_dir, dict) and template_dir.get("when"): + yield template_dir["when"] + + @staticmethod + def _requirements_met(requirements, options): + if not requirements: + return True + return all(options.get(name) == value for name, value in requirements.items()) + + @staticmethod + def _rule_applies(when, options): + """Evaluate a rule condition against the command options. + + ``when`` may contain a ``flag`` (the option must be truthy) and/or a + ``mode`` (a list of matching ``--mode`` values). A missing/empty + condition always applies. + """ + if not when: + return True + if "flag" in when and not options.get(when["flag"]): + return False + if "mode" in when and options.get("mode") not in when["mode"]: + return False + return True + + def update_urls(self, urls_file, options, url_rules): + """Add the url patterns whose rule condition matches the options. + + Patterns flagged with ``"i18n": true`` (the CMS catch-all) must keep a + language prefix, so they are added through ``i18n_patterns()`` -- but + only when the project's urls.py already uses ``i18n_patterns``; + otherwise they join the plain ``urlpatterns`` list like every other + pattern. + + This computes the change but does not persist it; the caller writes the + result (or shows a diff for ``--dry-run``). Returns + ``(added_patterns, original_text, new_text)``. + """ + original = self._read(urls_file) + text = original + uses_i18n = self._uses_i18n_patterns(text) + plain_items, i18n_items = [], [] + for rule in url_rules: + if not self._rule_applies(rule.get("when"), options): + continue + pattern = rule["pattern"] + # Skip patterns whose include target is already routed. + target = re.search(r"""include\(['"]([^'"]+)['"]\)""", pattern) + if target and target.group(1) in text: + continue + if rule.get("i18n") and uses_i18n: + i18n_items.append(pattern) + else: + plain_items.append(pattern) + if not plain_items and not i18n_items: + return [], original, original + text = self._ensure_include_import(text) + added = [] + if plain_items: + text, just_added = self._insert_into_list(text, "urlpatterns", plain_items, quote=False) + added += just_added + if i18n_items: + text, just_added = self._append_i18n_patterns(text, i18n_items) + added += just_added + return added, original, text + + def _ensure_template_dir(self, text, cwd, rule, options): + """Create a project template directory if the project has none. + + When the rule's condition matches and the configured directory does not + exist, it is created, registered in the ``TEMPLATES`` ``DIRS`` list, and + seeded with the rule's base template. Returns + ``(new_text, added_dirs, created_paths)``. + """ + if not rule or not self._rule_applies(rule.get("when"), options): + return text, [], [] + dir_name = rule.get("path", "templates") + templates_dir = os.path.join(cwd, dir_name) + if os.path.isdir(templates_dir): + return text, [], [] + + base_template = rule.get("base_template", "base.html") + # In a dry run the DIRS entry is still added to the (in-memory) settings + # text so the diff is accurate, but nothing is created on disk. + if not options.get("dry_run"): + os.makedirs(templates_dir) + self._write(os.path.join(templates_dir, base_template), rule.get("base_template_content", "")) + created_paths = [dir_name + "/", os.path.join(dir_name, base_template)] + + # Settings created before Django 3.1 define BASE_DIR with os.path + # instead of pathlib, where the ``/`` operator does not work. + if re.search(r"(?m)^BASE_DIR\s*=\s*Path\(", text): + entry = f'BASE_DIR / "{dir_name}"' + else: + entry = f'os.path.join(BASE_DIR, "{dir_name}")' + if not re.search(r"(?m)^import os\b", text): + text = self._insert_import(text, "import os") + text, added_dirs = self._insert_into_list(text, "DIRS", [entry], quote=False) + return text, added_dirs, created_paths + + def _append_cms_settings(self, text, settings_rules, options): + """Append the extra django CMS settings (from the rules) that are missing. + + Snippets may reference ``{language_code}`` / ``{language_name}``; these + are derived from the project's LANGUAGE_CODE. + """ + language_code = self._get_setting_value(text, "LANGUAGE_CODE") or "en-us" + format_context = {"language_code": language_code, "language_name": self._language_name(language_code)} + additions, added = [], [] + for rule in settings_rules: + name = rule["name"] + if not self._rule_applies(rule.get("when"), options): + continue + if re.search(rf"(?m)^{name}\s*=", text): + continue + additions.append(rule["snippet"].format(**format_context)) + added.append(name) + if not additions: + return text, [] + if not text.endswith("\n"): + text += "\n" + block = "\n# django CMS settings (added by `djangocms .`)\n" + "\n".join(additions) + "\n" + return text + block, added + + def _apply_list_rules(self, text, list_name, list_rules, options): + """Apply a set of list rules (e.g. INSTALLED_APPS / MIDDLEWARE). + + Each rule may carry a ``when`` condition and a ``before``/``after`` + anchor for positional insertion; rules without an anchor are appended in + order. + + When the setting is a literal list this splices entries straight in. When + it is a *computed* value (e.g. ``INSTALLED_APPS = DJANGO_APPS + EXTRA``) + there is no literal to edit, so anchored entries are still positioned + relative to their anchor wherever it occurs (often a sub-list literal), + and everything else is added through a ``NAME = [..] + NAME + [..]`` + reassignment appended to the module -- a best-effort recovery the caller + flags for review. + + Returns ``(new_text, all_items, added_items, recovered)`` where + ``all_items`` is every item from matching rules (used for the install + hint), ``added_items`` is what was actually inserted, and ``recovered`` + is whether the computed-value recovery path was taken. + """ + recovery = self._list_assignment_kind(text, list_name) == "computed" + all_items, added = [], [] + append_items, before_items, after_items = [], [], [] + for rule in list_rules: + if not self._rule_applies(rule.get("when"), options): + continue + all_items += rule["items"] + before, after = rule.get("before"), rule.get("after") + if before or after: + for item in rule["items"]: + # In recovery mode the anchor can still match a sub-list + # literal; only items whose anchor is absent fall back to the + # appended reassignment (grouped by before/after). + new_text, just_added = self._insert_near_anchor( + text, item, before or after, before=bool(before), + list_name=None if recovery else list_name, + ) + if just_added: + text, added = new_text, added + just_added + elif recovery: + (before_items if before else after_items).append(item) + elif recovery: + after_items += rule["items"] + else: + append_items += rule["items"] + if recovery: + text, just_added = self._append_list_extension(text, list_name, before_items, after_items) + else: + text, just_added = self._insert_into_list(text, list_name, append_items) + added += just_added + return text, all_items, added, recovery + + def _finish_existing_project(self, apps, packages_map, options): + """Offer to install the missing packages, then migrate and check.""" + packages = ["django-cms"] + for app in apps: + # Sub-apps like "djangocms_frontend.contrib.grid" ship with their + # top-level package. + app = app.split(".", 1)[0] + if app in packages_map: + packages.append(packages_map[app]) + elif app.startswith("djangocms"): + packages.append(app.replace("_", "-")) + packages = list(dict.fromkeys(packages)) # de-duplicate, keep order + + self.stdout.write(self.HEADING("Install dependencies")) + self.stdout.write("django CMS needs the following packages:") + self.stdout.write(" " + " ".join(packages)) + # A dry run never installs; otherwise ask (unless --noinput proceeds). + dry_run = options.get("dry_run") + if dry_run: + install = False + elif options.get("interactive", True): + install = self.ask_bool("Install them now", True) + else: + install = True + + if not install: + if dry_run: + self.stdout.write("Dry run: would install the packages above, then run migrations and the check:") + else: + self.stdout.write("Skipped. Install them later, then run the migrations and check:") + self.write_command(" python -m pip install " + " ".join(shlex.quote(p) for p in packages)) + self.write_command(" python -m manage migrate") + self.write_command(" python -m manage cms check") + return + + self.install_packages(packages) + + self.stdout.write(self.HEADING("Run migrations")) + self.run_management_command(["migrate"]) + + self.stdout.write(self.HEADING("Check installation")) + self.run_management_command(["cms", "check"]) + + message = f"django CMS {cms_version} added to your project" + separator = "*" * len(message) + self.stdout.write(self.HEADING(f"{separator}\n{message}\n{separator}")) + self.stdout.write( + f""" +Review the automated changes to your settings and urls, then +start the development server: +$ {self.style.SUCCESS("python -m manage runserver")} + +Learn more at https://docs.django-cms.org/ +Join the django CMS Discord Server at https://discord-main-channel.django-cms.org + +Enjoy! +""" + ) + + def install_packages(self, packages): + """pip install the given packages (guarded to a virtual environment).""" + unsafe = [pkg for pkg in packages if not self.SAFE_PACKAGE_RE.match(pkg)] + if unsafe: + raise CommandError("Refusing to install packages with unexpected characters: " + ", ".join(unsafe)) + if not (self.running_in_venv() or os.environ.get("DJANGOCMS_ALLOW_PIP_INSTALL", "False") == "True"): + self.stderr.write( + self.style.ERROR( + "Refusing to install packages outside a virtual environment. " + "Activate one, or set DJANGOCMS_ALLOW_PIP_INSTALL=True, and install manually:" + ) + ) + self.write_command(" python -m pip install " + " ".join(shlex.quote(p) for p in packages)) + raise CommandError("Packages not installed") + self.stdout.write(self.HEADING("Install packages")) + packages_to_install = [p for p in packages if not p.startswith("-")] + self.write_command("python -m pip install " + " ".join(shlex.quote(p) for p in packages_to_install)) + result = subprocess.run( # nosemgrep: python.lang.security.audit.dangerous-subprocess-use-audit + [sys.executable, "-m", "pip", "install", *packages_to_install], check=False + ) + if result.returncode: + raise CommandError("Failed to install the required packages.") + + +class Command(PromptMixin, NewProjectMixin, ExistingProjectMixin, SourceEditorMixin, ShellMixin, TemplateCommand): # noqa: E501 + """Entry point: define the CLI and dispatch to the new/existing-project flow. + + The behaviour is split across focused mixins: + + * :class:`PromptMixin` -- interactive prompting and the option defaults, + * :class:`NewProjectMixin` -- creating a project from the cms-template, + * :class:`ExistingProjectMixin` -- adding django CMS to an existing project, + * :class:`SourceEditorMixin` -- the regex-based settings/urls editing toolkit, + * :class:`ShellMixin` -- running subprocesses and management commands. + + ``TemplateCommand`` is kept last in the MRO so every ``super()`` call + (``create_parser``, ``add_arguments``, ``handle``, ``handle_template``) + resolves to Django's implementation. + """ + + help = ( + "Creates a django CMS project directory structure for the given project " + "name in the current directory or optionally in the given directory. " + 'Alternatively, use a project name of "." to add django CMS to the ' + "existing Django project in the current directory instead: its settings " + "and urls are updated in place (best-effort, automated edits to review " + "afterwards) and the required packages are installed." + ) + missing_args_message = "You must provide a project name." + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + # Version major.minor + self.major_minor = ".".join(cms_version.split(".")[:2]) + + # Configure formatting + self.HEADING = lambda text: "\n" + self.style.SQL_FIELD(text) + self.COMMAND = self.style.HTTP_SUCCESS + + def create_parser(self, *args, **kwargs): # pragma: no cover -- argparse wiring; tests call handle() directly + parser = super().create_parser(*args, **kwargs) + # Allow running with no arguments at all: a missing project name drops + # into interactive mode instead of erroring out. handle() still reports + # a missing name when input is suppressed with --noinput. + parser.missing_args_message = None + return parser + + def add_arguments(self, parser): # pragma: no cover -- argparse wiring; tests call handle() directly + super().add_arguments(parser) + self._use_bundled_install_rules = self.BUNDLED_RULES_OPTION in sys.argv + self._requested_template = self._command_line_option("--template") + # Make the project name optional so it can be asked for in interactive + # mode; a missing name is reported by handle() otherwise. + for action in parser._actions: + if action.dest == "name": + action.nargs = "?" + break + parser.add_argument( + "--noinput", + "--no-input", + action="store_false", + dest="interactive", + help=( + "Tells django CMS to NOT prompt the user for input of any kind. " + "Superusers created with --noinput will " + "not be able to log in until they're given a valid password." + ), + ) + parser.add_argument( + "--interactive", + action="store_true", + dest="prompt", + default=False, + help=( + "Ask for the project name and any option not given on the command line. " + "Interactive mode is also entered automatically when no project name is " + "given (unless --noinput is used)." + ), + ) + parser.add_argument( + "--username", + help="Specifies the login for the superuser to be created (only when creating a new project).", + ) + parser.add_argument( + "--email", + help="Specifies the email for the superuser to be created (only when creating a new project).", + ) + parser.add_argument( + self.BUNDLED_RULES_OPTION, + action="store_true", + dest="use_bundled_install_rules", + default=False, + help=( + "Use the install rules bundled with this django CMS package instead of fetching " + "them from cms-template." + ), + ) + for option_name, definition in self.get_template_options().items(): + argument = "--" + option_name.replace("_", "-") + kwargs = {"default": None, "dest": option_name, "help": definition.get("help", argparse.SUPPRESS)} + if definition["type"] == "boolean": + kwargs["action"] = argparse.BooleanOptionalAction + elif definition["type"] == "choice": + kwargs["choices"] = tuple(definition["choices"]) + else: + raise CommandError(f"Unsupported option type for {argument}: {definition['type']}") + parser.add_argument(argument, **kwargs) + parser.add_argument( + "--dry-run", + action="store_true", + dest="dry_run", + default=False, + help=( + "Show the changes that would be made to an existing project (name '.') as a " + "diff, without writing any files or installing packages." + ), + ) + + def handle(self, **options): + # Capture target and name for postprocessing + name = options.pop("name", None) + directory = options.pop("directory", None) + use_bundled_install_rules = options.pop("use_bundled_install_rules", False) + if use_bundled_install_rules and not getattr(self, "_use_bundled_install_rules", False): + self._install_rules = None + self._use_bundled_install_rules = use_bundled_install_rules or getattr( + self, "_use_bundled_install_rules", False + ) + requested_template = options.get("template") + if requested_template and requested_template != getattr(self, "_requested_template", None): + self._requested_template = requested_template + self._install_rules = None + + # Interactively ask for the project name and any option not provided. + # Prompting is enabled explicitly via --interactive, or implicitly when + # no project name was given (unless input is suppressed with --noinput). + prompt = options.pop("prompt", False) or (not name and options.get("interactive", True)) + if prompt: + name = self.prompt_for_options(name, options) + + # Fill in the effective defaults for any template-owned option not given + # (and not asked for interactively). + self.apply_template_option_defaults(options) + + if not name: + raise CommandError(self.missing_args_message) + + self.validate_template_option_requirements(options) + + # A project name of "." means: add django CMS to the existing project in + # the current directory instead of cloning the project template. + if name == ".": + self.add_to_existing_project(options) + return + + # --dry-run only makes sense for the in-place edits of an existing + # project; there is nothing to diff when cloning a fresh template. + if options.get("dry_run"): + raise CommandError( + "--dry-run is only supported when adding django CMS to an existing project (name '.')." + ) + + # Render requirements.in as a template too (django-admin only renders + # files matching --extension or listed in --name by default); it + # contains template variables for the selected options. + options.setdefault("files", []) + if "requirements.in" not in options["files"]: + options["files"] = options["files"] + ["requirements.in"] + + # Create a random SECRET_KEY to put it in the main settings. + options["secret_key"] = SECRET_KEY_INSECURE_PREFIX + get_random_secret_key() + + self.stdout.write(self.HEADING("Clone template using django-admin")) + command = ( + f'django-admin startproject "{name}" ' f'--template {options["template"] or self.get_default_template()}' + ) + if directory: + command += f' --directory "{directory}"' + self.write_command(command) + + if directory is None: + top_dir = os.path.join(os.getcwd(), name) + else: + top_dir = os.path.abspath(os.path.expanduser(directory)) + # Only a directory created by this run may be cleaned up on failure; + # an existing target (django-admin renders into it) is left untouched. + created_dir = directory is None and not os.path.exists(top_dir) + original_cwd = os.getcwd() + + try: + # Run startproject command + super().handle( + "project", name, directory, cms_version=cms_version, cms_docs_version=self.major_minor, **options + ) + self.postprocess(top_dir, options) + except BaseException: + # Remove the partially created project if the command fails or is + # interrupted (e.g. Ctrl-C), but only when we created the directory. + if created_dir and os.path.isdir(top_dir): + os.chdir(original_cwd) + self.stderr.write(self.style.WARNING(f"Removing partially created project at {top_dir}")) + shutil.rmtree(top_dir, ignore_errors=True) + raise diff --git a/cms/management/commands/subcommands/__init__.py b/cms/management/commands/subcommands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cms/management/commands/subcommands/base.py b/cms/management/commands/subcommands/base.py new file mode 100644 index 00000000..4ee218b0 --- /dev/null +++ b/cms/management/commands/subcommands/base.py @@ -0,0 +1,105 @@ +import os +from collections import OrderedDict + +from django.core.management.base import BaseCommand, CommandParser +from django.core.management.color import color_style, no_style + + +def add_builtin_arguments(parser): + parser.add_argument( + '--noinput', + action='store_false', + dest='interactive', + default=True, + help='Tells Django CMS to NOT prompt the user for input of any kind.' + ) + + # These are taking "as-is" from Django's management base + # management command. + parser.add_argument( + '-v', '--verbosity', action='store', dest='verbosity', default='1', + type=int, choices=[0, 1, 2, 3], + help='Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, 3=very verbose output' + ) + parser.add_argument( + '--settings', + help=( + 'The Python path to a settings module, e.g. ' + '"myproject.settings.main". If this isn\'t provided, the ' + 'DJANGO_SETTINGS_MODULE environment variable will be used.' + ), + ) + parser.add_argument( + '--pythonpath', help='A directory to add to the Python path, e.g. "/home/djangoprojects/myproject".' + ) + parser.add_argument( + '--traceback', action='store_true', help='Raise on CommandError exceptions' + ) + parser.add_argument( + '--no-color', action='store_true', dest='no_color', default=False, help="Don't colorize the command output." + ) + parser.add_argument( + '--force-color', action='store_true', dest='force_color', default=False, help="Colorize the command output." + ) + parser.add_argument( + '--skip-checks', action='store_true', dest='skip_checks', default=False, help="Skip the checks." + ) + + +class SubcommandsCommand(BaseCommand): + subcommands = OrderedDict() + instances = {} + help_string = '' + command_name = '' + stealth_options = ('interactive',) + + subcommand_dest = 'subcmd' + + def create_parser(self, prog_name, subcommand): + kwargs = {} + parser = CommandParser( + prog=f"{os.path.basename(prog_name)} {subcommand}", + description=self.help or None, + missing_args_message=getattr(self, "missing_args_message", None), + called_from_command_line=getattr(self, "_called_from_command_line", None), + **kwargs + ) + self.add_arguments(parser) + return parser + + def add_arguments(self, parser): + self.instances = {} + + if self.subcommands: + stealth_options = set(self.stealth_options) + subparsers = parser.add_subparsers(dest=self.subcommand_dest) + for command, cls in self.subcommands.items(): + instance = cls(self.stdout._out, self.stderr._out) + instance.style = self.style + kwargs = {} + parser_sub = subparsers.add_parser( + name=instance.command_name, help=instance.help_string, + description=instance.help_string, **kwargs + ) + + add_builtin_arguments(parser=parser_sub) + instance.add_arguments(parser_sub) + stealth_options.update({action.dest for action in parser_sub._actions}) + self.instances[command] = instance + self.stealth_options = tuple(stealth_options) + + def handle(self, *args, **options): + if options[self.subcommand_dest] in self.instances: + command = self.instances[options[self.subcommand_dest]] + if options.get('no_color'): + command.style = no_style() + command.stderr.style_func = None + if options.get('force_color'): + command.style = color_style(force_color=True) + if options.get('stdout'): + command.stdout._out = options.get('stdout') + if options.get('stderr'): + command.stderr._out = options.get('stderr') + command.handle(*args, **options) + else: + self.print_help('manage.py', 'cms') diff --git a/cms/management/commands/subcommands/check.py b/cms/management/commands/subcommands/check.py new file mode 100644 index 00000000..c7bea26a --- /dev/null +++ b/cms/management/commands/subcommands/check.py @@ -0,0 +1,14 @@ +from django.core.management.base import CommandError + +from cms.utils.check import FileOutputWrapper, check + +from .base import SubcommandsCommand + + +class CheckInstallation(SubcommandsCommand): + help_string = 'Checks your settings and environment' + command_name = 'check' + + def handle(self, *args, **options): + if not check(FileOutputWrapper(self.stdout, self.stderr)): + raise CommandError() diff --git a/cms/management/commands/subcommands/copy.py b/cms/management/commands/subcommands/copy.py new file mode 100644 index 00000000..0b0d5be0 --- /dev/null +++ b/cms/management/commands/subcommands/copy.py @@ -0,0 +1,202 @@ +from django.contrib.auth import get_user_model +from django.contrib.sites.models import Site +from django.core.management import CommandError +from django.db import transaction + +from cms.api import copy_plugins_to_language +from cms.management.commands.subcommands.base import SubcommandsCommand +from cms.models import EmptyPageContent, Page, PageContent +from cms.utils import get_language_list +from cms.utils.page import get_available_slug + +User = get_user_model() + + +def get_user(options): + if options["userid"] and options["username"]: # pragma: no cover + raise CommandError("Only either one of the options '--userid' or '--username' may be given") + if options["userid"]: + try: + return User.objects.get(pk=options["userid"]) + except User.DoesNotExist: + raise CommandError(f"No user with id {options['userid']} found") + if options["username"]: # pragma: no cover + try: + return User.objects.get(username=options["username"]) + except User.DoesNotExist: + raise CommandError(f"No user with name {options['username']} found") + return None # pragma: no cover + + +class CopyLangCommand(SubcommandsCommand): + help_string = ('Duplicate the cms content from one lang to another (to boot a new lang) ' + 'using draft pages') + command_name = 'lang' + label = 'plugin name (eg SamplePlugin)' + + def add_arguments(self, parser): + parser.add_argument('--from-lang', action='store', dest='from_lang', required=True, + help='Language to copy the content from.') + parser.add_argument('--to-lang', action='store', dest='to_lang', required=True, + help='Language to copy the content to.') + parser.add_argument('--site', action='store', dest='site', + help='Site to work on.') + parser.add_argument('--force', action='store_false', dest='only_empty', default=True, + help='If set content is copied even if destination language already ' + 'has content.') + parser.add_argument('--skip-content', action='store_false', dest='copy_content', + default=True, help='If set content is not copied, and the command ' + 'will only create titles in the given language.') + parser.add_argument("--username", type=str, dest='username', default="", + help="Username of user needed create new content objects") + parser.add_argument("--userid", type=int, help="User id of user needed create new content objects") + + def handle(self, *args, **options): + verbose = options.get('verbosity') > 1 + only_empty = options.get('only_empty') + copy_content = options.get('copy_content') + from_lang = options.get('from_lang') + to_lang = options.get('to_lang') + user = get_user(options) + + try: + site = int(options.get('site', None)) + except Exception: + site = Site.objects.get_current().pk + + try: + assert from_lang in get_language_list(site) + assert to_lang in get_language_list(site) + except AssertionError: + raise CommandError('Both languages have to be present in settings.LANGUAGES and settings.CMS_LANGUAGES') + + # obey node path (tree order) to make sure parent records are created before children (for slug generation) + for page in Page.objects.on_site(site).order_by('path'): + # copy title + if from_lang in page.get_languages(): + + title = page.get_content_obj(to_lang, fallback=False) + if isinstance(title, EmptyPageContent): + title = page.get_content_obj(from_lang) + if verbose: + self.stdout.write(f'copying page content {title.title} from language {from_lang}\n') + if not user: + raise CommandError('Specify either --userid or --username') + from django.forms import model_to_dict + new_title = model_to_dict(title) + new_title.pop("id", None) # No PK + new_title["language"] = to_lang + new_title["page"] = page + + # inspired from pagemodels.Page.copy() - possibly refactorable + parent_page = page.parent + if parent_page: + base = parent_page.get_path(to_lang) + path = f'{base}/{title.slug}' if base else title.slug + else: + base = '' + path = title.slug + + new_title["slug"] = get_available_slug(site, path, to_lang) + if title.overwrite_url: + new_title["overwrite_url"] = '{}/{}'.format(base, new_title["slug"]) if base \ + else new_title["slug"] + new_content = PageContent.objects.with_user(user).create(**new_title) + + if to_lang not in page.get_languages(): + page.update_languages(page.get_languages() + [to_lang]) + + if new_content.is_public(): + # The page URL is derived from public content only; drafts + # created by a versioning package get theirs on publish. + page.update_urls_from_content(to_lang) + + if copy_content: + # copy plugins using API + if verbose: + self.stdout.write( + f'copying plugins for {page.get_page_title(from_lang)} from {from_lang}\n' + ) + copy_plugins_to_language(page, from_lang, to_lang, only_empty) + else: + if verbose: + self.stdout.write( + f'Skipping page {page.get_page_title(page.get_languages()[0])}, language {from_lang} not defined\n' + ) + + self.stdout.write('all done') + + +class CopySiteCommand(SubcommandsCommand): + help_string = 'Duplicate the CMS pagetree from a specific SITE_ID.' + command_name = 'site' + + def add_arguments(self, parser): + parser.add_argument('--from-site', action='store', dest='from_site', required=True, + help='Language to copy the content from.') + parser.add_argument('--to-site', action='store', dest='to_site', required=True, + help='Language to copy the content to.') + parser.add_argument("--username", type=str, dest='username', default="", + help="Username of user needed create new content objects") + parser.add_argument("--userid", type=int, help="User id of user needed create new content objects") + + def handle(self, *args, **options): + try: + from_site = int(options.get('from_site', None)) + except Exception: + from_site = Site.objects.get_current().pk + try: + to_site = int(options.get('to_site', None)) + except Exception: + to_site = Site.objects.get_current().pk + try: + assert from_site != to_site + except AssertionError: + raise CommandError('Sites must be different') + + from_site = self.get_site(from_site) + to_site = self.get_site(to_site) + user = get_user(options) + if not user: + raise CommandError('Specify either --userid or --username') + + pages = ( + Page + .objects + .on_site(from_site) + .filter(depth=1) + .order_by('path') + ) + + with transaction.atomic(): + for page in pages: + new_page = page.copy_with_descendants( + target_page=None, + target_site=to_site, + user=user, + ) + + if page.is_home: + new_page.set_as_homepage() + self.stdout.write( + f'Copied CMS Tree from SITE_ID {from_site.pk} successfully to SITE_ID {to_site.pk}.\n' + ) + + def get_site(self, site_id): + if site_id: + try: + return Site.objects.get(pk=site_id) + except (ValueError, Site.DoesNotExist): + raise CommandError('There is no site with given site id.') + else: + return None + + +class CopyCommand(SubcommandsCommand): + help_string = 'Copy content from one language or site to another' + command_name = 'copy' + missing_args_message = 'foo bar' + subcommands = { + 'lang': CopyLangCommand, + 'site': CopySiteCommand + } diff --git a/cms/management/commands/subcommands/delete_orphaned_plugins.py b/cms/management/commands/subcommands/delete_orphaned_plugins.py new file mode 100644 index 00000000..d4d028d8 --- /dev/null +++ b/cms/management/commands/subcommands/delete_orphaned_plugins.py @@ -0,0 +1,121 @@ +from django.contrib.contenttypes.models import ContentType +from django.db import transaction +from django.db.models import Exists, OuterRef + +from cms.management.commands.subcommands.list import plugin_report +from cms.models.placeholdermodel import Placeholder +from cms.models.pluginmodel import CMSPlugin + +from .base import SubcommandsCommand + + +class DeleteOrphanedPluginsCommand(SubcommandsCommand): + help_string = ( + 'Delete plugins from the CMSPlugins table that should have instances ' + 'but don\'t, and ones for which a corresponding plugin model can no ' + 'longer be found. ATTENTION: Also removes plugins of apps currently not present in INSTALLED_APPS. ' + 'Ensure nothing is temporarily commented out.' + ) + command_name = 'delete-orphaned-plugins' + + def get_detached_placeholders(self): + detached_placeholder_ids = [] + content_types = list( + Placeholder.objects.exclude(content_type_id__isnull=True) + .values_list('content_type_id', flat=True) + .distinct() + ) + content_type_map = ContentType.objects.in_bulk(content_types) + + for content_type_id in content_types: + content_type = content_type_map.get(content_type_id) + model_class = content_type.model_class() if content_type else None + + if model_class is None: + detached_placeholder_ids.extend( + Placeholder.objects.filter(content_type_id=content_type_id) + .values_list('id', flat=True) + ) + continue + + detached_placeholder_ids.extend( + Placeholder.objects.filter( + content_type_id=content_type_id, + object_id__isnull=False, + ) + .annotate( + object_exists=Exists( + model_class._base_manager.filter(pk=OuterRef('object_id')) + ) + ) + .filter(object_exists=False) + .values_list('id', flat=True) + ) + return detached_placeholder_ids + + def handle(self, *args, **options): + """ + Obtains a plugin report - + cms.management.commands.subcommands.list.plugin_report - and uses it + to delete orphaned plugins from the database, i.e. ones that are no + longer installed, and ones that have no corresponding saved plugin + instances (as will happen if a plugin is inserted into a placeholder, + but not saved). + """ + self.stdout.write('Obtaining plugin report\n') + uninstalled_instance_ids = [] + unsaved_instance_ids = [] + + for plugin in plugin_report(): + if not plugin['model']: + for instance in plugin['instances']: + uninstalled_instance_ids.append(instance.pk) + + for instance in plugin['unsaved_instances']: + unsaved_instance_ids.append(instance.pk) + + detached_placeholder_ids = self.get_detached_placeholders() + + if options.get('interactive'): + confirm = input(""" +You have requested to delete any instances of uninstalled plugins and empty plugin instances. +There are %d uninstalled plugins, %d empty plugins, and %d detached placeholders. +Are you sure you want to do this? +Type 'yes' to continue, or 'no' to cancel: """ % (len(uninstalled_instance_ids), len(unsaved_instance_ids), len(detached_placeholder_ids))) + else: + confirm = 'yes' + + if confirm == 'yes': + # delete items whose plugin is uninstalled and items with unsaved instances + self.stdout.write('... deleting any instances of uninstalled plugins, empty plugin instances, and detached placeholders\n') + + with transaction.atomic(): + if detached_placeholder_ids: + Placeholder.objects.filter(id__in=detached_placeholder_ids).delete() + + for instance_id in uninstalled_instance_ids: + try: + instance = CMSPlugin.objects.get(pk=instance_id) + except CMSPlugin.DoesNotExist: + continue + + if instance.placeholder: + instance.placeholder.delete_plugin(instance) + else: + instance.delete() + + for instance_id in unsaved_instance_ids: + try: + instance = CMSPlugin.objects.get(pk=instance_id) + except CMSPlugin.DoesNotExist: + continue + + if instance.placeholder: + instance.placeholder.delete_plugin(instance) + else: + instance.delete() + + self.stdout.write( + f'Deleted instances of: \n {len(uninstalled_instance_ids)} uninstalled plugins \n {len(unsaved_instance_ids)} plugins with unsaved instances\n {len(detached_placeholder_ids)} detached placeholders\n' + ) + self.stdout.write('all done\n') diff --git a/cms/management/commands/subcommands/list.py b/cms/management/commands/subcommands/list.py new file mode 100644 index 00000000..860905d5 --- /dev/null +++ b/cms/management/commands/subcommands/list.py @@ -0,0 +1,135 @@ +from cms.models import Page +from cms.models.pluginmodel import CMSPlugin +from cms.plugin_pool import plugin_pool + +from .base import SubcommandsCommand + + +class ListApphooksCommand(SubcommandsCommand): + help_string = 'Lists all apphooks in pages' + command_name = 'apphooks' + + def handle(self, *args, **options): + urls = list( + Page.objects.exclude(application_urls='').exclude( + application_urls__isnull=True + ).values_list( + 'application_urls', 'application_namespace' + ) + ) + apphooks = {} + for apphook, application_namespace in urls: + if apphook in apphooks: + apphooks[apphook][0].append('active') + else: + apphooks[apphook] = [['active'], application_namespace] + for apphook, attributes in apphooks.items(): + attributes[0].sort() + if attributes[1]: + self.stdout.write('{}[instance: {}] ({})\n'.format( + apphook, attributes[1], '/'.join(attributes[0]) + )) + else: + self.stdout.write('{} ({})\n'.format( + apphook, '/'.join(attributes[0]) + )) + + +def plugin_report(): + """ + Returns a report of existing plugins + + structure of report: + [ + { + 'type': CMSPlugin class, + 'model': plugin_type.model, + 'instances': instances in the CMSPlugin table, + 'unsaved_instances': those with no corresponding model instance, + }, + ] + """ + plugin_report = [] + plugin_types = list( + CMSPlugin.objects.order_by('plugin_type') + .values_list('plugin_type', flat=True) + .distinct() + ) + + for plugin_type in plugin_types: + # get all plugins of this type + plugins = CMSPlugin.objects.filter(plugin_type=plugin_type) + plugin = { + 'type': plugin_type, + 'instances': plugins, + } + + try: + # does this plugin have a model? report unsaved instances + model = plugin_pool.get_plugin(name=plugin_type).model + # catch uninstalled plugins + except KeyError: + plugin['model'] = None + plugin['unsaved_instances'] = [] + plugin_report.append(plugin) + continue + + plugin['model'] = model + + if model._meta.concrete_model == CMSPlugin._meta.concrete_model: + # Model-less plugin: the bound instance is the CMSPlugin row + # itself, so there can never be unsaved instances. + plugin['unsaved_instances'] = [] + else: + # An instance is "unsaved" when its CMSPlugin row has no matching + # row in the plugin's own (child) table. Resolve this with a single + # bulk query for the saved ids instead of one query per instance. + saved_ids = set( + model.objects.filter(cmsplugin_ptr__in=plugins) + .values_list('cmsplugin_ptr_id', flat=True) + ) + plugin['unsaved_instances'] = [ + instance for instance in plugins if instance.pk not in saved_ids + ] + + plugin_report.append(plugin) + + return plugin_report + + +class ListPluginsCommand(SubcommandsCommand): + help_string = 'Lists all plugins in CMSPlugin' + command_name = 'plugins' + + def handle(self, *args, **options): + self.stdout.write('==== Plugin report ==== \n\n') + self.stdout.write('There are %s plugin types in your database \n' % len(plugin_report())) + for plugin in plugin_report(): + self.stdout.write('\n%s \n' % plugin['type']) + + plugin_model = plugin['model'] + instances = len(plugin['instances']) + unsaved_instances = len(plugin['unsaved_instances']) + + if not plugin_model: + self.stdout.write(self.style.ERROR(' ERROR : not installed \n')) + + elif plugin_model == CMSPlugin: + self.stdout.write(' model-less plugin \n') + self.stdout.write(' unsaved instance(s) : %s \n' % unsaved_instances) + + else: + self.stdout.write(f' model : {plugin_model.__module__}.{plugin_model.__name__} \n') + if unsaved_instances: + self.stdout.write(self.style.ERROR(' ERROR : %s unsaved instance(s) \n' % unsaved_instances)) + + self.stdout.write(' instance(s): %s \n' % instances) + + +class ListCommand(SubcommandsCommand): + help_string = 'List objects of the following types:' + command_name = 'list' + subcommands = { + 'apphooks': ListApphooksCommand, + 'plugins': ListPluginsCommand + } diff --git a/cms/management/commands/subcommands/tree.py b/cms/management/commands/subcommands/tree.py new file mode 100644 index 00000000..f66e22b7 --- /dev/null +++ b/cms/management/commands/subcommands/tree.py @@ -0,0 +1,110 @@ +from collections import OrderedDict + +from django.db import IntegrityError + +from cms.models.pagemodel import Page, PageUrl + +from .base import SubcommandsCommand + + +def get_descendants(root): + """ + Returns a generator of primary keys which represent + descendants of the given node ID (root_id) + """ + # Note this is done because get_descendants() can't be trusted + # as the tree can be corrupt. + children = Page.objects.filter(parent=root).order_by('path') + + for child in children.iterator(): + yield child + + yield from get_descendants(child) + + +class FixTreeCommand(SubcommandsCommand): + help_string = 'Repairing Materialized Path Tree for Pages' + command_name = 'fix-tree' + + def handle(self, *args, **options): + """ + Repairs the tree + """ + self.stdout.write('fixing page tree') + Page.fix_tree() + + root_pages = Page.objects.filter(parent__isnull=True) + + last = None + + try: + first = root_pages.order_by('path').first() + except IndexError: + first = None + + for page in root_pages.order_by('site__pk', 'path'): + if last: + last.refresh_from_db() + page.refresh_from_db() + page.move(target=last, pos='right') + elif first and first.pk != page.pk: + page.move(target=first, pos='left') + last = page + + for root in root_pages.order_by('site__pk', 'path'): + self._update_descendants_tree(root) + + self.stdout.write('fixing page URLs') + for page in root_pages: + for language in page.get_languages(): + if not page.is_home: + page._update_url_path(language) + self._update_url_path_recursive(page, language) + + self.stdout.write('all done') + + def _update_descendants_tree(self, root): + pages = Page.objects.all() + descendants_by_parent = OrderedDict() + + for descendant in get_descendants(root): + parent_id = descendant.parent_id + descendants_by_parent.setdefault(parent_id, []).append(descendant) + + for tree in descendants_by_parent.values(): + last_page = None + + for page in tree: + page.refresh_from_db() + + if last_page: + # This is not the first loop so this is not the first draft + # child. Set this page a sibling of the last processed + # draft page. + last_page.refresh_from_db() + page.move(target=last_page, pos='right') + else: + # This is the first time through the loop so this is the first + # draft child for this parent. + page.move(target=pages.get(pk=tree[0].parent_id), pos='first-child') + last_page = page + + def _update_url_path_recursive(self, page, language): + if page.node.is_leaf() or language not in page.get_languages(): + return + + pages = page.get_child_pages() + base_path = page.get_path(language) + new_path = page._get_path_sql_value(base_path) + + try: + (PageUrl + .objects + .filter(language=language, page__in=pages) + .exclude(managed=False) + .update(path=new_path)) + except IntegrityError as exc: + self.stdout.write(f"{exc} while updating path for page: /{language}/{new_path}") + + for child in pages.filter(urls__language=language).iterator(): + self._update_url_path_recursive(child, language) diff --git a/cms/management/commands/subcommands/uninstall.py b/cms/management/commands/subcommands/uninstall.py new file mode 100644 index 00000000..c3cfcc02 --- /dev/null +++ b/cms/management/commands/subcommands/uninstall.py @@ -0,0 +1,69 @@ +from django.core.management.base import LabelCommand + +from cms.models import Page +from cms.models.pluginmodel import CMSPlugin + +from .base import SubcommandsCommand + + +class UninstallApphooksCommand(LabelCommand): + args = 'APPHOK_NAME' + command_name = 'apphooks' + label = 'apphook name (eg SampleApp)' + help_string = 'Uninstalls (sets to null) specified apphooks for all pages' + + def handle_label(self, label, **options): + queryset = Page.objects.filter(application_urls=label) + number_of_apphooks = queryset.count() + + if number_of_apphooks > 0: + if options.get('interactive'): + confirm = input(""" +You have requested to remove %d '%s' apphooks. +Are you sure you want to do this? +Type 'yes' to continue, or 'no' to cancel: """ % (number_of_apphooks, label)) + else: + confirm = 'yes' + if confirm == 'yes': + queryset.update(application_urls=None) + self.stdout.write("%d '%s' apphooks uninstalled\n" % (number_of_apphooks, label)) + else: + self.stdout.write("no '%s' apphooks found\n" % label) + + +class UninstallPluginsCommand(LabelCommand): + args = 'PLUGIN_NAME' + command_name = 'plugins' + label = 'plugin name (eg SamplePlugin)' + help_string = 'Uninstalls (deletes) specified plugins from the CMSPlugin model' + missing_args_message = 'foo bar' + + def handle_label(self, label, **options): + queryset = CMSPlugin.objects.filter(plugin_type=label) + number_of_plugins = queryset.count() + + if number_of_plugins > 0: + if options.get('interactive'): + confirm = input(""" +You have requested to remove %d '%s' plugins. +Are you sure you want to do this? +Type 'yes' to continue, or 'no' to cancel: """ % (number_of_plugins, label)) + else: + confirm = 'yes' + if confirm == 'yes': + queryset.delete() + self.stdout.write("%d '%s' plugins uninstalled\n" % (number_of_plugins, label)) + else: + self.stdout.write('Aborted') + else: + self.stdout.write("no '%s' plugins found\n" % label) + + +class UninstallCommand(SubcommandsCommand): + help_string = 'Uninstall objects instances of the following types:' + command_name = 'uninstall' + missing_args_message = 'foo bar' + subcommands = { + 'apphooks': UninstallApphooksCommand, + 'plugins': UninstallPluginsCommand + } diff --git a/cms/management/djangocms.py b/cms/management/djangocms.py new file mode 100644 index 00000000..5eba317f --- /dev/null +++ b/cms/management/djangocms.py @@ -0,0 +1,24 @@ +import os +import sys + +from django.core.management import load_command_class + + +def execute_from_command_line(argv=None): + """Run the startcmsproject management command.""" + + # Prepare arguments + argv = argv or sys.argv[:] + argv[0] = os.path.basename(argv[0]) + if argv[0] == "__main__.py": + argv[0] = "python -m cms" + + # Find command + command = load_command_class("cms", "startcmsproject") + if argv[1:] == ["--version"]: + from cms import __version__ + sys.stdout.write(__version__ + "\n") + elif argv[1:] == ["--help"]: + command.print_help(argv[0], "") + else: + command.run_from_argv([argv[0], ""] + argv[1:]) # fake "empty" subcommand diff --git a/cms/menu_bases.py b/cms/menu_bases.py new file mode 100644 index 00000000..7bb0b5ed --- /dev/null +++ b/cms/menu_bases.py @@ -0,0 +1,51 @@ +from django.core.exceptions import ValidationError +from django.db.models import Q + +from cms.apphook_pool import apphook_pool +from cms.models import Page +from menus.base import Menu + + +class CMSAttachMenu(Menu): + """Base class that can be subclassed to allow your app to attach its own menus.""" + cms_enabled = True + instance = None + name = None + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if self.cms_enabled and not self.name: + raise ValidationError( + "the menu %s is a CMSAttachMenu but has no name defined!" % + self.__class__.__name__) + + @classmethod + def get_apphooks(cls): + """ + Returns a list of apphooks to which this CMSAttachMenu is attached. + + Calling this does **not** produce DB queries. + """ + apps = [] + for key, _ in apphook_pool.get_apphooks(): + app = apphook_pool.get_apphook(key) + if cls in app.get_menus(): + apps.append(app) + return apps + + @classmethod + def get_instances(cls): + """ + Return a queryset of all CMS Page objects (in this case) + that are currently using this CMSAttachMenu either directly as a + navigation_extender, or, as part of an apphook. + + Calling this **does** perform a DB query. + """ + parent_apps = [] + for app in cls.get_apphooks(): + parent_apps.append(app.__class__.__name__) + return Page.objects.filter( + Q(application_urls__in=parent_apps) + | Q(navigation_extenders=cls.__name__) + ) diff --git a/cms/middleware/__init__.py b/cms/middleware/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cms/middleware/language.py b/cms/middleware/language.py new file mode 100644 index 00000000..9b937a4d --- /dev/null +++ b/cms/middleware/language.py @@ -0,0 +1,40 @@ +from django.conf import settings +from django.utils.translation import get_language + + +class LanguageCookieMiddleware: + def __init__(self, get_response): + self.get_response = get_response + super().__init__() + + def __call__(self, request): + response = self.get_response(request) + return self.process_response(request, response) + + async def __acall__(self, request): + response = await self.get_response(request) + return self.process_response(request, response) + + def process_response(self, request, response): + language = get_language() + if ( + settings.LANGUAGE_COOKIE_NAME in request.COOKIES + and request.COOKIES[settings.LANGUAGE_COOKIE_NAME] == language + ): + return response + + # To ensure support of very old browsers, Django processed automatically "expires" according + # to max_age value. + # https://docs.djangoproject.com/en/3.2/ref/request-response/#django.http.HttpResponse.set_cookie + + response.set_cookie( + settings.LANGUAGE_COOKIE_NAME, + value=language, + domain=settings.LANGUAGE_COOKIE_DOMAIN, + max_age=settings.LANGUAGE_COOKIE_AGE or 365 * 24 * 60 * 60, # 1 year + httponly=settings.LANGUAGE_COOKIE_HTTPONLY, + path=settings.LANGUAGE_COOKIE_PATH, + samesite=settings.LANGUAGE_COOKIE_SAMESITE, + secure=settings.LANGUAGE_COOKIE_SECURE, + ) + return response diff --git a/cms/middleware/page.py b/cms/middleware/page.py new file mode 100644 index 00000000..6697d1c4 --- /dev/null +++ b/cms/middleware/page.py @@ -0,0 +1,27 @@ +from django.utils.functional import SimpleLazyObject + + +def get_page(request): + from cms.appresolver import applications_page_check + from cms.utils.page import get_page_from_request + + if not hasattr(request, '_current_page_cache'): + request._current_page_cache = get_page_from_request(request) + if not request._current_page_cache: + # if this is in a apphook + # find the page the apphook is attached to + request._current_page_cache = applications_page_check(request) + return request._current_page_cache + + +class CurrentPageMiddleware: + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + request.current_page = SimpleLazyObject(lambda: get_page(request)) + return self.get_response(request) + + async def __acall__(self, request): + request.current_page = SimpleLazyObject(lambda: get_page(request)) + return await self.get_response(request) diff --git a/cms/middleware/toolbar.py b/cms/middleware/toolbar.py new file mode 100644 index 00000000..ba2f4177 --- /dev/null +++ b/cms/middleware/toolbar.py @@ -0,0 +1,111 @@ +""" +Edit Toolbar middleware +""" +from django import forms +from django.core.exceptions import ValidationError +from django.urls import resolve +from django.urls.exceptions import Resolver404 +from django.utils.functional import SimpleLazyObject + +from cms.toolbar.toolbar import CMSToolbar +from cms.toolbar.utils import get_toolbar_from_request +from cms.utils.conf import get_cms_setting +from cms.utils.request_ip_resolvers import get_request_ip_resolver + +get_request_ip = get_request_ip_resolver() + +cms_endpoints = ( + 'pages-root', + 'pages-details-by-slug', + 'cms_placeholder_clear_placeholder', + 'cms_placeholder_add_plugin', + 'cms_placeholder_edit_plugin', + 'cms_placeholder_copy_plugins', + 'cms_placeholder_move_plugin', + 'cms_placeholder_delete_plugin', + 'cms_placeholder_render_object_edit', + 'cms_placeholder_render_object_preview', + 'cms_placeholder_render_object_structure', + 'cms_placeholder_edit_field', +) + + +class ToolbarMiddleware: + """ + Middleware to set up CMS Toolbar. + """ + def __init__(self, get_response): + self.get_response = get_response + super().__init__() + + def is_edit_mode(self, request): + try: + match = resolve(request.path_info) + except Resolver404: + return False + + return match.url_name == 'cms_placeholder_render_object_edit' + + def is_cms_request(self, request): + toolbar_hide = get_cms_setting('TOOLBAR_HIDE') + internal_ips = get_cms_setting('INTERNAL_IPS') + + if internal_ips: + client_ip = get_request_ip(request) + try: + client_ip = forms.GenericIPAddressField().clean(client_ip) + except ValidationError: + return False + else: + if client_ip not in internal_ips: + return False + + if not toolbar_hide: + return True + + try: + match = resolve(request.path_info) + except Resolver404: + return False + return match.url_name in cms_endpoints + + def process_request(self, request): + """ + If we should show the toolbar for this request, put it on + request.toolbar. Then call the request_hook on the toolbar. + """ + + if not self.is_cms_request(request): + return + + persist = get_cms_setting('CMS_TOOLBAR_URL__PERSIST') + enable_toolbar = get_cms_setting('CMS_TOOLBAR_URL__ENABLE') + disable_toolbar = get_cms_setting('CMS_TOOLBAR_URL__DISABLE') + field = forms.BooleanField(required=False) + + if field.clean(request.GET.get(persist, True)): + if disable_toolbar in request.GET: + request.session['cms_toolbar_disabled'] = True + + if enable_toolbar in request.GET or self.is_edit_mode(request): + request.session['cms_toolbar_disabled'] = False + + request.toolbar = SimpleLazyObject(lambda: CMSToolbar(request)) + + def process_response(self, request, response): + if toolbar := get_toolbar_from_request(request): + from django.utils.cache import add_never_cache_headers + + if toolbar._cache_disabled: + add_never_cache_headers(response) + return response + + def __call__(self, request): + self.process_request(request) + response = self.get_response(request) + return self.process_response(request, response) + + async def __acall__(self, request): + self.process_request(request) + response = await self.get_response(request) + return self.process_response(request, response) diff --git a/cms/middleware/user.py b/cms/middleware/user.py new file mode 100644 index 00000000..14685416 --- /dev/null +++ b/cms/middleware/user.py @@ -0,0 +1,21 @@ +"""This is ugly, but seems there's no other way how to do what we need for +permission system. + +This middleware is required only when CMS_PERMISSION = True. +""" + + +class CurrentUserMiddleware: + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + from cms.utils.permissions import reset_current_user, set_current_user + + token = set_current_user(getattr(request, 'user', None)) + try: + return self.get_response(request) + finally: + # Reset at the request boundary so the current user does not leak + # into the next request handled by a reused worker thread. + reset_current_user(token) diff --git a/cms/middleware/utils.py b/cms/middleware/utils.py new file mode 100644 index 00000000..facd35cf --- /dev/null +++ b/cms/middleware/utils.py @@ -0,0 +1,17 @@ +from cms.utils import apphook_reload + + +class ApphookReloadMiddleware: + """ + If the URLs are stale, reload them. + """ + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + apphook_reload.ensure_urlconf_is_up_to_date() + return self.get_response(request) + + async def __acall__(self, request): + apphook_reload.ensure_urlconf_is_up_to_date() + return await self.get_response(request) diff --git a/cms/migrations/0001_initial_squashed_0022_auto_20180620_1551.py b/cms/migrations/0001_initial_squashed_0022_auto_20180620_1551.py new file mode 100644 index 00000000..9a12f4fb --- /dev/null +++ b/cms/migrations/0001_initial_squashed_0022_auto_20180620_1551.py @@ -0,0 +1,746 @@ +# Generated by Django 5.2.9 on 2026-02-18 11:22 + +import django.contrib.auth.models +import django.db.models.deletion +import django.utils.timezone +from django.conf import settings +from django.db import migrations, models + +# Handle custom AUTH_USER_MODEL as in 0002_auto_20140816_1918.py +user_model_label = settings.AUTH_USER_MODEL.lower() +user_ptr_name = f"{settings.AUTH_USER_MODEL.rsplit('.', 1)[1].lower()}_ptr" + + +class Migration(migrations.Migration): + replaces = [ + ("cms", "0001_initial"), + ("cms", "0002_auto_20140816_1918"), + ("cms", "0003_auto_20140926_2347"), + ("cms", "0004_auto_20140924_1038"), + ("cms", "0005_auto_20140924_1039"), + ("cms", "0006_auto_20140924_1110"), + ("cms", "0007_auto_20141028_1559"), + ("cms", "0008_auto_20150208_2149"), + ("cms", "0008_auto_20150121_0059"), + ("cms", "0009_merge"), + ("cms", "0010_migrate_use_structure"), + ("cms", "0011_auto_20150419_1006"), + ("cms", "0012_auto_20150607_2207"), + ("cms", "0013_urlconfrevision"), + ("cms", "0014_auto_20160404_1908"), + ("cms", "0015_auto_20160421_0000"), + ("cms", "0016_auto_20160608_1535"), + ("cms", "0017_pagetype"), + ("cms", "0018_create_pagenode"), + ("cms", "0019_set_pagenode"), + ("cms", "0020_old_tree_cleanup"), + ("cms", "0021_auto_20180507_1432"), + ("cms", "0022_auto_20180620_1551"), + ] + + dependencies = [ + ("auth", "__first__"), + ("sites", "__first__"), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name="Placeholder", + fields=[ + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("slot", models.CharField(db_index=True, editable=False, max_length=255, verbose_name="slot")), + ("default_width", models.PositiveSmallIntegerField(editable=False, null=True, verbose_name="width")), + ], + options={ + "permissions": (("use_structure", "Can use Structure mode"),), + }, + ), + migrations.CreateModel( + name="TreeNode", + fields=[ + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("path", models.CharField(max_length=255, unique=True)), + ("depth", models.PositiveIntegerField()), + ("numchild", models.PositiveIntegerField(default=0)), + ( + "parent", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="children", + to="cms.treenode", + ), + ), + ( + "site", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="djangocms_nodes", + to="sites.site", + verbose_name="site", + ), + ), + ], + options={ + "ordering": ("path",), + "default_permissions": [], + }, + ), + migrations.CreateModel( + name="Page", + fields=[ + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "node", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, related_name="cms_pages", to="cms.treenode" + ), + ), + ("created_by", models.CharField(editable=False, max_length=255, verbose_name="created by")), + ("changed_by", models.CharField(editable=False, max_length=255, verbose_name="changed by")), + ("creation_date", models.DateTimeField(auto_now_add=True)), + ("changed_date", models.DateTimeField(auto_now=True)), + ( + "publication_date", + models.DateTimeField( + blank=True, + db_index=True, + help_text='When the page should go live. Status must be "Published" for page to go live.', + null=True, + verbose_name="publication date", + ), + ), + ( + "publication_end_date", + models.DateTimeField( + blank=True, + db_index=True, + help_text="When to expire the page. Leave empty to never expire.", + null=True, + verbose_name="publication end date", + ), + ), + ("in_navigation", models.BooleanField(db_index=True, default=True, verbose_name="in navigation")), + ( + "soft_root", + models.BooleanField( + db_index=True, + default=False, + help_text="All ancestors will not be displayed in the navigation", + verbose_name="soft root", + ), + ), + ( + "reverse_id", + models.CharField( + blank=True, + db_index=True, + help_text="A unique identifier that is used with the page_url templatetag for linking to this page", + max_length=40, + null=True, + verbose_name="id", + ), + ), + ( + "navigation_extenders", + models.CharField( + blank=True, db_index=True, max_length=80, null=True, verbose_name="attached menu" + ), + ), + ( + "template", + models.CharField( + choices=[ + ("bootstrap5/base.html", "Standard"), + ("base.html", "Test"), + ("INHERIT", "Inherit the template of the nearest ancestor"), + ], + default="INHERIT", + help_text="The template used to render the content.", + max_length=100, + verbose_name="template", + ), + ), + ("login_required", models.BooleanField(default=False, verbose_name="login required")), + ( + "limit_visibility_in_menu", + models.SmallIntegerField( + blank=True, + choices=[ + (None, "no limit set"), + (1, "for logged in users only"), + (2, "for anonymous users only"), + ], + db_index=True, + default=None, + help_text="limit when this page is visible in the menu", + null=True, + verbose_name="menu visibility", + ), + ), + ("is_home", models.BooleanField(db_index=True, default=False, editable=False)), + ( + "application_urls", + models.CharField(blank=True, db_index=True, max_length=200, null=True, verbose_name="application"), + ), + ( + "application_namespace", + models.CharField(blank=True, max_length=200, null=True, verbose_name="application instance name"), + ), + ("publisher_is_draft", models.BooleanField(db_index=True, default=True, editable=False)), + ("languages", models.CharField(blank=True, editable=False, max_length=255, null=True)), + ( + "xframe_options", + models.IntegerField( + choices=[(0, "Inherit from parent page"), (1, "Deny"), (2, "Only this website"), (3, "Allow")], + default=0, + ), + ), + ( + "publisher_public", + models.OneToOneField( + editable=False, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="publisher_draft", + to="cms.page", + ), + ), + ("placeholders", models.ManyToManyField(editable=False, to="cms.placeholder")), + ("is_page_type", models.BooleanField(default=False)), + ], + options={ + "permissions": ( + ("view_page", "Can view page"), + ("publish_page", "Can publish page"), + ("edit_static_placeholder", "Can edit static placeholders"), + ), + "verbose_name": "page", + "verbose_name_plural": "pages", + }, + ), + migrations.CreateModel( + name="CMSPlugin", + fields=[ + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("position", models.PositiveSmallIntegerField(default=0, editable=False, verbose_name="position")), + ("language", models.CharField(db_index=True, editable=False, max_length=15, verbose_name="language")), + ( + "plugin_type", + models.CharField(db_index=True, editable=False, max_length=50, verbose_name="plugin_name"), + ), + ( + "creation_date", + models.DateTimeField( + default=django.utils.timezone.now, editable=False, verbose_name="creation date" + ), + ), + ("changed_date", models.DateTimeField(auto_now=True)), + ( + "parent", + models.ForeignKey( + blank=True, + editable=False, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="cms.cmsplugin", + ), + ), + ( + "placeholder", + models.ForeignKey( + editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to="cms.placeholder" + ), + ), + ("depth", models.PositiveIntegerField(editable=False)), + ("numchild", models.PositiveIntegerField(default=0, editable=False)), + ("path", models.CharField(editable=False, max_length=255, unique=True)), + ], + ), + migrations.CreateModel( + name="GlobalPagePermission", + fields=[ + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("can_change", models.BooleanField(default=True, verbose_name="can edit")), + ("can_add", models.BooleanField(default=True, verbose_name="can add")), + ("can_delete", models.BooleanField(default=True, verbose_name="can delete")), + ( + "can_change_advanced_settings", + models.BooleanField(default=False, verbose_name="can change advanced settings"), + ), + ("can_publish", models.BooleanField(default=True, verbose_name="can publish")), + ( + "can_change_permissions", + models.BooleanField( + default=False, help_text="on page level", verbose_name="can change permissions" + ), + ), + ("can_move_page", models.BooleanField(default=True, verbose_name="can move")), + ( + "can_view", + models.BooleanField( + default=False, help_text="frontend view restriction", verbose_name="view restricted" + ), + ), + ( + "can_recover_page", + models.BooleanField( + default=True, help_text="can recover any deleted page", verbose_name="can recover pages" + ), + ), + ( + "group", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="auth.group", + verbose_name="group", + ), + ), + ( + "sites", + models.ManyToManyField( + blank=True, + help_text="If none selected, user haves granted permissions to all sites.", + to="sites.site", + verbose_name="sites", + ), + ), + ( + "user", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to=settings.AUTH_USER_MODEL, + verbose_name="user", + ), + ), + ], + options={ + "verbose_name": "Page global permission", + "verbose_name_plural": "Pages global permissions", + }, + ), + migrations.CreateModel( + name="UserSettings", + fields=[ + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "language", + models.CharField( + choices=settings.LANGUAGES, + help_text="The language for the admin interface and toolbar", + max_length=10, + verbose_name="Language", + ), + ), + ( + "clipboard", + models.ForeignKey( + blank=True, + editable=False, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="cms.placeholder", + ), + ), + ( + "user", + models.OneToOneField( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + related_name="djangocms_usersettings", + to=settings.AUTH_USER_MODEL, + ), + ), + ], + options={ + "verbose_name": "user setting", + "verbose_name_plural": "user settings", + }, + ), + migrations.CreateModel( + name="UrlconfRevision", + fields=[ + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("revision", models.CharField(max_length=255)), + ], + ), + migrations.CreateModel( + name="PageUser", + fields=[ + ( + user_ptr_name, + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to=settings.AUTH_USER_MODEL, + ), + ), + ( + "created_by", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="created_users", + to=settings.AUTH_USER_MODEL, + ), + ), + ], + options={ + "verbose_name": "User (page)", + "verbose_name_plural": "Users (page)", + }, + bases=(user_model_label,), + ), + migrations.CreateModel( + name="AliasPluginModel", + fields=[ + ( + "cmsplugin_ptr", + models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + related_name="cms_aliasplugin", + serialize=False, + to="cms.cmsplugin", + ), + ), + ( + "plugin", + models.ForeignKey( + editable=False, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="alias_reference", + to="cms.cmsplugin", + ), + ), + ( + "alias_placeholder", + models.ForeignKey( + editable=False, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="alias_placeholder", + to="cms.placeholder", + ), + ), + ], + bases=("cms.cmsplugin",), + ), + migrations.CreateModel( + name="PlaceholderReference", + fields=[ + ( + "cmsplugin_ptr", + models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + related_name="cms_placeholderreference", + serialize=False, + to="cms.cmsplugin", + ), + ), + ("name", models.CharField(max_length=255)), + ( + "placeholder_ref", + models.ForeignKey( + editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to="cms.placeholder" + ), + ), + ], + bases=("cms.cmsplugin",), + ), + migrations.CreateModel( + name="PageType", + fields=[], + options={ + "default_permissions": [], + "proxy": True, + }, + bases=("cms.page",), + ), + migrations.CreateModel( + name="StaticPlaceholder", + fields=[ + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "name", + models.CharField( + blank=True, + default="", + help_text="Descriptive name to identify this static placeholder. Not displayed to users.", + max_length=255, + verbose_name="static placeholder name", + ), + ), + ( + "code", + models.CharField( + blank=True, + help_text="To render the static placeholder in templates.", + max_length=255, + verbose_name="placeholder code", + ), + ), + ("dirty", models.BooleanField(default=False, editable=False)), + ( + "creation_method", + models.CharField( + blank=True, + choices=[("template", "by template"), ("code", "by code")], + default="code", + max_length=20, + verbose_name="creation_method", + ), + ), + ( + "draft", + models.ForeignKey( + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="static_draft", + to="cms.placeholder", + verbose_name="placeholder content", + ), + ), + ( + "public", + models.ForeignKey( + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="static_public", + to="cms.placeholder", + ), + ), + ( + "site", + models.ForeignKey( + blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="sites.site" + ), + ), + ], + options={ + "verbose_name": "static placeholder", + "verbose_name_plural": "static placeholders", + "unique_together": {("code", "site")}, + }, + ), + migrations.CreateModel( + name="PageUserGroup", + fields=[ + ( + "group_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="auth.group", + ), + ), + ( + "created_by", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="created_usergroups", + to=settings.AUTH_USER_MODEL, + ), + ), + ], + options={ + "verbose_name": "User group (page)", + "verbose_name_plural": "User groups (page)", + }, + bases=("auth.group",), + managers=[ + ("objects", django.contrib.auth.models.GroupManager()), + ], + ), + migrations.CreateModel( + name="PagePermission", + fields=[ + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("can_change", models.BooleanField(default=True, verbose_name="can edit")), + ("can_add", models.BooleanField(default=True, verbose_name="can add")), + ("can_delete", models.BooleanField(default=True, verbose_name="can delete")), + ( + "can_change_advanced_settings", + models.BooleanField(default=False, verbose_name="can change advanced settings"), + ), + ("can_publish", models.BooleanField(default=True, verbose_name="can publish")), + ( + "can_change_permissions", + models.BooleanField( + default=False, help_text="on page level", verbose_name="can change permissions" + ), + ), + ("can_move_page", models.BooleanField(default=True, verbose_name="can move")), + ( + "can_view", + models.BooleanField( + default=False, help_text="frontend view restriction", verbose_name="view restricted" + ), + ), + ( + "grant_on", + models.IntegerField( + choices=[ + (1, "Current page"), + (2, "Page children (immediate)"), + (3, "Page and children (immediate)"), + (4, "Page descendants"), + (5, "Page and descendants"), + ], + default=5, + verbose_name="Grant on", + ), + ), + ( + "group", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="auth.group", + verbose_name="group", + ), + ), + ( + "page", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="cms.page", + verbose_name="page", + ), + ), + ( + "user", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to=settings.AUTH_USER_MODEL, + verbose_name="user", + ), + ), + ], + options={ + "verbose_name": "Page permission", + "verbose_name_plural": "Page permissions", + }, + ), + migrations.CreateModel( + name="Title", + fields=[ + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("language", models.CharField(db_index=True, max_length=15, verbose_name="language")), + ( + "meta_description", + models.TextField( + blank=True, + help_text="A description of the page used by search engines.", + null=True, + verbose_name="Description meta tag", + ), + ), + ("title", models.CharField(help_text="The default title", max_length=255, verbose_name="title")), + ( + "page_title", + models.CharField( + blank=True, + help_text="Overwrites what is displayed at the top of your browser or in bookmarks", + max_length=255, + null=True, + verbose_name="Page Title", + ), + ), + ( + "menu_title", + models.CharField( + blank=True, + help_text="Overwrite what is displayed in the menu", + max_length=255, + null=True, + verbose_name="Menu Title", + ), + ), + ("slug", models.SlugField(max_length=255, verbose_name="slug")), + ("path", models.CharField(db_index=True, max_length=255, verbose_name="Path")), + ( + "has_url_overwrite", + models.BooleanField( + db_index=True, default=False, editable=False, verbose_name="has url overwrite" + ), + ), + ( + "redirect", + models.CharField( + blank=True, + help_text="Redirects to this URL.", + max_length=2048, + null=True, + verbose_name="redirect", + ), + ), + ( + "creation_date", + models.DateTimeField( + default=django.utils.timezone.now, editable=False, verbose_name="creation date" + ), + ), + ("published", models.BooleanField(default=False, verbose_name="is published")), + ("publisher_is_draft", models.BooleanField(db_index=True, default=True, editable=False)), + ("publisher_state", models.SmallIntegerField(db_index=True, default=0, editable=False)), + ( + "page", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="title_set", + to="cms.page", + verbose_name="page", + ), + ), + ( + "publisher_public", + models.OneToOneField( + editable=False, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="publisher_draft", + to="cms.title", + ), + ), + ], + options={ + "unique_together": {("language", "page")}, + }, + ), + migrations.AlterModelOptions( + name="page", + options={ + "default_permissions": ("add", "change", "delete"), + "permissions": ( + ("view_page", "Can view page"), + ("publish_page", "Can publish page"), + ("edit_static_placeholder", "Can edit static placeholders"), + ), + "verbose_name": "page", + "verbose_name_plural": "pages", + }, + ), + ] diff --git a/cms/migrations/0023_placeholder_source_field.py b/cms/migrations/0023_placeholder_source_field.py new file mode 100644 index 00000000..22af2077 --- /dev/null +++ b/cms/migrations/0023_placeholder_source_field.py @@ -0,0 +1,25 @@ +# Generated by Django 1.11.14 on 2018-07-19 16:38 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + ('cms', '0022_auto_20180620_1551'), + ] + + operations = [ + migrations.AddField( + model_name='placeholder', + name='content_type', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='contenttypes.ContentType'), + ), + migrations.AddField( + model_name='placeholder', + name='object_id', + field=models.PositiveIntegerField(blank=True, null=True), + ), + ] diff --git a/cms/migrations/0024_set_plugin_absolute_position.py b/cms/migrations/0024_set_plugin_absolute_position.py new file mode 100644 index 00000000..abd4bc3d --- /dev/null +++ b/cms/migrations/0024_set_plugin_absolute_position.py @@ -0,0 +1,66 @@ +# Generated by Django 1.11.12 on 2018-05-29 14:38 + +from django.db import migrations + + +def get_descendant_ids(model_class, root_id): + """ + Returns the a generator of primary keys which represent + descendants of the given plugin ID (root_id) + """ + ids = ( + model_class + .objects + .filter(parent=root_id) + .order_by('position') + .values_list('pk', flat=True) + ) + + for child_id in ids: + yield child_id + + for child_id in get_descendant_ids(model_class, child_id): + yield child_id + + +def set_plugin_absolute_position(apps, schema_editor): + db_alias = schema_editor.connection.alias + CMSPlugin = apps.get_model('cms', 'CMSPlugin') + Placeholder = apps.get_model('cms', 'Placeholder') + placeholders = Placeholder.objects.using(db_alias).all() + all_languages = ( + CMSPlugin + .objects + .using(db_alias) + .values_list('language', flat=True) + .distinct() + ) + + for placeholder in placeholders: + for language in all_languages: + position = 1 + plugins = placeholder.cmsplugin_set.filter(language=language) + root_plugin_ids = ( + plugins + .filter(parent__isnull=True) + .order_by('position') + .values_list('pk', flat=True) + ) + for root_id in root_plugin_ids: + plugins.filter(pk=root_id).update(position=position) + position +=1 + + for desc_id in get_descendant_ids(CMSPlugin, root_id=root_id): + plugins.filter(pk=desc_id).update(position=position) + position += 1 + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0023_placeholder_source_field'), + ] + + operations = [ + migrations.RunPython(set_plugin_absolute_position), + ] diff --git a/cms/migrations/0025_remove_plugin_tree_fields.py b/cms/migrations/0025_remove_plugin_tree_fields.py new file mode 100644 index 00000000..c7904ea4 --- /dev/null +++ b/cms/migrations/0025_remove_plugin_tree_fields.py @@ -0,0 +1,42 @@ +# Generated by Django 1.11.12 on 2018-05-29 14:39 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0024_set_plugin_absolute_position'), + ] + + operations = [ + migrations.AlterModelOptions( + name='cmsplugin', + options={'ordering': ('position',), 'verbose_name': 'plugin', 'verbose_name_plural': 'plugins'}, + ), + migrations.AlterField( + model_name='cmsplugin', + name='position', + field=models.SmallIntegerField(default=1, editable=False, verbose_name='position'), + ), + migrations.AlterUniqueTogether( + name='cmsplugin', + unique_together={('placeholder', 'language', 'position')}, + ), + migrations.AddIndex( + model_name='cmsplugin', + index=models.Index(fields=['placeholder', 'language', 'position'], name='cms_cmsplug_placeho_3f2b0f_idx'), + ), + migrations.RemoveField( + model_name='cmsplugin', + name='depth', + ), + migrations.RemoveField( + model_name='cmsplugin', + name='numchild', + ), + migrations.RemoveField( + model_name='cmsplugin', + name='path', + ), + ] diff --git a/cms/migrations/0026_title_placeholders.py b/cms/migrations/0026_title_placeholders.py new file mode 100644 index 00000000..1a71aa39 --- /dev/null +++ b/cms/migrations/0026_title_placeholders.py @@ -0,0 +1,24 @@ +# Generated by Django 1.11 on 2018-07-02 16:17 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0025_remove_plugin_tree_fields'), + ] + + operations = [ + migrations.AddField( + model_name='title', + name='placeholders', + field=models.ManyToManyField(editable=False, to='cms.Placeholder'), + ), + # Temporary field used by migration 0027 + migrations.AddField( + model_name='placeholder', + name='title_id', + field=models.PositiveIntegerField(null=True), + ), + ] diff --git a/cms/migrations/0027_title_placeholders_data_migration.py b/cms/migrations/0027_title_placeholders_data_migration.py new file mode 100644 index 00000000..98d73294 --- /dev/null +++ b/cms/migrations/0027_title_placeholders_data_migration.py @@ -0,0 +1,120 @@ +from collections import defaultdict +import warnings + +from django.db import migrations, models + +""" +# Current / Previous Placeholder structure +Title id 1 +Title id 2 +Page id 1 + - Placeholder 1 + - Plugin 1 lang 1 + - Plugin 5 lang 2 + - Placeholder 2 + - Plugin 3 lang 1 + - Plugin 4 lang 1 + +# New Title Placeholder structure +Page 1 + - Title id 1 + - Placeholder 1 + - Plugin 1 lang 1 + - Placeholder 2 + - Plugin 3 lang 1 + - Plugin 4 lang 1 + - Title id 2 + - Placeholder 1 + - Plugin 5 lang 2 +""" + + +def forwards(apps, schema_editor): + Page = apps.get_model('cms', 'Page') + Plugin = apps.get_model('cms', 'CMSPlugin') + Placeholder = apps.get_model('cms', 'Placeholder') + db_alias = schema_editor.connection.alias + cms_pages = ( + Page + .objects + .using(db_alias) + .filter(placeholders__isnull=False) + .distinct() + .prefetch_related('placeholders', 'title_set') + ) + new_placeholders = [] + old_placeholder_ids = [] + + for page in cms_pages: + for title in page.title_set.all(): + for placeholder in page.placeholders.all(): + new_placeholder = Placeholder( + slot=placeholder.slot, + default_width=placeholder.default_width, + title_id=title.pk, + ) + new_placeholders.append(new_placeholder) + old_placeholder_ids.append(placeholder.pk) + + # Create all new placeholders + Placeholder.objects.using(db_alias).bulk_create(new_placeholders) + + # Map out all new placeholders by title id + placeholders_by_title = defaultdict(list) + new_placeholder_lookup = ( + Placeholder + .objects + .using(db_alias) + .filter(title_id__isnull=False) + ) + + for new_pl in new_placeholder_lookup.iterator(): + placeholders_by_title[new_pl.title_id].append(new_pl) + + for page in cms_pages: + for translation in page.title_set.all(): + new_placeholders = placeholders_by_title[translation.pk] + + for new_placeholder in new_placeholders: + # Move all plugins whose language matches + # the current translation and are hosted on the + # current placeholder slot to point to the new title placeholder. + Plugin.objects.using(db_alias).filter( + language=translation.language, + placeholder__page=page, + placeholder__slot=new_placeholder.slot, + ).update(placeholder_id=new_placeholder.pk) + # Attach the new placeholders to the title + translation.placeholders.set(new_placeholders) + + # Gather the old placeholders + old_placeholders = ( + Placeholder + .objects + .using(db_alias) + .filter(pk__in=old_placeholder_ids) + .annotate(plugin_count=models.Count('cmsplugin')) + .only("pk") + ) + + if old_placeholders.filter(plugin_count__gt=0).exists(): + warnings.warn( + "There's placeholders in your database " + "with plugins in a language that's not configured " + "These placeholders and its plugins are not in use and can be removed.", + UserWarning, + ) + + # Delete all old placeholders that have no plugins + old_placeholders.filter(plugin_count=0).delete() + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0026_title_placeholders'), + ] + + operations = [ + migrations.RunPython(forwards) + ] diff --git a/cms/migrations/0028_remove_page_placeholders.py b/cms/migrations/0028_remove_page_placeholders.py new file mode 100644 index 00000000..9687156e --- /dev/null +++ b/cms/migrations/0028_remove_page_placeholders.py @@ -0,0 +1,21 @@ +# Generated by Django 1.11 on 2018-07-03 09:39 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0027_title_placeholders_data_migration'), + ] + + operations = [ + migrations.RemoveField( + model_name='page', + name='placeholders', + ), + migrations.RemoveField( + model_name='placeholder', + name='title_id', + ), + ] diff --git a/cms/migrations/0029_create_title_fields_and_url_model.py b/cms/migrations/0029_create_title_fields_and_url_model.py new file mode 100644 index 00000000..0fb67ba6 --- /dev/null +++ b/cms/migrations/0029_create_title_fields_and_url_model.py @@ -0,0 +1,74 @@ +# Generated by Django 1.11.13 on 2018-08-08 14:26 + +from cms.models import PageContent +from cms.utils.conf import get_cms_setting +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0028_remove_page_placeholders'), + ] + + operations = [ + migrations.AddField( + model_name='title', + name='changed_by', + field=models.CharField(editable=False, default='', max_length=255, verbose_name='changed by'), + preserve_default=False, + ), + migrations.AddField( + model_name='title', + name='changed_date', + field=models.DateTimeField(auto_now=True), + ), + migrations.AddField( + model_name='title', + name='created_by', + field=models.CharField(editable=False, default='', max_length=255, verbose_name='created by'), + preserve_default=False, + ), + migrations.AddField( + model_name='title', + name='in_navigation', + field=models.BooleanField(db_index=True, default=True, verbose_name='in navigation'), + ), + migrations.AddField( + model_name='title', + name='limit_visibility_in_menu', + field=models.SmallIntegerField(blank=True, choices=PageContent.LIMIT_VISIBILITY_IN_MENU_CHOICES, db_index=True, default=None, help_text='limit when this page is visible in the menu', null=True, verbose_name='menu visibility'), + ), + migrations.AddField( + model_name='title', + name='template', + field=models.CharField(choices=PageContent.template_choices, default=PageContent.TEMPLATE_DEFAULT, help_text='The template used to render the content.', max_length=100, verbose_name='template'), + ), + migrations.AddField( + model_name='title', + name='xframe_options', + field=models.IntegerField(choices=PageContent.X_FRAME_OPTIONS_CHOICES, default=get_cms_setting('DEFAULT_X_FRAME_OPTIONS'), verbose_name="X Frame Options"), + ), + migrations.AddField( + model_name='title', + name='soft_root', + field=models.BooleanField(db_index=True, default=False, help_text='All ancestors will not be displayed in the navigation', verbose_name='soft root'), + ), + migrations.CreateModel( + name='PageUrl', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('slug', models.SlugField(max_length=255, verbose_name='slug')), + ('path', models.CharField(db_index=True, max_length=255, null=True, verbose_name='Path')), + ('language', models.CharField(db_index=True, max_length=15, verbose_name='language')), + ('managed', models.BooleanField(default=False)), + ('page', + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='urls', to='cms.Page', + verbose_name='page')), + ], + options={ + 'default_permissions': [], + }, + ), + ] diff --git a/cms/migrations/0030_auto_20180810_0629.py b/cms/migrations/0030_auto_20180810_0629.py new file mode 100644 index 00000000..67f1cc20 --- /dev/null +++ b/cms/migrations/0030_auto_20180810_0629.py @@ -0,0 +1,48 @@ +# Generated by Django 1.11.13 on 2018-08-10 10:29 + +from django.db import migrations + + +def update_titles(apps, schema_editor): + db_alias = schema_editor.connection.alias + Page = apps.get_model('cms', 'Page') + for page in Page.objects.using(db_alias): + page.title_set.update( + created_by=page.created_by, + changed_by=page.changed_by, + changed_date=page.changed_date, + in_navigation=page.in_navigation, + soft_root=page.soft_root, + limit_visibility_in_menu=page.limit_visibility_in_menu, + template=page.template, + xframe_options=page.xframe_options, + ) + + +def set_page_url(apps, schema_editor): + Page = apps.get_model('cms', 'Page') + PageUrl = apps.get_model('cms', 'PageUrl') + db_alias = schema_editor.connection.alias + create_url = PageUrl.objects.using(db_alias).create + + for cms_page in Page.objects.using(db_alias).all(): + for translation in cms_page.title_set.all(): + create_url( + page=cms_page, + slug=translation.slug, + path=translation.path, + managed=not bool(translation.has_url_overwrite), + language=translation.language, + ) + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0029_create_title_fields_and_url_model'), + ] + + operations = [ + migrations.RunPython(update_titles), + migrations.RunPython(set_page_url), + ] diff --git a/cms/migrations/0031_remove_fields.py b/cms/migrations/0031_remove_fields.py new file mode 100644 index 00000000..d544412f --- /dev/null +++ b/cms/migrations/0031_remove_fields.py @@ -0,0 +1,81 @@ +# Generated by Django 1.11.13 on 2018-08-10 15:39 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0030_auto_20180810_0629'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='page', + unique_together=set(), + ), + migrations.RemoveField( + model_name='page', + name='publisher_public', + ), + migrations.RemoveField( + model_name='page', + name='publisher_is_draft', + ), + migrations.RemoveField( + model_name='page', + name='publication_date', + ), + migrations.RemoveField( + model_name='page', + name='publication_end_date', + ), + migrations.RemoveField( + model_name='page', + name='template', + ), + migrations.RemoveField( + model_name='page', + name='xframe_options', + ), + migrations.RemoveField( + model_name='page', + name='in_navigation', + ), + migrations.RemoveField( + model_name='page', + name='soft_root', + ), + migrations.RemoveField( + model_name='page', + name='limit_visibility_in_menu', + ), + migrations.RemoveField( + model_name='title', + name='publisher_is_draft', + ), + migrations.RemoveField( + model_name='title', + name='publisher_public', + ), + migrations.RemoveField( + model_name='title', + name='published', + ), + migrations.RemoveField( + model_name='title', + name='publisher_state', + ), + migrations.RemoveField( + model_name='title', + name='slug', + ), + migrations.RemoveField( + model_name='title', + name='path', + ), + migrations.RemoveField( + model_name='title', + name='has_url_overwrite', + ), + ] diff --git a/cms/migrations/0032_remove_title_to_pagecontent.py b/cms/migrations/0032_remove_title_to_pagecontent.py new file mode 100644 index 00000000..6d428d12 --- /dev/null +++ b/cms/migrations/0032_remove_title_to_pagecontent.py @@ -0,0 +1,24 @@ +# Generated by Django 1.11.13 on 2018-08-10 15:39 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0031_remove_fields'), + ] + + operations = [ + migrations.RenameModel('Title', 'PageContent'), + migrations.AlterModelOptions( + name='pagecontent', + options={'default_permissions': []}, + ), + migrations.AlterField( + model_name='pagecontent', + name='page', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='pagecontent_set', to='cms.Page', verbose_name='page'), + ), + ] diff --git a/cms/migrations/0033_placeholder_source_data_migration.py b/cms/migrations/0033_placeholder_source_data_migration.py new file mode 100644 index 00000000..179f42f4 --- /dev/null +++ b/cms/migrations/0033_placeholder_source_data_migration.py @@ -0,0 +1,55 @@ +# Generated by Django 1.11 on 2018-08-24 08:22 + +from django.db import migrations + + +def forwards(apps, schema_editor): + db_alias = schema_editor.connection.alias + ContentType = apps.get_model('contenttypes', 'ContentType') + CMSPlugin = apps.get_model('cms', 'CMSPlugin') + Placeholder = apps.get_model('cms', 'Placeholder') + + for app in apps.get_app_configs(): + for model_class in app.get_models(): + if issubclass(model_class, (CMSPlugin, Placeholder)): + # We ignore all models inherited from CMSPlugin or Placeholder. + continue + + # Get all fields which has a relationship to Placeholder. + pl_related_fields = [ + f for f in model_class._meta.get_fields() + if f.related_model == Placeholder and not f.auto_created + ] + + if not pl_related_fields: + # Model has no related fields with Placeholder. + continue + + # Model has related field/s with Placeholder. + # Now get all the objects for the model and populate source field. + cur_ct_obj = ContentType.objects.get_for_model(model_class) + + for obj in model_class.objects.using(db_alias): + for pl_field in pl_related_fields: + obj_placeholder_field = getattr(obj, pl_field.name) + + if pl_field.many_to_many: + obj_placeholder_field.update( + content_type_id=cur_ct_obj.pk, + object_id=obj.pk, + ) + elif obj_placeholder_field: # Only update if foreign key was set + obj_placeholder_field.content_type_id = cur_ct_obj.pk + obj_placeholder_field.object_id = obj.pk + obj_placeholder_field.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0032_remove_title_to_pagecontent'), + ] + + operations = [ + migrations.RunPython(forwards), + ] diff --git a/cms/migrations/0034_remove_pagecontent_placeholders.py b/cms/migrations/0034_remove_pagecontent_placeholders.py new file mode 100644 index 00000000..dfb3e86f --- /dev/null +++ b/cms/migrations/0034_remove_pagecontent_placeholders.py @@ -0,0 +1,21 @@ +# Generated by Django 1.11 on 2018-08-30 15:49 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0033_placeholder_source_data_migration'), + ] + + operations = [ + migrations.AlterModelOptions( + name='placeholder', + options={'default_permissions': [], 'permissions': (('use_structure', 'Can use Structure mode'),)}, + ), + migrations.RemoveField( + model_name='pagecontent', + name='placeholders', + ), + ] diff --git a/cms/migrations/0035_auto_20230822_2208.py b/cms/migrations/0035_auto_20230822_2208.py new file mode 100644 index 00000000..e53306b3 --- /dev/null +++ b/cms/migrations/0035_auto_20230822_2208.py @@ -0,0 +1,35 @@ +# Generated by Django 2.2.28 on 2023-08-22 22:08 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0034_remove_pagecontent_placeholders'), + ] + + operations = [ + migrations.AlterModelOptions( + name='pagecontent', + options={'default_permissions': [], 'verbose_name': 'page content', 'verbose_name_plural': 'page contents'}, + ), + migrations.AlterModelOptions( + name='page', + options={'default_permissions': ('add', 'change', 'delete'), 'permissions': ( + ('view_page', 'Can view page'), ('edit_static_placeholder', 'Can edit static placeholders')), + 'verbose_name': 'page', 'verbose_name_plural': 'pages'}, + ), + migrations.AlterModelOptions( + name='pagecontent', + options={'default_permissions': [], 'verbose_name': 'page content', 'verbose_name_plural': 'page contents'}, + ), + migrations.RemoveField( + model_name='globalpagepermission', + name='can_publish', + ), + migrations.RemoveField( + model_name='pagepermission', + name='can_publish', + ), + ] diff --git a/cms/migrations/0035_auto_20230822_2208_squashed_0036_auto_20240311_1028.py b/cms/migrations/0035_auto_20230822_2208_squashed_0036_auto_20240311_1028.py new file mode 100644 index 00000000..6136f521 --- /dev/null +++ b/cms/migrations/0035_auto_20230822_2208_squashed_0036_auto_20240311_1028.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.23 on 2024-03-11 09:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + replaces = [('cms', '0035_auto_20230822_2208'), ('cms', '0036_auto_20240311_1028')] + + dependencies = [ + ('cms', '0034_remove_pagecontent_placeholders'), + ] + + operations = [ + migrations.AlterModelOptions( + name='pagecontent', + options={'default_permissions': [], 'verbose_name': 'page content', 'verbose_name_plural': 'page contents'}, + ), + migrations.AlterModelOptions( + name='page', + options={'default_permissions': ('add', 'change', 'delete'), 'permissions': (('view_page', 'Can view page'), ('publish_page', 'Can publish page'), ('edit_static_placeholder', 'Can edit static placeholders')), 'verbose_name': 'page', 'verbose_name_plural': 'pages'}, + ), + ] diff --git a/cms/migrations/0036_auto_20240311_1028.py b/cms/migrations/0036_auto_20240311_1028.py new file mode 100644 index 00000000..2b228d9e --- /dev/null +++ b/cms/migrations/0036_auto_20240311_1028.py @@ -0,0 +1,27 @@ +# Generated by Django 3.2.23 on 2024-03-11 10:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0035_auto_20230822_2208'), + ] + + operations = [ + migrations.AlterModelOptions( + name='page', + options={'default_permissions': ('add', 'change', 'delete'), 'permissions': (('view_page', 'Can view page'), ('publish_page', 'Can publish page'), ('edit_static_placeholder', 'Can edit static placeholders')), 'verbose_name': 'page', 'verbose_name_plural': 'pages'}, + ), + migrations.AddField( + model_name='globalpagepermission', + name='can_publish', + field=models.BooleanField(default=True, verbose_name='can publish'), + ), + migrations.AddField( + model_name='pagepermission', + name='can_publish', + field=models.BooleanField(default=True, verbose_name='can publish'), + ), + ] diff --git a/cms/migrations/0037_merge_page_treenode.py b/cms/migrations/0037_merge_page_treenode.py new file mode 100644 index 00000000..7f02ce60 --- /dev/null +++ b/cms/migrations/0037_merge_page_treenode.py @@ -0,0 +1,90 @@ +# Generated by Django 4.2.13 on 2024-06-21 13:17 + +from django.db import migrations, models +import django.db.models.deletion + + +def merge_page_treenode(apps, schema_editor): + Page = apps.get_model('cms', 'Page') + db_alias = schema_editor.connection.alias + + for page in Page.objects.using(db_alias).all(): + page.depth = page.node.depth + page.path = page.node.path + page.site = page.node.site + page.numchild = page.node.numchild + if page.node.parent: + pages = page.node.parent.cms_pages.all() + assert len(pages) == 1 + page.parent = pages.first() + else: + page.parent = None + page.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('sites', '0002_alter_domain_unique'), + ('cms', '0035_auto_20230822_2208_squashed_0036_auto_20240311_1028'), + ] + + operations = [ + migrations.AlterModelOptions( + name='page', + options={'default_permissions': ['add', 'change', 'delete'], 'ordering': ['path'], 'permissions': [('view_page', 'Can view page'), ('publish_page', 'Can publish page'), ('edit_static_placeholder', 'Can edit static placeholders')], 'verbose_name': 'page', 'verbose_name_plural': 'pages'}, + ), + migrations.AlterModelOptions( + name='treenode', + options={'default_permissions': [], 'ordering': ['path']}, + ), + migrations.AddField( + model_name='page', + name='depth', + field=models.PositiveIntegerField(default=0), + preserve_default=False, + ), + migrations.AddField( + model_name='page', + name='numchild', + field=models.PositiveIntegerField(default=0), + ), + migrations.AddField( + model_name='page', + name='parent', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='cms.page'), + ), + migrations.AddField( + model_name='page', + name='path', + field=models.CharField(default=None, null=True, max_length=255, unique=True), + preserve_default=False, + ), + migrations.AddField( + model_name='page', + name='site', + field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='djangocms_pages', to='sites.site', verbose_name='site'), + preserve_default=False, + ), + migrations.AlterField( + model_name='page', + name='is_page_type', + field=models.BooleanField(default=False, help_text='Mark this page as a page type'), + ), + migrations.RunPython(merge_page_treenode, reverse_code=migrations.RunPython.noop), + migrations.AlterField( + model_name='page', + name='depth', + field=models.PositiveIntegerField(), + ), + migrations.AlterField( + model_name='page', + name='path', + field=models.CharField(max_length=255, unique=True), + ), + migrations.AlterField( + model_name='page', + name='site', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='djangocms_pages', to='sites.site', verbose_name='site'), + ), + ] diff --git a/cms/migrations/0038_alter_page_site.py b/cms/migrations/0038_alter_page_site.py new file mode 100644 index 00000000..3c2cf22b --- /dev/null +++ b/cms/migrations/0038_alter_page_site.py @@ -0,0 +1,67 @@ +# Generated by Django 4.2.13 on 2024-06-21 14:55 + +from django.db import migrations, models +import django.db.models.deletion + +import cms.models.settingmodels + + +def separate_page_treenode(apps, schema_editor): + Page = apps.get_model('cms', 'Page') + TreeNode = apps.get_model('cms', 'TreeNode') + db_alias = schema_editor.connection.alias + + for page in Page.objects.using(db_alias).order_by("path"): + page.node_deprecated = TreeNode.objects.create( + depth=page.depth, + path=page.path, + site=page.site, + numchild=page.numchild, + parent=page.parent.node_deprecated if page.parent else None, + ) + page.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('sites', '0002_alter_domain_unique'), + ('cms', '0037_merge_page_treenode'), + ] + + operations = [ + migrations.AlterField( + model_name='page', + name='site', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='djangocms_pages', to='sites.site', verbose_name='site'), + ), + migrations.RenameField( + model_name='page', + old_name='node', + new_name='node_deprecated', + ), + migrations.AlterField( + model_name='page', + name='node_deprecated', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='cms_pages', to='cms.treenode'), + ), + migrations.RunPython(migrations.RunPython.noop, reverse_code=separate_page_treenode), + migrations.RemoveField( + model_name='page', + name='node_deprecated', + ), + migrations.DeleteModel( + name='TreeNode', + ), + migrations.AlterField( + model_name="usersettings", + name="clipboard", + field=cms.models.settingmodels.PlaceholderForeignKey( + blank=True, + editable=False, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="cms.placeholder", + ), + ), + ] diff --git a/cms/migrations/0039_remove_page_languages_alter_pageurl_unique_together.py b/cms/migrations/0039_remove_page_languages_alter_pageurl_unique_together.py new file mode 100644 index 00000000..4f4e31b1 --- /dev/null +++ b/cms/migrations/0039_remove_page_languages_alter_pageurl_unique_together.py @@ -0,0 +1,31 @@ +# Generated by Django 4.2.16 on 2024-11-14 06:48 + +from django.db import migrations +from django.db.models import Count + + +def remove_pageurl_duplicates(apps, schema_editor): + db_alias = schema_editor.connection.alias + PageUrl = apps.get_model("cms", "PageUrl") + non_unique = PageUrl.objects.using(db_alias).values("page_id", "language").annotate(total=Count("language")).filter(total__gt=1) + for item in non_unique: + for url in PageUrl.objects.using(db_alias).filter(page_id=item["page_id"], language=item["language"]).order_by("-pk")[1:]: + url.delete() + + +class Migration(migrations.Migration): + dependencies = [ + ("cms", "0038_alter_page_site"), + ] + + operations = [ + migrations.RunPython(remove_pageurl_duplicates, reverse_code=migrations.RunPython.noop), + migrations.RemoveField( + model_name="page", + name="languages", + ), + migrations.AlterUniqueTogether( + name="pageurl", + unique_together={("language", "page")}, + ), + ] diff --git a/cms/migrations/0040_alter_pageuser_created_by_and_more.py b/cms/migrations/0040_alter_pageuser_created_by_and_more.py new file mode 100644 index 00000000..31cf0773 --- /dev/null +++ b/cms/migrations/0040_alter_pageuser_created_by_and_more.py @@ -0,0 +1,35 @@ +# Generated by Django 5.1.4 on 2025-02-28 18:56 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("cms", "0039_remove_page_languages_alter_pageurl_unique_together"), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.AlterField( + model_name="pageuser", + name="created_by", + field=models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="created_users", + to=settings.AUTH_USER_MODEL, + ), + ), + migrations.AlterField( + model_name="pageusergroup", + name="created_by", + field=models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="created_usergroups", + to=settings.AUTH_USER_MODEL, + ), + ), + ] diff --git a/cms/migrations/0041_alter_pageurl_unique_together_pageurl_site_and_more.py b/cms/migrations/0041_alter_pageurl_unique_together_pageurl_site_and_more.py new file mode 100644 index 00000000..6c939ef9 --- /dev/null +++ b/cms/migrations/0041_alter_pageurl_unique_together_pageurl_site_and_more.py @@ -0,0 +1,23 @@ +# Generated by Django 6.0.dev20250413105524 on 2025-04-16 10:33 + +from collections import defaultdict +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cms', '0040_alter_pageuser_created_by_and_more'), + ('sites', '0002_alter_domain_unique'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='pageurl', + unique_together=set(), + ), + migrations.AddConstraint( + model_name='pageurl', + constraint=models.UniqueConstraint(fields=('page', 'language'), name='unique_together_page_language'), + ), + ] diff --git a/cms/migrations/0042_remove_placeholderreference_placeholder_ref_and_more.py b/cms/migrations/0042_remove_placeholderreference_placeholder_ref_and_more.py new file mode 100644 index 00000000..d731e0c8 --- /dev/null +++ b/cms/migrations/0042_remove_placeholderreference_placeholder_ref_and_more.py @@ -0,0 +1,19 @@ +# Generated by Django 5.2.1.dev20250424131232 on 2025-05-12 18:14 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("cms", "0041_alter_pageurl_unique_together_pageurl_site_and_more"), + ] + + operations = [ + migrations.RemoveField( + model_name="placeholderreference", + name="placeholder_ref", + ), + migrations.DeleteModel( + name="StaticPlaceholder", + ), + ] diff --git a/cms/migrations/0043_alter_globalpagepermission_can_view_and_more.py b/cms/migrations/0043_alter_globalpagepermission_can_view_and_more.py new file mode 100644 index 00000000..c5c858d6 --- /dev/null +++ b/cms/migrations/0043_alter_globalpagepermission_can_view_and_more.py @@ -0,0 +1,57 @@ +from django.db import migrations, models +from django.utils.translation import gettext_lazy as _ + + +class Migration(migrations.Migration): + dependencies = [ + ("cms", "0042_remove_placeholderreference_placeholder_ref_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="globalpagepermission", + name="can_change_permissions", + field=models.BooleanField( + default=False, + help_text=_("Allows this user to grant and revoke page permissions for other users."), + verbose_name=_("can change permissions"), + ), + ), + migrations.AlterField( + model_name="pagepermission", + name="can_change_permissions", + field=models.BooleanField( + default=False, + help_text=_("Allows this user to grant and revoke page permissions for other users."), + verbose_name=_("can change permissions"), + ), + ), + migrations.AlterField( + model_name="globalpagepermission", + name="can_view", + field=models.BooleanField( + default=False, + help_text=_( + "Grants frontend view access. Note: as soon as any user or " + "group is given view access to a page, that page becomes " + "restricted — only users/groups with view access can then " + "see it on the frontend." + ), + verbose_name=_("can view restricted pages"), + ), + ), + migrations.AlterField( + model_name="pagepermission", + name="can_view", + field=models.BooleanField( + default=False, + help_text=_( + "Grants frontend view access. Note: as soon as any user or " + "group is given view access to a page, that page becomes " + "restricted — only users/groups with view access can then " + "see it on the frontend." + ), + verbose_name=_("can view restricted pages"), + ), + ), + ] diff --git a/cms/migrations/0044_pagecontent_slug_overwrite_url.py b/cms/migrations/0044_pagecontent_slug_overwrite_url.py new file mode 100644 index 00000000..99f84cca --- /dev/null +++ b/cms/migrations/0044_pagecontent_slug_overwrite_url.py @@ -0,0 +1,121 @@ +from django.db import migrations, models +from django.db.models import Case, Exists, F, OuterRef, Subquery, Value, When + + +def _has_unique_constraint(schema_editor, model, field_names): + """Return whether the database really enforces uniqueness over ``field_names``.""" + columns = {model._meta.get_field(name).column for name in field_names} + with schema_editor.connection.cursor() as cursor: + constraints = schema_editor.connection.introspection.get_constraints(cursor, model._meta.db_table) + return any( + constraint["unique"] and not constraint.get("primary_key") and set(constraint["columns"]) == columns + for constraint in constraints.values() + ) + + +class AddFieldKeepingDatabaseUniqueness(migrations.AddField): + """``AddField`` that never resurrects a unique constraint the database dropped. + + ``PageContent`` carries ``unique_together = (("language", "page"),)`` in the + migration state, but djangocms-versioning removes that constraint from the + database only (its ``0009_cms_pagecontent_remove_unique_constraint`` does the + work in a ``RunPython``, which cannot alter another app's state). Versioning + then stores one row per version, so several rows share a page and language. + + SQLite cannot ``ALTER TABLE ADD COLUMN`` a non-null column and rebuilds the + whole table from the state model instead. That rebuild would recreate the + stale constraint and fail while copying the versioned rows over. So drop + ``unique_together`` for the duration of the rebuild whenever the database + turns out not to have the constraint anyway. Installations without a + versioning package still have it and keep it. + + See django-cms#8776; djangocms-versioning#599 tracks reconciling state and + database for good. + """ + + unique_together = (("language", "page"),) + + def database_forwards(self, app_label, schema_editor, from_state, to_state): + from_model = from_state.apps.get_model(app_label, self.model_name) + to_model = to_state.apps.get_model(app_label, self.model_name) + + if not self.allow_migrate_model(schema_editor.connection.alias, to_model) or _has_unique_constraint( + schema_editor, from_model, self.unique_together[0] + ): + super().database_forwards(app_label, schema_editor, from_state, to_state) + return + + originals = [(model, model._meta.unique_together) for model in (from_model, to_model)] + for model, original in originals: + model._meta.unique_together = tuple( + fields for fields in original if tuple(fields) not in self.unique_together + ) + try: + super().database_forwards(app_label, schema_editor, from_state, to_state) + finally: + for model, original in originals: + model._meta.unique_together = original + + +def _copy_urls_to_content(apps, schema_editor): + """Copy the authored URL values from the (unversioned) PageUrl objects onto + every PageContent object of the same page and language. + + All versions of a page content implicitly shared one URL before this + migration, so every version receives the currently effective slug and + overwrite URL. + """ + PageContent = apps.get_model("cms", "PageContent") + PageUrl = apps.get_model("cms", "PageUrl") + + url_qs = PageUrl.objects.filter(page_id=OuterRef("page_id"), language=OuterRef("language")) + PageContent.objects.filter(Exists(url_qs)).update( + slug=Subquery(url_qs.values("slug")[:1]), + overwrite_url=Subquery( + url_qs.annotate( + overwrite=Case( + When(managed=True, then=Value(None)), + default=F("path"), + output_field=models.CharField(), + ) + ).values("overwrite")[:1] + ), + ) + + +def _noop(apps, schema_editor): + # The PageUrl objects still hold the published values; removing the fields + # loses only draft-specific edits made after migrating forward. + pass + + +class Migration(migrations.Migration): + dependencies = [ + ("cms", "0043_alter_globalpagepermission_can_view_and_more"), + ] + + operations = [ + AddFieldKeepingDatabaseUniqueness( + model_name="pagecontent", + name="slug", + field=models.SlugField( + default="", + help_text="The part of the title that is used in the URL", + max_length=255, + verbose_name="slug", + ), + preserve_default=False, + ), + AddFieldKeepingDatabaseUniqueness( + model_name="pagecontent", + name="overwrite_url", + field=models.CharField( + blank=True, + help_text="Keep this field empty if standard path should be used.", + max_length=255, + null=True, + verbose_name="overwrite URL", + ), + ), + migrations.RunPython(_copy_urls_to_content, _noop, elidable=False), + ] diff --git a/cms/migrations/0045_pageurl_site_unique_path.py b/cms/migrations/0045_pageurl_site_unique_path.py new file mode 100644 index 00000000..f3b999ea --- /dev/null +++ b/cms/migrations/0045_pageurl_site_unique_path.py @@ -0,0 +1,100 @@ +import django.db.models.deletion +from django.db import migrations, models +from django.db.models import Count, Min, OuterRef, Subquery + + +def _fill_site(apps, schema_editor): + """Denormalize the page's site onto every PageUrl row.""" + Page = apps.get_model("cms", "Page") + PageUrl = apps.get_model("cms", "PageUrl") + + PageUrl.objects.update( + site=Subquery(Page.objects.filter(pk=OuterRef("page_id")).values("site")[:1]) + ) + + +def _resolve_duplicate_paths(apps, schema_editor): + """Resolve pre-existing duplicate paths so the unique constraint can be + added. + + Duplicates could only be created by race conditions the constraint now + prevents; of each set only one page (arbitrarily, the first) was actually + served. That row keeps the path, the others are set to ``path=None`` + (unreachable) and regain a path when they are saved or published next. + """ + PageUrl = apps.get_model("cms", "PageUrl") + + duplicates = ( + PageUrl.objects.filter(path__isnull=False) + .values("site_id", "language", "path") + .annotate(count=Count("pk"), first_pk=Min("pk")) + .filter(count__gt=1) + ) + for duplicate in duplicates.iterator(): + PageUrl.objects.filter( + site_id=duplicate["site_id"], + language=duplicate["language"], + path=duplicate["path"], + ).exclude(pk=duplicate["first_pk"]).update(path=None) + + +def _flush_deferred_constraints(apps, schema_editor): + """Run the deferred constraint checks the updates above have queued. + + ``_fill_site`` writes a new version of every ``PageUrl`` row and + ``_resolve_duplicate_paths`` writes some of them a second time. PostgreSQL + queues a deferred foreign key check for every row whose previous version + was written by the current transaction -- even when no key column changed + -- so the twice-written rows leave pending trigger events behind. The + ``ALTER TABLE`` of the unique constraint below then fails with "cannot + ALTER TABLE cms_pageurl because it has pending trigger events" (#8818). + + ``SET CONSTRAINTS ALL IMMEDIATE`` runs those checks now and keeps + deferrable constraints immediate for the rest of this transaction. + """ + if schema_editor is not None and schema_editor.connection.vendor == "postgresql": + schema_editor.execute("SET CONSTRAINTS ALL IMMEDIATE") + + +class Migration(migrations.Migration): + dependencies = [ + ("cms", "0044_pagecontent_slug_overwrite_url"), + ("sites", "0002_alter_domain_unique"), + ] + + operations = [ + migrations.AddField( + model_name="pageurl", + name="site", + field=models.ForeignKey( + null=True, + editable=False, + on_delete=django.db.models.deletion.CASCADE, + related_name="djangocms_urls", + to="sites.site", + verbose_name="site", + ), + ), + migrations.RunPython(_fill_site, migrations.RunPython.noop, elidable=False), + migrations.AlterField( + model_name="pageurl", + name="site", + field=models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + related_name="djangocms_urls", + to="sites.site", + verbose_name="site", + ), + ), + migrations.RunPython(_resolve_duplicate_paths, migrations.RunPython.noop, elidable=False), + migrations.RunPython( + _flush_deferred_constraints, migrations.RunPython.noop, elidable=False + ), + migrations.AddConstraint( + model_name="pageurl", + constraint=models.UniqueConstraint( + fields=("site", "language", "path"), name="unique_site_language_path" + ), + ), + ] diff --git a/cms/migrations/__init__.py b/cms/migrations/__init__.py new file mode 100644 index 00000000..7b43f49f --- /dev/null +++ b/cms/migrations/__init__.py @@ -0,0 +1,12 @@ +from django.db import migrations + +try: + IrreversibleError = migrations.Migration.IrreversibleError +except AttributeError: + from django.db.migrations.exceptions import IrreversibleError + + +class IrreversibleMigration(migrations.Migration): + + def unapply(self, project_state, schema_editor, collect_sql=False): + raise IrreversibleError('Migration %s is not reversible' % self.name) diff --git a/cms/models/__init__.py b/cms/models/__init__.py new file mode 100644 index 00000000..b92d3090 --- /dev/null +++ b/cms/models/__init__.py @@ -0,0 +1,13 @@ +# isort: skip_file + +from .settingmodels import * # noqa: F401,F403 +from .pagemodel import * # noqa: F401,F403 +from .permissionmodels import * # noqa: F401,F403 +from .placeholdermodel import * # noqa: F401,F403 +from .pluginmodel import * # noqa: F401,F403 +from .contentmodels import * # noqa: F401,F403 +from .placeholderpluginmodel import * # noqa: F401,F403 +from .aliaspluginmodel import * # noqa: F401,F403 +from .apphooks_reload import * # noqa: F401,F403 +# must be last +from cms import signals as s_import # noqa: F401 diff --git a/cms/models/aliaspluginmodel.py b/cms/models/aliaspluginmodel.py new file mode 100644 index 00000000..a9e1a203 --- /dev/null +++ b/cms/models/aliaspluginmodel.py @@ -0,0 +1,64 @@ +from django.db import models +from django.db.models import Q +from django.utils.encoding import force_str + +from cms.models import CMSPlugin, Placeholder + + +class AliasPluginModel(CMSPlugin): + """ + AliasPlugin is deprecated, + and it will be removed; + please use the package djangocms-alias instead + """ + cmsplugin_ptr = models.OneToOneField( + CMSPlugin, + on_delete=models.CASCADE, + related_name='cms_aliasplugin', + parent_link=True, + ) + plugin = models.ForeignKey( + CMSPlugin, + on_delete=models.CASCADE, + editable=False, + related_name='alias_reference', + null=True, + ) + alias_placeholder = models.ForeignKey( + Placeholder, + on_delete=models.CASCADE, + editable=False, + related_name='alias_placeholder', + null=True, + ) + + class Meta: + app_label = 'cms' + + def __str__(self): + if self.plugin_id: + return f"({force_str(self.plugin.get_plugin_name())}) {self.plugin.get_plugin_instance()[0]}" + else: + return force_str(self.alias_placeholder.get_label()) + + def get_aliased_placeholder_id(self): + if self.plugin_id: + placeholder_id = self.plugin.placeholder_id + else: + placeholder_id = self.alias_placeholder_id + return placeholder_id + + def is_recursive(self): + placeholder_id = self.get_aliased_placeholder_id() + + if not placeholder_id: + return False + + plugins = AliasPluginModel.objects.filter( + plugin_type='AliasPlugin', + placeholder_id=placeholder_id, + ) + plugins = plugins.filter( + Q(plugin=self) | Q(plugin__placeholder=self.placeholder_id) | Q(alias_placeholder=self.placeholder_id) + ) + return plugins.exists() diff --git a/cms/models/apphooks_reload.py b/cms/models/apphooks_reload.py new file mode 100644 index 00000000..38ef465e --- /dev/null +++ b/cms/models/apphooks_reload.py @@ -0,0 +1,39 @@ +import uuid + +from django.db import models + + +class UrlconfRevision(models.Model): + revision = models.CharField(max_length=255) + + class Meta: + app_label = 'cms' + + def save(self, *args, **kwargs): + """ + Simply forces this model to be a singleton. + """ + self.pk = 1 + super().save(*args, **kwargs) + + @classmethod + def get_or_create_revision(cls, revision=None): + """ + Convenience method for getting or creating revision. + """ + if revision is None: + revision = str(uuid.uuid4()) + obj, created = cls.objects.get_or_create( + pk=1, defaults=dict(revision=revision)) + return obj.revision, created + + @classmethod + def update_revision(cls, revision): + """ + Convenience method for updating the revision. + """ + obj, created = cls.objects.get_or_create( + pk=1, defaults=dict(revision=revision)) + if not created: + obj.revision = revision + obj.save() diff --git a/cms/models/contentmodels.py b/cms/models/contentmodels.py new file mode 100644 index 00000000..2c5f99d2 --- /dev/null +++ b/cms/models/contentmodels.py @@ -0,0 +1,418 @@ +from django.db import models +from django.utils import timezone +from django.utils.translation import gettext_lazy as _ + +from cms import constants +from cms.models.fields import PlaceholderRelationField +from cms.models.managers import ContentAdminManager, PageContentManager +from cms.models.pagemodel import Page +from cms.utils.conf import get_cms_setting + + +class PageContent(models.Model): + # Field changes need a custom migration operation as in 0044: versioning packages drop the + # unique_together below in the database only, and SQLite rebuilds the table from the state. + LIMIT_VISIBILITY_IN_MENU_CHOICES = ( + (constants.VISIBILITY_ALL, _("no limit set")), + (constants.VISIBILITY_USERS, _("for logged in users only")), + (constants.VISIBILITY_ANONYMOUS, _("for anonymous users only")), + ) + + template_choices = get_cms_setting("TEMPLATES") + + TEMPLATE_DEFAULT = ( + constants.TEMPLATE_INHERITANCE_MAGIC + if get_cms_setting("TEMPLATE_INHERITANCE") + else (template_choices[0][0] if template_choices else "") + ) + + X_FRAME_OPTIONS_CHOICES = ( + (constants.X_FRAME_OPTIONS_INHERIT, _("Inherit from parent page")), + (constants.X_FRAME_OPTIONS_DENY, _("Deny")), + (constants.X_FRAME_OPTIONS_SAMEORIGIN, _("Only this website")), + (constants.X_FRAME_OPTIONS_ALLOW, _("Allow")), + ) + + # These are the fields whose values are compared when saving + # a PageContent object to know if it has changed. + editable_fields = [ + "title", + "slug", + "overwrite_url", + "redirect", + "page_title", + "menu_title", + "meta_description", + ] + + language = models.CharField(_("language"), max_length=15, db_index=True) + title = models.CharField( + verbose_name=_("title"), + max_length=255, + help_text=_("The default title"), + ) + page_title = models.CharField( + verbose_name=_("Page Title"), + max_length=255, + blank=True, + null=True, + help_text=_("Overwrites what is displayed at the top of your browser or in bookmarks"), + ) + menu_title = models.CharField( + verbose_name=_("Menu Title"), + max_length=255, + blank=True, + null=True, + help_text=_("Overwrite what is displayed in the menu"), + ) + meta_description = models.TextField( + verbose_name=_("Description meta tag"), + blank=True, + null=True, + help_text=_("A description of the page used by search engines."), + ) + redirect = models.CharField( + verbose_name=_("redirect"), + max_length=2048, + blank=True, + null=True, + help_text=_("Redirects to this URL."), + ) + #: The slug and overwrite URL are authored per page content object. The routable + #: :class:`~cms.models.pagemodel.PageUrl` objects are derived from the publicly + #: visible page content only (see :meth:`cms.models.pagemodel.Page.update_urls_from_content`), + #: so changing the slug of a draft version does not affect the published URL. + slug = models.SlugField( + verbose_name=_("slug"), + max_length=255, + help_text=_("The part of the title that is used in the URL"), + ) + overwrite_url = models.CharField( + verbose_name=_("overwrite URL"), + max_length=255, + blank=True, + null=True, + help_text=_("Keep this field empty if standard path should be used."), + ) + page = models.ForeignKey(Page, on_delete=models.CASCADE, verbose_name=_("page"), related_name="pagecontent_set") + creation_date = models.DateTimeField(verbose_name=_("creation date"), editable=False, default=timezone.now) + # Placeholders (plugins) + placeholders = PlaceholderRelationField() + + created_by = models.CharField( + verbose_name=_("created by"), + max_length=constants.PAGE_USERNAME_MAX_LENGTH, + editable=False, + ) + changed_by = models.CharField( + verbose_name=_("changed by"), + max_length=constants.PAGE_USERNAME_MAX_LENGTH, + editable=False, + ) + changed_date = models.DateTimeField(auto_now=True) + + in_navigation = models.BooleanField( + verbose_name=_("in navigation"), + default=True, + db_index=True, + ) + soft_root = models.BooleanField( + verbose_name=_("soft root"), + db_index=True, + default=False, + help_text=_("All ancestors will not be displayed in the navigation"), + ) + template = models.CharField( + verbose_name=_("template"), + max_length=100, + choices=template_choices, + help_text=_("The template used to render the content."), + default=TEMPLATE_DEFAULT, + ) + limit_visibility_in_menu = models.SmallIntegerField( + verbose_name=_("menu visibility"), + default=constants.VISIBILITY_ALL, + choices=LIMIT_VISIBILITY_IN_MENU_CHOICES, + db_index=True, + blank=True, + null=True, + help_text=_("limit when this page is visible in the menu"), + ) + + # X Frame Options for clickjacking protection + xframe_options = models.IntegerField( + choices=X_FRAME_OPTIONS_CHOICES, + default=get_cms_setting("DEFAULT_X_FRAME_OPTIONS"), + verbose_name=_("X Frame Options"), + ) + + objects = PageContentManager() + admin_manager = ContentAdminManager() + """Admin_manager does lack additional functionality of objects and must only + be used inside admin objects or admin forms. One of its key properties is that + it can access all objects of type PageContent (irrespevtively of some objects + being hidden by third-party packages, e.g. due to viewing rights, publication + or moderation status. + """ + + class Meta: + verbose_name = _("page content") + verbose_name_plural = _("page contents") + default_permissions = [] + unique_together = (("language", "page"),) + # TODO: unique_together shall be replaced against: + # constraints = [ + # models.UniqueConstraint(fields=['language', 'page'], name='language_and_page_uniq') + # ] + app_label = "cms" + + def __str__(self): + return f"{self.title} ({self.language})" + + def __repr__(self): + display = f"<{self.__module__}.{self.__class__.__name__} id={self.pk} object at {hex(id(self))}>" + return display + + def update(self, **data): + for field, value in data.items(): + setattr(self, field, value) + self.save(update_fields=data.keys()) + + def save(self, **kwargs): + # delete template cache + if hasattr(self, "_template_cache"): + delattr(self, "_template_cache") + super().save(**kwargs) + + def toggle_in_navigation(self, set_to=None): + """ + Toggles (or sets) in_navigation and invalidates the cms page cache + """ + old = bool(self.in_navigation) + + if set_to in [True, False]: + new = set_to + else: + new = not old + + self.update(in_navigation=new) + + # If there was a change, invalidate the cms page cache + if new != old: + self.page.clear_cache() + return new + + def has_placeholder_change_permission(self, user): + return self.page.has_change_permission(user) + + def has_placeholder_view_permission(self, user): + return self.page.has_view_permission(user) + + def has_publish_permission(self, user): + return self.page.has_publish_permission(user) + + def rescan_placeholders(self): + """ + Rescan and if necessary create placeholders in the current template. + """ + from cms.utils.placeholder import rescan_placeholders_for_obj + + return rescan_placeholders_for_obj(self) + + def get_placeholders(self): + if not hasattr(self, "_placeholder_cache"): + self._placeholder_cache = self.placeholders.all() + return self._placeholder_cache + + def get_ancestor_titles(self): + return PageContent.objects.filter( + page__in=self.page.get_ancestor_pages(), + language=self.language, + ) + + def get_placeholder_slots(self): + """ + Returns a list of placeholder slots for this page content object. + """ + if not get_cms_setting("PLACEHOLDERS"): + return [] + if not hasattr(self, "_placeholder_slot_cache"): + if self.template == constants.TEMPLATE_INHERITANCE_MAGIC: + templates = ( + self.get_ancestor_titles() + .exclude(template=constants.TEMPLATE_INHERITANCE_MAGIC) + .order_by("-page__path") + .values_list("template", flat=True) + ) + if templates: + placeholder_set = templates[0] + else: + placeholder_set = get_cms_setting("PLACEHOLDERS")[0][0] + else: + placeholder_set = self.template or get_cms_setting("PLACEHOLDERS")[0][0] + + for key, value, __ in get_cms_setting("PLACEHOLDERS"): + if key in (placeholder_set, ""): + # - Empty string matches always + self._placeholder_slot_cache = value + break + else: # No matching placeholder list found + self._placeholder_slot_cache = get_cms_setting("PLACEHOLDERS")[0][1] + if isinstance(self._placeholder_slot_cache, str): + # Accidentally a strong not a tuple? Make it a 1-element tuple + self._placeholder_slot_cache = (self._placeholder_slot_cache,) + return self._placeholder_slot_cache + + def get_template(self, app_hooks=True): + """ + get the template of this page if defined or if closer parent if + defined or DEFAULT_PAGE_TEMPLATE otherwise. + + If the page has an apphook assigned and its root view exposes a + template, that template wins — it's what the apphook actually renders + at the page URL, so the structure board's placeholder layout must + match it. + """ + if hasattr(self, "_template_cache"): + return self._template_cache + + if not get_cms_setting("TEMPLATES"): + return "" + + if app_hooks and self.page.application_urls: + from cms.apphook_pool import apphook_pool + + apphook = apphook_pool.get_apphook(self.page.application_urls) + if apphook is not None: + apphook_template = apphook.get_root_template(page=self.page, language=self.language) + if apphook_template: + self._template_cache = apphook_template + return self._template_cache + + if self.template != constants.TEMPLATE_INHERITANCE_MAGIC: + self._template_cache = self.template or self.template_choices[0][0] + return self._template_cache + + templates = ( + self.get_ancestor_titles() + .exclude(template=constants.TEMPLATE_INHERITANCE_MAGIC) + .order_by("-page__path") + .values_list("template", flat=True) + ) + + try: + self._template_cache = templates[0] + except IndexError: + self._template_cache = self.template_choices[0][0] if self.template_choices else "" + return self._template_cache + + def get_template_name(self): + """ + get the textual name (2nd parameter in get_cms_setting('TEMPLATES')) + of the template of this title. failing to find that, return the + name of the default template. + """ + template = self.get_template() + for t in get_cms_setting("TEMPLATES"): + if t[0] == template: + return t[1] + return _("default") + + def is_editable(self, request): + """returns True if page content object itself can be edited. Does not check + user permissions to do that. + + :rtype: ``bool`` + """ + return True + + def is_public(self): + """Return whether this content object is visible to the public, i.e. whether + the default manager returns it. Without a versioning package every saved + page content is public; with a versioning package installed only published + versions are. The page's URL is only derived from public content + (see :meth:`cms.models.pagemodel.Page.update_urls_from_content`). + + :rtype: ``bool`` + """ + if self.pk is None: + return False + return self.__class__.objects.filter(pk=self.pk).exists() + + def content_indicator(self): + """returns the content indicator status. Without additional packages like + djangocms-versioning page content always is public. + + :rtype: ``str`` + """ + return "public" if self.get_absolute_url(language=self.language) else "unpublished-parent" + + def get_xframe_options(self): + """Finds X_FRAME_OPTION from tree if inherited""" + xframe_options = self.xframe_options or constants.X_FRAME_OPTIONS_INHERIT + + if xframe_options != constants.X_FRAME_OPTIONS_INHERIT: + return xframe_options + + # Ignore those pages which just inherit their value + ancestors = self.get_ancestor_titles().order_by("-page__path") + ancestors = ancestors.exclude(xframe_options=constants.X_FRAME_OPTIONS_INHERIT) + + # Now just give me the clickjacking setting (not anything else) + xframe_options = ancestors.values_list("xframe_options", flat=True) + + try: + return xframe_options[0] + except IndexError: + return None + + def get_absolute_url(self, language=None): + """Get the absolute url for the page content. If language is specified it will return + the absolute url of the corresponding "sister" content.""" + return self.page.get_absolute_url(language=language or self.language) + + +class EmptyPageContent: + """ + Empty title object, can be returned from :meth:`cms.models.pagemodel.Page.get_content_obj` if required + title object doesn't exist. + """ + + title = "" + slug = "" + overwrite_url = None + meta_description = "" + redirect = "" + application_urls = "" + menu_title = "" + page_title = "" + xframe_options = None + template = None + soft_root = False + in_navigation = False + + def __init__(self, language, page=None): + self.language = language + self.page = page + if get_cms_setting("TEMPLATES"): + self.template = get_cms_setting("TEMPLATES")[0][0] + else: + self.template = "" + + def __bool__(self): + return False + + def content_indicator(self): + """returns the content indicator status. Empty page content always is empty + + :rtype: ``str`` + """ + return "empty" + + def is_editable(self, request): + """returns True if empty page content object itself can be edited. Since editing creates a new + page content object this should always be True + + :rtype: ``bool`` + """ + return True diff --git a/cms/models/fields.py b/cms/models/fields.py new file mode 100644 index 00000000..0ad9dc22 --- /dev/null +++ b/cms/models/fields.py @@ -0,0 +1,102 @@ +from itertools import chain + +from django.contrib.contenttypes.fields import GenericRelation +from django.db import models + +from cms.forms.fields import PageSelectFormField +from cms.models.placeholdermodel import Placeholder + + +class PageField(models.ForeignKey): + """ + This is a foreign key field to the :class:`cms.models.pagemodel.Page` model + that defaults to the :class:`~cms.forms.fields.PageSelectFormField` form + field when rendered in forms. It has the same API as the + :class:`django:django.db.models.ForeignKey` but does not require + the ``othermodel`` argument. + """ + + default_form_class = PageSelectFormField + + def __init__(self, **kwargs): + # We hard-code the `to` argument for ForeignKey.__init__ + # since a PageField can only be a ForeignKey to a Page + kwargs['to'] = 'cms.Page' + kwargs['on_delete'] = models.CASCADE + super().__init__(**kwargs) + + def formfield(self, **kwargs): + defaults = { + 'form_class': self.default_form_class, + } + defaults.update(kwargs) + return super().formfield(**defaults) + + +class PlaceholderField(models.ForeignKey): + """ + .. warning:: + This field is for django CMS versions below 4 only. It may only be used inside migrations. + + The ``PlaceholderField`` has been replaced by the :class:`~cms.models.fields.PlaceholderRelationField`, + the built-in migrations will automatically take care of the replacement. + See documentation of :class:`~cms.models.fields.PlaceholderRelationField` for how to replace the code. + """ + system_check_removed_details = { + "msg": ( + "PlaceholderField is for django CMS versions below 4 only. It may only be used inside migrations." + ), + "hint": "Use PlaceholderRelationField instead.", + "id": "cms.E001", + } + + def __init__(self, slotname, *args, **kwargs): + kwargs.update({'null': True}) # always allow Null + kwargs.update({'editable': False}) # never allow edits in admin + # We hard-code the `to` argument for ForeignKey.__init__ + # since a PlaceholderField can only be a ForeignKey to a Placeholder + self.slotname = slotname + kwargs['to'] = 'cms.Placeholder' + kwargs['on_delete'] = models.CASCADE + super().__init__(**kwargs) + + def deconstruct(self): + name, path, args, kwargs = super().deconstruct() + kwargs['slotname'] = self.slotname + return name, path, args, kwargs + + +class PlaceholderRelationField(GenericRelation): + """:class:`~django.contrib.contenttypes.fields.GenericForeignKey` to placeholders. + + If you create a model which contains placeholders you first create the ``PlaceHolderRelationField``:: + + from cms.utils.placeholder import get_placeholder_from_slot + + class Post(models.Model): + ... + placeholders = PlaceholderRelationField() # Generic relation + + @cached_property + def content(self): + return get_placeholder_from_slot(self.placeholders, "content") # A specific placeholder + """ + default_checks = [] + + def __init__(self, checks=None, **kwargs): + self._checks = checks or () + kwargs.pop('object_id_field', None) + kwargs.pop('content_type_field', None) + super().__init__( + Placeholder, + object_id_field='object_id', + content_type_field='content_type', + **kwargs + ) + + @property + def checks(self): + return chain(self.default_checks, self._checks) + + def run_checks(self, placeholder, user): + return all(check_(placeholder, user) for check_ in self.checks) diff --git a/cms/models/managers.py b/cms/models/managers.py new file mode 100644 index 00000000..335dc6f1 --- /dev/null +++ b/cms/models/managers.py @@ -0,0 +1,382 @@ +# ruff: noqa: W605 +import functools +import operator + +from django.contrib.contenttypes.models import ContentType +from django.db import models +from django.db.models import Q + +from cms.constants import ROOT_USER_LEVEL +from cms.exceptions import NoPermissionsException +from cms.models.query import PageQuerySet +from cms.utils.compat.warnings import RemovedInDjangoCMS60Warning +from cms.utils.i18n import get_fallback_languages + + +class PageManager(models.Manager): + + def get_queryset(self): + """Change standard model queryset to our own. + """ + return PageQuerySet(self.model) + + # Just some of the queryset methods are implemented here, access queryset + # for more getting more supporting methods. + + def on_site(self, site=None): + return self.get_queryset().on_site(site) + + def get_home(self, site=None): + return self.get_queryset().get_home(site) + + def search(self, q, language=None, current_site_only=True, site=None): + """Simple search function + + Plugins can define a 'search_fields' tuple similar to ModelAdmin classes + """ + from cms.plugin_pool import plugin_pool + + qs = self.get_queryset() + + if site or current_site_only: + qs = qs.on_site(site) + + qt = Q(pagecontent_set__title__icontains=q) + + # find 'searchable' plugins and build query + qp = Q() + plugins = plugin_pool.registered_plugins + for plugin in plugins: + cmsplugin = plugin.model + if not ( + hasattr(cmsplugin, 'search_fields') and hasattr(cmsplugin, 'cmsplugin_ptr') + ): + continue + field = cmsplugin.cmsplugin_ptr.field + related_query_name = field.related_query_name() + if related_query_name and not related_query_name.startswith('+'): + for field in cmsplugin.search_fields: + qp |= Q(**{ + f'pagecontent_set__placeholders__cmsplugin__{related_query_name}__{field}__icontains': q}) + if language: + qt &= Q(pagecontent_set__language=language) + qp &= Q(pagecontent_set__placeholders__cmsplugin__language=language) + + qs = qs.filter(qt | qp) + + return qs.distinct() + + +class WithUserMixin: + """empty mixin adds with_user """ + def with_user(self, user): + return self + + +class PageUrlManager(WithUserMixin, models.Manager): + def get_for_site(self, site, **kwargs): + kwargs['site'] = site + return self.filter(**kwargs) + + +class PageContentManager(WithUserMixin, models.Manager): + def get_title(self, page, language, language_fallback=False): + """ + Gets the latest content for a particular page and language. Falls back + to another language if wanted. + """ + import warnings + + warnings.warn( + "PageContentManager.get_title is deprecated and will be removed in a future release. " + "Please use page.get_page_content() or page.get_admin_content() instead.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + try: + title = self.get(language=language, page=page) + return title + except self.model.DoesNotExist: + if language_fallback: + try: + titles = self.filter(page=page) + fallbacks = get_fallback_languages(language, site_id=page.site_id) + for lang in fallbacks: + for title in titles: + if lang == title.language: + return title + return None + except self.model.DoesNotExist: + pass + else: + raise + return None + + +class ContentAdminQuerySet(models.QuerySet): + def current_content(self, **kwargs): + """If a versioning package is installed, this returns the currently valid content + that matches the filter given in kwargs. Used to find content to be copied, e.g.. + Without versioning every page is current.""" + return self.filter(**kwargs) + + def latest_content(self, **kwargs): + """If a versioning package is installed, returns the latest version that matches the + filter given in kwargs including discarded or unpublished page content. Without versioning + every page content is the latest.""" + return self.filter(**kwargs) + + +class ContentAdminManager(WithUserMixin, models.Manager): + def get_queryset(self): + return ContentAdminQuerySet(self.model, using=self._db) + + def current_content(self, **kwargs): + """Syntactic sugar: admin_manager.current_content()""" + return self.get_queryset().current_content(**kwargs) + + def latest_content(self, **kwargs): + """Syntactic sugar: admin_manager.latest_content()""" + return self.get_queryset().latest_content(**kwargs) + + +class PlaceholderForObjQS(models.QuerySet): + # This Queryset prepopulates the source field cache when the get_for_obj manager is used + # __iter__ is called when the queryset has been evaluated and is iterated + # get prepopulates the cache for any get requests + _source_object = None + + def __init__(self, *args, **kwargs): + self._source_object = kwargs.pop('source_object', self._source_object) + super().__init__(*args, **kwargs) + + def __iter__(self): + if self._fields: + # values_list etc + yield from super().__iter__() + else: + # Placeholder objects + for obj in super().__iter__(): + obj._state.fields_cache["source"] = self._source_object + yield obj + + def get(self, *args, **kwargs): + obj = super().get(*args, **kwargs) + obj._state.fields_cache["source"] = self._source_object + return obj + + def _chain(self): + # Also clone source_object when chaining querysets! + clone = super()._chain() + clone._source_object = self._source_object + return clone + + +class PlaceholderManager(models.Manager): + def get_for_obj(self, obj): + """ + Get all placeholders for given object + """ + content_type = ContentType.objects.get_for_model(obj) + return (PlaceholderForObjQS(source_object=obj, model=self.model, using=self._db, hints=self._hints) + .filter(content_type=content_type, object_id=obj.pk)) + + +################################################################################ +# Permissions +################################################################################ + + +class BasicPagePermissionManager(models.Manager): + """Global page permission manager accessible under objects. + + !IMPORTANT: take care, PagePermissionManager and GlobalPagePermissionManager + both inherit from this manager + """ + + def with_user(self, user): + """Get all objects for given user, also takes look if user is in some + group. + """ + return self.filter(Q(user=user) | Q(group__user=user)) + + def get_with_permission(self, user, site_id, perm): + raise NotImplementedError + + def get_with_add_pages_permission(self, user, site_id): + return self.get_with_permission(user, site_id, 'can_add') + + def get_with_change_pages_permission(self, user, site_id): + return self.get_with_permission(user, site_id, 'can_change') + + def get_with_change_permissions(self, user, site_id): + return self.get_with_permission(user, site_id, 'can_change_permissions') + + def get_with_view_permissions(self, user, site_id): + return self.get_with_permission(user, site_id, 'can_view') + + +class GlobalPagePermissionManager(BasicPagePermissionManager): + + def get_with_site(self, user, site_id): + # if the user has add rights to this site explicitly + this_site = Q(sites__in=[site_id]) + # if the user can add to all sites + all_sites = Q(sites__isnull=True) + return self.with_user(user).filter(this_site | all_sites) + + def get_with_permission(self, user, site_id, perm): + """ + Provide a single point of entry for deciding whether any given global + permission exists. + """ + # if the user has add rights to this site explicitly + this_site = Q(**{perm: True, 'sites__in': [site_id]}) + # if the user can add to all sites + all_sites = Q(**{perm: True, 'sites__isnull': True}) + return self.with_user(user).filter(this_site | all_sites) + + def user_has_permissions(self, user, site_id, perms): + # if the user has add rights to this site explicitly + this_site = Q(sites__in=[site_id]) + # if the user can add to all sites + all_sites = Q(sites__isnull=True) + queryset = self.with_user(user).filter(this_site | all_sites) + queries = [Q(**{perm: True}) for perm in perms] + return queryset.filter(functools.reduce(operator.or_, queries)).exists() + + +class PagePermissionManager(BasicPagePermissionManager): + """Page permission manager accessible under objects. + """ + + def get_with_permission(self, user, site_id, perm): + """ + Provide a single point of entry for deciding whether any given global + permission exists. + """ + query = {perm: True, 'page__site': site_id} + return self.with_user(user).filter(**query) + + def get_with_site(self, user, site_id): + return self.with_user(user).filter(page__site=site_id) + + def user_has_permissions(self, user, site_id, perms): + queryset = self.with_user(user).filter(page__site=site_id) + queries = [Q(**{perm: True}) for perm in perms] + return queryset.filter(functools.reduce(operator.or_, queries)).exists() + + def subordinate_to_user(self, user, site): + r""" + Get all page permission objects on which user/group is lover in + hierarchy then given user and given user can change permissions on them. + + !IMPORTANT, but exclude objects with given user, or any group containing + this user - he can't be able to change his own permissions, because if + he does, and removes some permissions from himself, he will not be able + to add them anymore. + + Example: + A + / \ + user B,E + / \ + C,X D,Y + + Gives permission nodes C,X,D,Y under user, so he can edit + permissions if he haves can_change_permission. + + Example: + A,Y + / \ + user B,E,X + / \ + C,X D,Y + + Gives permission nodes C,D under user, so he can edit, but not + anymore to X,Y, because this users are on the same level or higher + in page hierarchy. (but only if user have can_change_permission) + + Example: + A + / \ + user B,E + / \ \ + C,X D,Y user + / \ + I J,A + + User permissions can be assigned to multiple page nodes, so merge of + all of them is required. In this case user can see permissions for + users C,X,D,Y,I,J but not A, because A user in higher in hierarchy. + + If permission object holds group, this permission object can be visible + to user only if all the group members are lover in hierarchy. If any + of members is higher than given user, this entry must stay invisible. + + If user is superuser, or haves global can_change_permission permissions, + show him everything. + + Result of this is used in admin for page permissions inline. + """ + # get user level + from cms.utils.page_permissions import get_change_permissions_perm_tuples + from cms.utils.permissions import get_user_permission_level + + try: + user_level = get_user_permission_level(user, site) + except NoPermissionsException: + return self.none() + + if user_level == ROOT_USER_LEVEL: + return self.all() + + # get all permissions + from cms.models import PermissionTuple + allow_list = Q() + for perm_tuple in get_change_permissions_perm_tuples(user, site, check_global=False): + allow_list |= PermissionTuple(perm_tuple).allow_list("page") + + # get permission set, but without objects targeting user, or any group + # in which he can be + qs = self.filter( + allow_list, + page__depth__gte=user_level, + ) + qs = qs.exclude(user=user).exclude(group__user=user) + return qs + + def for_page(self, page): + """Returns queryset containing all instances somehow connected to given + page. This includes permissions to page itself and permissions inherited + from higher pages. + + NOTE: this returns just PagePermission instances, to get complete access + list merge return of this function with Global permissions. + """ + # permissions should be managed on the draft page only + + from cms.models import ( + ACCESS_CHILDREN, + ACCESS_DESCENDANTS, + ACCESS_PAGE, + ACCESS_PAGE_AND_CHILDREN, + ACCESS_PAGE_AND_DESCENDANTS, + ) + + paths = page.get_ancestor_paths() + + # Ancestors + query = ( + Q(page__path__in=paths) & (Q(grant_on=ACCESS_DESCENDANTS) | Q(grant_on=ACCESS_PAGE_AND_DESCENDANTS)) + ) + + if page.parent: + # Direct parent + query |= ( + Q(page=page.parent) & (Q(grant_on=ACCESS_CHILDREN) | Q(grant_on=ACCESS_PAGE_AND_CHILDREN)) + ) + query |= Q(page=page) & ( + Q(grant_on=ACCESS_PAGE_AND_DESCENDANTS) | Q(grant_on=ACCESS_PAGE_AND_CHILDREN) | Q(grant_on=ACCESS_PAGE) + ) + return self.filter(query).order_by('page__depth') diff --git a/cms/models/pagemodel.py b/cms/models/pagemodel.py new file mode 100644 index 00000000..25311eba --- /dev/null +++ b/cms/models/pagemodel.py @@ -0,0 +1,1379 @@ +import warnings +from logging import getLogger +from os.path import join + +from django.contrib.auth import get_user_model +from django.contrib.sites.models import Site +from django.db import IntegrityError, connection, models, router, transaction +from django.db.models import Prefetch +from django.db.models.base import ModelState +from django.db.models.constraints import UniqueConstraint +from django.db.models.functions import Concat +from django.forms import model_to_dict +from django.urls import NoReverseMatch, reverse +from django.utils.encoding import force_str +from django.utils.timezone import now +from django.utils.translation import get_language, gettext_lazy as _, override as force_language + +from cms import constants +from cms.models.managers import PageManager, PageUrlManager +from cms.utils import i18n +from cms.utils.compat.warnings import RemovedInDjangoCMS60Warning +from cms.utils.conf import get_cms_setting +from cms.utils.i18n import get_current_language +from cms.utils.mptree import get_tree_base +from cms.utils.page import get_clean_username +from menus.menu_pool import menu_pool + +logger = getLogger(__name__) + + +def _lock_tree_roots(*pages): + # Serializes concurrent URL path updates by taking a row-level lock on the + # tree root(s) of the given pages, which prevents deadlocks on cms_pageurl. + # Locks are acquired in pk order to avoid deadlocks between the locks + # themselves when two roots are involved. + assert connection.in_atomic_block, "_lock_tree_roots requires an active transaction" + pks = sorted({page.get_root().pk for page in pages}) + list(Page.objects.filter(pk__in=pks).order_by("pk").select_for_update()) + + +class AdminCacheDict(dict): + """Dictionary that disallows setting individual items to prevent accidental cache corruption.""" + + def __setitem__(self, key, value): + raise ValueError("Do not set individual items in the admin cache dict. Use the clear_cache method instead.") + + +MP_Node = get_tree_base() + +class Page(MP_Node): + """ + A ``Page`` is the basic unit of site structure in django CMS. The CMS uses a hierarchical page model: each page + stands in relation to other pages as parent, child or sibling. This hierarchy is managed by the `django-treebeard + `_ library. + + A ``Page`` is an abstract entity. It does not have any content associated with it, nor does is provide any slugs to + build a URL. This is part of the model :class:`~cms.models.contentmodels.PageContent` and + :class:`~cms.models.pagemodel.PageUrl` respectively. + """ + + parent = models.ForeignKey( + "self", + on_delete=models.CASCADE, + blank=True, + null=True, + related_name="children", + db_index=True, + ) + site = models.ForeignKey( + Site, + on_delete=models.CASCADE, + verbose_name=_("site"), + related_name="djangocms_pages", + db_index=True, + ) + created_by = models.CharField( + _("created by"), + max_length=constants.PAGE_USERNAME_MAX_LENGTH, + editable=False, + ) + changed_by = models.CharField( + _("changed by"), + max_length=constants.PAGE_USERNAME_MAX_LENGTH, + editable=False, + ) + creation_date = models.DateTimeField(auto_now_add=True) + changed_date = models.DateTimeField(auto_now=True) + + # + # Please use toggle_in_navigation() instead of affecting this property + # directly so that the cms page cache can be invalidated as appropriate. + # + reverse_id = models.CharField( + _("id"), + max_length=40, + db_index=True, + blank=True, + null=True, + help_text=_("A unique identifier that is used with the page_url templatetag for linking to this page"), + ) + navigation_extenders = models.CharField( + _("attached menu"), + max_length=80, + db_index=True, + blank=True, + null=True, + ) + login_required = models.BooleanField( + _("login required"), + default=False, + ) + is_home = models.BooleanField( + editable=False, + db_index=True, + default=False, + ) + application_urls = models.CharField( + _("application"), + max_length=200, + blank=True, + null=True, + db_index=True, + ) + application_namespace = models.CharField( + _("application instance name"), + max_length=200, + blank=True, + null=True, + ) + is_page_type = models.BooleanField( + default=False, + help_text=_("Mark this page as a page type"), + ) + + # Managers + objects = PageManager() + + class Meta: + default_permissions = ["add", "change", "delete"] + permissions = [ + ("view_page", "Can view page"), + ("publish_page", "Can publish page"), + ("edit_static_placeholder", "Can edit static placeholders"), + ] + verbose_name = _("page") + verbose_name_plural = _("pages") + app_label = "cms" + ordering = ["path"] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.urls_cache = {} + #: Internal cache for page urls + self.page_content_cache = {} + #: Internal cache for page content objects visible publicly + self.admin_content_cache = None + #: Internal cache for page content objects visible in the admin (i.e. to staff users.) + #: Might be larger than the page_content_cache + + def __str__(self): + page_content = self.get_admin_content(get_language(), fallback=True) + if page_content: + title = page_content.menu_title or page_content.title + else: + title = _("No available title") + return force_str(title) + + def __repr__(self): + display = f"<{self.__module__}.{self.__class__.__name__} id={self.pk} object at {hex(id(self))}>" + return display + + @property + def node(self): + warnings.warn( + "The `node` has been removed from Page objects. Access the TreeNode attributes directly.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + return self + + @property + def is_branch(self): + return bool(self.numchild) + + def get_ancestor_paths(self): + paths = frozenset(self.path[0:pos] for pos in range(0, len(self.path), self.steplen)[1:]) + return paths + + def add_child(self, **kwargs): + if len(kwargs) == 1 and "instance" in kwargs: + kwargs["instance"].parent = self + else: + kwargs["parent"] = self + return super().add_child(**kwargs) + + def add_sibling(self, pos=None, *args, **kwargs): + if len(kwargs) == 1 and "instance" in kwargs: + kwargs["instance"].parent_id = self.parent_id + else: + kwargs["parent_id"] = self.parent_id + return super().add_sibling(*args, **kwargs) + + def get_cached_ancestors(self): + if self._has_cached_hierarchy(): + return self._ancestors + return [] + + def get_cached_descendants(self): + if self._has_cached_hierarchy(): + return self._descendants + return [] + + def _clear_internal_cache(self): + self.urls_cache = {} + self.page_content_cache = {} + self.admin_content_cache = None + + if hasattr(self, "_prefetched_objects_cache"): + del self._prefetched_objects_cache + + @property + def parent_page(self): + warnings.warn( + "Attribute `parent_page` is deprecated. Instead use the attribute `parent`.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + return self.parent + + def has_valid_url(self, language): + return self.urls.filter(language=language, path__isnull=False).exists() + + def set_as_homepage(self, user=None): + """ + Sets the given page as the homepage. + Updates the url paths for all affected pages. + Returns the old home page (if any). + """ + if user: + changed_by = get_clean_username(user) + else: + changed_by = constants.SCRIPT_USERNAME + + changed_date = now() + + try: + old_home = self.__class__.objects.get( + is_home=True, + site=self.site_id, + ) + except self.__class__.DoesNotExist: + _lock_tree_roots(self) + old_home_tree = [] + else: + _lock_tree_roots(self, old_home) + + old_home.update( + is_home=False, + changed_by=changed_by, + changed_date=changed_date, + ) + old_home_tree = old_home._set_title_root_path() + + self.update( + is_home=True, + changed_by=changed_by, + changed_date=changed_date, + ) + new_home_tree = self._remove_title_root_path() + return (new_home_tree, old_home_tree) + + def _has_cached_hierarchy(self): + return hasattr(self, "_descendants") and hasattr(self, "_ancestors") + + def _set_hierarchy(self, pages, ancestors=None): + if self.is_branch: + self._descendants = [page for page in pages if page.path.startswith(self.path) and page.depth > self.depth] + else: + self._descendants = [] + + if self.is_root(): + self._ancestors = [] + else: + self._ancestors = ancestors + + for child in self._descendants: + if child.depth == self.depth + 1: + child._set_hierarchy(self._descendants, ancestors=([self] + self._ancestors)) + + def _get_path_sql_value(self, base_path=""): + if base_path: + new_path = Concat( + models.Value(base_path), + models.Value("/"), + models.F("slug"), + output_field=models.CharField(), + ) + elif base_path is None: + new_path = None + else: + # the homepage + new_path = models.F("slug") + return new_path + + def _update_url_path(self, language): + base_path = self.parent.get_path(language) if self.parent else "" + new_path = self._get_path_sql_value(base_path) + + ( + PageUrl.objects.filter(language=language, page=self).exclude(managed=False).update(path=new_path) + ) # TODO: Update or create? + + def _update_url_path_recursive(self, language): + """Rebuild the managed URL paths of all descendant pages for + ``language``, level by level: each page's path derives from its + parent's effective path. Unmanaged (overwritten) URLs keep their fixed + path but still serve as the base for their own descendants. + + Costs one SELECT and at most one bulk UPDATE per tree level instead of + two queries per descendant page. + """ + if self.is_leaf() or language not in self.get_languages(): + return + + base_paths = {self.pk: self.get_path(language)} + + while base_paths: + urls = PageUrl.objects.filter(page__parent_id__in=base_paths, language=language).values_list( + "pk", "page_id", "page__parent_id", "slug", "managed", "path" + ) + changed = [] + next_base_paths = {} + for pk, page_id, parent_id, slug, managed, path in urls: + if managed: + base = base_paths[parent_id] + if base is None: + # an unreachable parent makes the page unreachable too + new_path = None + else: + # an empty base means the parent is the home page + new_path = f"{base}/{slug}" if base else slug + if new_path != path: + changed.append(PageUrl(pk=pk, path=new_path)) + next_base_paths[page_id] = new_path + else: + next_base_paths[page_id] = path + if changed: + PageUrl.objects.bulk_update(changed, ["path"]) + base_paths = next_base_paths + + def _set_title_root_path(self): + page_tree = self.__class__.get_tree(self) + page_urls = PageUrl.objects.filter(page__in=page_tree, managed=True, path__isnull=False) + + for language, slug in self.urls.values_list("language", "slug"): + # Update the translations for all descendants of this page + # to include this page's slug as its path prefix + (page_urls.filter(language=language).update(path=Concat(models.Value(slug), models.Value("/"), "path"))) + self.update_urls(language, path=slug) + return page_tree + + def _remove_title_root_path(self): + page_tree = self.__class__.get_tree(self) + page_urls = PageUrl.objects.filter(page__in=page_tree, managed=True, path__isnull=False) + + for language, slug in self.urls.values_list("language", "slug"): + # Use 2 because of 1 indexing plus the fact we need to trim + # the "/" character. + trim_count = len(slug) + 2 + sql_func = models.Func( + models.F("path"), + models.Value(trim_count), + function="substr", + ) + (page_urls.filter(language=language, path__startswith=slug).update(path=sql_func)) + return page_tree + + def is_potential_home(self): + """ + Encapsulates logic for determining if this page is eligible to be set + as `is_home`. This is a public method so that it can be accessed in the + admin for determining whether to enable the "Set as home" menu item. + :return: Boolean + """ + # Only root nodes are eligible for homepage + return not self.is_home and bool(self.is_root()) + + def get_absolute_url(self, language=None, fallback=True): + """Return the absolute URL of the page for the given language, or + ``None`` if the page has no reachable path (e.g. it or an ancestor + is unpublished).""" + if not language: + language = get_current_language() + + with force_language(language): + try: + if self.is_home: + return reverse("pages-root") + path = self.get_path(language, fallback) + return reverse("pages-details-by-slug", kwargs={"slug": path}) if path else None + except NoReverseMatch: + return None + + def set_tree_node(self, site, target=None, position="first-child"): + warnings.warn( + "Method `set_tree_node` is deprecated. Use `add_to_tree` instead.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + self.site = site + self.parent = target + return self.add_to_tree(position=position) + + def add_to_tree(self, position="first-child"): + assert position in ("last-child", "first-child", "left", "right") + + if self.parent is None: + Page.add_root(instance=self) + elif position == "first-child" and self.parent.is_branch: + self.parent.get_first_child().add_sibling(pos="left", instance=self) + elif position in ("last-child", "first-child"): + self.parent.add_child(instance=self) + else: + self.parent.add_sibling(pos=position, instance=self) + + def move_page(self, target_page, position="first-child", user=None): + """ + Called from admin interface when page is moved. Should be used on + all the places which are changing page position. Used like an interface + to django-treebeard. + """ + assert isinstance(target_page, Page), f"{target_page} is not an instance of Page." + inherited_template = self.template == constants.TEMPLATE_INHERITANCE_MAGIC + + # Snapshot before the move: the ancestors protecting this subtree stop + # doing so as soon as its path changes. + inherited_restrictions = self.get_view_restrictions(inherited_only=True) + + if inherited_template and target_page.is_root() and position in ("left", "right"): + # The page is being moved to a root position. + # Explicitly set the inherited template on the titles + # to keep all plugins / placeholders. + template = self.get_template() + self.update_translations(template=template) + + # Don't use a cached node. Always get a fresh one. + self._clear_internal_cache() + + # Runs the SQL updates on the treebeard fields + self.move(target_page, position) + + if position in ("first-child", "last-child"): + self.parent = target_page + else: + # moving relative to sibling + # or to the root of the tree + self.parent = target_page.parent + # Runs the SQL updates on the parent field + self.update(parent=self.parent) + self.refresh_from_db(fields=("path", "depth")) + + # The subtree left the ancestors it inherited its view restrictions + # from, so they have to be materialized on its new root. + self.apply_view_restrictions(inherited_restrictions, user=user) + + # Update the urls for the page being moved and its descendants. + _lock_tree_roots(self) + + languages = self.urls.values_list("language", flat=True) + + for language in languages: + if not self.is_home: + self._update_url_path(language) + self._update_url_path_recursive(language) + self.clear_cache(menu=True) + return self + + def _clear_placeholders(self, language): + from cms.models import CMSPlugin + + placeholders = self.get_placeholders(language) + placeholder_ids = (placeholder.pk for placeholder in placeholders) + plugins = CMSPlugin.objects.filter(placeholder__in=placeholder_ids, language=language) + models.query.QuerySet.delete(plugins) + return placeholders + + def get_view_restrictions(self, inherited_only=False): + """Snapshot the ``can_view`` grants that currently protect this page. + + Each entry is a ``(user_id, group_id, grant_on)`` tuple whose scope is + expressed relative to *this* page: a grant inherited from an ancestor + becomes ``ACCESS_PAGE_AND_DESCENDANTS`` when it also covers what is + below this page, and ``ACCESS_PAGE`` when it stops here. The page's own + rows keep their own scope. + """ + from cms.models import ACCESS_PAGE, ACCESS_PAGE_AND_DESCENDANTS, PagePermission + from cms.models.permissionmodels import MASK_DESCENDANTS + + if not get_cms_setting("PERMISSION"): + return [] + + restrictions = [ + ( + permission.user_id, + permission.group_id, + ACCESS_PAGE_AND_DESCENDANTS if permission.grant_on & MASK_DESCENDANTS else ACCESS_PAGE, + ) + for permission in PagePermission.objects.for_page(self).filter(can_view=True) + if permission.page_id != self.pk + ] + + if not inherited_only: + restrictions += [ + (permission.user_id, permission.group_id, permission.grant_on) + for permission in self.pagepermission_set.filter(can_view=True) + ] + return restrictions + + def apply_view_restrictions(self, restrictions, user=None): + """Recreate ``restrictions`` (from ``get_view_restrictions``) on this page. + + Used when a page leaves the subtree its view restrictions came from: the + ancestors that protected it no longer do, so their grants have to be + materialized here. Only ``can_view`` is carried over -- the editing + privileges attached to the original rows are not privileges of the new + location. Grants the page already inherits at its new position with at + least the same scope are skipped, so repeated moves do not pile up + redundant rows. + """ + from cms.cache.permissions import clear_permission_cache + from cms.models import PagePermission + from cms.models.permissionmodels import MASK_DESCENDANTS + from cms.utils.permissions import clear_permission_lru_caches + + if not restrictions or not get_cms_setting("PERMISSION"): + return [] + + def scope(grant_on): + return 2 if grant_on & MASK_DESCENDANTS else 1 + + covered = {} + for permission in PagePermission.objects.for_page(self).filter(can_view=True): + audience = (permission.user_id, permission.group_id) + covered[audience] = max(covered.get(audience, 0), scope(permission.grant_on)) + + new_permissions = [ + PagePermission( + page=self, + user_id=user_id, + group_id=group_id, + grant_on=grant_on, + **{flag: flag == "can_view" for flag in PagePermission.get_all_permissions()}, + ) + for user_id, group_id, grant_on in restrictions + if scope(grant_on) > covered.get((user_id, group_id), 0) + ] + + if new_permissions: + PagePermission.objects.bulk_create(new_permissions) + # bulk_create does not emit the permission signals. + clear_permission_cache() + if user is not None: + clear_permission_lru_caches(user) + transaction.on_commit(clear_permission_cache) + return new_permissions + + def copy( + self, + site, + parent_page=None, + parent_node=None, + language=None, + translations=True, + permissions=False, + extensions=True, + user=None, + ): + from cms.models import PageContent + from cms.utils.page import get_available_slug + + assert parent_page is None or isinstance(parent_page, Page), f"{parent_page} is not an instance of Page." + assert isinstance(user, get_user_model()), f"{user} is not an instance of User." + + if parent_node is not None: + warnings.warn( + "Argument `parent_node` is deprecated. Use `parent_page` instead.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + parent_page = parent_page or parent_node + + if parent_page: + new_page = parent_page.add_child(site=site, login_required=self.login_required) + else: + new_page = Page.add_root(site=site, login_required=self.login_required) + + new_page._state = ModelState() + new_page._clear_internal_cache() + + if language and translations: + translations = self.pagecontent_set(manager="admin_manager").filter(language=language) + elif translations: + translations = self.pagecontent_set(manager="admin_manager") + else: + translations = self.pagecontent_set(manager="admin_manager").none() + translations = translations.prefetch_related("placeholders") + + # copy titles of this page + for title in translations.current_content(): + new_title = model_to_dict(title) + new_title.pop("id", None) # No PK + new_title["page"] = new_page + + if parent_page: + base = parent_page.get_path(title.language) + path = f"{base}/{title.slug}" if base else title.slug + else: + base = "" + path = title.slug + + new_title["slug"] = get_available_slug(site, path, title.language) + if title.overwrite_url: + new_title["overwrite_url"] = "{}/{}".format(base, new_title["slug"]) if base else new_title["slug"] + new_title = PageContent.objects.with_user(user).create(**new_title) + if new_title.is_public(): + # The page URL is derived from public content only. With a + # versioning package installed the copy is created as a draft + # and gets its URL on first publish. + new_page.update_urls_from_content(new_title.language) + + for placeholder in title.placeholders.all(): + # copy the placeholders (and plugins on those placeholders!) + new_placeholder = new_title.placeholders.create( + slot=placeholder.slot, + default_width=placeholder.default_width, + ) + placeholder.copy_plugins(new_placeholder, language=new_title.language) + new_page.page_content_cache[new_title.language] = new_title + + if extensions: + from cms.extensions import extension_pool + + extension_pool.copy_extensions(self, new_page) + + # copy permissions if requested + if permissions and get_cms_setting("PERMISSION"): + permissions = self.pagepermission_set.iterator() + permissions_new = [] + + for permission in permissions: + permission.pk = None + permission.page = new_page + permissions_new.append(permission) + + if permissions_new: + from cms.cache.permissions import clear_permission_cache + from cms.utils.permissions import clear_permission_lru_caches + + new_page.pagepermission_set.bulk_create(permissions_new) + # bulk_create does not emit the permission signals. + clear_permission_cache() + clear_permission_lru_caches(user) + # A concurrent request can rebuild the cache before these rows commit. + transaction.on_commit(clear_permission_cache) + return new_page + + def copy_with_descendants( + self, target_page=None, target_node=None, position=None, copy_permissions=True, target_site=None, user=None + ): + """ + Copy a page [ and all its descendants to a new location ] + """ + from cms.models import PageContent + + if target_node is not None: + warnings.warn( + "Argument `parent_node` is deprecated. Use `parent_page` instead.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + target_page = target_page or target_node + + if position in ("first-child", "last-child"): + parent_page = target_page + elif target_page: + parent_page = target_page.parent + else: + parent_page = None + + if target_site is None: + target_site = parent_page.site if parent_page else self.site + + # Evaluate the descendants queryset BEFORE copying the page. + # Otherwise, if the page is copied and pasted on itself, it will duplicate. + descendants = list( + self.get_descendant_pages().prefetch_related( + "urls", + Prefetch("pagecontent_set", queryset=PageContent.admin_manager.all()), + ) + ) + if copy_permissions: + # Snapshot paths before inserting the copy can move source nodes. + inherited_restrictions = self.get_view_restrictions(inherited_only=True) + new_root_page = self.copy(target_site, parent_page=parent_page, permissions=copy_permissions, user=user) + + if target_page and position in ("first-child"): + # target page is a parent and user has requested to + # insert the new page as its first child + new_root_page.move(target_page, position) + new_root_page.refresh_from_db(fields=("path", "depth")) + + if target_page and position in ("left", "last-child"): + # target page is a sibling + new_root_page.move(target_page, position) + new_root_page.refresh_from_db(fields=("path", "depth")) + + pages_by_id = {self.id: new_root_page} + for page in descendants: + parent = pages_by_id[page.parent_id] + pages_by_id[page.id] = page.copy( + target_site, parent_page=parent, translations=True, permissions=copy_permissions, user=user + ) + + if copy_permissions: + # Ancestors outside the copied subtree will no longer protect it. + new_root_page.apply_view_restrictions(inherited_restrictions, user=user) + return new_root_page + + def delete(self, *args, **kwargs): + using = self._state.db or router.db_for_write(Page, instance=self) + Page.get_tree(self).using(using).delete_fast() + + if self.parent_id: + Page.objects.using(using).filter(id=self.parent_id).update( + numchild=models.F("numchild") - 1 + ) + self.clear_cache(menu=True) + + def delete_translations(self, language=None): + if language is None: + languages = self.get_languages() + else: + languages = [language] + + self.pagecontent_set(manager="admin_manager").filter(language__in=languages).delete() + + def save(self, **kwargs): + if self.reverse_id == "": + self.reverse_id = None + if self.application_namespace == "": + self.application_namespace = None + + created = not bool(self.pk) + from cms.utils.permissions import get_current_user_name + + self.changed_by = get_current_user_name() + if created: + self.created_by = self.changed_by + + super().save(**kwargs) + + def update(self, refresh=False, **data): + cls = self.__class__ + cls.objects.filter(pk=self.pk).update(**data) + + if refresh: + return self.reload() + else: + for field, value in data.items(): + setattr(self, field, value) + return + + def update_translations(self, language=None, **data): + if language: + translations = self.pagecontent_set.filter(language=language) + else: + translations = self.pagecontent_set.all() + return translations.update(**data) + + def has_translation(self, language): + return self.pagecontent_set.filter(language=language).exists() + + def clear_cache(self, language=None, menu=False, placeholder=False): + from cms.cache import invalidate_cms_page_cache + + if get_cms_setting("PAGE_CACHE"): + # Clears all the page caches + invalidate_cms_page_cache() + + if placeholder and get_cms_setting("PLACEHOLDER_CACHE"): + assert language, "language is required when clearing placeholder cache" + + placeholders = self.get_placeholders(language) + + for placeholder_instance in placeholders: + placeholder_instance.clear_cache(language, site_id=self.site_id) + + if menu: + # Clears all menu caches for this page's site + menu_pool.clear(site_id=self.site_id) + + def get_child_pages(self): + return self.get_children().order_by("path") + + def get_ancestor_pages(self): + return self.get_ancestors().order_by("path") + + def get_descendant_pages(self): + return self.get_descendants().order_by("path") + + def get_root(self): + return self.__class__.objects.using(self._state.db).get( + path=self.path[0 : self.steplen] + ) + + def get_parent_page(self): + warnings.warn( + "Method `get_parent_page()` is deprecated. Instead use the `parent` attribute.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + return self.parent + + @property + def languages(self): + warnings.warn( + "Attribute `languages` is deprecated. Use `get_languages` instead.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + return ",".join(self.get_languages()) + + def get_languages(self, admin_manager=True): + """Returns available languages for the page. This is potentially costly.""" + if admin_manager: + if self.admin_content_cache is None: + self.set_admin_content_cache() + return list(self.admin_content_cache.keys()) + if not self.page_content_cache: + self._get_page_content_cache(get_language(), fallback=False, force_reload=False) + return list(self.page_content_cache.keys()) + + def remove_language(self, language): + warnings.warn( + "Method `remove_language` is deprecated and has no effect any more.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + + def update_languages(self, languages): + warnings.warn( + "Method `update_languages` is deprecated and has no effect any more.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + + def get_published_languages(self): + warnings.warn( + "Method `get_published_languages` is deprecated. Use `get_languages(admin_manager=False)` instead.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + return self.get_languages(admin_manager=False) + + def set_translations_cache(self): + warnings.warn( + "Method `set_translations_cache` is deprecated. Use `get_content_obj` instead. " + "For admin views use `set_admin_content_cache` instead.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + for translation in self.pagecontent_set.all(): + self.page_content_cache.setdefault(translation.language, translation) + + def set_admin_content_cache(self): + self.admin_content_cache = AdminCacheDict() + for translation in self.pagecontent_set(manager="admin_manager").latest_content().all(): + self.admin_content_cache.setdefault(translation.language, translation) + + def get_admin_content(self, language, fallback=False): + from cms.models.contentmodels import EmptyPageContent + + if self.admin_content_cache is None: + self.set_admin_content_cache() + page_content = self.admin_content_cache.get(language, EmptyPageContent(language=language, page=self)) + if not page_content and fallback: + for lang in i18n.get_fallback_languages(language, site_id=self.site_id): + page_content = self.admin_content_cache.get(lang) + if page_content: + return page_content + page_content = EmptyPageContent(language=language, page=self) + if fallback == "force": + # Try any page content object + for item in self.admin_content_cache.values(): + if item: + return item + return page_content + + def get_path_for_slug(self, slug, language): + if self.is_home: + return "" + + if self.parent: + if self.parent.is_home: + # children of the home page live directly at the root + path = slug + else: + base = self.parent.get_path(language, fallback=True) + # a non-home parent without a path (e.g. unpublished) means + # this page has no reachable path either + path = f"{base}/{slug}" if base else None + else: + path = slug + return path + + def get_url_data(self, slug, overwrite_url, language): + """Derive the :class:`~cms.models.pagemodel.PageUrl` fields (``slug``, + ``path``, ``managed``) from an authored slug and overwrite URL.""" + if overwrite_url and not self.is_home: + path = overwrite_url.strip("/") + else: + # the home page always lives at the root path + path = self.get_path_for_slug(slug, language) + return { + "slug": slug, + "path": path, + "managed": not bool(overwrite_url), + } + + def get_url(self, language): + return self.get_urls().get(language=language) + + def get_urls(self): + return self.urls.all() + + def update_urls(self, language=None, **data): + if language: + page_urls_qs = self.get_urls().filter(language=language) + else: + page_urls_qs = self.get_urls().all() + + if "path" in data and data["path"] is not None: + new_path = data["path"] + languages_to_check = ( + [language] if language else list(page_urls_qs.values_list("language", flat=True).distinct()) + ) + + for lang in languages_to_check: + # Check if the new path exists for this language on another page on the same site + existing_url_collision = ( + PageUrl.objects.filter( + language=lang, + path=new_path, + site=self.site_id, + ) + .exclude(pk__in=page_urls_qs.filter(language=lang).values("pk")) + .exists() + ) + + if existing_url_collision: + page_pks_being_updated = list( + page_urls_qs.filter(language=lang).values_list("page__pk", flat=True) + ) + raise IntegrityError( + f"Cannot update URL path. A page URL with path='{new_path}' " + f"and language='{lang}' already exists for another page " + f"on the same site (not page(s): {page_pks_being_updated})." + ) + + # If no collision detected, proceed with the update + return page_urls_qs.update(**data) + + def update_urls_from_content(self, language): + """Derive this page's :class:`~cms.models.pagemodel.PageUrl` for ``language`` + from the publicly visible :class:`~cms.models.contentmodels.PageContent` + object, then update the paths of all descendant pages. + + The slug and overwrite URL are authored on the page content object. + ``PageUrl`` is a routing table that must only ever reflect published + content: without a versioning package every saved content is public and + this runs on every save; with a versioning package installed it must be + called when a version is published or unpublished. + + When no public content exists, the URL's path is set to ``None`` so the + page stops resolving while the slug stays reserved for the page. + + Raises ``IntegrityError`` if the derived path collides with the URL of + another page on the same site. + """ + from cms.models import PageContent + + content = PageContent.objects.filter(page=self, language=language).first() + url = self.urls.filter(language=language).first() + + if content is None: + if url is None or url.path is None: + return + self.urls.filter(language=language).update(path=None) + else: + data = self.get_url_data(content.slug, content.overwrite_url, language) + path = data["path"] + if url is not None: + if (url.slug, url.path, url.managed) == (data["slug"], data["path"], data["managed"]): + # the URL already reflects the content; descendant paths derive + # from this page's path, so they are up to date as well + return + self.update_urls(language, **data) # includes the path collision check + else: + collision = ( + path is not None + and PageUrl.objects.filter(language=language, path=path, site=self.site_id).exists() + ) + if collision: + raise IntegrityError( + f"Cannot create URL. A page URL with path='{path}' and " + f"language='{language}' already exists for another page on the same site." + ) + self.urls.create(page=self, site_id=self.site_id, language=language, **data) + + self.urls_cache = {} + self._update_url_path_recursive(language) + + def get_fallbacks(self, language): + return i18n.get_fallback_languages(language, site_id=self.site_id) + + # ## PageContent object access + + def get_content_obj(self, language=None, fallback=True, force_reload=False): + """Helper function for accessing wanted / current title. + If wanted title doesn't exist, EmptyPageContent instance will be returned. + """ + language = self._get_page_content_cache(language, fallback, force_reload) + if language in self.page_content_cache: + return self.page_content_cache[language] + from cms.models import EmptyPageContent + + return EmptyPageContent(language=language, page=self) + + def get_page_content_obj_attribute(self, attrname, language=None, fallback=True, force_reload=False): + """Helper function for getting attribute or None from wanted/current page content.""" + try: + attribute = getattr(self.get_content_obj(language, fallback, force_reload), attrname) + return attribute + except AttributeError: + return None + + def get_url_obj(self, language, fallback=True): + """Get the path of the page depending on the given language""" + languages = [language] + if fallback: + languages.extend(self.get_fallbacks(language)) + + if self.urls_cache is None or language not in self.urls_cache: + # `get_page_from_request` will fill the cache only for the current language + # Here, we fully fill it and try again + self.urls_cache = {url.language: url for url in self.urls.all() if url.language in languages} + + return next((self.urls_cache[lang] for lang in languages if lang in self.urls_cache), None) + + def get_path(self, language, fallback=True): + url = self.get_url_obj(language, fallback) + if url: + return url.path + return None + + def get_slug(self, language, fallback=True): + url = self.get_url_obj(language, fallback) + if url: + return url.slug + return None + + def get_title(self, language=None, fallback=True, force_reload=False): + """ + get the title of the page depending on the given language + """ + return self.get_page_content_obj_attribute("title", language, fallback, force_reload) + + def get_menu_title(self, language=None, fallback=True, force_reload=False): + """ + get the menu title of the page depending on the given language + """ + menu_title = self.get_page_content_obj_attribute("menu_title", language, fallback, force_reload) + if not menu_title: + return self.get_title(language, True, force_reload) + return menu_title + + def get_placeholders(self, language: str, admin_manager: bool = False) -> models.QuerySet: + from cms.models import PageContent, Placeholder + + if admin_manager: + # Use the admin manager to get the current content (i.e. potentially not yet published content) + page_content = PageContent.admin_manager.current_content().get(language=language, page=self) + else: + page_content = PageContent.objects.get(language=language, page=self) + return Placeholder.objects.get_for_obj(page_content) + + def get_changed_date(self, language=None, fallback=True, force_reload=False): + """ + get when this page was last updated + """ + return self.get_page_content_obj_attribute("changed_date", language, fallback, force_reload) + + def get_changed_by(self, language=None, fallback=True, force_reload=False): + """ + get user who last changed this page + """ + return self.get_page_content_obj_attribute("changed_by", language, fallback, force_reload) + + def get_page_title(self, language=None, fallback=True, force_reload=False): + """ + get the page title of the page depending on the given language + """ + page_title = self.get_page_content_obj_attribute("page_title", language, fallback, force_reload) + + if not page_title: + return self.get_title(language, True, force_reload) + return page_title + + def get_meta_description(self, language=None, fallback=True, force_reload=False): + """ + get content for the description meta tag for the page depending on the given language + """ + return self.get_page_content_obj_attribute("meta_description", language, fallback, force_reload) + + def get_application_urls(self, language=None, fallback=True, force_reload=False): + """ + get application urls conf for application hook + """ + return self.application_urls + + def get_redirect(self, language=None, fallback=True, force_reload=False): + """ + get redirect + """ + return self.get_page_content_obj_attribute("redirect", language, fallback, force_reload) + + def _get_page_content_cache(self, language, fallback, force_reload): + """ + Sets the internal page object cache for page content objects available to the general user. + It optionally respe + """ + + def get_fallback_language(page, language): + fallback_langs = i18n.get_fallback_languages(language, site_id=page.site_id) + for lang in fallback_langs: + if page.page_content_cache.get(lang): + return lang + + if not language: + language = get_language() + + # Update page_content_cache from _prefetched_objects_cache if available + prefetch_cache = getattr(self, "_prefetched_objects_cache", {}) + cached_page_content = prefetch_cache.get("pagecontent_set", []) + for page_content in cached_page_content: + self.page_content_cache[page_content.language] = page_content + + # Reload if explicitly needed or language not in content cache + if force_reload or language not in self.page_content_cache: + for page_content in self.pagecontent_set.all(): + self.page_content_cache[page_content.language] = page_content + + if self.page_content_cache.get(language): + return language + + use_fallback = all( + [fallback, not self.page_content_cache.get(language), get_fallback_language(self, language)] + ) + if use_fallback: + # language can be in the cache but might be an EmptyPageContent instance + return get_fallback_language(self, language) + return language + + @property + def template(self): + return self.get_page_content_obj_attribute("template") + + @property + def soft_root(self): + return self.get_page_content_obj_attribute("soft_root") + + def get_template(self, language=None, fallback=True, force_reload=False): + content = self.get_content_obj(language, fallback, force_reload) + if content: + return content.get_template(app_hooks=False) + return get_cms_setting("TEMPLATES")[0][0] if get_cms_setting("TEMPLATES") else "" + + def get_template_name(self): + """ + get the textual name (2nd parameter in get_cms_setting('TEMPLATES')) + of the template of this page or of the nearest + ancestor. failing to find that, return the name of the default template. + """ + template = self.get_template() + for t in get_cms_setting("TEMPLATES"): + if t[0] == template: + return t[1] + return _("default") + + def has_view_permission(self, user): + from cms.utils.page_permissions import user_can_view_page + + return user_can_view_page(user, page=self) + + def has_view_restrictions(self, site): + from cms.models import PagePermission + + if get_cms_setting("PERMISSION"): + restrictions = PagePermission.objects.for_page(self).filter(can_view=True) + return restrictions.exists() + return False + + def has_add_permission(self, user): + """ + Has user ability to add page under current page? + """ + from cms.utils.page_permissions import user_can_add_subpage + + return user_can_add_subpage(user, self) + + def has_change_permission(self, user): + from cms.utils.page_permissions import user_can_change_page + + return user_can_change_page(user, page=self) + + def has_delete_permission(self, user): + from cms.utils.page_permissions import user_can_delete_page + + return user_can_delete_page(user, page=self) + + def has_delete_translation_permission(self, user, language): + from cms.utils.page_permissions import user_can_delete_page_translation + + return user_can_delete_page_translation(user, page=self, language=language) + + def has_publish_permission(self, user): + from cms.utils.page_permissions import user_can_publish_page + + return user_can_publish_page(user, page=self) + + def has_advanced_settings_permission(self, user): + from cms.utils.page_permissions import user_can_change_page_advanced_settings + + return user_can_change_page_advanced_settings(user, page=self) + + def has_change_permissions_permission(self, user): + """ + Has user ability to change permissions for current page? + """ + from cms.utils.page_permissions import user_can_change_page_permissions + + return user_can_change_page_permissions(user, page=self) + + def has_move_page_permission(self, user): + """Has user ability to move current page?""" + from cms.utils.page_permissions import user_can_move_page + + return user_can_move_page(user, page=self) + + def get_media_path(self, filename): + """ + Returns path (relative to MEDIA_ROOT/MEDIA_URL) to directory for storing + page-scope files. This allows multiple pages to contain files with + identical names without namespace issues. Plugins such as Picture can + use this method to initialise the 'upload_to' parameter for File-based + fields. For example: + image = models.ImageField( + _("image"), upload_to=CMSPlugin.get_media_path) + + where CMSPlugin.get_media_path calls self.page.get_media_path + + This location can be customised using the CMS_PAGE_MEDIA_PATH setting + """ + return join(get_cms_setting("PAGE_MEDIA_PATH"), "%d" % self.pk, filename) + + def reload(self): + """ + Reload a page from the database + """ + return self.__class__.objects.get(pk=self.pk) + + def rescan_placeholders(self, language): + return self.get_content_obj(language=language).rescan_placeholders() + + def get_declared_placeholders(self, language=None, fallback=True, force_reload=False): + from cms.utils.placeholder import get_declared_placeholders_for_obj + + content = self.get_content_obj(language, fallback, force_reload) + if content: + return get_declared_placeholders_for_obj(content) + return [] + + def get_xframe_options(self, language=None, fallback=True, force_reload=False): + content = self.get_content_obj(language, fallback, force_reload) + if content: + return content.get_xframe_options() + + def get_soft_root(self, language=None, fallback=True, force_reload=False): + return self.get_page_content_obj_attribute("soft_root", language, fallback, force_reload) + + def get_in_navigation(self, language=None, fallback=True, force_reload=False): + return self.get_page_content_obj_attribute("in_navigation", language, fallback, force_reload) + + def get_limit_visibility_in_menu(self, language=None, fallback=True, force_reload=False): + return self.get_page_content_obj_attribute("limit_visibility_in_menu", language, fallback, force_reload) + + +class PageUrl(models.Model): + slug = models.SlugField(_("slug"), max_length=255, db_index=True) + path = models.CharField(_("Path"), max_length=255, db_index=True, null=True) + language = models.CharField(_("language"), max_length=15, db_index=True) + page = models.ForeignKey( + Page, + on_delete=models.CASCADE, + verbose_name=_("page"), + related_name="urls", + ) + #: Denormalized from ``page.site`` so path uniqueness per site can be + #: enforced by the database. + site = models.ForeignKey( + Site, + on_delete=models.CASCADE, + verbose_name=_("site"), + related_name="djangocms_urls", + editable=False, + ) + managed = models.BooleanField(default=False) + objects = PageUrlManager() + + class Meta: + app_label = "cms" + default_permissions = [] + constraints = [ + UniqueConstraint(fields=["page", "language"], name="unique_together_page_language"), + # NULL paths (unreachable pages) are distinct on all supported + # backends, so any number of them may coexist. + UniqueConstraint(fields=["site", "language", "path"], name="unique_site_language_path"), + ] + + def __str__(self): + return f"{self.path or self.slug} ({self.language})" + + def save(self, *args, **kwargs): + if self.site_id is None: + self.site_id = self.page.site_id + super().save(*args, **kwargs) + + def get_absolute_url(self, language=None, fallback=True): + if not language: + language = get_current_language() + + with force_language(language): + try: + if self.path == "": + return reverse("pages-root") + return reverse("pages-details-by-slug", kwargs={"slug": self.path}) + except NoReverseMatch: + return None + + def get_path_for_base(self, base_path=""): + old_base, sep, slug = self.path.rpartition("/") + return f"{base_path}/{slug}" if base_path else slug + + +class PageType(Page): + class Meta: + proxy = True + default_permissions = [] + + @classmethod + def get_root_page(cls, site): + pages = Page.objects.on_site(site).filter( + depth=1, + is_page_type=True, + ) + return pages.first() + + def is_potential_home(self): + return False diff --git a/cms/models/permissionmodels.py b/cms/models/permissionmodels.py new file mode 100644 index 00000000..f49a6a2c --- /dev/null +++ b/cms/models/permissionmodels.py @@ -0,0 +1,382 @@ +from django.apps import apps +from django.conf import settings +from django.contrib.auth.models import Group, UserManager +from django.contrib.sites.models import Site +from django.core.exceptions import ImproperlyConfigured, ValidationError +from django.db import models +from django.db.models import Q +from django.utils.encoding import force_str +from django.utils.translation import gettext_lazy as _ + +from cms.models import Page +from cms.models.managers import ( + GlobalPagePermissionManager, + PagePermissionManager, +) + +# Cannot use contrib.auth.get_user_model() at compile time. +user_app_name, user_model_name = settings.AUTH_USER_MODEL.rsplit('.', 1) +User = None +try: + User = apps.get_registered_model(user_app_name, user_model_name) +except KeyError: + pass +if User is None: + raise ImproperlyConfigured( + "You have defined a custom user model %s, but the app %s is not " + "in settings.INSTALLED_APPS" % (settings.AUTH_USER_MODEL, user_app_name) + ) + + +# NOTE: those are not just numbers!! we will do binary AND on them, +# so pay attention when adding/changing them, or MASKs.. + +#: Access to the page itself +ACCESS_PAGE = 1 + +#: Access to immediate children (1 level) +ACCESS_CHILDREN = 2 + +#: Access to page itself and immediate children (1 level) +ACCESS_PAGE_AND_CHILDREN = 3 + +#: Access to all children (first level and also their children) +ACCESS_DESCENDANTS = 4 + +#: Access to page itself and all children (first level and also their children) +ACCESS_PAGE_AND_DESCENDANTS = 5 + +# binary masks for ACCESS permissions +MASK_PAGE = 1 +MASK_CHILDREN = 2 +MASK_DESCENDANTS = 4 + +ACCESS_CHOICES = ( + (ACCESS_PAGE, _('Current page')), + (ACCESS_CHILDREN, _('Page children (immediate)')), + (ACCESS_PAGE_AND_CHILDREN, _('Page and children (immediate)')), + (ACCESS_DESCENDANTS, _('Page descendants')), + (ACCESS_PAGE_AND_DESCENDANTS, _('Page and descendants')), +) + +#: Validation messages raised when a permission is granted without the +#: prerequisite "can edit" (``can_change``) permission. Defined once here so the +#: model's ``clean()`` and the admin ``PagePermissionInlineAdminForm`` cannot +#: drift apart. Each value is a complete sentence (rather than assembled from +#: translated fragments) so translators receive the whole string and per-language +#: word order is preserved. Keys are the permission flags that trigger them. +EDIT_PERMISSION_REQUIRED_MESSAGES = { + "can_add": _( + "Users can't create a page without also being able to change it. " + "Please also enable 'Can edit'." + ), + "can_delete": _( + "Users can't delete a page without also being able to change it. " + "Please also enable 'Can edit'." + ), + "can_publish": _( + "Users can't publish a page without also being able to change it. " + "Please also enable 'Can edit'." + ), + "can_change_advanced_settings": _( + "Users can't change a page's advanced settings without also being able " + "to change it. Please also enable 'Can edit'." + ), + "can_change_permissions": _( + "Users can't change a page's permissions without also being able to " + "change it. Please also enable 'Can edit'." + ), + "can_move_page": _( + "Users can't move a page without also being able to change it. " + "Please also enable 'Can edit'." + ), +} + + +class AbstractPagePermission(models.Model): + """Abstract page permissions + """ + + # who: + user = models.ForeignKey( + settings.AUTH_USER_MODEL, + on_delete=models.CASCADE, + verbose_name=_("user"), + blank=True, + null=True, + ) + group = models.ForeignKey( + Group, + on_delete=models.CASCADE, + verbose_name=_("group"), + blank=True, + null=True, + ) + + # what: + can_change = models.BooleanField(_("can edit"), default=True) + can_add = models.BooleanField(_("can add"), default=True) + can_delete = models.BooleanField(_("can delete"), default=True) + can_publish = models.BooleanField(_("can publish"), default=True) + can_change_advanced_settings = models.BooleanField(_("can change advanced settings"), default=False) + can_change_permissions = models.BooleanField( + _("can change permissions"), + default=False, + help_text=_("Allows this user to grant and revoke page permissions for other users."), + ) + can_move_page = models.BooleanField(_("can move"), default=True) + can_view = models.BooleanField( + _("can view restricted pages"), + default=False, + help_text=_( + "Grants frontend view access. Note: as soon as any user or group is " + "given view access to a page, that page becomes restricted — only " + "users/groups with view access can then see it on the frontend." + ), + ) + + class Meta: + abstract = True + app_label = 'cms' + + def clean(self): + super().clean() + + if not self.user and not self.group: + raise ValidationError(_('Please select user or group.')) + + if self.can_change: + return + + for flag, message in EDIT_PERMISSION_REQUIRED_MESSAGES.items(): + if getattr(self, flag): + raise ValidationError(message) + + @property + def audience(self): + """Return audience by priority, so: All or User, Group + """ + targets = filter(lambda item: item, (self.user, self.group,)) + return ", ".join([force_str(t) for t in targets]) or 'No one' + + def save(self, *args, **kwargs): + if not self.user and not self.group: + # don't allow `empty` objects + raise TypeError(_('Please select user or group.')) + return super().save(*args, **kwargs) + + def get_configured_actions(self): + actions = [action for action in self.get_permissions_by_action() + if self.has_configured_action(action)] + return actions + + def has_configured_action(self, action): + permissions = self.get_permissions_by_action()[action] + return all(getattr(self, perm) for perm in permissions) + + @classmethod + def get_all_permissions(cls): + perms = [ + 'can_add', + 'can_change', + 'can_delete', + 'can_publish', + 'can_change_advanced_settings', + 'can_change_permissions', + 'can_move_page', + 'can_view', + ] + return perms + + @classmethod + def get_permissions_by_action(cls): + # Maps an action to the required flags on the + # PagePermission model or GlobalPagePermission model + permissions_by_action = { + 'add_page': ['can_add', 'can_change'], + 'change_page': ['can_change'], + 'change_page_advanced_settings': ['can_change', 'can_change_advanced_settings'], + 'change_page_permissions': ['can_change', 'can_change_permissions'], + 'delete_page': ['can_change', 'can_delete'], + 'delete_page_translation': ['can_change', 'can_delete'], + 'publish_page': ['can_change', 'can_publish'], + 'move_page': ['can_change', 'can_move_page'], + 'view_page': ['can_view'], + } + return permissions_by_action + + +class GlobalPagePermission(AbstractPagePermission): + """Permissions for all pages (global). + """ + can_recover_page = models.BooleanField( + verbose_name=_("can recover pages"), + default=True, + help_text=_("can recover any deleted page"), + ) + sites = models.ManyToManyField( + to=Site, + blank=True, + help_text=_('If none selected, user haves granted permissions to all sites.'), + verbose_name=_('sites'), + ) + + objects = GlobalPagePermissionManager() + + class Meta: + verbose_name = _('Page global permission') + verbose_name_plural = _('Pages global permissions') + app_label = 'cms' + + def __str__(self): + return "%s :: GLOBAL" % self.audience + + +class PermissionTuple(tuple): + """Represents a permission tuple containing grant level and permission path. + + This tuple subclass provides utility methods for checking if a page path + matches the permission scope defined by the grant level and path. + + :ivar [0] grant_on: The grant level (ACCESS_PAGE, ACCESS_CHILDREN, etc.) + :ivar [1] perm_path: The page path associated with this permission + """ + def contains(self, path: str, steplen: int = Page.steplen) -> bool: + """Check if the given path is contained within this permission's scope. + + :param path: The page path to check + :type path: str + :param steplen: The step length used for path hierarchy (default: Page.steplen) + :type steplen: int + :return: True if the path is contained within this permission's scope + :rtype: bool + """ + grant_on, perm_path = self + if grant_on == ACCESS_PAGE: + return path == perm_path + elif grant_on == ACCESS_CHILDREN: + return path.startswith(perm_path) and len(path) == len(perm_path) + steplen + elif grant_on == ACCESS_DESCENDANTS: + return path.startswith(perm_path) and len(path) > len(perm_path) + elif grant_on == ACCESS_PAGE_AND_DESCENDANTS: + return path.startswith(perm_path) + elif grant_on == ACCESS_PAGE_AND_CHILDREN: + return path.startswith(perm_path) and len(path) <= len(perm_path) + steplen + return False + + def allow_list(self, filter: str = "", steplen: int = Page.steplen) -> Q: + """Generate a Django Q object for filtering pages based on permission scope. + + :param filter: The field name prefix for the query filter (default: "") + :type filter: str + :param steplen: The step length used for path hierarchy (default: Page.steplen) + :type steplen: int + :return: A Q object representing the page filter for this permission's scope + :rtype: Q + """ + if filter != "": + filter = f"{filter}__" + grant_on, path = self + depth = len(path) // steplen + if grant_on == ACCESS_PAGE: + return Q(**{f"{filter}path": path}) + elif grant_on == ACCESS_CHILDREN: + return Q(**{f"{filter}path__startswith": path, f"{filter}depth": depth + 1}) + elif grant_on == ACCESS_DESCENDANTS: + return Q(**{f"{filter}path__startswith": path, f"{filter}depth__gt": depth}) + elif grant_on == ACCESS_PAGE_AND_DESCENDANTS: + return Q(**{f"{filter}path__startswith": path}) + elif grant_on == ACCESS_PAGE_AND_CHILDREN: + return Q(**{f"{filter}path__startswith": path, f"{filter}depth__lte": depth + 1}) + return Q() + + +class PagePermission(AbstractPagePermission): + """Page permissions for a single page + """ + grant_on = models.IntegerField(_("Grant on"), choices=ACCESS_CHOICES, default=ACCESS_PAGE_AND_DESCENDANTS) + page = models.ForeignKey(Page, on_delete=models.CASCADE, null=True, blank=True, verbose_name=_("page")) + + objects = PagePermissionManager() + + class Meta: + verbose_name = _('Page permission') + verbose_name_plural = _('Page permissions') + app_label = 'cms' + + def __str__(self): + page = self.page_id and force_str(self.page) or "None" + return f"{page} :: {self.audience} has: {force_str(self.get_grant_on_display())}" + + def clean(self): + super().clean() + + if self.can_add and self.grant_on == ACCESS_PAGE: + # this is a misconfiguration - user can add/move page to current + # page, but after he does this, he will not have permissions to + # access this page anymore, so avoid this. + message = _("Add page permission requires also access to children, " + "or descendants, otherwise added page can't be changed " + "by its creator.") + raise ValidationError(message) + + def get_page_permission_tuple(self): + return PermissionTuple((self.grant_on, self.page.path)) + + def get_page_ids(self): + import warnings + + from cms.utils.compat.warnings import RemovedInDjangoCMS60Warning + warnings.warn("get_page_ids is deprecated, " + "use get_page_permission_tuple instead", RemovedInDjangoCMS60Warning, stacklevel=2) + + return self._get_page_ids() + + def _get_page_ids(self): + if self.grant_on & MASK_PAGE: + yield self.page_id + + if self.grant_on & MASK_CHILDREN: + children = self.page.get_child_pages().values_list('pk', flat=True) + + yield from children + elif self.grant_on & MASK_DESCENDANTS: + if self.page._has_cached_hierarchy(): + descendants = (page.pk for page in self.page.get_cached_descendants()) + else: + descendants = self.page.get_descendant_pages().values_list('pk', flat=True).iterator() + + yield from descendants + + +class PageUserManager(UserManager): + use_in_migrations = False + + +class PageUser(User): + """Cms specific user data, required for permission system + """ + created_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True, related_name="created_users") + + objects = PageUserManager() + + class Meta: + verbose_name = _('User (page)') + verbose_name_plural = _('Users (page)') + app_label = 'cms' + + +class PageUserGroup(Group): + """Cms specific group data, required for permission system + """ + created_by = models.ForeignKey( + settings.AUTH_USER_MODEL, + on_delete=models.SET_NULL, + null=True, + related_name="created_usergroups" + ) + + class Meta: + verbose_name = _('User group (page)') + verbose_name_plural = _('User groups (page)') + app_label = 'cms' diff --git a/cms/models/placeholdermodel.py b/cms/models/placeholdermodel.py new file mode 100644 index 00000000..a0686a09 --- /dev/null +++ b/cms/models/placeholdermodel.py @@ -0,0 +1,820 @@ +import warnings +from collections.abc import Iterable +from datetime import datetime, timedelta +from typing import TYPE_CHECKING + +from django.contrib.contenttypes.fields import GenericForeignKey +from django.contrib.contenttypes.models import ContentType +from django.db import connection, models, transaction +from django.template.defaultfilters import title +from django.utils.encoding import force_str +from django.utils.functional import lazy +from django.utils.translation import gettext_lazy as _ + +from cms.cache import invalidate_cms_page_cache +from cms.cache.placeholder import clear_placeholder_cache +from cms.constants import EXPIRE_NOW, MAX_EXPIRATION_TTL +from cms.exceptions import LanguageError +from cms.models.managers import PlaceholderManager +from cms.utils import get_language_from_request, permissions +from cms.utils.conf import get_cms_setting, get_site_id +from cms.utils.i18n import get_language_object + +if TYPE_CHECKING: + from cms.models.pluginmodel import CMSPlugin + + +class Placeholder(models.Model): + """ + + ``Placeholders`` can be filled with plugins, which store or generate content. + + """ + + #: slot name that appears in the frontend + slot = models.CharField(_("slot"), max_length=255, db_index=True, editable=False) + #: A default width is passed to the templace context as ``width`` + default_width = models.PositiveSmallIntegerField(_("width"), null=True, editable=False) + content_type = models.ForeignKey( + ContentType, + blank=True, + null=True, + on_delete=models.SET_NULL, + ) + object_id = models.PositiveIntegerField(blank=True, null=True) + source = GenericForeignKey("content_type", "object_id") + cache_placeholder = True #: Flag caching the palceholder's content + is_static = False #: Set to "True" for static placeholders (by the template tag) + edit_message = _("Edit object") #: Message used in the frontend editing UI for static placeholder edit link + static_message = _("This is an external placeholder") #: Message used in the frontend editing UI for static placeholder tooltip + is_editable = True #: If False the content of the placeholder is not editable in the frontend + + objects = PlaceholderManager() + + class Meta: + app_label = "cms" + default_permissions = [] + permissions = (("use_structure", "Can use Structure mode"),) + + def __str__(self): + return self.slot + + def __repr__(self): + display = ( + f"<{self.__module__}.{self.__class__.__name__} id={self.pk} slot='{self.slot}' object at {hex(id(self))}>" + ) + return display + + def clear(self, language=None): + """Deletes all plugins from the placeholder""" + self.get_plugins(language).delete() + + def get_label(self): + from cms.models import PageContent + from cms.utils.placeholder import get_placeholder_conf + + template = None + if isinstance(self.source, PageContent): + # Make the database access lazy, so that it only happens if needed. + template = lazy(self.source.get_template, str)() + name = get_placeholder_conf("name", self.slot, template=template, default=title(self.slot)) + name = _(name) + return name + + def get_extra_context(self, template=None): + from cms.utils.placeholder import get_placeholder_conf + + return get_placeholder_conf("extra_context", self.slot, template, {}) + + def get_extra_menu_items(self): + from cms.plugin_pool import plugin_pool + + return plugin_pool.get_extra_placeholder_menu_items(self) + + def has_change_permission(self, user): + """ + Returns ``True`` if user has permission to change all models attached to this placeholder. + """ + from cms.utils.permissions import get_model_permission_codename + + if not self.object_id: + # technically if placeholder is not attached to anything, + # user should not be able to change it but if is superuser + # then we "should" allow it. + return user.is_superuser + + try: + return self.source.has_placeholder_change_permission(user) + except AttributeError: + model = type(self.source) + change_perm = get_model_permission_codename(model, "change") + return user.has_perm(change_perm) or user.has_perm(change_perm, self.source) + + def has_add_plugin_permission(self, user, plugin_type): + """ + Returns ``True`` if user has permission to add ``plugin_type`` to this placeholder. + """ + if not permissions.has_plugin_permission(user, plugin_type, "add"): + return False + + if not self.has_change_permission(user): + return False + return True + + def has_add_plugins_permission(self, user, plugins): + """ + Returns ``True`` if user has permission to add **all** plugins in ``plugins`` to this placeholder. + """ + if not self.has_change_permission(user): + return False + + for plugin in plugins: + if not permissions.has_plugin_permission(user, plugin.plugin_type, "add"): + return False + return True + + def has_change_plugin_permission(self, user, plugin): + """ + Returns ``True`` if user has permission to change ``plugin`` to this placeholder. + """ + if not permissions.has_plugin_permission(user, plugin.plugin_type, "change"): + return False + + if not self.has_change_permission(user): + return False + return True + + def has_delete_plugin_permission(self, user, plugin): + """ + Returns ``True`` if user has permission to delete ``plugin`` to this placeholder. + """ + if not permissions.has_plugin_permission(user, plugin.plugin_type, "delete"): + return False + + if not self.has_change_permission(user): + return False + return True + + def has_move_plugin_permission(self, user, plugin, target_placeholder): + """ + Returns ``True`` if user has permission to move ``plugin`` to the ``target_placeholder``. + """ + if not permissions.has_plugin_permission(user, plugin.plugin_type, "change"): + return False + + if not target_placeholder.has_change_permission(user): + return False + + if self != target_placeholder and not self.has_change_permission(user): + return False + return True + + def has_clear_permission(self, user, languages): + """ + Returns ``True`` if user has permission to delete all plugins in this placeholder + """ + if not self.has_change_permission(user): + return False + return self.has_delete_plugins_permission(user, languages) + + def has_delete_plugins_permission(self, user, languages): + """ + Returns ``True`` if user has permission to delete all plugins in this placeholder + """ + plugin_types = ( + self.cmsplugin_set.filter(language__in=languages) + # exclude the clipboard plugin + .exclude(plugin_type="PlaceholderPlugin") + .values_list("plugin_type", flat=True) + .distinct() + # remove default ordering + .order_by() + ) + + has_permission = permissions.has_plugin_permission + + for plugin_type in plugin_types.iterator(): + if not has_permission(user, plugin_type, "delete"): + return False + return True + + def _get_source_remote_field(self): + if self.object_id is None: + return + return next(f for f in self.source._meta.get_fields() if f.related_model == Placeholder) + + def check_source(self, user): + remote_field = self._get_source_remote_field() + if remote_field is None: + return True + return remote_field.run_checks(self, user) + + def _get_attached_model(self): + if self.source: + return self.source._meta.model + return None + + def page_getter(self): + if not hasattr(self, "_page"): + from cms.models.contentmodels import PageContent + # Check if the GenericForeignKey is cached by looking for the _source_cache attribute + if "source" in self._state.fields_cache and isinstance(self.source, PageContent): + self._page = self.source.page + else: + try: + # Directly go through PageContent to avoid having to get the source and the page in separate queries + self._page = PageContent.admin_manager.filter(placeholders=self).select_related("page").first().page + except AttributeError: + self._page = None + return self._page + + def page_setter(self, value): + self._page = value + + #: Gives the page object if the placeholder belongs to a :class:`cms.models.titlemodels.PageContent` object + #: (and not to some other model.) If the placeholder is not attached to a page it returns ``None`` + page = property(page_getter, page_setter) + + def get_plugins_list(self, language=None): + """Returns a list of plugins attached to this placeholder. If language is given only plugins + in the given language are returned.""" + return list(self.get_plugins(language)) + + def get_plugins(self, language=None): + """Returns a queryset of plugins attached to this placeholder. If language is given only plugins + in the given language are returned.""" + if language: + return self.cmsplugin_set.filter(language=language) + return self.cmsplugin_set.all() + + def has_plugins(self, language=None): + """Checks if placeholder is empty (``False``) or populated (``True``)""" + return self.get_plugins(language).exists() + + def get_filled_languages(self, site_id=None): + """ + Returns language objects for every language for which the placeholder + has plugins. + + This is not cached as it's meant to be used in the frontend editor. + """ + + if site_id is None: + site_id = get_site_id(self.page.site_id if self.page else None) + + languages = [] + for lang_code in set(self.get_plugins().values_list("language", flat=True)): + try: + languages.append(get_language_object(lang_code, site_id=site_id)) + except LanguageError: + pass + return languages + + def get_cached_plugins(self): + return getattr(self, "_plugins_cache", []) + + def get_cache_expiration(self, request, response_timestamp): + """ + Returns the number of seconds (from «response_timestamp») that this + placeholder can be cached. This is derived from the plugins it contains. + + This method must return: ``EXPIRE_NOW <= int <= MAX_EXPIRATION_IN_SECONDS`` + + :type request: HTTPRequest + :type response_timestamp: datetime + :rtype: int + """ + min_ttl = MAX_EXPIRATION_TTL + + if not self.cache_placeholder or not get_cms_setting("PLUGIN_CACHE"): + # This placeholder has a plugin with an effective + # `cache = False` setting or the developer has explicitly + # disabled the PLUGIN_CACHE, so, no point in continuing. + return EXPIRE_NOW + + def inner_plugin_iterator(lang): + """ + The placeholder will have a cache of all the concrete plugins it + uses already, but just in case it doesn't, we have a code-path to + generate them anew. + + This is made extra private as an inner function to avoid any other + process stealing our yields. + """ + if hasattr(self, "_all_plugins_cache"): + for instance in self._all_plugins_cache: + plugin = instance.get_plugin_class_instance() + yield instance, plugin + else: + for plugin_item in self.get_plugins(lang): + yield plugin_item.get_plugin_instance() + + language = get_language_from_request(request, self.page) + for instance, plugin in inner_plugin_iterator(language): + plugin_expiration = plugin.get_cache_expiration(request, instance, self) + + # The plugin_expiration should only ever be either: None, a TZ- + # aware datetime, a timedelta, or an integer. + if plugin_expiration is None: + # Do not consider plugins that return None + continue + if isinstance(plugin_expiration, (datetime, timedelta)): + if isinstance(plugin_expiration, datetime): + # We need to convert this to a TTL against the + # response timestamp. + try: + delta = plugin_expiration - response_timestamp + except TypeError: + # Attempting to take the difference of a naive datetime + # and a TZ-aware one results in a TypeError. Ignore + # this plugin. + warnings.warn( + "Plugin %(plugin_class)s (%(pk)d) returned a naive " + "datetime : %(value)s for get_cache_expiration(), " + "ignoring." + % { + "plugin_class": plugin.__class__.__name__, + "pk": instance.pk, + "value": force_str(plugin_expiration), + } + ) + continue + else: + # Its already a timedelta instance... + delta = plugin_expiration + ttl = int(delta.total_seconds() + 0.5) + else: # must be an int-like value + try: + ttl = int(plugin_expiration) + except ValueError: + # Looks like it was not very int-ish. Ignore this plugin. + warnings.warn( + "Plugin %(plugin_class)s (%(pk)d) returned " + "unexpected value %(value)s for " + "get_cache_expiration(), ignoring." + % { + "plugin_class": plugin.__class__.__name__, + "pk": instance.pk, + "value": force_str(plugin_expiration), + } + ) + continue + + min_ttl = min(ttl, min_ttl) + if min_ttl <= 0: + # No point in continuing, we've already hit the minimum + # possible expiration TTL + return EXPIRE_NOW + + return min_ttl + + def clear_cache(self, language, site_id=None): + if get_cms_setting("PAGE_CACHE"): + # Clears all the page caches + invalidate_cms_page_cache() + + if not site_id and self.page: + site_id = self.page.site_id + clear_placeholder_cache(self, language, get_site_id(site_id)) + + def get_plugin_tree_order(self, language, parent_id=None): + """ + Returns a list of plugin ids matching the given language + ordered by plugin position. + """ + plugin_tree_order = ( + self.get_plugins(language).filter(parent=parent_id).order_by("position").values_list("pk", flat=True) + ) + return list(plugin_tree_order) + + def get_vary_cache_on(self, request): + """ + Returns a list of VARY headers. + """ + + def inner_plugin_iterator(lang): + """See note in get_cache_expiration.inner_plugin_iterator().""" + if hasattr(self, "_all_plugins_cache"): + for instance in self._all_plugins_cache: + plugin = instance.get_plugin_class_instance() + yield instance, plugin + else: + for plugin_item in self.get_plugins(lang): + yield plugin_item.get_plugin_instance() + + if not self.cache_placeholder or not get_cms_setting("PLUGIN_CACHE"): + return [] + + vary_list = set() + language = get_language_from_request(request, self.page) + for instance, plugin in inner_plugin_iterator(language): + if not instance: + continue + vary_on = plugin.get_vary_cache_on(request, instance, self) + if not vary_on: + # None, or an empty iterable + continue + if isinstance(vary_on, str): + if vary_on.lower() not in vary_list: + vary_list.add(vary_on.lower()) + else: + try: + for vary_on_item in iter(vary_on): + if vary_on_item.lower() not in vary_list: + vary_list.add(vary_on_item.lower()) + except TypeError: + warnings.warn( + "Plugin %(plugin_class)s (%(pk)d) returned " + "unexpected value %(value)s for " + "get_vary_cache_on(), ignoring." + % { + "plugin_class": plugin.__class__.__name__, + "pk": instance.pk, + "value": force_str(vary_on), + } + ) + + return sorted(list(vary_list)) + + def copy_plugins(self, target_placeholder, language=None, root_plugin=None): + from cms.utils.plugins import copy_plugins_to_placeholder + + new_plugins = copy_plugins_to_placeholder( + plugins=self.get_plugins_list(language), + placeholder=target_placeholder, + language=language, + root_plugin=root_plugin, + ) + return new_plugins + + def add_plugin(self, instance: "CMSPlugin"): + """ + .. versionadded:: 4.0 + + Adds a plugin to the placeholder. The plugin's position field must be set to the target + position. Positions are enumerated from the start of the placeholder's plugin tree (1) to + the last plugin (*n*, where *n* is the number of plugins in the placeholder). + + It is discouraged to call this method directly from outside the CMS. Use the + :func:`cms.api.add_plugin` function instead. + + :param instance: Plugin to add. It's position parameter needs to be set. + :type instance: :class:`cms.models.pluginmodel.CMSPlugin` instance + + .. note:: + As of version 4 of django CMS the position counter does not re-start at 1 for the first + child plugin. The ``position`` field and ``language`` field are unique for a placeholder. + + Example:: + + new_child = MyCoolPlugin() + new_child.position = ( + parent_plugin.position + 1 + ) # add as first child: directly after parent + parent_plugin.placeholder.add(new_child) + + """ + + # A plugin needs a reference to the placeholder it is in. + instance.placeholder = self + + last_position = self.get_last_plugin_position(instance.language) or 0 + # A shift is only needed if the distance between the new plugin + # and the last plugin is greater than 1 position. + needs_shift = (instance.position - last_position) < 1 + + if needs_shift: + # shift to the right + shift_offset = last_position - instance.position + 2 # behind last_position plus one to shift back + self._shift_plugin_positions( + instance.language, + start=instance.position, + offset=shift_offset, + ) + + instance.save() + + if needs_shift: + # The plugin tree was shifted to the right to make space, now squash all plugins in the + # tree to close any holes. The shift moved the former last plugin to its highest + # possible position, which is the parking offset the squash needs. + self._recalculate_plugin_positions(instance.language, base=last_position + shift_offset) + return instance + + def move_plugin(self, plugin, target_position, target_placeholder=None, target_plugin=None): + """ + .. versionadded:: 4.0 + + Moves a plugin within the placeholder (``target_placeholder=None``) or to another placeholder. + + :param plugin: Plugin to move + :type plugin: :class:`cms.models.pluginmodel.CMSPlugin` instance + :param int target_position: The plugin's new position + :param target_placeholder: Placeholder to move plugin to (or ``None``) + :type target_placeholder: :class:`cms.models.placeholdermodel.Placeholder` instance + :param target_plugin: New parent plugin (or ``None``). The target plugin must be in the same placeholder + or in the ``target_placeholder`` if one is given. + :type target_plugin: :class:`cms.models.pluginmodel.CMSPlugin` instance + + The ``target_position`` is enumerated from the start of the palceholder's plugin tree (1) to + the last plugin (*n*, where *n* is the number of plugins in the placeholder). + """ + + if target_placeholder: + return self._move_plugin_to_placeholder( + plugin=plugin, + target_position=target_position, + target_placeholder=target_placeholder, + target_plugin=target_plugin, + ) + + target_tree = self.get_plugins(plugin.language) + last_position = self.get_last_plugin_position(plugin.language) # only the position is needed + source_plugin_desc_count = plugin._get_descendants_count() + # Attn: The following line assumes that all children and grand-children have consecutive positions! + source_plugin_range = (plugin.position, plugin.position + source_plugin_desc_count) + + # A single shift is enough to establish the final ordering: the moved block is left in + # place while everything it has to jump over is pushed a full tree-length out of the way. + # That already yields the correct *relative* order (the only thing the renumbering below + # depends on, since it sorts by position); the previous, complementary second shift only + # changed the absolute — and partly negative — intermediate values without affecting that + # order, so it was redundant. ``_recalculate_plugin_positions`` is order-independent and + # collision-free for any intermediate state (positive, negative or gapped), so it closes + # the resulting hole regardless. See GitHub issue #8665. + if target_position < plugin.position: + # Moving left: push everything from the target position onwards (except the moved + # block) far to the right. The block then sorts immediately after position + # ``target_position - 1``, i.e. it lands at ``target_position``. + target_tree.filter(position__gte=target_position).exclude(position__range=source_plugin_range).update( + position=models.F("position") + last_position + ) + else: + # Moving right: mirror image — push everything up to the end of the target region + # (except the moved block) far to the left. The block then sorts immediately after + # them. The right edge of that region is ``target_position`` in the common case, but + # the closest node to the right of the moved block's last descendant if it has any. + target_tree.filter(position__lte=target_position + source_plugin_desc_count).exclude( + position__range=source_plugin_range + ).update(position=models.F("position") - last_position) + + if plugin.parent != target_plugin: + # Plugin is being moved to another tree (under another parent) + # OR plugin is being moved to the root (no parent) + plugin.update(parent=target_plugin) + # The plugin tree was shifted to make space; squash all plugin positions to close any holes. + # The left shift adds ``last_position`` to positions that are at most ``last_position``, so no + # position can exceed twice that — a safe parking offset (the right shift only subtracts, so + # it cannot exceed it either). + self._recalculate_plugin_positions(plugin.language, base=2 * last_position) + + def _move_plugin_to_placeholder(self, plugin, target_position, target_placeholder, target_plugin=None): + from cms.models.pluginmodel import CMSPlugin + + # Only the last positions are needed (for the parking bounds), not the whole rows. + source_last_position = self.get_last_plugin_position(plugin.language) + target_last_position = target_placeholder.get_last_plugin_position(plugin.language) + + # Fetch the descendant ids once and reuse them for both the count and the bulk update; calling + # ``get_descendants()`` and then ``len()`` on it would run the descendant query twice. + descendant_ids = plugin._get_descendants_ids() + plugins_to_move_count = 1 + len(descendant_ids) # parent plus descendants + + if target_last_position is not None: + # Open a gap at ``target_position`` by shifting the target's tail (positions >= + # target_position) far above its last position. A large offset keeps the shift + # collision-free — the shifted band is disjoint from every current position, so it cannot + # transiently duplicate one whatever order the rows are processed in (see #8665). The + # block drops into the freed gap and the target squash below pulls everything back to a + # dense ``1..n``, also healing any pre-existing gaps in the target. + park_offset = target_last_position + plugins_to_move_count + target_placeholder._shift_plugin_positions(plugin.language, start=target_position, offset=park_offset) + block_position = target_position + # Highest position the target now holds (the shifted tail's top); a valid parking bound. + target_base = target_last_position + park_offset + else: + # Empty target: the block simply becomes positions 1..plugins_to_move_count. + block_position = 1 + target_base = plugins_to_move_count + + # Move the block (parent and descendants) into the gap. The block is contiguous in the source, + # so a single uniform shift preserves its internal order; moving only the block leaves a plain + # gap in the source that the source squash below closes. + moved_position = models.F("position") + (block_position - plugin.position) + plugin.update(parent=target_plugin, placeholder=target_placeholder, position=moved_position) + # TODO: More efficient is to do raw sql update + CMSPlugin.objects.filter(pk__in=descendant_ids).update(placeholder=target_placeholder, position=moved_position) + + # Squash both placeholders back to a dense 1..n: the source to close the hole the block left, + # the target to seat the block at ``target_position`` and heal any gaps. Both maxima are known + # (source can only have shrunk; target is the shifted tail's top), so neither needs a query. + self._recalculate_plugin_positions(plugin.language, base=source_last_position) + target_placeholder._recalculate_plugin_positions(plugin.language, base=target_base) + + def delete_plugin(self, instance: "CMSPlugin") -> None: + """ + .. versionadded:: 4.0 + + Removes a plugin and its descendants from the placeholder and database. + This method **must** be used to preserver plugin tree consistency. + Do not use plugin.delete() or queryset.delete() + + :param instance: Plugin to remove. Its position needs to be set. + :type instance: :class:`cms.models.pluginmodel.CMSPlugin` instance + """ + with transaction.atomic(): + stats = self.get_plugins(language=instance.language).aggregate( # count + max position + count=models.Count("pk"), max_position=models.Max("position") + ) + descendants = instance._get_descendants_ids() # descendant ids + self.cmsplugin_set.filter(pk__in=[instance.pk] + descendants).delete() # delete in one query + + last_position = instance.position + len(descendants) # last position of the deleted block + if last_position < stats["count"]: + # The deleted block was not the trailing one, so it left a gap. The squash closes + # gaps of any size, so no shift is needed; the pre-deletion maximum (positions only + # shrink on delete) is a valid parking bound, so it needs no extra MAX/COUNT query. + self._recalculate_plugin_positions(instance.language, base=stats["max_position"]) + + def delete_plugins(self, instances: Iterable["CMSPlugin"]) -> None: + """ + .. versionadded:: 5.1 + + Removes several plugins and their descendants from the placeholder and database in a single + delete, then re-compacts the positions of each affected language once. Prefer this over + repeated :meth:`delete_plugin` calls when removing a batch of plugins. + + The plugins must belong to this placeholder. Overlapping selections are fine: passing a + plugin together with one of its descendants simply deletes each row once. + + :param instances: Iterable of plugins to remove. + :type instances: iterable of :class:`cms.models.pluginmodel.CMSPlugin` instances + """ + with transaction.atomic(): + to_delete = set() + languages = set() + for instance in instances: + to_delete.add(instance.pk) + to_delete.update(instance._get_descendants_ids()) + languages.add(instance.language) + if not to_delete: + return + self.cmsplugin_set.filter(pk__in=to_delete).delete() + + # The deleted plugins may have left gaps in several blocks; re-compact each affected + # language, but only when a gap was actually opened. Positions are unique and >= 1, so a + # language is already dense exactly when its maximum equals its plugin count. + for language in languages: + stats = self.get_plugins(language=language).aggregate( + count=models.Count("pk"), max_position=models.Max("position") + ) + if stats["count"] and stats["max_position"] > stats["count"]: + self._recalculate_plugin_positions(language, base=stats["max_position"]) + + def get_last_plugin(self, language): + return self.get_plugins(language).last() + + def get_next_plugin_position(self, language, parent=None, insert_order="first"): + """ + .. versionadded:: 4.0 + + Helper to calculate plugin positions correctly. + + :param str language: language for which the position is to be calculated + :param parent: Parent plugin or ``None`` (if position is on top level) + :type parent: :class:`cms.models.pluginmodel.CMSPlugin` instance + :param str insert_order: Either ``"first"`` (default) or ``"last"`` + """ + if insert_order == "first": + position = self.get_first_plugin_position(language, parent=parent) + else: + position = self.get_last_plugin_position(language, parent=parent) + + if parent and position is None: + return parent.position + 1 + + if insert_order == "last": + return (position or 0) + 1 + return position or 1 + + def get_first_plugin_position(self, language, parent=None): + tree = self.get_plugins(language) + + if parent: + tree = tree.filter(parent=parent) + return tree.values_list("position", flat=True).first() + + def get_last_plugin_position(self, language, parent=None): + if parent is None: + tree = self.get_plugins(language) + elif parent.placeholder == self: + tree = parent.get_descendants() + else: # No last plugin if parent is not in this placeholder's plugin tree + return None + return tree.values_list("position", flat=True).last() + + def _shift_plugin_positions(self, language, start, offset=None): + if offset is None: + offset = self.get_last_plugin_position(language) or 0 + + self.get_plugins(language).filter(position__gte=start).update(position=models.F("position") + offset) + + def _recalculate_plugin_positions(self, language, base=None): + """Closes gaps in the plugin tree by re-calculating the positions of all plugins of this + placeholder/language back to a dense ``1..n`` sequence, ordered by the current ``position`` + (ties broken by ``id``). + + :param base: Optional pre-computed parking offset. It only has to be an **upper bound**: any + value ``>=`` both the largest current ``position`` in the group and the number of plugins + in it is safe. Callers that just shifted by a known amount already know the resulting + maximum position and can pass it to skip the ``SELECT MAX(position), COUNT(*)`` round + trip. When ``None`` (default) it is queried. + + The two phases below must run as a unit, so callers are expected to wrap the operation in a + transaction (``add_plugin``, ``move_plugin``, ``delete_plugin`` and + ``copy_plugins_to_placeholder`` all do, as do the atomic admin views). The compaction runs as + two block moves: + + 1. *Park*: every plugin of the group is moved to its final rank ``1..n`` shifted up by + ``base`` into a band ``[base + 1 .. base + n]`` that lies strictly **above** every current + position (``base >= max(position)``). Because the whole target band is above all existing + positions, no target can equal the position another, not-yet-moved row still holds, so the + statement cannot collide on the ``(placeholder, language, position)`` unique constraint — + whatever order the database processes the rows in. + 2. *Unpark*: the parked band is shifted back down to ``1..n``. ``base`` is also kept ``>= n``, + so the source band ``[base + 1 .. base + n]`` and the target ``1..n`` are disjoint and this + statement cannot collide either. + + Because neither phase can self-collide regardless of the database's row-processing order or + of any pre-existing gaps, this is safe under *any* starting state (including the negative or + far-shifted intermediate positions ``move_plugin`` produces) and turns a successful + recalculation into a self-heal of existing gaps. Previously the compaction ran as a single + statement that could intermittently raise an ``IntegrityError`` (duplicate position) on + PostgreSQL/SQLite — and likewise on MySQL/Oracle — whenever the position sequence contained a + gap. See GitHub issue #8665. + + .. note:: + The intermediate positions reach at most ``max(position) + n``. ``position`` is a signed + ``SmallIntegerField``, so this stays safe well beyond any realistic plugin count. + """ + + from cms.models.pluginmodel import ( + CMSPlugin, + _get_database_cursor, + _get_database_vendor, + ) + + cursor = _get_database_cursor("write") + db_vendor = _get_database_vendor("write") + table = connection.ops.quote_name(CMSPlugin._meta.db_table) + + if db_vendor not in ("sqlite", "postgresql", "mysql", "oracle"): + raise RuntimeError(f"{connection.vendor} is not supported by django-cms") + + # ``base`` puts the parking band [base + 1 .. base + n] strictly above every current + # position (so phase 1 cannot collide) while staying >= n (so phase 2's source band and + # the 1..n target are disjoint and it cannot collide either). When the caller did not supply + # an upper bound, query the maximum position and plugin count to derive the tightest one. + if base is None: + cursor.execute( + f"SELECT COALESCE(MAX(position), 0), COUNT(*) FROM {table} " + "WHERE placeholder_id=%s AND language=%s", + [self.pk, language], + ) + max_position, count = cursor.fetchone() + if not count: + # Nothing to recalculate (empty placeholder for this language). + return + base = max(max_position, count) + + if db_vendor in ("sqlite", "postgresql"): + # Phase 1: park each row at (its rank) + base using a window function. + park_sql = ( + f"UPDATE {table} " + "SET position = subquery.new_pos + %s " + "FROM (" + " SELECT id, ROW_NUMBER() OVER (ORDER BY position, id) AS new_pos " + f" FROM {table} WHERE placeholder_id=%s AND language=%s " + ") subquery " + f"WHERE {table}.id=subquery.id" + ) + else: # mysql, oracle + # Phase 1: park each row at (its rank) + base. ``t`` is a snapshot of the current + # positions, so the rank is computed independently of the rows already parked. + # Positions are unique within a (placeholder, language) group, so counting the rows + # strictly below each row yields a stable rank. + park_sql = ( + f"UPDATE {table} " + "SET position = %s + (" + f"SELECT COUNT(*)+1 FROM (SELECT * FROM {table}) t " + f"WHERE placeholder_id={table}.placeholder_id AND language={table}.language " + f"AND {table}.position > t.position" + ") WHERE placeholder_id=%s AND language=%s" + ) + cursor.execute(park_sql, [base, self.pk, language]) + + # Phase 2: shift the whole parked band back down to a dense 1..n. Every row of the group was + # parked, so an unconditional shift by ``base`` is enough — a plain update with no window + # function, so it needs no raw SQL. It runs on the same write connection, hence inside the + # caller's transaction, right after the park above. + self.get_plugins(language).update(position=models.F("position") - base) diff --git a/cms/models/placeholderpluginmodel.py b/cms/models/placeholderpluginmodel.py new file mode 100644 index 00000000..ed9cf6d5 --- /dev/null +++ b/cms/models/placeholderpluginmodel.py @@ -0,0 +1,42 @@ +from functools import cached_property + +from django.db import models + +from cms.models import CMSPlugin +from cms.models.fields import PlaceholderRelationField +from cms.utils.placeholder import get_placeholder_from_slot + + +class PlaceholderReference(CMSPlugin): + cmsplugin_ptr = models.OneToOneField( + CMSPlugin, + on_delete=models.CASCADE, + related_name='cms_placeholderreference', + parent_link=True, + ) + name = models.CharField(max_length=255) + placeholders = PlaceholderRelationField() + + @cached_property + def placeholder_ref(self): + placeholder = get_placeholder_from_slot(self.placeholders, "clipboard") + placeholder.source = self + return placeholder + + class Meta: + app_label = 'cms' + + def __str__(self): + return self.name + + def move_to(self, placeholder, language): + for plugin in self.placeholder_ref.get_plugins(): + plugin.placeholder = placeholder + plugin.language = language + plugin.save() + + def move_from(self, placeholder, language): + for plugin in placeholder.get_plugins(): + plugin.placeholder = self.placeholder_ref + plugin.language = language + plugin.save() diff --git a/cms/models/pluginmodel.py b/cms/models/pluginmodel.py new file mode 100644 index 00000000..2c52de20 --- /dev/null +++ b/cms/models/pluginmodel.py @@ -0,0 +1,502 @@ +from __future__ import annotations + +import os +import re +import warnings +from datetime import date +from functools import cache, cached_property + +from django.core.exceptions import ObjectDoesNotExist +from django.db import connection, connections, models, router +from django.db.models import QuerySet +from django.db.models.base import ModelBase +from django.utils import timezone +from django.utils.encoding import force_str +from django.utils.translation import gettext_lazy as _ + +from cms.exceptions import DontUsePageAttributeWarning +from cms.models.placeholdermodel import Placeholder +from cms.utils.compat.warnings import RemovedInDjangoCMS60Warning +from cms.utils.conf import get_cms_setting +from cms.utils.urlutils import admin_reverse + + +@cache +def _get_descendants_cte(): + db_vendor = _get_database_vendor('read') + if db_vendor == 'oracle': + sql = ( + "WITH descendants (id, cms_plugin_position, cms_plugin_parent_id) as (" + "SELECT {0}.id, {0}.position, {0}.parent_id " + "FROM {0} WHERE {0}.parent_id = %s " + "UNION ALL " + "SELECT {0}.id, {0}.position, {0}.parent_id " + "FROM descendants, {0} WHERE {0}.parent_id = descendants.id" + ")" + ) + else: + sql = ( + "WITH RECURSIVE descendants as (" + "SELECT {0}.id, {0}.position, {0}.parent_id " + "FROM {0} WHERE {0}.parent_id = %s " + "UNION ALL " + "SELECT {0}.id, {0}.position, {0}.parent_id " + "FROM descendants, {0} WHERE {0}.parent_id = descendants.id" + ")" + ) + return sql.format(connection.ops.quote_name(CMSPlugin._meta.db_table)) + + +@cache +def _get_ancestors_cte(): + db_vendor = _get_database_vendor('read') + if db_vendor == 'oracle': + sql = ( + "WITH ancestors AS (" + "SELECT {0}.id, {0}.parent_id " + "FROM {0} WHERE id = %s " + "UNION ALL " + "SELECT {0}.id, {0}.parent_id FROM {0} " + "INNER JOIN ancestors ON {0}.id=ancestors.parent_id" + ")" + ) + else: + sql = ( + "WITH RECURSIVE ancestors AS (" + "SELECT {0}.id, {0}.parent_id " + "FROM {0} WHERE id = %s " + "UNION ALL " + "SELECT {0}.id, {0}.parent_id FROM {0} " + "INNER JOIN ancestors ON {0}.id=ancestors.parent_id" + ")" + ) + return sql.format(connection.ops.quote_name(CMSPlugin._meta.db_table)) + + +def _get_database_connection(action): + return { + 'read': connections[router.db_for_read(CMSPlugin)], + 'write': connections[router.db_for_write(CMSPlugin)] + }[action] + + +def _get_database_vendor(action): + return _get_database_connection(action).vendor + + +def _get_database_cursor(action): + return _get_database_connection(action).cursor() + + +class BoundRenderMeta: + def __init__(self, meta): + self.index = 0 + self.total = 1 + self.text_enabled = getattr(meta, 'text_enabled', False) + + +class PluginModelBase(ModelBase): + """ + Metaclass for all CMSPlugin subclasses. This class should not be used for + any other type of models. + """ + + def __new__(cls, name, bases, attrs): + super_new = super().__new__ + # remove RenderMeta from the plugin class + attr_meta = attrs.pop('RenderMeta', None) + + # Only care about subclasses of CMSPlugin + # (excluding CMSPlugin itself). + parents = [b for b in bases if isinstance(b, PluginModelBase)] + + if parents and 'cmsplugin_ptr' not in attrs: + # The current class subclasses from CMSPlugin + # and has not defined a cmsplugin_ptr field. + meta = attrs.get('Meta', None) + proxy = getattr(meta, 'proxy', False) + + # True if any of the base classes defines a cmsplugin_ptr field. + field_is_inherited = any(hasattr(parent, 'cmsplugin_ptr') for parent in parents) + + # Skip proxied classes which are not autonomous ORM objects + # We don't skip abstract classes because when a plugin + # inherits from an abstract class, we need to make sure the + # abstract class gets the correct related name, otherwise the + # plugin inherits the default related name and then the + # field_is_inherited check above will prevent us from adding + # the fixed related name. + if not proxy and not field_is_inherited: + # It's important to set the field as if it was set + # manually in the model class. + # This is because Django will do a lot of operations + # under the hood to set the forward and reverse relations. + attrs['cmsplugin_ptr'] = models.OneToOneField( + to='cms.CMSPlugin', + name='cmsplugin_ptr', + related_name='%(app_label)s_%(class)s', + auto_created=True, + parent_link=True, + on_delete=models.CASCADE, + ) + + # create a new class (using the super-metaclass) + new_class = super_new(cls, name, bases, attrs) + + # if there is a RenderMeta in attrs, use this one + # else try to use the one from the superclass (if present) + meta = attr_meta or getattr(new_class, '_render_meta', None) + # set a new BoundRenderMeta to prevent leaking of state + new_class._render_meta = BoundRenderMeta(meta) + return new_class + + +class CMSPlugin(models.Model, metaclass=PluginModelBase): + """ + The base class for a CMS plugin model. When defining a new custom plugin, you should + store plugin-instance specific information on a subclass of this class. (An example for this + would be to store the number of pictures to display in a gallery.) + + Two restrictions apply when subclassing this to use in your own models: + + 1. Subclasses of CMSPlugin **cannot be further subclassed** + 2. Subclasses of CMSPlugin cannot define a "text" field. + """ + + #: :class:`django:django.db.models.ForeignKey`: Placeholder the plugin belongs to + placeholder = models.ForeignKey(Placeholder, on_delete=models.CASCADE, editable=False, null=True) + #: :class:`django:django.db.models.ForeignKey`: Parent plugin or ``None`` for plugins at root level in + #: the placeholder + parent = models.ForeignKey('self', on_delete=models.CASCADE, blank=True, null=True, editable=False) + #: :class:`django:django.db.models.SmallIntegerField`: Position (unique for placeholder and language) + #: starting with 1 for the first plugin in the placeholder + position = models.SmallIntegerField(_("position"), default=1, editable=False) + #: :class:`django:django.db.models.CharField`: Language of the plugin + language = models.CharField(_("language"), max_length=15, blank=False, db_index=True, editable=False) + #: `django:django.db.models.CharField`: Plugin type (name of the class as string) + plugin_type = models.CharField(_("plugin_name"), max_length=50, db_index=True, editable=False) + #: `django:django.db.models.DateTimeField`: Datetime the plugin was created + creation_date = models.DateTimeField(_("creation date"), editable=False, default=timezone.now) + #: `django:django.db.models.DateTimeField`: Datetime the plugin was last changed + changed_date = models.DateTimeField(auto_now=True) + #: Request-scoped list of direct child plugin instances when rendering + child_plugin_instances = None + #: Request-scoped list of the plugin classes that may be added as children of this instance + child_class_restrictions = None + + class Meta: + verbose_name = _("plugin") + verbose_name_plural = _("plugins") + app_label = 'cms' + ordering = ('position',) + indexes = [ + models.Index(fields=['placeholder', 'language', 'position']), + ] + unique_together = ('placeholder', 'language', 'position') + + class RenderMeta: + index = 0 + total = 1 + text_enabled = False + + def __str__(self): + return force_str(self.pk) + + def __repr__(self): + display = f"<{self.__module__}.{self.__class__.__name__} id={self.pk} plugin_type='{self.plugin_type}' object at {hex(id(self))}>" + return display + + def get_plugin_name(self): + return self.plugin_class.name + + def get_short_description(self): + instance = self.get_plugin_instance()[0] + if instance is not None: + return force_str(instance) + return _("") + + @cached_property + def plugin_class(self): + from cms.plugin_pool import plugin_pool + + return plugin_pool.get_plugin(self.plugin_type) + + def get_plugin_class(self): + return self.plugin_class + + def get_plugin_class_instance(self, admin=None): + plugin_class = self.get_plugin_class() + # needed so we have the same signature as the original ModelAdmin + return plugin_class(plugin_class.model, admin) + + def get_plugin_instance(self, admin=None): + """ + For a plugin instance (usually as a CMSPluginBase), this method + returns the downcasted (i.e., correctly typed subclass of CMSPluginBase) instance and the plugin class + + :return: Tuple (instance, plugin) + + instance: The instance AS THE APPROPRIATE SUBCLASS OF CMSPluginBase and not necessarily just 'self', which is + often just a CMSPluginBase, + + plugin: the associated plugin class instance (subclass of CMSPlugin) + """ + plugin = self.get_plugin_class_instance(admin) + + try: + instance = self.get_bound_plugin() + except ObjectDoesNotExist: + instance = None + self._inst = None + return instance, plugin + + def get_bound_plugin(self): + """ + Returns an instance of the plugin model + configured for this plugin type. + """ + if hasattr(self, "_inst"): + return self._inst + + plugin = self.get_plugin_class() + + if plugin.model._meta.concrete_model != self.__class__._meta.concrete_model: + self._inst = plugin.model.objects.get(cmsplugin_ptr=self) + # Preserve prefetched placeholder + self._inst._state.fields_cache["placeholder"] = self.placeholder + # Preserve render_meta + self._inst._render_meta = self._render_meta + else: + self._inst = self + return self._inst + + def get_plugin_info(self, children=None, parents=None): + plugin_class = self.plugin_class + + info = { + 'type': 'plugin', + 'position': self.position, + 'placeholder_id': self.placeholder_id, + 'plugin_name': force_str(self.get_plugin_name()) or '', + 'plugin_type': self.plugin_type, + 'plugin_id': self.pk, + 'plugin_language': self.language or '', + 'plugin_parent': self.parent_id or '', + 'plugin_restriction': children or [], + 'is_slot': plugin_class.is_slot, + 'disable_child_plugins': plugin_class.disable_child_plugins, + 'urls': self.get_action_urls(), + } + if parents is not None: + warnings.warn( + "The 'parents' argument of 'get_plugin_info' is deprecated and will be removed in django CMS 6.0. " + "Parent plugin restrictions are no longer sent to the frontend -- droppability is derived from " + "child restrictions -- so it can be safely removed from the call.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + # Keep emitting the key for the deprecation period so existing callers don't break. + info['plugin_parent_restriction'] = parents or [] + return info + + def refresh_from_db(self, *args, **kwargs): + super().refresh_from_db(*args, **kwargs) + + # Delete this internal cache to let the cms populate it + # on demand. + try: + del self._inst + except AttributeError: + pass + + def get_media_path(self, filename): + page = self.placeholder.page if self.placeholder_id else None + if page: + return page.get_media_path(filename) + return None + + @property + def page(self): + warnings.warn( + "Don't use the page attribute on CMSPlugins! CMSPlugins are not " + "guaranteed to have a page associated with them!", + DontUsePageAttributeWarning, + stacklevel=2, + ) + return self.placeholder.page if self.placeholder_id else None + + def get_instance_icon_src(self): + """ + Get src URL for instance's icon + """ + instance, plugin = self.get_plugin_instance() + return plugin.icon_src(instance) if instance else '' + + def get_instance_icon_alt(self): + """ + Get alt text for instance's icon + """ + instance, plugin = self.get_plugin_instance() + return force_str(plugin.icon_alt(instance)) if instance else '' + + def update(self, refresh=False, **fields): + CMSPlugin.objects.filter(pk=self.pk).update(**fields) + if refresh: + return self.reload() + return + + def reload(self): + return CMSPlugin.objects.select_related("parent", "placeholder").get(pk=self.pk) + + def _get_descendants_count(self): + cursor = _get_database_cursor('write') + sql = _get_descendants_cte() + '\n' + sql += 'SELECT COUNT(*) FROM descendants;' + sql = sql.format(connection.ops.quote_name(CMSPlugin._meta.db_table)) + cursor.execute(sql, [self.pk]) + return cursor.fetchall()[0][0] + + def _get_descendants_ids(self): + cursor = _get_database_cursor('write') + sql = _get_descendants_cte() + '\n' + sql += 'SELECT id FROM descendants;' + sql = sql.format(connection.ops.quote_name(CMSPlugin._meta.db_table)) + cursor.execute(sql, [self.pk]) + return [item[0] for item in cursor.fetchall()] + + def get_children(self) -> QuerySet: + return self.cmsplugin_set.all() + + def get_descendants(self) -> QuerySet: + return CMSPlugin.objects.filter(pk__in=self._get_descendants_ids()) + + def get_ancestors(self) -> list[CMSPlugin]: + """ + Retrieve the list of ancestor plugins for the current plugin. + + This method returns a list of ancestor plugins, starting from the root + ancestor down to the immediate parent of the current plugin. If the + current plugin has no parent, an empty list is returned. + + Returns: + list: A list of ancestor plugins, ordered from the root ancestor + to the immediate parent of the current plugin. + """ + if not self.parent_id: + return [] + if self._state.fields_cache.get('parent'): + return self.parent.get_ancestors() + [self.parent] + return list(self.get_ancestors_qs()) + + def get_ancestors_qs(self) -> QuerySet: + cursor = _get_database_cursor("write") + sql = f"{_get_ancestors_cte()} SELECT id FROM ancestors;" + cursor.execute(sql, [self.parent_id]) + ancestor_ids = [item[0] for item in cursor.fetchall()] + return CMSPlugin.objects.filter(pk__in=ancestor_ids).order_by('position') + + def set_base_attr(self, plugin): + for attr in ['parent_id', 'placeholder', 'language', 'plugin_type', 'creation_date', 'pk', 'position']: + setattr(plugin, attr, getattr(self, attr)) + + def post_copy(self, old_instance, new_old_ziplist): + """ + Can (should) be overridden to handle the copying of plugins which contain children plugins after the original + parent has been copied. + + E.g., TextPlugins use this to correct the references in the text to child plugins. + copied + """ + pass + + def copy_relations(self, old_instance): + """ + Handle copying of any relations attached to this plugin. Custom plugins have + to do this themselves. + + See also: :ref:`Handling-Relations`, :meth:`post_copy`. + + :param old_instance: Source plugin instance + :type old_instance: :class:`CMSPlugin` instance + """ + pass + + @classmethod + def _get_related_objects(cls): + fields = cls._meta._get_fields( + forward=False, reverse=True, + include_parents=True, + include_hidden=False, + ) + return list(obj for obj in fields if not isinstance(obj.field, models.ManyToManyField)) + + def notify_on_autoadd(self, request, conf): + """ + Method called when we auto add this plugin via default_plugins in + CMS_PLACEHOLDER_CONF. + + Some specific plugins may have some special stuff to do when they are + auto added. + """ + pass + + def notify_on_autoadd_children(self, request, conf, children): + """ + Method called when we auto add children to this plugin via + default_plugins//children in CMS_PLACEHOLDER_CONF. + + Some specific plugins may have some special stuff to do when we add + children to them. ie : TextPlugin must update its content to add HTML + tags to be able to see his children in WYSIWYG. + """ + pass + + def get_action_urls(self, js_compat=True): + """ + .. versionadd: 4.0 + + :return: dict of action urls for edit, add, delete, copy, and move plugin. + + This method replaces the set of legacy methods `get_add_url`, ``get_edit_url`, `get_move_url`, + `get_delete_url`, `get_copy_url`. + """ + if not hasattr(CMSPlugin, '_edit_url'): + CMSPlugin._edit_url = admin_reverse('cms_placeholder_edit_plugin', args=(0,)) + CMSPlugin._add_url = admin_reverse('cms_placeholder_add_plugin') + CMSPlugin._delete_url = admin_reverse('cms_placeholder_delete_plugin', args=(0,)) + CMSPlugin._move_url = admin_reverse('cms_placeholder_move_plugin') + CMSPlugin._copy_url = admin_reverse('cms_placeholder_copy_plugins') + + if js_compat: + # TODO: Remove this condition + # once the javascript files have been refactored + # to use the new naming schema (ending in _url). + return { + 'edit_plugin': re.sub(r"/0/", f"/{self.pk}/", CMSPlugin._edit_url), + 'add_plugin': CMSPlugin._add_url, + 'delete_plugin': re.sub(r"/0/", f"/{self.pk}/", CMSPlugin._delete_url), + 'move_plugin': CMSPlugin._move_url, + 'copy_plugin': CMSPlugin._copy_url, + } + else: + return { + 'edit_url': re.sub(r"/0/", f"/{self.pk}/", CMSPlugin._edit_url), + 'add_url': CMSPlugin._add_url, + 'delete_url': re.sub(r"/0/", f"/{self.pk}/", CMSPlugin._delete_url), + 'move_url': CMSPlugin._move_url, + 'copy_url': CMSPlugin._copy_url, + } + + +def get_plugin_media_path(instance, filename): + """ + Django requires that unbound function used in fields' definitions to be + defined outside the parent class. + (see https://docs.djangoproject.com/en/dev/topics/migrations/#serializing-values) + This function is used within field definition: + + file = models.FileField(_("file"), upload_to=get_plugin_media_path) + + and it invokes the bounded method on the given instance at runtime + """ + return instance.get_media_path(filename) diff --git a/cms/models/query.py b/cms/models/query.py new file mode 100644 index 00000000..ed30ba28 --- /dev/null +++ b/cms/models/query.py @@ -0,0 +1,133 @@ +import warnings +from collections import Counter + +from django.db import models +from django.db.models import Case, F, When + +from cms.exceptions import NoHomeFound +from cms.utils.compat.warnings import RemovedInDjangoCMS60Warning +from cms.utils.mptree import get_queryset_base, get_tree_backend + +# Resolved once at import time (same as the model base in pagemodel.py). In +# mptree mode the base is a plain QuerySet and treebeard is never imported. +_USING_TREEBEARD = get_tree_backend() == "treebeard" + + +class PageQuerySet(get_queryset_base()): + + node_warning = ("As of django CMS 5.0 the Page model does not have a node property anymore. " + "Use the related fields directly.") + + def delete(self, *args, **kwargs): + if _USING_TREEBEARD: + # treebeard's MP_NodeQuerySet.delete removes whole subtrees by path + # and fixes parent numchild. + return super().delete(*args, **kwargs) + # mptree backend: the parent FK's on_delete=CASCADE removes descendants + # (no orphans), but the surviving parents' numchild cache still needs + # decrementing -- mirror treebeard's behaviour using parent_id instead + # of path. (Instance .delete() is handled on the model mixin; this path + # covers bulk ``Page.objects.filter(...).delete()``.) + rows = list(self.values_list("pk", "parent_id")) + deleted = {pk for pk, _ in rows} + lost = Counter( + parent_id for _, parent_id in rows + if parent_id is not None and parent_id not in deleted + ) + using = self.db + result = models.QuerySet.delete(self, *args, **kwargs) + for parent_id, num_lost in lost.items(): + self.model._base_manager.using(using).filter(pk=parent_id).update( + # Floored at zero in case the cache was already stale. Not with + # Greatest(F("numchild") - n, 0): ``numchild`` is unsigned, so + # MySQL raises "value is out of range" on the subtraction before + # GREATEST ever sees it. CASE evaluates its branch lazily and so + # only subtracts where the result cannot underflow. + numchild=Case( + When(numchild__gte=num_lost, then=F("numchild") - num_lost), + default=0, + output_field=models.PositiveIntegerField(), + ) + ) + return result + + def get_descendants(self, parent=None): + if parent is None: + return self.all() + + if parent.is_leaf(): + # leaf nodes have no children + return self.none() + return self.filter(path__startswith=parent.path, depth__gte=parent.depth) + + def on_site(self, site=None): + from django.contrib.sites.models import Site + + if site is None: + site = Site.objects.get_current() + return self.filter(site=site) + + def get_home(self, site=None): + try: + home = self.on_site(site).distinct().get(is_home=True) + except self.model.DoesNotExist: + raise NoHomeFound('No Root page found') + return home + + def has_apphooks(self): + """ + Returns True if any page on this queryset has an apphook attached. + """ + return self.exclude(application_urls=None).exclude(application_urls='').exists() + + def delete_fast(self): + # plain Django delete, skipping any tree-fixup delete (both backends) + models.QuerySet.delete(self) + + def root_only(self): + return self.filter(depth=1) + + def select_related(self, *fieldnames): + modified = [] + for f in fieldnames: + if isinstance(f, str) and f.startswith('node'): + warnings.warn( + self.node_warning, + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + if f != 'node': + modified.append(f.replace('node__', '')) + else: + modified.append(f) + return super().select_related(*modified) + + def filter(self, *args, **kwargs): + modified = {} + for key, val in kwargs.items(): + if isinstance(key, str) and key.startswith('node'): + warnings.warn( + self.node_warning, + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + if key == 'node': + continue + modified[key[6:]] = val + else: + modified[key] = val + return super().filter(*args, **modified) + + def order_by(self, *fieldnames): + modified = [] + for f in fieldnames: + if isinstance(f, str) and f.startswith("node__"): + warnings.warn( + self.node_warning, + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + modified.append(f[6:]) + else: + modified.append(f) + return super().order_by(*modified) diff --git a/cms/models/settingmodels.py b/cms/models/settingmodels.py new file mode 100644 index 00000000..3f0857f2 --- /dev/null +++ b/cms/models/settingmodels.py @@ -0,0 +1,46 @@ +from django.conf import settings +from django.db import models +from django.utils.encoding import force_str +from django.utils.translation import gettext_lazy as _ + + +class PlaceholderForeignKey(models.ForeignKey): + def run_checks(self, placeholder, user): + # A clipboard is private to its owner: only they have permission to + # change it. Other users must not be able to read from or write to it. + try: + return placeholder.source.has_placeholder_change_permission(user) + except AttributeError: + return False + + +class UserSettings(models.Model): + user = models.OneToOneField( + settings.AUTH_USER_MODEL, + on_delete=models.CASCADE, + editable=False, + related_name='djangocms_usersettings', + ) + language = models.CharField(_("Language"), max_length=10, choices=settings.LANGUAGES, + help_text=_("The language for the admin interface and toolbar")) + clipboard = PlaceholderForeignKey( + 'cms.Placeholder', + on_delete=models.CASCADE, + blank=True, + null=True, + editable=False, + ) + + class Meta: + verbose_name = _('user setting') + verbose_name_plural = _('user settings') + app_label = 'cms' + + def __str__(self): + return force_str(self.user) + + def has_placeholder_change_permission(self, user): + # User always has permission to change their own clipboard, but only + # their own: a clipboard may contain content other users are not + # allowed to see. + return self.user_id == user.pk or user.is_superuser diff --git a/cms/operations/__init__.py b/cms/operations/__init__.py new file mode 100644 index 00000000..1a6254a1 --- /dev/null +++ b/cms/operations/__init__.py @@ -0,0 +1,33 @@ +# Placeholder operations +ADD_PLUGIN = 'add_plugin' +CHANGE_PLUGIN = 'change_plugin' +DELETE_PLUGIN = 'delete_plugin' +MOVE_PLUGIN = 'move_plugin' +CUT_PLUGIN = 'cut_plugin' +PASTE_PLUGIN = 'paste_plugin' +PASTE_PLACEHOLDER = 'paste_placeholder' +ADD_PLUGINS_FROM_PLACEHOLDER = 'add_plugins_from_placeholder' +CLEAR_PLACEHOLDER = 'clear_placeholder' + +# Page operations +CHANGE_PAGE = 'change_page' +MOVE_PAGE = 'move_page' +DELETE_PAGE = 'delete_page' + +# Page translation operations +ADD_PAGE_TRANSLATION = 'add_page_translation' +CHANGE_PAGE_TRANSLATION = 'change_page_translation' +DELETE_PAGE_TRANSLATION = 'delete_page_translation' +PUBLISH_PAGE_TRANSLATION = 'publish_page_translation' +REVERT_PAGE_TRANSLATION_TO_LIVE = 'revert_page_translation_to_live' + +# Static placeholder operations +PUBLISH_STATIC_PLACEHOLDER = 'publish_static_placeholder' + +PAGE_OPERATIONS = [MOVE_PAGE, DELETE_PAGE] +PAGE_TRANSLATION_OPERATIONS = [ + DELETE_PAGE_TRANSLATION, + PUBLISH_PAGE_TRANSLATION, + REVERT_PAGE_TRANSLATION_TO_LIVE, +] +STATIC_PLACEHOLDER_OPERATIONS = [PUBLISH_STATIC_PLACEHOLDER] diff --git a/cms/operations/helpers.py b/cms/operations/helpers.py new file mode 100644 index 00000000..c0a70bdd --- /dev/null +++ b/cms/operations/helpers.py @@ -0,0 +1,26 @@ +import uuid + +from cms.models import Page +from cms.signals import post_obj_operation, pre_obj_operation + + +def send_pre_page_operation(request, operation, sender=Page, **kwargs): + token = str(uuid.uuid4()) + pre_obj_operation.send( + sender=sender, + operation=operation, + request=request, + token=token, + **kwargs + ) + return token + + +def send_post_page_operation(request, operation, token, sender=Page, **kwargs): + post_obj_operation.send( + sender=sender, + operation=operation, + request=request, + token=token, + **kwargs + ) diff --git a/cms/page_rendering.py b/cms/page_rendering.py new file mode 100644 index 00000000..62e806d5 --- /dev/null +++ b/cms/page_rendering.py @@ -0,0 +1,98 @@ +from django.conf import settings +from django.http import Http404, HttpResponseRedirect +from django.template.response import TemplateResponse +from django.urls import Resolver404, resolve, reverse + +from cms import __version__, constants +from cms.cache.page import set_page_cache +from cms.models import EmptyPageContent +from cms.utils.page_permissions import user_can_change_page, user_can_view_page +from cms.utils.urlutils import admin_reverse + + +def render_page(request, page, current_language, slug=None): + """ + Renders a page + """ + page_content = page.page_content_cache.get(current_language, page.get_content_obj(current_language)) + context = {} + context['lang'] = current_language + context['current_page'] = page + context['current_pagecontent'] = page_content + context['has_change_permissions'] = user_can_change_page(request.user, page) + context['has_view_permissions'] = user_can_view_page(request.user, page) + + cant_view_page = any([ + not context['has_view_permissions'], + isinstance(page_content, EmptyPageContent) + ]) + if cant_view_page: + return _handle_no_page(request) + + template = page_content.get_template() + if not template: + # Render placeholder content with minimal markup + + from cms.views import render_placeholder_content + return render_placeholder_content(request, page_content, context) + response = TemplateResponse(request, template, context) + response.add_post_render_callback(set_page_cache) + + # Add headers for X Frame Options - this really should be changed upon moving to class based views + xframe_options = page.get_xframe_options() + # xframe_options can be None if there's no xframe information on the page + # (eg. a top-level page which has xframe options set to "inherit") + if xframe_options == constants.X_FRAME_OPTIONS_INHERIT or xframe_options is None: + # This is when we defer to django's own clickjacking handling + return response + + # We want to prevent django setting this in their middleware + response.xframe_options_exempt = True + + if xframe_options == constants.X_FRAME_OPTIONS_ALLOW: + # Do nothing, allowed is no header. + return response + elif xframe_options == constants.X_FRAME_OPTIONS_SAMEORIGIN: + response['X-Frame-Options'] = 'SAMEORIGIN' + elif xframe_options == constants.X_FRAME_OPTIONS_DENY: + response['X-Frame-Options'] = 'DENY' + return response + + +def _handle_no_page(request): + try: + match = resolve(request.path) + except Resolver404 as e: + raise Http404(dict(path=request.path, tried=e.args[0]['tried'])) from e + + # redirect to PageContent's changelist if the root page is detected + if match.url_name == 'pages-root': + try: + redirect_url = admin_reverse('cms_pagecontent_changelist') + return HttpResponseRedirect(redirect_url) + except Resolver404: + pass + raise Http404(dict(path=request.path, tried=match.tried)) + + +def _handle_no_apphook(request): + context = { + "absolute_url": request.toolbar.request_path, + } + return TemplateResponse(request, "cms/noapphook.html", context) + + +def _render_welcome_page(request): + context = { + 'cms_version': __version__, + 'django_debug': settings.DEBUG, + 'next_url': reverse('pages-root'), + } + return TemplateResponse(request, "cms/welcome.html", context) + + +def render_pagecontent(request, pagecontent): + language = pagecontent.language + request.current_page = page = pagecontent.page + page.page_content_cache[language] = pagecontent + return render_page(request, page, language) diff --git a/cms/plugin_base.py b/cms/plugin_base.py new file mode 100644 index 00000000..2a9de54b --- /dev/null +++ b/cms/plugin_base.py @@ -0,0 +1,977 @@ +import fnmatch +import json +import re +from collections.abc import Callable +from functools import lru_cache + +from django import forms +from django.contrib import admin, messages +from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist, ValidationError +from django.http import HttpRequest, HttpResponse +from django.template import Context +from django.template.response import TemplateResponse +from django.utils.encoding import force_str, smart_str +from django.utils.functional import lazy +from django.utils.html import conditional_escape, escapejs +from django.utils.safestring import mark_safe +from django.utils.translation import gettext, gettext_lazy as _ + +from cms import operations +from cms.exceptions import SubClassNeededError +from cms.models import CMSPlugin, Page +from cms.models.placeholdermodel import Placeholder +from cms.toolbar.utils import get_plugin_tree +from cms.utils.compat import DJANGO_5_1 +from cms.utils.conf import get_cms_setting + + +class CMSPluginBaseMetaclass(forms.MediaDefiningClass): + """ + Ensure the CMSPlugin subclasses have sane values and set some defaults if + they're not given. + """ + + def __new__(cls, name, bases, attrs): + super_new = super().__new__ + parents = [base for base in bases if isinstance(base, CMSPluginBaseMetaclass)] + if not parents: + # If this is CMSPluginBase itself, and not a subclass, don't do anything + return super_new(cls, name, bases, attrs) + new_plugin = super_new(cls, name, bases, attrs) + # validate model is actually a CMSPlugin subclass. + if not issubclass(new_plugin.model, CMSPlugin): + raise SubClassNeededError( + "The 'model' attribute on CMSPluginBase subclasses must be " + "either CMSPlugin or a subclass of CMSPlugin. %r on %r is not." % (new_plugin.model, new_plugin) + ) + # validate the template: + if not hasattr(new_plugin, "render_template") and not hasattr(new_plugin, "get_render_template"): + raise ImproperlyConfigured( + "CMSPluginBase subclasses must have a render_template attribute or get_render_template method" + ) + # Set the default form + if not new_plugin.form: + form_meta_attrs = { + "model": new_plugin.model, + "exclude": ("position", "placeholder", "language", "plugin_type", "path", "depth"), + } + form_attrs = {"Meta": type("Meta", (object,), form_meta_attrs)} + new_plugin.form = type("%sForm" % name, (forms.ModelForm,), form_attrs) + # Set the default fieldsets + if not new_plugin.fieldsets: + basic_fields = [] + advanced_fields = [] + for f in new_plugin.model._meta.fields: + if not f.auto_created and f.editable: + if hasattr(f, "advanced"): + advanced_fields.append(f.name) + else: + basic_fields.append(f.name) + if advanced_fields: + new_plugin.fieldsets = [ + (None, {"fields": basic_fields}), + (_("Advanced options"), {"fields": advanced_fields, "classes": ("collapse",)}), + ] + # Set default name + if not new_plugin.name: + new_plugin.name = re.sub("([a-z])([A-Z])", "\\g<1> \\g<2>", name) + + # By flagging the plugin class, we avoid having to call these class + # methods for every plugin all the time. + # Instead, we only call them if they are actually overridden. + if "get_extra_placeholder_menu_items" in attrs: + new_plugin._has_extra_placeholder_menu_items = True + + if "get_extra_plugin_menu_items" in attrs: + new_plugin._has_extra_plugin_menu_items = True + + # Normalize allowed_models entries to lowercase (app_label.model) + # to allow case-insensitive configuration such as "cms.PageContent". + # ContentType.app_label and .model are lowercase, so we match that. + allowed_models = getattr(new_plugin, "allowed_models", None) + if allowed_models is not None: + # Accept any iterable (list/tuple/set) or a single string + if isinstance(allowed_models, (list, tuple, set)): + new_plugin.allowed_models = [str(item).lower() for item in allowed_models] + else: + # Coerce single value into list + new_plugin.allowed_models = [str(allowed_models).lower()] + return new_plugin + + +def template_slot_caching(method: Callable) -> Callable: + """ + Decorator that enables global caching for methods based on placeholder slots and templates. + + This decorator marks methods that should participate in the CMS's template and slot-based + caching system. Decorated methods will have their results cached according to the + configuration specified in CMS_PLACEHOLDER_CONF. + + Args: + method: The method to be decorated. + + Returns: + The decorated method with template slot caching enabled. + + Example: + @template_slot_caching + def get_child_class_overrides(cls, slot: str, page: Optional[Page] = None, instance: Optional[CMSPlugin] = None): + # Method implementation... + pass + """ + + method._template_slot_caching = True + return method + + +class CMSPluginBase(admin.ModelAdmin, metaclass=CMSPluginBaseMetaclass): + """ + Inherits :class:`django:django.contrib.admin.ModelAdmin` and in most respects behaves like a + normal subclass. + + Note however that some attributes of ``ModelAdmin`` simply won't make sense in the + context of a Plugin. + """ + + #: Name of the plugin needs to be set in child classes + name = "" + + #: Modules collect plugins of similar type + module = _("Generic") # To be overridden in child classes + + #: Custom form class to be used to edit this plugin. + form = None + + change_form_template = "admin/cms/page/plugin/change_form.html" + """ + The template used to render the form when you edit the plugin. + + Example:: + + class MyPlugin(CMSPluginBase): + model = MyModel + name = _("My Plugin") + render_template = "cms/plugins/my_plugin.html" + change_form_template = "admin/cms/page/plugin_change_form.html" + + See also: :attr:`frontend_edit_template`. + """ + # If True, displays a preview in the admin. Not used any more. + admin_preview = False + + #: The path to the template used to render the template. If ``render_plugin`` is ``True`` either this or + #: ``get_render_template`` **must** be defined. See also: :attr:`render_plugin` , :meth:`get_render_template`. + render_template = None + + #: If set to ``False``, this plugin will not be rendered at all. If ``True``, :meth:`render_template` must also + #: be defined. See also: :attr:`render_template`, :meth:`get_render_template`. + render_plugin = True + + #: If the plugin requires per-instance settings, then this setting must be set to a model that inherits from + #: :class:`~cms.models.pluginmodel.CMSPlugin`. See also: :ref:`storing configuration`. + model = CMSPlugin + + text_enabled = False + """This attribute controls whether your plugin will be usable (and rendered) + in a text plugin. When you edit a text plugin on a page, the plugin will show up in + the *CMS Plugins* dropdown and can be configured and inserted. The output will even + be previewed in the text editor. + + Of course, not all plugins are usable in text plugins. Therefore the default of this + attribute is ``False``. If your plugin *is* usable in a text plugin: + + #. set this to ``True`` + #. make sure your plugin provides its own :meth:`icon_alt`, this will be used as a tooltip in + the text-editor and comes in handy when you use multiple plugins in your text. + + See also: :meth:`icon_alt`, :meth:`icon_src`.""" + + #: Set to ``True`` if this plugin should only be used in a placeholder that is attached to a django CMS page, + #: and not other models with ``PlaceholderRelationFields``. See also: :attr:`child_classes`, :attr:`parent_classes`, + #: :attr:`require_parent`. + #: + #: Deprecated: Use allowed_models attribute instead (e.g., `allowed_models = ["cms.pagecontent"]`) + page_only = False + + allowed_models = None + """Plugin-level restriction: A list of valid models where this plugin can be added. + + Each entry must be the dotted path to the model in the format ``"app_label.modelname"``, + e.g., ``["cms.pagecontent", "myapp.mymodel"]``. + + - If ``None`` (default): The plugin can be added to any model that has placeholders. + - If a list/tuple is provided: The plugin can only be added to models in this list. + - If an empty list ``[]``: The plugin cannot be added to any model. + + Note: This can be combined with the model's ``allowed_plugins`` attribute for fine-grained control. + Both filters must pass for a plugin to be available on a model. + + See also: Model's ``allowed_plugins`` attribute for model-level restrictions. + """ + + allowed_slots = None + """Plugin-level restriction: A list of placeholder slot names where this plugin can be added. + + Each entry may be an exact slot name or a glob pattern (e.g. ``"content"`` or ``"footer_*"``), + matched against the placeholder's ``slot``. + + - If ``None`` (default): The plugin can be added to any slot. + - If a list/tuple is provided: The plugin can only be added to slots matching one of the entries. + - If an empty list ``[]``: The plugin cannot be added to any slot. + + This is the plugin-side counterpart to the ``plugins``/``excluded_plugins`` keys of + ``CMS_PLACEHOLDER_CONF``. Both filters must pass for the plugin to be available in a slot. + + See also: :attr:`allowed_models`, ``CMS_PLACEHOLDER_CONF``. + """ + + allow_children = False + """Allows this plugin to have child plugins - other plugins placed inside it? + + If ``True`` you need to ensure that your plugin can render its children in the plugin template. For example: + + .. code-block:: html+django + + {% load cms_tags %} +
+ {{ instance.my_content }} + {% for plugin in instance.child_plugin_instances %} + {% render_plugin plugin %} + {% endfor %} +
+ + ``instance.child_plugin_instances`` provides access to all the plugin's children. + They are pre-filled and ready to use. The child plugins should be rendered using + the ``{% render_plugin %}`` template tag. + + See also: :attr:`child_classes`, :attr:`parent_classes`, :attr:`require_parent`. + """ + + #: A list of Plugin Class Names. If this is set, only plugins listed here can be added to this plugin. + #: Entries may be glob patterns (e.g. ``"Bootstrap*"`` or ``"*Link*"``), which are expanded against the + #: names of all registered plugins. An empty list (``[]``), or a list of patterns that match no installed + #: plugin, means that no plugins are allowed as children, whereas ``None`` (the default) means there is no + #: restriction. As a special case, the string ``"auto"`` allows exactly those plugins that explicitly name + #: this plugin in their :attr:`parent_classes` -- i.e. the restriction is driven by the children opting in, + #: rather than the parent listing them. See also: :attr:`parent_classes`. + child_classes = None + + #: Is it required that this plugin is a child of another plugin? Or can it be added to any placeholder, even one + #: attached to a page. See also: :attr:`child_classes`, :attr:`parent_classes`. + require_parent = False + + #: A list of the names of permissible parent classes for this plugin. Entries may be glob patterns + #: (e.g. ``"Bootstrap*"`` or ``"*Link*"``), which are expanded against the names of all registered plugins. + #: An empty list (``[]``), or a list of patterns that match no installed plugin, means that the plugin allows + #: no parents and can therefore only be added to a placeholder, whereas ``None`` (the default) means there is + #: no restriction. See also: :attr:`child_classes`, :attr:`require_parent`. + parent_classes = None + + #: Disables *dragging* of child plugins in structure mode. + disable_child_plugins = False + + #: Marks this plugin as a *slot* — a structural container that is not directly editable by the user. + #: + #: If ``True``, the plugin will be rendered in structure mode normally, but double-clicking on it will + #: not open the plugin edit dialog. The user will not have a direct way to change the plugin instance. + #: + #: Moving or adding child plugins are not affected. + is_slot = False + + #: Determines if the add plugin modal is shown for this plugin (default: yes). Useful for plugins which have no + #: fields to fill, or which have valid default values for *all* fields. + #: If the plugin's form will not validate with the default values the add plugin modal is shown with the form + #: errors. + show_add_form = True + + #: The plugin does not modify the context or request and its rendering is not influenced by its parent + #: plugins. Defaults to ``True`` unless :setting:`CMS_ALWAYS_REFRESH_CONTENT` is set to ``True``. + is_local = not get_cms_setting("ALWAYS_REFRESH_CONTENT") + + # Warning: setting these to False, may have a serious performance impact, because their child-parent-relation must + # be recomputed each time the plugin tree is rendered. If a parent with cache_child_classes is True but has + # children with cache_parent_classes set to False, the child classes will not be cached. + cache_child_classes = True + cache_parent_classes = True + + _has_extra_placeholder_menu_items = False + _has_extra_plugin_menu_items = False + + cache = get_cms_setting("PLUGIN_CACHE") + """Is this plugin cacheable? If your plugin displays content based on the user or + request or other dynamic properties set this to ``False``. + + If present and set to ``False``, the plugin will prevent the caching of + the resulting page. + + .. important:: Setting this to ``False`` will effectively disable the + CMS page cache and all upstream caches for pages where + the plugin appears. This may be useful in certain cases + but for general cache management, consider using the much + more capable :meth:`get_cache_expiration`. + + .. warning:: + + If you disable a plugin cache be sure to restart the server and clear the cache afterwards. + """ + + #: This flag is used to determine whether a plugin is considered a “system” (internal) plugin — meaning, + #: it is used by the cms itself to structure content or placeholders, + #: not meant to be added, edited, or deleted directly by end users in the admin or frontend editor. + #: When set to ``True``, the cms treats that plugin as infrastructure, not user content (e.g djangocms-transfer). + system = False + + opts = {} + + def __init__(self, model=None, admin_site=None): + if admin_site: + super().__init__(self.model, admin_site) + + self.object_successfully_changed = False + self.placeholder = None + self.page = None + self.cms_plugin_instance = None + # The _cms_initial_attributes acts as a hook to set + # certain values when the form is saved. + # Currently, this only happens on plugin creation. + self._cms_initial_attributes = {} + self._operation_token = None + + def _get_render_template(self, context, instance, placeholder): + if hasattr(self, "get_render_template"): + template = self.get_render_template(context, instance, placeholder) + elif getattr(self, "render_template", False): + template = getattr(self, "render_template", False) + else: + template = None + + if not template: + raise ValidationError("plugin has no render_template: %s" % self.__class__) + return template + + @classmethod + def get_render_queryset(cls): + return cls.model._default_manager.all() + + def render(self, context, instance, placeholder): + """This method returns the context to be used to render the template + specified in :attr:`render_template`. + + :param dict context: The context with which the page is rendered. + :param instance: The instance of your plugin that is rendered. + :type instance: :class:`cms.models.pluginmodel.CMSPlugin` instance + :param str placeholder: The name of the placeholder that is rendered. + :rtype: `dict` or :class:`django.template.Context` + + This method must return a dictionary or an instance of + :class:`django.template.Context`, which will be used as context to render the + plugin template. + + By default, this method will add ``instance`` and ``placeholder`` to the + context, which means for simple plugins, there is no need to overwrite this + method. + + If you overwrite this method it's recommended to always populate the context + with default values by calling the render method of the super class:: + + def render(self, context, instance, placeholder): + context = super().render(context, instance, placeholder) + ... + return context + + """ + context["instance"] = instance + context["placeholder"] = placeholder + return context + + @classmethod + def is_allowed_in_slot(cls, slot: str | None) -> bool: + """Return whether this plugin may be added to a placeholder with the given ``slot``. + + Honours the :attr:`allowed_slots` plugin-level restriction. A ``slot`` of ``None`` + (an unbound query, e.g. the global plugin listing) is always allowed. + """ + if cls.allowed_slots is None or slot is None: + return True + # Tolerate a bare string (e.g. ``allowed_slots = "content"``) instead of + # iterating over its characters, which would silently misbehave. + patterns = [cls.allowed_slots] if isinstance(cls.allowed_slots, str) else cls.allowed_slots + return any(fnmatch.fnmatchcase(slot, pattern) for pattern in patterns) + + @classmethod + def requires_parent_plugin(cls, slot, page): + if cls.get_require_parent(slot, page): + return True + + allowed_parents = cls.get_parent_classes(slot, page) + return bool(allowed_parents) + + @classmethod + @lru_cache + def _get_template_for_conf(cls, page: Page | None, instance: CMSPlugin | None = None): + """Cache page template because page.get_template() might have to fetch the page content object from the db + since django CMS 4""" + if page and hasattr(page, "get_template"): + # Make the database access lazy, so that it only happens if needed. + return lazy(page.get_template, str)() + if ( + instance is not None + and instance.placeholder.source + and hasattr(instance.placeholder.source, "get_template") + ): + # If source object has get_template method, use it (lazily) + return lazy(instance.placeholder.source.get_template, str)() + return None + + @classmethod + @template_slot_caching + def get_require_parent(cls, slot: str, page: Page | None = None, instance: CMSPlugin | None = None) -> bool: + from cms.utils.placeholder import get_placeholder_conf + + template = cls._get_template_for_conf(page, instance) + + # config overrides.. + require_parent = get_placeholder_conf("require_parent", slot, template, default=cls.require_parent) + return require_parent + + def get_cache_expiration(self, request, instance, placeholder): + """ + Provides hints to the placeholder, and in turn to the page for + determining the appropriate Cache-Control headers to add to the + HTTPResponse object. + + :param request: Relevant ``HTTPRequest`` instance. + :param instance: The ``CMSPlugin`` instance that is being rendered. + :rtype: ``None`` or ``datetime`` or ``time_delta`` or ``int`` + + Must return one of: + + :``None``: + This means the placeholder and the page will not even + consider this plugin when calculating the page expiration; + + :``datetime``: + A specific date and time (timezone-aware) in the future + when this plugin's content expires; + + .. important:: The returned ``datetime`` must be timezone-aware + or the plugin will be ignored (with a warning) + during expiration calculations. + + + :``datetime.timedelta``: + A timedelta instance indicating how long, relative to + the response timestamp that the content can be cached; + + :``int``: + An integer number of seconds that this plugin's content can be cached. + + There are constants are defined in ``cms.constants`` that may be + useful: :const:`~cms.constants.EXPIRE_NOW` and :const:`~cms.constants.MAX_EXPIRATION_TTL`. + + An integer value of 0 (zero) or :const:`~cms.constants.EXPIRE_NOW` effectively means "do not + cache". Negative values will be treated as :const:`~cms.constants.EXPIRE_NOW`. Values exceeding the value + :const:`~cms.constants.MAX_EXPIRATION_TTL` will be set to that value. + + Negative `timedelta` values or those greater than ``MAX_EXPIRATION_TTL`` + will also be ranged in the same manner. + + Similarly, ``datetime`` values earlier than now will be treated as + ``EXPIRE_NOW``. Values greater than ``MAX_EXPIRATION_TTL`` seconds in the + future will be treated as ``MAX_EXPIRATION_TTL`` seconds in the future. + """ + return None + + def get_vary_cache_on(self, request, instance, placeholder): + """ + Returns an HTTP VARY header string or a list of them to be considered by the placeholder + and in turn by the page to caching behaviour. + + Overriding this method is optional. + + Must return one of: + + :``None``: + This means that this plugin declares no headers for the cache + to be varied upon. (default) + + :string: + The name of a header to vary caching upon. + + :list of strings: + A list of strings, each corresponding to a header to vary the + cache upon. + + .. note:: + This only makes sense to use with caching. If this plugin has + ``cache = False`` or plugin.get_cache_expiration(...) returns 0, + get_vary_cache_on() will have no effect. + """ + return None + + def render_change_form(self, request, context, add=False, change=False, form_url="", obj=None): + """ + We just need the popup interface here + """ + context.update( + { + "preview": "no_preview" not in request.GET, + "is_popup": True, + "plugin": obj, + "CMS_MEDIA_URL": get_cms_setting("MEDIA_URL"), + } + ) + + return super().render_change_form(request, context, add, change, form_url, obj) + + def render_close_frame( + self, + request: HttpRequest, + obj: CMSPlugin | None, + action: str | None = "edit", + extra_data: Context | None = None, + extra_context: Context | None = None, + ) -> HttpResponse: + """ + Renders the close frame for a CMS plugin in the Django admin interface. + + This method is used to send information to the javascript frontend + after an edit action has taken place. It allows the javascript frontend + to update the structure and content on the edit endpoints. + + Args: + request (HttpRequest): The HTTP request object. + obj (CMSPlugin): The CMS plugin instance being rendered. + action (Optional[str]): The action being performed on the plugin. + Defaults to "edit". Possible values are "add", "edit", "move", and "delete". + extra_data (Optional[Context]): Additional data to include in + the data bridge to the frontend. Defaults to None. + extra_context (Optional[Context]): Additional context to include in + the rendering. Defaults to None. + + Returns: + HttpResponse: The rendered confirmation form as an HTTP response. + + Raises: + ObjectDoesNotExist: If the parent plugin is a ghost plugin and the + plugin tree cannot be fetched. + + Notes: + - Handles edge cases where the parent plugin is a ghost plugin. + - Constructs the plugin tree structure and gathers plugin-specific + data for rendering. + - Includes messages from the request in the context. + """ + + dj_messages = [ + { + "level": message.level, + "message": message.message, + "tags": message.tags, + } + for message in messages.get_messages(request) + ] + + if not obj: + # No object specified - just close the modal frame + context = { + "is_popup": True, + "data_bridge": { + "action": action, + "messages": dj_messages, + **(extra_data or {}), + }, + **(extra_context or {}), + } + return TemplateResponse(request, "admin/cms/page/plugin/confirm_form.html", context) + + try: + root = obj.parent.get_bound_plugin() if obj.parent else obj + except ObjectDoesNotExist: + # This is a nasty edge-case. + # If the parent plugin is a ghost plugin, fetching the plugin tree + # will fail because the downcasting function filters out all ghost plugins. + # Currently, this case is only present in the djangocms-text app + # which uses ghost plugins to create inline plugins on the text. + root = obj + + plugins = [root] + list(root.get_descendants()) + + target_plugin = ( + plugins[0] + if action in ("add", "delete") + else next((plugin for plugin in plugins if plugin.pk == obj.pk), None) + ) + structure = get_plugin_tree(request, plugins, target_plugin=target_plugin) + plugin_data = next( + (plugin_data for plugin_data in structure["plugins"] if plugin_data["plugin_id"] == obj.pk), {} + ) + + context = { + "plugin": obj, + "is_popup": True, + "data_bridge": { + **plugin_data, + "action": action, + "plugin_desc": escapejs(force_str(obj.get_short_description())), + "structure": structure, + "messages": dj_messages, + **(extra_data or {}), + }, + **(extra_context or {}), + } + + return TemplateResponse(request, "admin/cms/page/plugin/confirm_form.html", context) + + def save_model(self, request, obj, form, change): + """ + Override original method, and add some attributes to obj + This has to be made, because if the object is newly created, it must know + where it lives. + """ + from django.contrib.admin import site + + pl = obj.placeholder + pl_admin = site._registry[obj.placeholder.__class__] + operation_kwargs = { + "request": request, + "placeholder": pl, + } + if change: + operation_kwargs["old_plugin"] = self.model.objects.get(pk=obj.pk) + operation_kwargs["new_plugin"] = obj + operation_kwargs["operation"] = operations.CHANGE_PLUGIN + else: + parent_id = obj.parent.pk if obj.parent else None + tree_order = obj.placeholder.get_plugin_tree_order(obj.language, parent_id) + operation_kwargs["plugin"] = obj + operation_kwargs["operation"] = operations.ADD_PLUGIN + operation_kwargs["tree_order"] = tree_order + # Remember the operation token + self._operation_token = pl_admin._send_pre_placeholder_operation(**operation_kwargs) + # Saves the plugin + # remember the saved object + self.saved_object = pl.add_plugin(obj) + pl.clear_cache(obj.language) + + def save_form(self, request, form, change): + obj = super().save_form(request, form, change) + + for field, value in self._cms_initial_attributes.items(): + # Set the initial attribute hooks (if any) + setattr(obj, field, value) + return obj + + def response_add(self, request, obj, **kwargs): + self.object_successfully_changed = True + # Normally we would add the user message to say the object + # was added successfully but looks like the CMS has not + # supported this and can lead to issues with plugins + # like ckeditor. + return self.render_close_frame(request, obj, action="add") + + def response_change(self, request, obj): + self.object_successfully_changed = True + opts = self.model._meta + msg_dict = { + "name": conditional_escape(force_str(opts.verbose_name)), + "obj": conditional_escape(force_str(obj)), + } + msg = mark_safe(_('The %(name)s "%(obj)s" was changed successfully.') % msg_dict) + self.message_user(request, msg, messages.SUCCESS) + return self.render_close_frame(request, obj, action="change") + + def log_addition(self, request, obj, bypass=None): + pass + + def log_change(self, request, obj, message, bypass=None): + pass + + def log_deletion(self, request, obj, object_repr, bypass=None): + pass + + def icon_src(self, instance): + """Deprecated: Since djangocms-text-ckeditor introduced inline previews of plugins, the icon will not be + rendered in TextPlugins anymore. + + By default, this returns an empty string, which, if left un-overridden would result in no icon + rendered at all, which, in turn, would render the plugin un-editable by the operator inside a parent + text plugin. + + Therefore, this should be overridden when the plugin has text_enabled set to True to return the path + to an icon to display in the text of the text plugin. + + :param instance: The instance of the plugin model. + :type instance: :class:`cms.models.pluginmodel.CMSPlugin` instance + + Example:: + + def icon_src(self, instance): + return static("cms/img/icons/plugins/link.png") + + See also: :attr:`text_enabled`, :meth:`icon_alt` + """ + return "" + + def icon_alt(self, instance): + """ + Overwrite this if necessary if ``text_enabled = True`` + Return the 'alt' text to be used for an icon representing + the plugin object in a text editor. + + :param instance: The instance of the plugin model to provide specific information + for the 'alt' text. + :type instance: :class:`cms.models.pluginmodel.CMSPlugin` instance + + By default, :meth:`icon_alt` will return a string of the form: "[plugin type] - + [instance]", but can be modified to return anything you like. + + This function accepts the ``instance`` as a parameter and returns a string to be + used as the ``alt`` text for the plugin's preview or icon. + + Authors of text-enabled plugins should consider overriding this function as + it will be rendered as a tooltip in most browser. This is useful, because if + the same plugin is used multiple times, this tooltip can provide information about + its configuration. + + See also: :attr:`text_enabled`, :meth:`icon_src`. + + + """ + return f"{force_str(self.name)} - {force_str(instance)}" + + def get_fieldsets(self, request, obj=None): + """ + Same as from base class except if there are no fields, show an info message. + """ + fieldsets = super().get_fieldsets(request, obj) + + for name, data in fieldsets: + if data.get("fields"): # if fieldset with non-empty fields is found, return fieldsets + return fieldsets + + if self.inlines: + return [] # if plugin has inlines but no own fields return empty fieldsets to remove empty white fieldset + + try: # if all fieldsets are empty (assuming there is only one fieldset then) add description + fieldsets[0][1]["description"] = self.get_empty_change_form_text(obj=obj) + except KeyError: + pass + return fieldsets + + @classmethod + def get_empty_change_form_text(cls, obj=None): + """ + Returns the text displayed to the user when editing a plugin + that requires no configuration. + """ + return gettext("There are no further settings for this plugin. Please press save.") + + @classmethod + @template_slot_caching + def get_child_class_overrides(cls, slot: str, page: Page | None = None, instance: CMSPlugin | None = None): + """ + Returns a list of plugin types that are allowed + as children of this plugin. + """ + from cms.plugin_pool import plugin_pool + from cms.utils.placeholder import get_placeholder_conf + + template = cls._get_template_for_conf(page, instance) + + # config overrides.. + ph_conf = get_placeholder_conf("child_classes", slot, template, default={}) + child_classes = ph_conf.get(cls.__name__, cls.child_classes) + # Expand any glob patterns (e.g. "Bootstrap*") to concrete plugin names. + return plugin_pool.resolve_plugin_patterns(child_classes) + + @classmethod + def get_child_plugin_candidates(cls, slot: str, page: Page | None = None) -> list: + """ + Returns a list of all plugin classes + that will be considered when fetching + all available child classes for this plugin. + + These are the plugins allowed in the placeholder (its ``plugins`` setting) plus the + plugins explicitly related to this plugin, i.e., named literally in this plugin's + ``child_classes`` or naming this plugin literally in their ``parent_classes`` (either + on the plugin class or in ``CMS_PLACEHOLDER_CONF``). Glob patterns do not count as + explicit relations. ``excluded_plugins`` and ``allowed_slots`` always apply. + """ + # Adding this as a separate method, + # we allow other plugins to affect + # the list of child plugin candidates. + # Useful in cases like djangocms-text + # where only text-only plugins are allowed. + from cms.plugin_pool import plugin_pool + from cms.utils.placeholder import get_placeholder_conf + + template = cls._get_template_for_conf(page, None) + allowed_plugins = get_placeholder_conf("plugins", slot, template) + if not allowed_plugins: + # No restriction: All plugins are candidates anyway + return list(plugin_pool.get_all_plugins(slot, page, root_plugin=False)) + + declared_children = get_placeholder_conf("child_classes", slot, template, default={}).get( + cls.__name__, cls.child_classes + ) + if isinstance(declared_children, str): # "auto" is covered by the children's parent_classes + declared_children = None + # Membership tests below are literal: glob patterns never equal a plugin name + declared_children = set(declared_children or ()) + conf_parent_classes = get_placeholder_conf("parent_classes", slot, template, default={}) + + def is_candidate(plugin: type[CMSPluginBase]) -> bool: + name = plugin.__name__ + if name in allowed_plugins or name in declared_children: + return True + return cls.__name__ in (conf_parent_classes.get(name, plugin.parent_classes) or ()) + + return [ + plugin + for plugin in plugin_pool.get_all_plugins(slot, page, setting_key=None, root_plugin=False) + if is_candidate(plugin) + ] + + @classmethod + @template_slot_caching + def get_child_classes( + cls, slot, page: Page | None = None, instance: CMSPlugin | None = None, only_uncached: bool = False + ) -> list[str]: + """ + Returns a list of plugin types that can be added + as children to this plugin. + """ + # Placeholder overrides are highest in priority + child_classes = cls.get_child_class_overrides(slot, page=page, instance=instance) + # Get all child plugin candidates - for the same source (and template) as the overrides + source = instance.placeholder.source if page is None and instance is not None else page + installed_plugins = cls.get_child_plugin_candidates(slot, source) + + if child_classes == "auto": + from cms.utils.placeholder import get_placeholder_conf + + # Allow all plugins as children that explicitly declare this plugin as parent, + # either on the plugin class or in the placeholder configuration + template = cls._get_template_for_conf(page, instance) + conf_parent_classes = get_placeholder_conf("parent_classes", slot, template, default={}) + return [ + plugin.__name__ + for plugin in installed_plugins + if cls.__name__ in (conf_parent_classes.get(plugin.__name__, plugin.parent_classes) or ()) + ] + elif child_classes is not None: + # An explicit list of allowed child classes (possibly empty). + # An empty list means that no plugins are allowed as children, whereas + # ``None`` (handled below) means there is no restriction. + # Override skips check if current class is valid parent of child classes + return [plugin.__name__ for plugin in installed_plugins if plugin.__name__ in child_classes] + + if only_uncached: + installed_plugins = [plugin for plugin in installed_plugins if not plugin.cache_parent_classes] + + child_classes = [] + plugin_type = cls.__name__ + + # The following will go through each + # child plugin candidate and check if + # has configured parent class restrictions. + # If there are restrictions then the plugin + # is only a valid child class if the current plugin + # matches one of the parent restrictions. + # If there are no restrictions then the plugin + # is a valid child class. + for plugin_class in installed_plugins: + allowed_parents = plugin_class.get_parent_classes(slot, page, instance) + if allowed_parents is None or plugin_type in allowed_parents: + # Plugin has no parent restrictions (``None``) or + # current plugin (self) is a configured parent. + # An empty ``parent_classes`` list means the plugin allows no + # parents and is therefore never a valid child. + child_classes.append(plugin_class.__name__) + + return child_classes + + @classmethod + @template_slot_caching + def get_parent_classes(cls, slot: str, page: Page | None = None, instance: CMSPlugin | None = None) -> list[str]: + from cms.plugin_pool import plugin_pool + from cms.utils.placeholder import get_placeholder_conf + + template = cls._get_template_for_conf(page, instance) + + # config overrides.. + ph_conf = get_placeholder_conf("parent_classes", slot, template, default={}) + parent_classes = ph_conf.get(cls.__name__, cls.parent_classes) + # Expand any glob patterns (e.g. "Bootstrap*") to concrete plugin names. + return plugin_pool.resolve_plugin_patterns(parent_classes) + + def get_plugin_urls(self) -> list: + """ + Returns the URL patterns the plugin wants to register views for. + They are included under django CMS's page admin URLS in the plugin path + (e.g.: ``/admin/cms/page/plugin//`` in the default case). + + + ``get_plugin_urls()`` is useful if your plugin needs to talk asynchronously to the admin. + """ + return [] + + def plugin_urls(self): + return self.get_plugin_urls() + + plugin_urls = property(plugin_urls) + + @classmethod + def get_extra_placeholder_menu_items(cls, request: HttpRequest, placeholder: Placeholder) -> list["PluginMenuItem"] | None: + """Extends the placeholder context menu for all placeholders. + + To add one or more custom context menu items that are displayed in the context menu for all placeholders when + in structure mode, override this method in a related plugin to return a list of + :class:`cms.plugin_base.PluginMenuItem` instances. + """ + pass + + @classmethod + def get_extra_plugin_menu_items(cls, request: HttpRequest, plugin: CMSPlugin) -> list["PluginMenuItem"] | None: + """Extends the plugin context menu for all plugins. + + To add one or more custom context menu items that are displayed in the context menu for all plugins when in + structure mode, override this method in a related plugin to return a list of + :class:`cms.plugin_base.PluginMenuItem` instances. + """ + pass + + def __repr__(self): + return smart_str(self.name) + + def __str__(self): + return self.name + + +class PluginMenuItem: + """ + Creates an item in the plugin / placeholder menu + + :param name: Item name (label) + :param url: URL the item points to. This URL will be called using POST + :param data: Data to be POSTed to the above URL + :param question: Confirmation text to be shown to the user prior to call the given URL (optional) + :param action: Custom action to be called on click; currently supported: 'ajax', 'ajax_add' + :param attributes: Dictionary whose content will be added as data-attributes to the menu item + + """ + + def __init__(self, name, url, data=None, question=None, action="ajax", attributes=None): + if not attributes: + attributes = {} + + if data: + data = json.dumps(data) + + self.name = name + self.url = url + self.data = data + self.question = question + self.action = action + self.attributes = attributes diff --git a/cms/plugin_pool.py b/cms/plugin_pool.py new file mode 100644 index 00000000..84527319 --- /dev/null +++ b/cms/plugin_pool.py @@ -0,0 +1,409 @@ +import fnmatch +from collections import defaultdict +from functools import lru_cache +from operator import attrgetter + +from django.core.exceptions import ImproperlyConfigured +from django.db import models +from django.template import TemplateDoesNotExist, TemplateSyntaxError +from django.template.defaultfilters import slugify +from django.urls import URLResolver, include, re_path +from django.utils.encoding import force_str +from django.utils.functional import cached_property, lazy +from django.utils.module_loading import autodiscover_modules +from django.utils.translation import activate, deactivate_all, get_language + +from cms.exceptions import PluginAlreadyRegistered, PluginNotRegistered +from cms.models import Page +from cms.models.placeholdermodel import Placeholder +from cms.plugin_base import CMSPluginBase +from cms.utils.helpers import normalize_name + +_GLOB_CHARS = ("*", "?", "[") + + +def _has_glob(pattern: str) -> bool: + """Return ``True`` if ``pattern`` looks like a glob (contains ``*``, ``?`` or ``[``).""" + return isinstance(pattern, str) and any(char in pattern for char in _GLOB_CHARS) + + +class PluginPool: + plugins: dict[str, type[CMSPluginBase]] + root_plugin_cache: dict[str, list[type[CMSPluginBase]]] + discovered: bool + global_restrictions_cache: defaultdict[str, dict] + + def __init__(self): + self.plugins = {} + self.root_plugin_cache = {} + self.discovered = False + self.global_restrictions_cache = defaultdict(dict) + + @property + def global_template_restrictions(self) -> bool: + return any(".htm" in (key or "") for key in self.global_restrictions_cache) + + def _clear_cached(self) -> None: + self.root_plugin_cache = {} + self.global_restrictions_cache = defaultdict(dict) + self.get_all_plugins_for_model.cache_clear() + self.expand_plugin_patterns.cache_clear() + if "registered_plugins" in self.__dict__: + del self.__dict__["registered_plugins"] + if "plugins_with_extra_menu" in self.__dict__: + del self.__dict__["plugins_with_extra_menu"] + if "plugins_with_extra_placeholder_menu" in self.__dict__: + del self.__dict__["plugins_with_extra_placeholder_menu"] + + @lru_cache # noqa: B019 + def expand_plugin_patterns(self, patterns: tuple[str, ...]) -> frozenset[str]: + """ + Expand a tuple of plugin-name patterns into the set of matching plugin names. + + Literal names are kept verbatim (so an unregistered literal simply matches no + installed plugin, preserving historic behaviour). Glob patterns -- ``*``, ``?`` + and ``[seq]`` -- are matched case-sensitively against the names of all registered + plugins. + + The result is memoized; the cache is cleared whenever plugins are (un)registered + (see :meth:`_clear_cached`), so the registry is only scanned on the first use of a + given pattern tuple. This keeps restriction evaluation -- which is on the critical + rendering path -- cheap. + """ + globs = [pattern for pattern in patterns if _has_glob(pattern)] + if not globs: + # Fast path: no globs, nothing to expand against the registry. + return frozenset(patterns) + names = tuple(self.plugins) + matched = {pattern for pattern in patterns if not _has_glob(pattern)} + for pattern in globs: + matched.update(name for name in names if fnmatch.fnmatchcase(name, pattern)) + return frozenset(matched) + + def resolve_plugin_patterns(self, patterns: list[str] | None) -> list[str] | None: + """ + Resolve a ``child_classes``/``parent_classes`` value, expanding any glob patterns. + + ``None`` (no restriction) is returned unchanged. A list without glob patterns is + returned as-is, both to avoid overhead and to preserve its ordering. A list with at + least one glob is expanded to the sorted list of matching registered plugin names. + + Expansion happens *before* emptiness is interpreted, so a glob that matches nothing + yields an empty list -- i.e. "no plugins allowed", just like an explicit ``[]``. + """ + if patterns is None: + return None + if not any(_has_glob(pattern) for pattern in patterns): + return patterns + return sorted(self.expand_plugin_patterns(tuple(patterns))) + + def discover_plugins(self) -> None: + if self.discovered: + return + + autodiscover_modules("cms_plugins") + self.discovered = True + # Sort plugins by their module and name + self.plugins = dict(sorted(self.plugins.items(), key=lambda key: (key[1].module, key[1].name))) + + def clear(self) -> None: + self.discovered = False + self.plugins = {} + self._clear_cached() + + def validate_templates(self, plugin: type[CMSPluginBase] | None = None) -> None: + """ + Verify that all plugins have a valid render template. + + Plugins that have render_plugin=False and allow_children=False are + always deemed valid. + """ + if plugin: + plugins = [plugin] + else: + plugins = self.plugins.values() + for plugin_class in plugins: + if ( + plugin_class.render_plugin + and type(plugin_class.render_plugin) is not property + or hasattr(plugin_class.model, "render_template") + or hasattr(plugin_class, "get_render_template") + ): + if plugin_class.render_template is None and not hasattr(plugin_class, "get_render_template"): + raise ImproperlyConfigured( + "CMS Plugins must define a render template, " + "a get_render_template method or " + "set render_plugin=False: %s" % plugin_class + ) + # If plugin class defines get_render_template we cannot + # statically check for valid template file as it depends + # on plugin configuration and context. + # We cannot prevent developer to shoot in the users' feet + if not hasattr(plugin_class, "get_render_template"): + from django.template import loader + + template = plugin_class.render_template + if isinstance(template, str) and template: + try: + loader.get_template(template) + except TemplateDoesNotExist as e: + # Note that the template loader will throw + # TemplateDoesNotExist if the plugin's render_template + # does in fact exist, but it includes a template that + # doesn't. + if str(e) == template: + raise ImproperlyConfigured( + "CMS Plugins must define a render template (%s) that exists: %s" + % (plugin_class, template) + ) + else: + pass + except TemplateSyntaxError: + pass + else: + if plugin_class.allow_children: + raise ImproperlyConfigured( + "CMS Plugins can not define render_plugin=False and allow_children=True: %s" % plugin_class + ) + + def register_plugin(self, plugin: type[CMSPluginBase]) -> type[CMSPluginBase]: + """ + Register the given plugin. + + Static sanity checks is also performed. + + If a plugin is already registered, this will raise PluginAlreadyRegistered. + """ + if not issubclass(plugin, CMSPluginBase): + raise ImproperlyConfigured("CMS Plugins must be subclasses of CMSPluginBase, %r is not." % plugin) + plugin_name = plugin.__name__ + if plugin_name in self.plugins: + raise PluginAlreadyRegistered( + f"Cannot register {plugin!r}, a plugin with this name ({plugin_name!r}) is already registered." + ) + plugin.value = plugin_name + self.plugins[plugin_name] = plugin + self._clear_cached() + return plugin + + def unregister_plugin(self, plugin: type[CMSPluginBase]) -> None: + """ + Unregister the given plugin. + + If the plugin isn't already registered, this will raise PluginNotRegistered. + """ + plugin_name = plugin.__name__ + if plugin_name not in self.plugins: + raise PluginNotRegistered("The plugin %r is not registered" % plugin) + del self.plugins[plugin_name] + self._clear_cached() + + @lru_cache # noqa: B019 + def get_all_plugins_for_model(self, model: type[models.Model]) -> list[type[CMSPluginBase]]: + """ + Retrieve all plugins that can be used to edit the given model. + + This method applies two levels of filtering: + + 1. Plugin-level filtering (allowed_models on plugin): + - If a plugin has allowed_models defined, the model must be in that list + - If allowed_models is None, the plugin is available for all models + + 2. Model-level filtering (allowed_plugins on model): + - If the model has allowed_plugins defined, only those plugins are returned + - If allowed_plugins is None, all plugins (passing filter 1) are returned + - If allowed_plugins is an empty list [], no plugins are returned + + Args: + model: The Django model class to get plugins for + + Returns: + List of plugin classes that can be used with this model + """ + obj_type = f"{model._meta.app_label}.{model._meta.model_name}" if model else "None" + assert obj_type != "cms.page" + obj_allowed_plugins = getattr(model, "allowed_plugins", None) + # Filters for allowed_models + plugins = (plugin for plugin in self.plugins.values() if not plugin.allowed_models or obj_type in plugin.allowed_models) + # Filters for allowed_plugins + if obj_allowed_plugins is not None: + plugins = (plugin for plugin in plugins if plugin.__name__ in obj_allowed_plugins) + return list(plugins) + + def get_all_plugins( + self, + placeholder: str | None = None, + page: Page | None = None, + setting_key: str = "plugins", + include_page_only: bool = True, + root_plugin: bool = False, + ): + from cms.utils.placeholder import get_placeholder_conf + + plugins = self.get_all_plugins_for_model(page.__class__) if page else self.plugins.values() + template = ( + lazy(page.get_template, str)() if page and hasattr(page, "get_template") else None + ) # Make template lazy to avoid unnecessary db access + + # ``setting_key=None`` skips the placeholder's allow list (``excluded_plugins`` still applies) + allowed_plugins = ( + get_placeholder_conf( + setting_key, + placeholder, + template, + ) + if setting_key + else None + ) or () + excluded_plugins = ( + get_placeholder_conf( + "excluded_plugins", + placeholder, + template, + ) + or () + ) + + if allowed_plugins: + # Check that plugins are in the list of the allowed ones + plugins = (plugin for plugin in plugins if plugin.__name__ in allowed_plugins) + + if excluded_plugins: + # Check that plugins are not in the list of the excluded ones + plugins = (plugin for plugin in plugins if plugin.__name__ not in excluded_plugins) + + if placeholder is not None: + # Honour each plugin's allowed_slots restriction (plugin-side counterpart to the + # placeholder's plugins/excluded_plugins config). + plugins = (plugin for plugin in plugins if plugin.is_allowed_in_slot(placeholder)) + + if root_plugin: + # Filters out any plugin that requires a parent or has set parent classes + plugins = (plugin for plugin in plugins if not plugin.requires_parent_plugin(placeholder, page)) + return plugins + + def get_root_plugins(self, placeholder: Placeholder) -> list[type[CMSPluginBase]]: + template = placeholder.source.get_template() if hasattr(placeholder.source, "get_template") else "None" + key = f"{template}:{placeholder.slot}" + if key not in self.root_plugin_cache: + self.root_plugin_cache[key] =list(self.get_all_plugins(placeholder.slot, placeholder.source, root_plugin=True)) + return self.root_plugin_cache[key] + + def get_text_enabled_plugins(self, placeholder, page) -> list[type[CMSPluginBase]]: + plugins = set(self.get_all_plugins(placeholder, page, root_plugin=False)) + plugins.update(self.get_all_plugins(placeholder, page, setting_key="text_only_plugins", root_plugin=False)) + return sorted((p for p in plugins if p.text_enabled), key=attrgetter("module", "name")) + + def get_plugin(self, name) -> type[CMSPluginBase]: + """ + Retrieve a plugin from the cache. + """ + return self.plugins[name] + + def get_patterns(self) -> list[URLResolver]: + self.discover_plugins() + + # We want untranslated name of the plugin for its slug so we deactivate translation + lang = get_language() + deactivate_all() + + try: + url_patterns = [] + for plugin in self.registered_plugins: + p = plugin() + slug = slugify(force_str(normalize_name(p.__class__.__name__))) + url_patterns += [ + re_path(rf"^plugin/{slug}/", include(p.plugin_urls)), + ] + finally: + # Reactivate translation + activate(lang) + + return url_patterns + + def get_system_plugins(self) -> list[str]: + return [plugin.__name__ for plugin in self.plugins.values() if plugin.system] + + @cached_property + def registered_plugins(self) -> list[type[CMSPluginBase]]: + return sorted(self.get_all_plugins(root_plugin=False), key=attrgetter("module", "name")) + + @cached_property + def plugins_with_extra_menu(self) -> list[type[CMSPluginBase]]: + plugin_classes = [cls for cls in self.registered_plugins if cls._has_extra_plugin_menu_items] + return plugin_classes + + @cached_property + def plugins_with_extra_placeholder_menu(self) -> list[type[CMSPluginBase]]: + plugin_classes = [cls for cls in self.registered_plugins if cls._has_extra_placeholder_menu_items] + return plugin_classes + + def get_restrictions_cache( + self, request_cache: dict, instance: CMSPluginBase, obj: models.Model | None + ) -> defaultdict[str, dict]: + """ + Retrieve the restrictions cache for a given plugin instance. + + This method checks if the plugin class can be cached globally. This is the case if the + plugin restrictions only depend on template and placeholder slot as described by the + CMS_PLACEHOLDER_CONF setting. + + If it can, it retrieves the appropriate restrictions cache based on the template and slot + of the plugin instance's placeholder. If not, it returns the (local) request cache which will + be recalculated for each request. + + Args: + request_cache (dict): The current request cache (only filled is non globally cacheable). + instance (CMSPluginBase): The plugin instance for which to retrieve the restrictions cache. + obj (Optional[models.Model]): The model instance associated with the plugin instance, if any. + + Returns: + dict: The restrictions cache for the given plugin instance - or the cache valid for the request. + """ + plugin_class = self.get_plugin(instance.plugin_type) + object_class = f"{obj._meta.app_label}.{obj._meta.model_name}" if obj else "" + if not self.can_cache_globally(plugin_class): + return request_cache + slot = instance.placeholder.slot + if self.global_template_restrictions: + template = plugin_class._get_template_for_conf(obj) if obj else "" + else: + template = "" + + if template and f"{object_class}:{template} {slot}" in self.global_restrictions_cache: + return self.global_restrictions_cache[f"{object_class}:{template} {slot}"] + if template and f"{object_class}:{template}" in self.global_restrictions_cache: + return self.global_restrictions_cache[f"{object_class}:{template}"] + if slot and f"{object_class}:{slot}" in self.global_restrictions_cache: + return self.global_restrictions_cache[f"{object_class}:{slot}"] + return self.global_restrictions_cache[object_class] + + restriction_methods = ( + "get_require_parent", + "get_child_class_overrides", + "get_parent_classes", + "get_child_classes", + ) + + def can_cache_globally(self, plugin_class: type[CMSPluginBase]) -> bool: + """ + Check if the restrictions for a given plugin class can be cached globally. + + This is the case if the plugin restrictions only depend on template and placeholder slot as + described by the CMS_PLACEHOLDER_CONF setting. + + Args: + plugin_class (CMSPluginBase): The plugin class for which to check if restrictions can be cached globally. + + Returns: + bool: True if the restrictions can be cached globally, False otherwise. + """ + if not hasattr(plugin_class, "_cache_restrictions_globally"): + plugin_class._cache_restrictions_globally = all( + hasattr(getattr(plugin_class, method_name), "_template_slot_caching") + for method_name in self.restriction_methods + ) + return plugin_class._cache_restrictions_globally + + +plugin_pool = PluginPool() diff --git a/cms/plugin_processors.py b/cms/plugin_processors.py new file mode 100644 index 00000000..58fc39ff --- /dev/null +++ b/cms/plugin_processors.py @@ -0,0 +1,21 @@ +from django.utils.safestring import mark_safe + + +def plugin_meta_context_processor(instance, placeholder, context): + return { + 'plugin': { + 'counter': instance._render_meta.index + 1, + 'counter0': instance._render_meta.index, + 'revcounter': instance._render_meta.total - instance._render_meta.index, + 'revcounter0': instance._render_meta.total - instance._render_meta.index - 1, + 'first': instance._render_meta.index == 0, + 'last': instance._render_meta.index == instance._render_meta.total - 1, + 'total': instance._render_meta.total, + 'id_attr': 'plugin_%i_%i' % (instance.placeholder_id, instance.pk), + 'instance': instance, + } + } + + +def mark_safe_plugin_processor(instance, placeholder, rendered_content, original_context): + return mark_safe(rendered_content) diff --git a/cms/plugin_rendering.py b/cms/plugin_rendering.py new file mode 100644 index 00000000..411fe65c --- /dev/null +++ b/cms/plugin_rendering.py @@ -0,0 +1,798 @@ +import contextlib +import logging +import sys +from collections import OrderedDict +from collections.abc import Generator +from functools import partial +from typing import Any + +from classytags.utils import flatten_context +from django.conf import settings +from django.contrib.sites.models import Site +from django.db import models +from django.http import HttpRequest +from django.template import Context +from django.utils.functional import cached_property +from django.utils.html import format_html +from django.utils.module_loading import import_string +from django.utils.safestring import SafeText, mark_safe +from django.utils.translation import get_language, override +from django.views.debug import ExceptionReporter + +from cms.cache.placeholder import get_placeholder_cache, set_placeholder_cache +from cms.exceptions import PlaceholderNotFound +from cms.models import CMSPlugin, Page, PageContent, Placeholder +from cms.plugin_pool import PluginPool +from cms.toolbar.utils import ( + get_placeholder_toolbar_js, + get_plugin_toolbar_js, + get_toolbar_from_request, +) +from cms.utils import get_language_from_request +from cms.utils.compat.warnings import RemovedInDjangoCMS60Warning +from cms.utils.conf import get_cms_setting +from cms.utils.permissions import has_plugin_permission +from cms.utils.placeholder import ( + get_toolbar_plugin_struct, + rescan_placeholders_for_obj, + restore_sekizai_context, +) +from cms.utils.plugins import get_plugin_restrictions + +logger = logging.getLogger(__name__) + + +def _unpack_plugins(parent_plugin: CMSPlugin) -> Generator[CMSPlugin, None, None]: + yield parent_plugin + for plugin in parent_plugin.child_plugin_instances or []: + yield from _unpack_plugins(plugin) + + +class RenderedPlaceholder: + __slots__ = ( + "language", + "site_id", + "cached", + "editable", + "placeholder", + "has_content", + ) + + def __init__( + self, + placeholder: Placeholder, + language: str, + site_id: int, + cached: bool = False, + editable: bool = False, + has_content: bool = False, + ): + self.language = language + self.site_id = site_id + self.cached = cached + self.editable = editable + self.placeholder = placeholder + self.has_content = has_content + + def __eq__(self, other): + # The same placeholder rendered with different + # parameters is considered the same. + # This behavior is compatible with previous djangoCMS releases. + return self.placeholder == other.placeholder + + def __ne__(self, other): + return not self.__eq__(other) + + def __hash__(self): + return hash(self.placeholder) + + +class BaseRenderer: + load_structure: bool = False + placeholder_edit_template: str = "" + + def __init__(self, request: HttpRequest): + self.request = request + self._cached_plugin_classes = {} + self._placeholders_content_cache = {} + self._placeholders_by_page_cache = {} + self._rendered_placeholders = OrderedDict() + self._rendered_plugins_by_placeholder = {} + self._plugins_with_perms = None + + @cached_property + def current_page(self) -> Page: + return self.request.current_page + + @cached_property + def current_site(self) -> Site: + return Site.objects.get_current(self.request) + + @cached_property + def toolbar(self): + return get_toolbar_from_request(self.request) + + @cached_property + def templates(self): + return self.toolbar.templates + + @cached_property + def plugin_pool(self) -> PluginPool: + import cms.plugin_pool + + return cms.plugin_pool.plugin_pool + + @cached_property + def request_language(self) -> str: + return get_language_from_request(self.request) + + def get_plugins_with_perms(self) -> list[CMSPlugin]: + if self._plugins_with_perms is None: + registered_plugins = self.plugin_pool.registered_plugins + can_add_plugin = partial(has_plugin_permission, user=self.request.user, permission_type="add") + self._plugins_with_perms = [ + plugin for plugin in registered_plugins if can_add_plugin(plugin_type=plugin.value) + ] + + return self._plugins_with_perms + + def get_placeholder_plugin_menu(self, placeholder: Placeholder, page: Page | None = None): + plugin_menu = get_toolbar_plugin_struct( + plugins=self.get_plugins_with_perms(), + slot=placeholder.slot, + obj=page, + ) + plugin_menu_template = self.templates.placeholder_plugin_menu_template + return plugin_menu_template.render({"plugin_menu": plugin_menu}) + + def get_placeholder_toolbar_js(self, placeholder, page: models.Model | None = None): + if page: + import warnings + + warnings.warn( + "The 'page' argument of 'get_placeholder_toolbar_js' is deprecated and will be removed in a future " + "release. It can be safely removed from the call.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + plugins = self.plugin_pool.get_root_plugins(placeholder) # original + plugin_types = [cls.__name__ for cls in plugins] + allowed_plugins = plugin_types + self.plugin_pool.get_system_plugins() + placeholder_toolbar_js = get_placeholder_toolbar_js( + placeholder=placeholder, + allowed_plugins=allowed_plugins, + ) + return placeholder_toolbar_js + + def get_plugin_toolbar_js(self, plugin: CMSPlugin, obj: models.Model): + placeholder_cache = self._rendered_plugins_by_placeholder.setdefault(plugin.placeholder_id, {}) + child_classes, _ = get_plugin_restrictions( + plugin=plugin, + page=obj, + restrictions_cache=placeholder_cache, # Store non-global plugin-restriction in placeholder_cache + ) + # Make the resolved restrictions available to the drag-item template (which renders the + # same instances) so it can decide whether children may be added without recomputing. + plugin.child_class_restrictions = child_classes + content = get_plugin_toolbar_js( + plugin, + children=child_classes, + ) + return content + + def get_plugin_class(self, plugin: CMSPlugin) -> type: + plugin_type = plugin.plugin_type + + if plugin_type not in self._cached_plugin_classes: + self._cached_plugin_classes[plugin_type] = self.plugin_pool.get_plugin(plugin_type) + return self._cached_plugin_classes[plugin_type] + + def get_plugins_to_render(self, placeholder: Placeholder, language: str, template: str | None): + from cms.utils.plugins import get_plugins + + plugins = get_plugins( + request=self.request, + placeholder=placeholder, + template=template, + lang=language, + ) + return plugins + + def get_rendered_plugins_cache(self, placeholder: Placeholder): + blank: dict[str, Any] = { + "plugins": [], + "plugin_parents": {}, + "plugin_children": {}, + } + return self._rendered_plugins_by_placeholder.get(placeholder.pk, blank) + + def get_rendered_placeholders(self) -> list[Placeholder]: + rendered = list(self._rendered_placeholders.values()) + return [r.placeholder for r in rendered] + + def get_rendered_editable_placeholders(self) -> list[Placeholder]: + rendered = list(self._rendered_placeholders.values()) + return [r.placeholder for r in rendered if r.editable] + + +class ContentRenderer(BaseRenderer): + plugin_edit_template = ( + '{content}' + '' + ) + placeholder_edit_template = ( + '{content}
{plugin_js}{placeholder_js}' + ) + + def __init__(self, request: HttpRequest): + super().__init__(request) + self._placeholders_are_editable = bool(self.toolbar.edit_mode_active) + + def placeholder_cache_is_enabled(self): + if not get_cms_setting("PLACEHOLDER_CACHE"): + return False + if self.request.user.is_staff: + return False + return not self._placeholders_are_editable + + def render_placeholder( + self, + placeholder: Placeholder, + context: Context, + language: str | None = None, + page: Page | None = None, + editable: bool = False, + use_cache: bool = False, + nodelist: Any | None = None, + width: int | None = None, + ): + from sekizai.helpers import Watcher + + language = language or self.request_language + editable = editable and self._placeholders_are_editable + + if use_cache and not editable and placeholder.cache_placeholder: + use_cache = self.placeholder_cache_is_enabled() + else: + use_cache = False + + if use_cache: + cached_value = self._get_cached_placeholder_content( + placeholder=placeholder, + language=language, + ) + else: + cached_value = None + + if cached_value is not None: + # User has opted to use the cache + # and there is something in the cache + restore_sekizai_context(context, cached_value["sekizai"]) + return mark_safe(cached_value["content"]) + + context.push() + + width = width or placeholder.default_width + template = page.get_template() if page and hasattr(page, "get_template") else None + + if width: + context["width"] = width + + # Add extra context as defined in settings, but do not overwrite existing context variables, + # since settings are general and database/template are specific + # TODO this should actually happen as a plugin context processor, but these currently overwrite + # existing context -- maybe change this order? + for key, value in placeholder.get_extra_context(template).items(): + if key not in context: + context[key] = value + + if use_cache: + watcher = Watcher(context) + + plugin_content = self.render_plugins( + placeholder, + language=language, + context=context, + editable=editable, + template=template, + ) + try: + placeholder_content = "".join(plugin_content) + except Exception as e: + context["exc_info"] = sys.exc_info() + placeholder_content = self.render_exception("rendering placeholder", context, placeholder, editable) + if not get_cms_setting("CATCH_PLUGIN_500_EXCEPTION"): + if not self.toolbar.edit_mode_active and not self.toolbar.preview_mode_active: + raise e from None + + if not placeholder_content and nodelist: + # should be nodelist from a template + placeholder_content = nodelist.render(context) + + if use_cache: + content = { + "content": placeholder_content, + "sekizai": watcher.get_changes(), + } + set_placeholder_cache( + placeholder, + lang=language, + site_id=self.current_site.pk, + content=content, + request=self.request, + ) + + rendered_placeholder = RenderedPlaceholder( + placeholder=placeholder, + language=language, + site_id=self.current_site.pk, + cached=use_cache, + editable=editable, + has_content=bool(placeholder_content), + ) + + if placeholder.pk not in self._rendered_placeholders: + # First time this placeholder is rendered + if not self.toolbar._cache_disabled: + # The toolbar middleware needs to know if the response + # is to be cached. + # Set the _cache_disabled flag to the value of cache_placeholder + # only if the flag is False (meaning cache is enabled). + self.toolbar._cache_disabled = not use_cache + self._rendered_placeholders[placeholder.pk] = rendered_placeholder + + if editable: + request = context.get("request", None) + with override(request.toolbar.toolbar_language) if request else contextlib.nullcontext(): + data = self.get_editable_placeholder_context(placeholder, page=page) + data["content"] = placeholder_content + placeholder_content = self.placeholder_edit_template.format(**data) + + context.pop() + return mark_safe(placeholder_content) + + def get_editable_placeholder_context(self, placeholder: Placeholder, page: Page | None = None) -> dict: + obj = page or placeholder.source + placeholder_cache = self.get_rendered_plugins_cache(placeholder) + placeholder_toolbar_js = self.get_placeholder_toolbar_js(placeholder) + plugin_toolbar_js_bits = ( + self.get_plugin_toolbar_js(plugin, obj=obj) for plugin in placeholder_cache["plugins"] + ) + context = { + "plugin_js": "".join(plugin_toolbar_js_bits), + "placeholder_js": placeholder_toolbar_js, + "placeholder_id": placeholder.pk, + } + return context + + def render_obj_placeholder( + self, + slot: str, + context: Context, + inherit: bool, + nodelist=None, + editable: bool = True, + ): + # Get current object from toolbar + current_obj = self.toolbar.get_object() + # Check if page, if so delegate to render_page_placeholder + if self.current_page and (isinstance(current_obj, (PageContent, type(None)))): + return self.render_page_placeholder( + slot, + context, + inherit, + nodelist=nodelist, + editable=editable, + ) + # Not page, therefore we will use toolbar object as + # the current object and render the placeholder + if current_obj is None: + raise PlaceholderNotFound(f"No object found for placeholder '{slot}'") + placeholder = rescan_placeholders_for_obj(current_obj).get(slot) + content = self.render_placeholder( + placeholder, + context=context, + page=current_obj, + editable=editable, + use_cache=True, + nodelist=None, + ) + return content + + def render_page_placeholder( + self, + slot: str, + context: Context, + inherit: bool, + page: Page | None = None, + nodelist=None, + editable: bool = True, + ): + if not self.current_page: + # This method should only be used when rendering a cms page. + return "" + + current_page = page or self.current_page + language = get_language() + placeholder_cache = self._placeholders_by_page_cache + + if current_page.pk not in placeholder_cache: + # Instead of loading plugins for this one placeholder + # try and load them for all placeholders on the page. + self._preload_placeholders_for_page(current_page, language=language) + + try: + placeholder = placeholder_cache[current_page.pk][slot] + except KeyError: + content = "" + placeholder = None + else: + content = self.render_placeholder( + placeholder, + context=context, + language=language, + page=placeholder.source, + editable=editable, + use_cache=True, + nodelist=None, + ) + should_inherit = ( + inherit + and not content + and current_page.parent + # The placeholder cache is primed when the first placeholder + # is loaded. If the current page's parent is not in there, + # it means its cache was never primed as it wasn't necessary. + and current_page.parent.pk in placeholder_cache + # don't display inherited plugins in edit mode, so that the user doesn't + # mistakenly edit/delete them. This is a fix for issue #1303. See the discussion + # there for possible enhancements + and not self.toolbar.edit_mode_active + ) + + if should_inherit: + # nodelist is set to None to avoid rendering the nodes inside + # a {% placeholder or %} block tag. + content = self.render_page_placeholder( + slot, + context, + inherit=True, + page=current_page.parent, + nodelist=None, + editable=False, + ) + + if placeholder and (editable and self._placeholders_are_editable): + # In edit mode, the contents of the placeholder are mixed with our + # internal toolbar markup, so the content variable will always be True. + # Use the rendered placeholder has_content flag instead. + has_content = self._rendered_placeholders[placeholder.pk].has_content + else: + # User is not in edit mode or the placeholder doesn't exist. + # Either way, we can trust the content variable. + has_content = bool(content) + + if not has_content and nodelist: + return content + nodelist.render(context) + return content + + def render_plugin( + self, + instance: CMSPlugin, + context: Context, + placeholder: Placeholder | None = None, + editable: bool = False, + ): + context["_last_plugin"] = instance # Used if an exception is rendered + if placeholder is None: + placeholder = instance.placeholder + + instance, plugin = instance.get_plugin_instance() + + if not instance or not plugin.render_plugin: + return "" + + # we'd better pass a flat dict to template.render + # as plugin.render can return pretty much any kind of context / dictionary + # we'd better flatten it and force to a Context object + # flattening the context means that template must be an engine-specific template object + # which is guaranteed by get_cached_template if the template returned by + # plugin._get_render_template is either a string or an engine-specific template object + context = PluginContext(context, instance, placeholder) + context = plugin.render(context, instance, placeholder.slot) + context = flatten_context(context) + template_name = plugin._get_render_template(context, instance, placeholder) + template = self.templates.get_cached_template(template_name) + content = template.render(context) + + for path in get_cms_setting("PLUGIN_PROCESSORS"): + processor = import_string(path) + content = processor(instance, placeholder, content, context) + + if editable: + is_slot = getattr(plugin, "is_slot", False) + content = self.plugin_edit_template.format( + pk=instance.pk, + placeholder=instance.placeholder_id, + content=content, + position=instance.position, + disabled=' cms-slot' if is_slot else '', + ) + placeholder_cache = self._rendered_plugins_by_placeholder.setdefault(placeholder.pk, {}) + placeholder_cache.setdefault("plugins", []).append(instance) + return mark_safe(content) + + def render_exception(self, action: str, context: Context, placeholder: Placeholder, editable: bool) -> str: + exc, value, traceback = context["exc_info"] + placeholder_source_obj = placeholder.source.__class__._meta.verbose_name + message = ( + f'{exc.__name__}: {value} when {action} "{placeholder}" on ' + f'{placeholder_source_obj} object "{placeholder.source}"' + ) + if "_last_plugin" in context: + instance = context["_last_plugin"] + try: + description = f"{instance._meta.verbose_name} {instance.get_short_description()}" + except Exception: + description = f"{instance._meta.verbose_name}" + message += f', plugin #{instance.pk} "{description}"' + logger.error(message, exc_info=(exc, value, traceback)) + + if editable: + if settings.DEBUG: + reporter = ExceptionReporter(context["request"], exc, value, traceback) + html = reporter.get_traceback_html() + else: + html = "" + heading = format_html('

{}

', message) + if "_last_plugin" in context: + # Make error message editable by double-click to open the editor for the plugin causing the exception + is_slot = getattr(instance, "is_slot", False) + heading = self.plugin_edit_template.format( + pk=instance.pk, + placeholder=instance.placeholder_id, + content=heading, + position=instance.position, + disabled=' cms-slot' if is_slot else '', + ) + placeholder_cache = self._rendered_plugins_by_placeholder.setdefault(placeholder.pk, {}) + placeholder_cache.setdefault("plugins", []).append(instance) + + return f'
{heading}{html}
' + return "" + + def render_plugins( + self, + placeholder: Placeholder, + language: str, + context, + editable: bool = False, + template: str | None = None, + ) -> Generator[SafeText | str, None, None]: + plugins = self.get_plugins_to_render( + placeholder=placeholder, + template=template, + language=language, + ) + + for plugin in plugins: + plugin._placeholder_cache = placeholder + yield self.render_plugin(plugin, context, placeholder, editable) + + def _get_cached_placeholder_content(self, placeholder, language): + """ + Returns a dictionary mapping placeholder content and sekizai data. + Returns None if no cache is present. + """ + # Placeholders can be rendered multiple times under different sites + # it's important to have a per-site "cache". + site_id = self.current_site.pk + site_cache = self._placeholders_content_cache.setdefault(site_id, {}) + # Placeholders can be rendered multiple times under different languages + # it's important to have a per-language "cache". + language_cache = site_cache.setdefault(language, {}) + + if placeholder.pk not in language_cache: + cached_value = get_placeholder_cache( + placeholder, + lang=language, + site_id=site_id, + request=self.request, + ) + + if cached_value is not None: + # None means nothing in the cache + # Anything else is a valid value + language_cache[placeholder.pk] = cached_value + return language_cache.get(placeholder.pk) + + def _get_content_object(self, page, slots=None): + toolbar_obj = self.toolbar.get_object() + if isinstance(toolbar_obj, PageContent) and toolbar_obj.page == page: + # Current object belongs to the page itself + return Placeholder.objects.get_for_obj(toolbar_obj) + elif slots: + # If looking for inherited placeholders, slots is specified + if self.toolbar.preview_mode_active or self.toolbar.edit_mode_active: + page_content = ( + page.pagecontent_set(manager="admin_manager") + .current_content(language=self.request_language) + .first() + ) + else: + page_content = page.pagecontent_set.filter(language=self.request_language).first() + return Placeholder.objects.get_for_obj(page_content) if page_content else Placeholder.objects.none() + elif page_content := page.get_content_obj(self.request_language, fallback=False): + PageContent.page.field.set_cached_value(page_content, page) + # Creates any placeholders missing on the page + return page_content.rescan_placeholders().values() + else: + return Placeholder.objects.none() + + def _preload_placeholders_for_page(self, page, language=None, slots=None, inherit=False): + """ + Populates the internal plugin cache of each placeholder + in the given page if the placeholder has not been + previously cached. + """ + from cms.utils.plugins import assign_plugins + + placeholders = self._get_content_object(page, slots=slots) + language = language or self.request_language + + if inherit: + # When the inherit flag is True, + # assume all placeholders found are inherited and thus prefetch them. + slots_w_inheritance = [pl.slot for pl in placeholders] + elif not self.toolbar.edit_mode_active: + # Scan through the page template to find all placeholders + # that have inheritance turned on. + slots_w_inheritance = [pl.slot for pl in page.get_declared_placeholders() if pl.inherit] + else: + # Inheritance is turned off on edit-mode + slots_w_inheritance = [] + + if self.placeholder_cache_is_enabled(): + _cached_content = self._get_cached_placeholder_content + # Only prefetch plugins if the placeholder + # has not been cached. + placeholders_to_fetch = [ + placeholder + for placeholder in placeholders + if _cached_content(placeholder, language) is None + ] + else: + # cache is disabled, prefetch plugins for all + # placeholders in the page. + placeholders_to_fetch = placeholders + + if placeholders_to_fetch: + assign_plugins( + request=self.request, + placeholders=placeholders_to_fetch, + template=page.get_template(), + lang=language, + ) + + # Inherit only placeholders that have no plugins + # or are not cached. + placeholders_to_inherit = [ + pl.slot + for pl in placeholders + if not getattr(pl, "_plugins_cache", None) and pl.slot in slots_w_inheritance + ] + + if page.parent and placeholders_to_inherit: + self._preload_placeholders_for_page( + page=page.parent, + language=language, + slots=placeholders_to_inherit, + inherit=True, + ) + + # Internal cache mapping placeholder slots + # to placeholder instances. + page_placeholder_cache = {} + + for placeholder in placeholders: + # Save a query when the placeholder toolbar is rendered. + placeholder.page = page + page_placeholder_cache[placeholder.slot] = placeholder + + self._placeholders_by_page_cache[page.pk] = page_placeholder_cache + + +class StructureRenderer(BaseRenderer): + load_structure = True + placeholder_edit_template = """ + + {plugin_js}{placeholder_js} + """ + + def get_plugins_to_render(self, *args, **kwargs): + plugins = super().get_plugins_to_render(*args, **kwargs) + + for plugin in plugins: + yield from _unpack_plugins(plugin) + + def render_placeholder(self, placeholder, language, obj=None): + rendered_plugins = self.render_plugins(placeholder, language=language, obj=obj) + plugin_js_output = "".join(rendered_plugins) + + placeholder_toolbar_js = self.get_placeholder_toolbar_js(placeholder) + rendered_placeholder = RenderedPlaceholder( + placeholder=placeholder, + language=language, + site_id=self.current_site.pk, + cached=False, + editable=True, + ) + + if placeholder.pk not in self._rendered_placeholders: + self._rendered_placeholders[placeholder.pk] = rendered_placeholder + + placeholder_structure_js = self.placeholder_edit_template.format( + placeholder_id=placeholder.pk, + plugin_js=plugin_js_output, + plugin_menu_js=self.get_placeholder_plugin_menu(placeholder, page=obj), + placeholder_js=placeholder_toolbar_js, + ) + return mark_safe(placeholder_structure_js) + + def render_page_placeholder(self, page, placeholder, language=None): + return self.render_placeholder(placeholder, language=language, obj=page) + + def render_plugin(self, instance, obj=None): + placeholder_cache = self._rendered_plugins_by_placeholder.setdefault(instance.placeholder_id, {}) + placeholder_cache.setdefault("plugins", []).append(instance) + return self.get_plugin_toolbar_js(instance, obj=obj) + + def render_plugins(self, placeholder, language, obj=None): + template = obj.get_template() if obj and hasattr(obj, "get_template") else None + plugins = self.get_plugins_to_render(placeholder, language, template) + + for plugin in plugins: + plugin._placeholder_cache = placeholder + yield self.render_plugin(plugin, obj=obj) + + +class LegacyRenderer(ContentRenderer): + load_structure = True + placeholder_edit_template = """ + {content} +
+ + {plugin_js}{placeholder_js} + """ + + def get_editable_placeholder_context(self, placeholder, page=None): + context = super().get_editable_placeholder_context(placeholder, page) + context["plugin_menu_js"] = self.get_placeholder_plugin_menu(placeholder, page=page) + return context + + +class PluginContext(Context): + """ + This subclass of template.Context automatically populates itself using + the processors defined in CMS_PLUGIN_CONTEXT_PROCESSORS. + Additional processors can be specified as a list of callables + using the "processors" keyword argument. + """ + + def __init__(self, dict_, instance, placeholder, processors=None, current_app=None): + dict_ = flatten_context(dict_) + super().__init__(dict_) + + if not processors: + processors = [] + + for path in get_cms_setting("PLUGIN_CONTEXT_PROCESSORS"): + processor = import_string(path) + self.update(processor(instance, placeholder, self)) + for processor in processors: + self.update(processor(instance, placeholder, self)) diff --git a/cms/signals/__init__.py b/cms/signals/__init__.py new file mode 100644 index 00000000..342a58d7 --- /dev/null +++ b/cms/signals/__init__.py @@ -0,0 +1,128 @@ +import warnings + +from django.conf import settings +from django.contrib.auth import get_user_model +from django.contrib.auth.models import Group +from django.db.models import signals +from django.dispatch import Signal + +from cms.models import ( + GlobalPagePermission, + PagePermission, + PageUser, + PageUserGroup, +) + +# Import pagecontent signal handlers to ensure they are connected +from cms.signals import pagecontent # noqa: F401 +from cms.signals.apphook import debug_server_restart, trigger_server_restart +from cms.signals.log_entries import ( + log_page_operations, + log_placeholder_operations, +) +from cms.signals.permissions import ( + post_save_user, + post_save_user_group, + pre_delete_globalpagepermission, + pre_delete_group, + pre_delete_pagepermission, + pre_delete_user, + pre_save_globalpagepermission, + pre_save_group, + pre_save_pagepermission, + pre_save_user, + user_m2m_changed, +) +from cms.utils.compat.warnings import RemovedInDjangoCMS60Warning +from cms.utils.conf import get_cms_setting + +# ################### Our own signals ################### + + +class DeprecatedSignal(Signal): + def __init__(self, name, *args, **kwargs): + super().__init__(*args, **kwargs) + self._deprecation_name = name + + def connect(self, receiver, sender=None, weak=True, dispatch_uid=None): + warnings.warn( + f"The '{self._deprecation_name}' signal is deprecated and will be removed in django CMS 6.0.", + RemovedInDjangoCMS60Warning, + stacklevel=2, + ) + return super().connect( + receiver, + sender=sender, + weak=weak, + dispatch_uid=dispatch_uid, + ) + + +# fired if a public page with an apphook is added or changed +urls_need_reloading = Signal() + +# Deprecated: use operations hooks or other signals instead. +move_page = DeprecatedSignal("move_page") + +# *disclaimer* +# The generic object operation signals are very likely to change +# as their usage evolves. +# As a result, rely on these at your own risk +pre_obj_operation = Signal() + +post_obj_operation = Signal() + +pre_placeholder_operation = Signal() + +post_placeholder_operation = Signal() + + +# ################## apphook reloading ################### + +if settings.DEBUG: + urls_need_reloading.connect(debug_server_restart) + + +urls_need_reloading.connect(trigger_server_restart, dispatch_uid="aldryn-apphook-reload-handle-urls-need-reloading") + + +# ##################### log entries ####################### + +post_obj_operation.connect(log_page_operations) +post_placeholder_operation.connect(log_placeholder_operations) + +# ##################### permissions ####################### + +if get_cms_setting("PERMISSION"): + # only if permissions are in use + User = get_user_model() + signals.pre_save.connect(pre_save_user, sender=User, dispatch_uid="cms_pre_save_user") + signals.post_save.connect(post_save_user, sender=User, dispatch_uid="cms_post_save_user") + signals.pre_delete.connect(pre_delete_user, sender=User, dispatch_uid="cms_pre_delete_user") + signals.m2m_changed.connect(user_m2m_changed, sender=User.groups.through, dispatch_uid="cms_user_m2m_changed") + + signals.pre_save.connect(pre_save_user, sender=PageUser, dispatch_uid="cms_pre_save_pageuser") + signals.pre_delete.connect(pre_delete_user, sender=PageUser, dispatch_uid="cms_pre_delete_pageuser") + + signals.pre_save.connect(pre_save_group, sender=Group, dispatch_uid="cms_pre_save_group") + signals.post_save.connect(post_save_user_group, sender=Group, dispatch_uid="cms_post_save_group") + signals.pre_delete.connect(pre_delete_group, sender=Group, dispatch_uid="cms_pre_delete_group") + + signals.pre_save.connect(pre_save_group, sender=PageUserGroup, dispatch_uid="cms_pre_save_pageusergroup") + signals.pre_delete.connect(pre_delete_group, sender=PageUserGroup, dispatch_uid="cms_pre_delete_pageusergroup") + + signals.pre_save.connect( + pre_save_pagepermission, sender=PagePermission, dispatch_uid="cms_pre_save_pagepermission" + ) + signals.pre_delete.connect( + pre_delete_pagepermission, sender=PagePermission, dispatch_uid="cms_pre_delete_pagepermission" + ) + + signals.pre_save.connect( + pre_save_globalpagepermission, sender=GlobalPagePermission, dispatch_uid="cms_pre_save_globalpagepermission" + ) + signals.pre_delete.connect( + pre_delete_globalpagepermission, + sender=GlobalPagePermission, + dispatch_uid="cms_pre_delete_globalpagepermission", + ) diff --git a/cms/signals/apphook.py b/cms/signals/apphook.py new file mode 100644 index 00000000..5253d8be --- /dev/null +++ b/cms/signals/apphook.py @@ -0,0 +1,49 @@ +import logging +import sys + +from django.core.management import color_style +from django.core.signals import request_finished +from django.urls import clear_url_caches + +from cms.utils.apphook_reload import mark_urlconf_as_changed + +logger = logging.getLogger(__name__) + +DISPATCH_UID = 'cms-restart' + + +def trigger_server_restart(**kwargs): + """ + Marks the URLs as stale so that they can be reloaded. + """ + mark_urlconf_as_changed() + + +def set_restart_trigger(): + request_finished.connect(trigger_restart, dispatch_uid=DISPATCH_UID) + + +def trigger_restart(**kwargs): + from cms.signals import urls_need_reloading + + request_finished.disconnect(trigger_restart, dispatch_uid=DISPATCH_UID) + urls_need_reloading.send(sender=None) + + +def debug_server_restart(**kwargs): + from cms.appresolver import clear_app_resolvers + if 'runserver' in sys.argv or 'server' in sys.argv: + clear_app_resolvers() + clear_url_caches() + import cms.urls + try: + reload(cms.urls) + except NameError: # python3 + from importlib import reload + reload(cms.urls) + if 'test' not in sys.argv: + msg = 'Application url changed and urls_need_reloading signal fired. ' \ + 'Please reload the urls.py or restart the server.\n' + styles = color_style() + msg = styles.NOTICE(msg) + sys.stderr.write(msg) diff --git a/cms/signals/log_entries.py b/cms/signals/log_entries.py new file mode 100644 index 00000000..d575aec0 --- /dev/null +++ b/cms/signals/log_entries.py @@ -0,0 +1,153 @@ +import json + +from django.contrib.admin.models import ADDITION, CHANGE, DELETION, LogEntry +from django.contrib.contenttypes.models import ContentType +from django.utils.translation import gettext_lazy as _ + +from cms import operations +from cms.models import Page, PageType + +_page_operations_map = { + operations.MOVE_PAGE: { + 'message': _("Moved"), + 'flag': CHANGE, + }, + operations.CHANGE_PAGE: { + 'message': _("Changed"), + 'flag': CHANGE, + }, + operations.DELETE_PAGE: { + 'message': _("Deleted"), + 'flag': DELETION, + }, + operations.ADD_PAGE_TRANSLATION: { + 'message': _("Added Page Translation"), + 'flag': ADDITION, + }, + operations.CHANGE_PAGE_TRANSLATION: { + 'message': _("Changed Page Translation"), + 'flag': CHANGE, + }, + operations.DELETE_PAGE_TRANSLATION: { + 'message': _("Deleted Page Translation"), + 'flag': CHANGE, + }, +} + +_placeholder_operations_map = { + operations.ADD_PLUGIN: { + 'message': _("Added Plugin"), + 'flag': CHANGE, + 'placeholder_kwarg': 'placeholder' + }, + operations.CHANGE_PLUGIN: { + 'message': _("Changed Plugin"), + 'flag': CHANGE, + 'placeholder_kwarg': 'placeholder' + }, + operations.MOVE_PLUGIN: { + 'message': _("Moved Plugin"), + 'flag': CHANGE, + 'placeholder_kwarg': 'target_placeholder' + }, + operations.DELETE_PLUGIN: { + 'message': _("Deleted Plugin"), + 'flag': CHANGE, + 'placeholder_kwarg': 'placeholder' + }, + operations.CUT_PLUGIN: { + 'message': _("Cut Plugin"), + 'flag': CHANGE, + 'placeholder_kwarg': 'source_placeholder' + }, + operations.PASTE_PLUGIN: { + 'message': _("Paste Plugin"), + 'flag': CHANGE, + 'placeholder_kwarg': 'target_placeholder' + }, + operations.PASTE_PLACEHOLDER: { + 'message': _("Paste to Placeholder"), + 'flag': CHANGE, + 'placeholder_kwarg': 'target_placeholder' + }, + operations.ADD_PLUGINS_FROM_PLACEHOLDER: { + 'message': _("Added plugins to placeholder from clipboard"), + 'flag': CHANGE, + 'placeholder_kwarg': 'target_placeholder' + }, + operations.CLEAR_PLACEHOLDER: { + 'message': _("Cleared Placeholder"), + 'flag': CHANGE, + 'placeholder_kwarg': 'placeholder' + }, +} + + +def create_log_entry(user_id, content_type_id, object_id, object_repr, action_flag, change_message): + if isinstance(change_message, list): + change_message = json.dumps(change_message) + + LogEntry.objects.create( + user_id=user_id, + content_type_id=content_type_id, + object_id=str(object_id), + object_repr=object_repr[:200], + action_flag=action_flag, + change_message=change_message, + ) + + +def _is_valid_page_instance(page): + """ + Check if the supplied object is a valid Page / PageType object + """ + return isinstance(page, (Page, PageType)) + + +def log_page_operations(sender, **kwargs): + """ + Create a log for the correct page operation type + """ + request = kwargs.get('request') + operation_type = kwargs.get('operation') + obj = kwargs.get('obj') + + # Check that we have instructions for the operation + # and an instance of Page to link to in the log + if operation_type in _page_operations_map and _is_valid_page_instance(obj): + operation_handler = _page_operations_map[operation_type] + content_type_id = ContentType.objects.get_for_model(obj).pk + create_log_entry( + user_id=request.user.pk, + content_type_id=content_type_id, + object_id=obj.pk, + object_repr=str(obj), + action_flag=operation_handler['flag'], + change_message=operation_handler['message'], + ) + + +def log_placeholder_operations(sender, **kwargs): + """ + Create a log for the correct placeholder operation type + """ + request = kwargs.get('request') + operation_type = kwargs.get('operation') + + # Check that we have instructions for the operation + if operation_type in _placeholder_operations_map: + operation_handler = _placeholder_operations_map[operation_type] + placeholder = kwargs.get(operation_handler['placeholder_kwarg']) + page = placeholder.page + + # Check that we have an instance of Page to link to in the log + if _is_valid_page_instance(page): + content_type_id = ContentType.objects.get_for_model(page).pk + create_log_entry( + user_id=request.user.pk, + content_type_id=content_type_id, + object_id=page.pk, + object_repr=str(page), + action_flag=operation_handler['flag'], + change_message=operation_handler['message'], + ) diff --git a/cms/signals/pagecontent.py b/cms/signals/pagecontent.py new file mode 100644 index 00000000..0a0b2fa4 --- /dev/null +++ b/cms/signals/pagecontent.py @@ -0,0 +1,37 @@ +""" +Signal handlers for PageContent model operations. +""" +import logging + +from django.db.models.signals import post_save +from django.dispatch import receiver + +from cms.models.contentmodels import PageContent +from cms.signals.apphook import set_restart_trigger + +logger = logging.getLogger(__name__) + + +@receiver(post_save, sender=PageContent) +def handle_pagecontent_post_save(sender, instance, created, **kwargs): + """ + Handle PageContent post_save signal. + + When a new PageContent (language variant) is created for a page that has + an apphook, we need to trigger URL reloading to ensure the apphook URLs + are available for the new language. + + This fixes the issue where creating a new language variant for a page + with an apphook causes NoReverseMatch exceptions until the server is + restarted. + """ + if created and instance.page.application_urls: + # A new language variant was created for a page with an apphook + # Trigger URL reloading to make apphook URLs available for this + # language + logger.debug( + f"New language variant '{instance.language}' created for page " + f"'{instance.page}' with apphook " + f"'{instance.page.application_urls}'. Triggering URL reload." + ) + set_restart_trigger() diff --git a/cms/signals/permissions.py b/cms/signals/permissions.py new file mode 100644 index 00000000..9667bcbe --- /dev/null +++ b/cms/signals/permissions.py @@ -0,0 +1,137 @@ +from django.contrib.auth import get_user_model + +from cms.cache.permissions import clear_user_permission_cache +from cms.models import PageUser, PageUserGroup +from menus.menu_pool import menu_pool + +User = get_user_model() + +#: Signals sent while a fixture is being loaded carry ``raw=True``. Related objects +#: are not guaranteed to exist yet at that point, so receivers must not touch the +#: database or the caches. See +#: https://docs.djangoproject.com/en/stable/topics/db/fixtures/#how-fixtures-are-saved-to-the-database + + +def post_save_user(instance, raw, created, **kwargs): + """Signal called when new user is created, required only when CMS_PERMISSION. + Assigns creator of the user to PageUserInfo model, so we know who had created + this user account. + + Flushes permission cache for the user. + + requires: CurrentUserMiddleware + """ + if raw: + return + + from cms.utils.permissions import get_current_user + + # read current user from thread locals + creator = get_current_user() + if not creator or not created or creator.is_anonymous: + return + + page_user = PageUser(user_ptr_id=instance.pk, created_by=creator) + page_user.__dict__.update(instance.__dict__) + page_user.save() + + clear_user_permission_cache(instance) + menu_pool.clear(all=True) + + +def post_save_user_group(instance, raw, created, **kwargs): + """The same like post_save_user, but for Group, required only when + CMS_PERMISSION. + Assigns creator of the group to PageUserGroupInfo model, so we know who had + created this user account. + + requires: CurrentUserMiddleware + """ + if raw: + return + + from cms.utils.permissions import get_current_user + + # read current user from thread locals + creator = get_current_user() + if not creator or not created or creator.is_anonymous: + return + page_user = PageUserGroup(group_ptr_id=instance.pk, created_by=creator) + page_user.__dict__.update(instance.__dict__) + page_user.save() + + +def pre_save_user(instance, raw, **kwargs): + if raw: + return + clear_user_permission_cache(instance) + menu_pool.clear(all=True) + + +def pre_delete_user(instance, **kwargs): + clear_user_permission_cache(instance) + menu_pool.clear(all=True) + + +def pre_save_group(instance, raw, **kwargs): + if raw: + return + if instance.pk: + menu_pool.clear(all=True) + user_set = instance.user_set + for user in user_set.all(): + clear_user_permission_cache(user) + + +def pre_delete_group(instance, **kwargs): + user_set = instance.user_set + menu_pool.clear(all=True) + for user in user_set.all(): + clear_user_permission_cache(user) + + +def user_m2m_changed(instance, action, reverse, pk_set, raw=False, **kwargs): + # Django >= 6.1 forwards ``raw`` to m2m_changed; older versions never send it. + if raw: + return + if action in ( + "pre_add", + "pre_remove", + ): + menu_pool.clear(all=True) + if reverse: + for user in User.objects.filter(pk__in=pk_set): + clear_user_permission_cache(user) + else: + clear_user_permission_cache(instance) + + +def _clear_users_permissions(instance): + if instance.user: + clear_user_permission_cache(instance.user) + menu_pool.clear(all=True) + if instance.group: + user_set = instance.group.user_set + for user in user_set.all(): + clear_user_permission_cache(user) + menu_pool.clear(all=True) + + +def pre_save_pagepermission(instance, raw, **kwargs): + if raw: + return + _clear_users_permissions(instance) + + +def pre_delete_pagepermission(instance, **kwargs): + _clear_users_permissions(instance) + + +def pre_save_globalpagepermission(instance, raw, **kwargs): + if raw: + return + _clear_users_permissions(instance) + + +def pre_delete_globalpagepermission(instance, **kwargs): + _clear_users_permissions(instance) diff --git a/cms/sitemaps/__init__.py b/cms/sitemaps/__init__.py new file mode 100644 index 00000000..b84fd722 --- /dev/null +++ b/cms/sitemaps/__init__.py @@ -0,0 +1 @@ +from .cms_sitemap import CMSSitemap # noqa: F401 diff --git a/cms/sitemaps/cms_sitemap.py b/cms/sitemaps/cms_sitemap.py new file mode 100644 index 00000000..eba3443c --- /dev/null +++ b/cms/sitemaps/cms_sitemap.py @@ -0,0 +1,123 @@ +from django.contrib.sitemaps import Sitemap +from django.contrib.sites.models import Site +from django.db.models import OuterRef, Q, QuerySet, Subquery + +from cms.models import PageContent, PageUrl +from cms.utils.i18n import get_public_languages + + +def from_iterable(iterables): + """ + Backport of itertools.chain.from_iterable + """ + for it in iterables: + yield from it + + +class CMSSitemap(Sitemap): + """ + Sitemap for django CMS pages limited to public, non-redirecting, and anonymously + accessible content on the current Site. + + Targets the current Site and respects the project's public languages. Pages are + annotated with the latest ``PageContent.changed_date`` and exposes it via ``lastmod()``. + + Enable the sitemap framework and register the sitemap in your URL configuration. + + .. code-block:: python + + # settings.py + INSTALLED_APPS = [ + # ... + "django.contrib.sitemaps", + ] + + .. code-block:: python + + # urls.py + from django.contrib.sitemaps import views as sitemap_views + from cms.sitemaps.cms_sitemap import CMSSitemap + + sitemaps = { + "pages": CMSSitemap, + } + + urlpatterns = [ + path("sitemap.xml", sitemap_views.sitemap, {"sitemaps": sitemaps}, name="sitemap"), + ] + """ + + changefreq: str = "monthly" + priority: float = 0.5 + site = None + + def items(self) -> QuerySet: + """ + Items are PageUrl instances for the current Site, filtered to only include + those that are: + + - In a public language for the Site + - Not redirects + - Not login_required + - Not page types + + The site is taken from the ``SITE_ID`` setting or identified from the current request + using the Sites framework. (A custom site middelware is ignored by Django's sitemap + framework.) + """ + # + # It is counter-productive to provide entries for: + # > Pages which redirect: + # - If the page redirects to another page on this site, the + # destination page will already be in the sitemap, and + # - If the page redirects externally, then it shouldn't be + # part of our sitemap anyway. + # > Pages which cannot be accessed by anonymous users (like + # search engines are). + # + # It is noted here: http://www.sitemaps.org/protocol.html that + # "locations" that differ from the place where the sitemap is found, + # are considered invalid. E.g., if your sitemap is located here: + # + # http://example.com/sub/sitemap.xml + # + # valid locations *must* be rooted at http://example.com/sub/... + # + # This rules any redirected locations out. + # + # If, for some reason, you require redirecting pages (PageContent) to be + # included, simply create a new class inheriting from this one, and + # supply a new items() method which doesn't filter out the redirects. + # + # Even though items() can also return a sequence, we should return a + # QuerySet in this case in order to be compatible with + # djangocms-page-sitemap. + site = self.site or Site.objects.get_current() + languages = get_public_languages(site_id=site.pk) + return ( + PageUrl.objects.get_for_site(site) + .filter(language__in=languages, path__isnull=False, page__login_required=False) + # Page types are blueprints for new pages, not content, and are not + # served on the public site. + .exclude(page__is_page_type=True) + .order_by("page__path") + .select_related("page") + .annotate( + content_changed_date=Subquery( + PageContent.objects.filter(page=OuterRef("page"), language=OuterRef("language")) + .filter(Q(redirect="") | Q(redirect=None)) + .values_list("changed_date")[:1] + ) + ) + .filter(content_changed_date__isnull=False) # Remove page content with redirects + ) + + def lastmod(self, page_url): + return page_url.content_changed_date + + def location(self, page_url): + return page_url.get_absolute_url(page_url.language) + + def get_urls(self, page=1, site=None, protocol=None): + self.site = site + return super().get_urls(page, site, protocol) diff --git a/cms/static/cms/css/5.2.0dev1/cms.admin.css b/cms/static/cms/css/5.2.0dev1/cms.admin.css new file mode 100644 index 00000000..583aefb0 --- /dev/null +++ b/cms/static/cms/css/5.2.0dev1/cms.admin.css @@ -0,0 +1,3 @@ +@charset "UTF-8";/*! + * @copyright: https://github.com/django-cms/django-cms + */:root{color-scheme:dark light;--cms-dark-mode:0;--dca-dark:#2d4c4d;--dca-light:#defcb9;--dca-white:light-dark(#FFF, #000);--dca-black:light-dark(#2a2c2e, rgb(from white calc(r - 45) calc(g - 44) calc(b - 46)));--dca-primary:light-dark(var(--dca-dark), rgb(from var(--dca-light) calc(r - 45) calc(g - 44) calc(b - 46)));--dca-secondary:light-dark(var(--dca-light), var(--dca-dark));--dca-red:#d44848;--dca-action-bg:var(--dca-secondary);--dca-action-text:var(--dca-black);--dca-gray:light-dark(#7c7c7c, #a7a7a7);--dca-gray-lightest:light-dark(#f7f7f7, #303030);--dca-gray-lighter:light-dark(#ddd, #666);--dca-gray-light:light-dark(#999, #888);--dca-gray-darker:light-dark(#454545, #ddd);--dca-gray-darkest:light-dark(#333, #eee);--dca-border-radius:20px;--dca-btn-radius:40px;--dca-default-spacing:2px}@media (prefers-color-scheme:dark){:root{--cms-dark-mode:1}}:root[data-cms-theme="3"],:root[data-cms-theme="4"]{--dca-dark:#00bbff;--dca-light:color-mix(in srgb, var(--dca-dark), var(--dca-white) 55%);--dca-white:light-dark(#FFF, #000);--dca-black:light-dark(#000, #FFF);--dca-primary:light-dark(var(--dca-dark), color-mix(in srgb, var(--dca-light), black 10%));--dca-secondary:var(--dca-gray-lightest);--dca-red:#d44848;--dca-action-bg:var(--dca-primary);--dca-action-text:var(--dca-white);--dca-gray:light-dark(#7c7c7c, #aaa);--dca-gray-lightest:light-dark(#f7f7f7, #303030);--dca-gray-lighter:light-dark(#ddd, #666);--dca-gray-light:light-dark(#999, #888);--dca-gray-darker:light-dark(#454545, #ddd);--dca-gray-darkest:light-dark(#333, #eee);--dca-border-radius:5px;--dca-btn-radius:3px;--dca-default-spacing:0px}:root[data-theme=auto]{color-scheme:dark light}:root[data-theme=light]{color-scheme:light;--cms-dark-mode:0}:root[data-theme=dark]{color-scheme:dark;--cms-dark-mode:1}@font-face{font-family:django-cms-iconfont;src:url(../../fonts/5.2.0dev1/django-cms-iconfont.eot);src:url(../../fonts/5.2.0dev1/django-cms-iconfont.eot#iefix) format("eot"),url(../../fonts/5.2.0dev1/django-cms-iconfont.woff2) format("woff2"),url(../../fonts/5.2.0dev1/django-cms-iconfont.woff) format("woff"),url(../../fonts/5.2.0dev1/django-cms-iconfont.ttf) format("truetype"),url(../../fonts/5.2.0dev1/django-cms-iconfont.svg#django-cms-iconfont) format("svg");font-weight:400;font-style:normal}.cms-icon{display:inline-block;font:18px/1 django-cms-iconfont;text-rendering:auto;transform:translate(0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cms-icon-none{width:1em}.cms-icon-advanced-settings:before{content:"\E001"}.cms-icon-alias:before{content:"\E002"}.cms-icon-apphook:before{content:"\E003"}.cms-icon-archive:before{content:"\E004"}.cms-icon-arrow-right:before{content:"\E005"}.cms-icon-arrow-wide:before{content:"\E006"}.cms-icon-arrow:before{content:"\E007"}.cms-icon-bin:before{content:"\E008"}.cms-icon-broadcast-off:before{content:"\E009"}.cms-icon-broadcast-on:before{content:"\E00A"}.cms-icon-check-circle:before{content:"\E00B"}.cms-icon-check-o:before{content:"\E00C"}.cms-icon-check-square:before{content:"\E00D"}.cms-icon-check:before{content:"\E00E"}.cms-icon-close:before{content:"\E00F"}.cms-icon-cogs:before{content:"\E010"}.cms-icon-comment:before{content:"\E011"}.cms-icon-compare:before{content:"\E012"}.cms-icon-copy:before{content:"\E013"}.cms-icon-cut:before{content:"\E014"}.cms-icon-edit-new:before{content:"\E015"}.cms-icon-edit:before{content:"\E016"}.cms-icon-external-placeholder:before{content:"\E017"}.cms-icon-eye:before{content:"\E018"}.cms-icon-forbidden:before{content:"\E019"}.cms-icon-handler:before{content:"\E01A"}.cms-icon-highlight:before{content:"\E01B"}.cms-icon-home:before{content:"\E01C"}.cms-icon-info:before{content:"\E01D"}.cms-icon-layers:before{content:"\E01E"}.cms-icon-list-ol:before{content:"\E01F"}.cms-icon-loader:before{content:"\E020"}.cms-icon-lock:before{content:"\E021"}.cms-icon-logo:before{content:"\E022"}.cms-icon-manage-versions:before{content:"\E023"}.cms-icon-menu:before{content:"\E024"}.cms-icon-minimize:before{content:"\E025"}.cms-icon-minus-circle:before{content:"\E026"}.cms-icon-minus-square-o:before{content:"\E027"}.cms-icon-minus-square:before{content:"\E028"}.cms-icon-minus:before{content:"\E029"}.cms-icon-moderate:before{content:"\E02A"}.cms-icon-paste:before{content:"\E02B"}.cms-icon-pencil:before{content:"\E02C"}.cms-icon-pin:before{content:"\E02D"}.cms-icon-plugins:before{content:"\E02E"}.cms-icon-plus-circle:before{content:"\E02F"}.cms-icon-plus-square-o:before{content:"\E030"}.cms-icon-plus:before{content:"\E031"}.cms-icon-publish:before{content:"\E032"}.cms-icon-puzzle:before{content:"\E033"}.cms-icon-redirect:before{content:"\E034"}.cms-icon-redo:before{content:"\E035"}.cms-icon-rename:before{content:"\E036"}.cms-icon-scissors:before{content:"\E037"}.cms-icon-search:before{content:"\E038"}.cms-icon-settings:before{content:"\E039"}.cms-icon-sitemap:before{content:"\E03A"}.cms-icon-squares:before{content:"\E03B"}.cms-icon-theme-auto:before{content:"\E03C"}.cms-icon-theme-dark:before{content:"\E03D"}.cms-icon-theme-light:before{content:"\E03E"}.cms-icon-undo:before{content:"\E03F"}.cms-icon-unlock:before{content:"\E040"}.cms-icon-unpublish:before{content:"\E041"}.cms-icon-view:before{content:"\E042"}.cms-icon-window:before{content:"\E043"}#container~.menu-cover.cms-pagetree ul.cms-pagetree-dropdown-menu-inner a,#content-main a.btn.btn,#content-main a.cms-btn.cms-btn{text-decoration:none}a.btn.cms-action-btn{background-image:none!important;margin-bottom:0;border-radius:var(--dca-btn-radius)!important;color:var(--dca-gray)!important;background-color:var(--dca-white)!important;border:1px solid!important;background-clip:padding-box;-webkit-appearance:none}a.btn.cms-action-btn.focus,a.btn.cms-action-btn:focus{color:var(--dca-gray)!important;background-color:color-mix(in srgb,var(--dca-white),var(--dca-black) 5%)!important;border-color:color-mix(in srgb,var(--dca-white),var(--dca-black) 5%)!important;text-decoration:none!important}a.btn.cms-action-btn:hover{color:var(--dca-gray)!important;background-color:color-mix(in srgb,var(--dca-white),var(--dca-secondary) 50%)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%)!important;text-decoration:none!important}a.btn.cms-action-btn.cms-btn-active,a.btn.cms-action-btn:active{color:var(--dca-gray)!important;background-color:var(--dca-secondary)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 15%)!important;box-shadow:none!important}a.btn.cms-action-btn.cms-btn-active:hover,a.btn.cms-action-btn:active:hover{color:var(--dca-gray)!important;background-color:color-mix(in srgb,var(--dca-secondary),var(--dca-black) 10%)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%)!important;text-decoration:none!important}a.btn.cms-action-btn.cms-btn-active.focus,a.btn.cms-action-btn.cms-btn-active:focus,a.btn.cms-action-btn:active.focus,a.btn.cms-action-btn:active:focus{color:var(--dca-gray)!important;background-color:var(--dca-secondary)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 25%)!important}a.btn.cms-action-btn.cms-btn-active,a.btn.cms-action-btn:active{background-image:none!important}a.btn.cms-action-btn.cms-btn-disabled,a.btn.cms-action-btn.cms-btn-disabled.cms-btn-active,a.btn.cms-action-btn.cms-btn-disabled.focus,a.btn.cms-action-btn.cms-btn-disabled:active,a.btn.cms-action-btn.cms-btn-disabled:focus,a.btn.cms-action-btn.cms-btn-disabled:hover,a.btn.cms-action-btn[disabled],a.btn.cms-action-btn[disabled].cms-btn-active,a.btn.cms-action-btn[disabled].focus,a.btn.cms-action-btn[disabled]:active,a.btn.cms-action-btn[disabled]:focus,a.btn.cms-action-btn[disabled]:hover{background-color:color-mix(in srgb,var(--dca-white) 40%,transparent)!important;border-color:color-mix(in srgb,var(--dca-gray) 40%,transparent)!important;color:color-mix(in srgb,var(--dca-gray),var(--dca-white) 50%);cursor:not-allowed;box-shadow:none!important}a.btn.cms-action-btn.cms-btn-disabled.cms-btn-active:before,a.btn.cms-action-btn.cms-btn-disabled.focus:before,a.btn.cms-action-btn.cms-btn-disabled:active:before,a.btn.cms-action-btn.cms-btn-disabled:before,a.btn.cms-action-btn.cms-btn-disabled:focus:before,a.btn.cms-action-btn.cms-btn-disabled:hover:before,a.btn.cms-action-btn[disabled].cms-btn-active:before,a.btn.cms-action-btn[disabled].focus:before,a.btn.cms-action-btn[disabled]:active:before,a.btn.cms-action-btn[disabled]:before,a.btn.cms-action-btn[disabled]:focus:before,a.btn.cms-action-btn[disabled]:hover:before{color:color-mix(in srgb,var(--dca-gray) 40%,transparent)}a.btn.cms-action-btn{color:var(--dca-black);position:relative;display:inline-flex;padding:0!important;align-items:center;justify-content:center;width:34px;margin-top:-12px!important;box-sizing:border-box;bottom:-6px;cursor:pointer;height:34px}span.cms-empty-action{width:38px;display:inline-flex;position:relative}a.btn.cms-action-btn span{font-family:django-cms-iconfont;font-size:120%}a.btn.cms-action-btn img{width:20px;height:20px}a.btn.cms-action-btn.inactive:link,a.btn.cms-action-btn.inactive:visited{color:var(--dca-gray-lighter)!important;border-color:var(--dca-gray-lighter)}.btn.cms-action-btn.inactive{pointer-events:none}.btn.cms-action-btn.inactive img{opacity:.5}a.btn.cms-action-btn img{width:20px;height:20px;margin-right:4px}.cms-actions-dropdown-menu{display:none;position:absolute;top:30px;right:-1px;z-index:1000;min-width:180px;margin:0;padding:0!important;border-radius:5px;background:#fff;box-shadow:0 0 10px rgba(0,0,0,.25);transform:translateZ(0)}.cms-actions-dropdown-menu::before{content:"";position:absolute;left:100%;z-index:-1;width:10px;height:10px;margin-left:-5px;background-color:var(--dca-white,var(--body-bg,#fff));box-shadow:0 0 10px rgba(0,0,0,.25);transform:rotate(45deg) translateZ(0)}.cms-actions-dropdown-menu.open{display:block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.cms-actions-dropdown-menu.closed{display:none}.cms-actions-dropdown-menu-arrow-right-top::before{top:16px}ul.cms-actions-dropdown-menu-inner{margin:0;padding:0!important;border-radius:5px;background-color:var(--dca-white,var(--body-bg,#fff));overflow:hidden}ul.cms-actions-dropdown-menu-inner li{border:0 solid transparent;padding:0;list-style-type:none}ul.cms-actions-dropdown-menu-inner li a,ul.cms-actions-dropdown-menu-inner li a:link,ul.cms-actions-dropdown-menu-inner li a:link:visited,ul.cms-actions-dropdown-menu-inner li a:visited{color:var(--dca-gray)}ul.cms-actions-dropdown-menu-inner li a:hover,ul.cms-actions-dropdown-menu-inner li a:link:hover,ul.cms-actions-dropdown-menu-inner li a:link:visited:hover,ul.cms-actions-dropdown-menu-inner li a:visited:hover{color:var(--dca-white);border:0 solid var(--dca-gray-lighter);background-color:var(--dca-primary)}a.cms-actions-dropdown-menu-item-anchor{display:block;line-height:1.5;text-align:left;text-decoration:none;padding:10px 15px;border-top-left-radius:5px;border-top-right-radius:5px}a.cms-actions-dropdown-menu-item-anchor span.cms-icon{width:20px;height:20px;margin-right:10px;vertical-align:middle}a.cms-actions-dropdown-menu-item-anchor.inactive{cursor:not-allowed;pointer-events:none;opacity:.3}.change-list table tbody td .cms-pagetree-dropdown-trigger,.change-list table tbody td .cms-pagetree-node-state{vertical-align:middle}.change-list table tbody .field-indicator,.change-list table thead .column-indicator{text-align:center}.change-list table tbody .field-list_actions,.change-list table thead .column-list_actions{width:1%;white-space:nowrap}.change-list table tbody .field-list_actions .cms-burger-menu,.change-list table thead .column-list_actions .cms-burger-menu{margin-left:auto}.language-selector{display:inline;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin-bottom:1em}select.language-selector{min-width:180px}.submit-row.cms-submit-row-popup{overflow:auto}body:not(.djangocms-admin-style) #page_form_lang_tabs input[type=button].selected{background-color:var(--button-bg);color:var(--button-fg)}body:not(.djangocms-admin-style) #page_form_lang_tabs input[type=button]{background-color:var(--darkened-bg);border:1px solid var(--border-color);color:var(--body-fg)} \ No newline at end of file diff --git a/cms/static/cms/css/5.2.0dev1/cms.base.css b/cms/static/cms/css/5.2.0dev1/cms.base.css new file mode 100644 index 00000000..fcda7218 --- /dev/null +++ b/cms/static/cms/css/5.2.0dev1/cms.base.css @@ -0,0 +1,3 @@ +/*! + * @copyright: https://github.com/divio/django-cms + */:root{color-scheme:dark light;--cms-dark-mode:0;--dca-dark:#2d4c4d;--dca-light:#defcb9;--dca-white:light-dark(#FFF, #000);--dca-black:light-dark(#2a2c2e, rgb(from white calc(r - 45) calc(g - 44) calc(b - 46)));--dca-primary:light-dark(var(--dca-dark), rgb(from var(--dca-light) calc(r - 45) calc(g - 44) calc(b - 46)));--dca-secondary:light-dark(var(--dca-light), var(--dca-dark));--dca-red:#d44848;--dca-action-bg:var(--dca-secondary);--dca-action-text:var(--dca-black);--dca-gray:light-dark(#7c7c7c, #a7a7a7);--dca-gray-lightest:light-dark(#f7f7f7, #303030);--dca-gray-lighter:light-dark(#ddd, #666);--dca-gray-light:light-dark(#999, #888);--dca-gray-darker:light-dark(#454545, #ddd);--dca-gray-darkest:light-dark(#333, #eee);--dca-border-radius:20px;--dca-btn-radius:40px;--dca-default-spacing:2px}@media (prefers-color-scheme:dark){:root{--cms-dark-mode:1}}:root[data-cms-theme="3"],:root[data-cms-theme="4"]{--dca-dark:#00bbff;--dca-light:color-mix(in srgb, var(--dca-dark), var(--dca-white) 55%);--dca-white:light-dark(#FFF, #000);--dca-black:light-dark(#000, #FFF);--dca-primary:light-dark(var(--dca-dark), color-mix(in srgb, var(--dca-light), black 10%));--dca-secondary:var(--dca-gray-lightest);--dca-red:#d44848;--dca-action-bg:var(--dca-primary);--dca-action-text:var(--dca-white);--dca-gray:light-dark(#7c7c7c, #aaa);--dca-gray-lightest:light-dark(#f7f7f7, #303030);--dca-gray-lighter:light-dark(#ddd, #666);--dca-gray-light:light-dark(#999, #888);--dca-gray-darker:light-dark(#454545, #ddd);--dca-gray-darkest:light-dark(#333, #eee);--dca-border-radius:5px;--dca-btn-radius:3px;--dca-default-spacing:0px}:root[data-theme=auto]{color-scheme:dark light}:root[data-theme=light]{color-scheme:light;--cms-dark-mode:0}:root[data-theme=dark]{color-scheme:dark;--cms-dark-mode:1}.cms-reset a,.cms-reset a:active,.cms-reset a:focus,.cms-reset a:hover,.cms-reset div,.cms-reset fieldset,.cms-reset form,.cms-reset h1,.cms-reset h2,.cms-reset h3,.cms-reset input,.cms-reset kbd,.cms-reset label,.cms-reset li,.cms-reset p,.cms-reset textarea,.cms-reset ul{color:var(--dca-black);font:14px/20px Helvetica,Arial,sans-serif;text-align:start;text-decoration:none;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;outline:0;list-style-type:none;list-style-image:none;background:0 0;transition:none}.cms-reset table,.cms-reset td,.cms-reset th,.cms-reset tr{border:none;background:0 0;padding:0;margin:0}.cms{position:absolute;top:0;left:0;z-index:9999999;width:100%}.cms-prevent-scrolling{overflow:hidden!important}.cms-prevent-scrolling body{overflow:hidden!important}.cms-touch-action-none{touch-action:none}.cms-touch-action-pan-y{touch-action:pan-y}.cms-touch-action-pan-x{touch-action:pan-x}.cms-rendering-exception{display:inline-block;border:none;background:#ffc;padding:.6em 1.3em;min-height:2em;width:100%;vertical-align:middle}.cms-rendering-exception .cms-rendering-exception-title{font-weight:700;color:#8b0000}.cms-rendering-exception .cms-rendering-exception-title:not(.cms-plugin){cursor:not-allowed}.cms-rendering-exception header#summary h1,.cms-rendering-exception header#summary pre{display:none}.cms-rendering-exception main#info{font-size:.8rem}.cms-rendering-exception main#info h2{font-size:1.6rem}.cms-rendering-exception main#info h3{font-size:1.2rem}.cms-rendering-exception main#info h4{font-size:1rem}@keyframes cms-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@font-face{font-family:django-cms-iconfont;src:url(../../fonts/5.2.0dev1/django-cms-iconfont.eot);src:url(../../fonts/5.2.0dev1/django-cms-iconfont.eot#iefix) format("eot"),url(../../fonts/5.2.0dev1/django-cms-iconfont.woff2) format("woff2"),url(../../fonts/5.2.0dev1/django-cms-iconfont.woff) format("woff"),url(../../fonts/5.2.0dev1/django-cms-iconfont.ttf) format("truetype"),url(../../fonts/5.2.0dev1/django-cms-iconfont.svg#django-cms-iconfont) format("svg");font-weight:400;font-style:normal}.cms-icon,div.cms .cms-structure .cms-dragitem-collapsable:before,div.cms .cms-submenu-btn:before,div.cms .cms-submenu-dropdown-settings .cms-submenu-item a[data-cms-icon]:before,div.cms .cms-submenu-dropdown-settings .cms-submenu-item a[data-rel]:before,div.cms .cms-toolbar-item-logo a,div.cms .cms-tooltip-touch:before,div.cms .cms-tooltip:before{display:inline-block;font:18px/1 django-cms-iconfont;text-rendering:auto;transform:translate(0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cms-icon-none{width:1em}.cms-icon-advanced-settings:before{content:"\E001"}.cms-icon-alias:before{content:"\E002"}.cms-icon-apphook:before{content:"\E003"}.cms-icon-archive:before{content:"\E004"}.cms-icon-arrow-right:before{content:"\E005"}.cms-icon-arrow-wide:before{content:"\E006"}.cms-icon-arrow:before{content:"\E007"}.cms-icon-bin:before{content:"\E008"}.cms-icon-broadcast-off:before{content:"\E009"}.cms-icon-broadcast-on:before{content:"\E00A"}.cms-icon-check-circle:before{content:"\E00B"}.cms-icon-check-o:before{content:"\E00C"}.cms-icon-check-square:before{content:"\E00D"}.cms-icon-check:before{content:"\E00E"}.cms-icon-close:before{content:"\E00F"}.cms-icon-cogs:before{content:"\E010"}.cms-icon-comment:before{content:"\E011"}.cms-icon-compare:before{content:"\E012"}.cms-icon-copy:before{content:"\E013"}.cms-icon-cut:before{content:"\E014"}.cms-icon-edit-new:before{content:"\E015"}.cms-icon-edit:before{content:"\E016"}.cms-icon-external-placeholder:before{content:"\E017"}.cms-icon-eye:before{content:"\E018"}.cms-icon-forbidden:before{content:"\E019"}.cms-icon-handler:before{content:"\E01A"}.cms-icon-highlight:before{content:"\E01B"}.cms-icon-home:before{content:"\E01C"}.cms-icon-info:before{content:"\E01D"}.cms-icon-layers:before{content:"\E01E"}.cms-icon-list-ol:before{content:"\E01F"}.cms-icon-loader:before{content:"\E020"}.cms-icon-lock:before{content:"\E021"}.cms-icon-logo:before,div.cms .cms-toolbar-item-logo a:before{content:"\E022"}.cms-icon-manage-versions:before{content:"\E023"}.cms-icon-menu:before{content:"\E024"}.cms-icon-minimize:before{content:"\E025"}.cms-icon-minus-circle:before{content:"\E026"}.cms-icon-minus-square-o:before{content:"\E027"}.cms-icon-minus-square:before{content:"\E028"}.cms-icon-minus:before{content:"\E029"}.cms-icon-moderate:before{content:"\E02A"}.cms-icon-paste:before{content:"\E02B"}.cms-icon-pencil:before{content:"\E02C"}.cms-icon-pin:before{content:"\E02D"}.cms-icon-plugins:before{content:"\E02E"}.cms-icon-plus-circle:before{content:"\E02F"}.cms-icon-plus-square-o:before{content:"\E030"}.cms-icon-plus:before{content:"\E031"}.cms-icon-publish:before{content:"\E032"}.cms-icon-puzzle:before{content:"\E033"}.cms-icon-redirect:before{content:"\E034"}.cms-icon-redo:before{content:"\E035"}.cms-icon-rename:before{content:"\E036"}.cms-icon-scissors:before{content:"\E037"}.cms-icon-search:before{content:"\E038"}.cms-icon-settings:before{content:"\E039"}.cms-icon-sitemap:before{content:"\E03A"}.cms-icon-squares:before{content:"\E03B"}.cms-icon-theme-auto:before,html:not([data-theme]) div.cms .cms-toolbar-item-dark-mode-toggle .cms-toggle:before,html[data-theme=auto] div.cms .cms-toolbar-item-dark-mode-toggle .cms-toggle:before{content:"\E03C"}.cms-icon-theme-dark:before,html[data-theme=dark] div.cms .cms-toolbar-item-dark-mode-toggle .cms-toggle:before{content:"\E03D"}.cms-icon-theme-light:before,html[data-theme=light] div.cms .cms-toolbar-item-dark-mode-toggle .cms-toggle:before{content:"\E03E"}.cms-icon-undo:before{content:"\E03F"}.cms-icon-unlock:before{content:"\E040"}.cms-icon-unpublish:before{content:"\E041"}.cms-icon-view:before{content:"\E042"}.cms-icon-window:before{content:"\E043"}.cms-hover-tooltip{position:relative;z-index:1001}.cms-btn-active .cms-hover-tooltip:after,.cms-btn-active .cms-hover-tooltip:before,div.cms .cms-dropdown-open .cms-dropdown-toggle .cms-hover-tooltip:after,div.cms .cms-dropdown-open .cms-dropdown-toggle .cms-hover-tooltip:before{opacity:0!important;transition-delay:0s!important}.cms-hover-tooltip:after,.cms-hover-tooltip:before{visibility:hidden;position:absolute;pointer-events:none;opacity:0;transition:opacity .2s ease-in-out,visibility .2s ease-in-out,transform .2s cubic-bezier(.71,1.7,.77,1.24);transform:translate3d(0,0,0)}.cms-hover-tooltip-delay:focus:after,.cms-hover-tooltip-delay:focus:before,.cms-hover-tooltip-delay:hover:after,.cms-hover-tooltip-delay:hover:before{transition:opacity .2s ease-in-out 1.5s,visibility .2s ease-in-out 1.5s,transform .2s cubic-bezier(.71,1.7,.77,1.24) 1.5s}.cms-hover-tooltip:focus{outline:0}.cms-hover-tooltip:focus:after,.cms-hover-tooltip:focus:before,.cms-hover-tooltip:hover:after,.cms-hover-tooltip:hover:before{visibility:visible;opacity:1}.cms-hover-tooltip:before{content:"";z-index:2;border:6px solid transparent;background:0 0}.cms-hover-tooltip:after{content:attr(data-cms-tooltip);z-index:1;color:var(--dca-white)!important;font-size:12px;font-weight:400;line-height:1.2;text-align:center;width:160px;padding:6px 8px;background-color:var(--dca-black);white-space:normal}.cms-hover-tooltip:after,.cms-hover-tooltip:before{bottom:100%;left:50%}.cms-hover-tooltip:before{margin-bottom:-12px;margin-left:-6px;border-top-color:var(--dca-black)}.cms-hover-tooltip:after{margin-left:-80px}.cms-hover-tooltip:focus:after,.cms-hover-tooltip:focus:before,.cms-hover-tooltip:hover:after,.cms-hover-tooltip:hover:before{transform:translateY(-12px)}.cms-hover-tooltip-left:after,.cms-hover-tooltip-left:before{right:100%;bottom:50%;left:auto;transform:translateY(50%)}.cms-hover-tooltip-left:before{margin-left:0;margin-right:-12px;margin-bottom:0;border-top-color:transparent;border-left-color:var(--dca-black)}.cms-hover-tooltip-left:focus:after,.cms-hover-tooltip-left:focus:before,.cms-hover-tooltip-left:hover:after,.cms-hover-tooltip-left:hover:before{transform:translateX(-12px) translateY(50%)}.cms-hover-tooltip-bottom:after,.cms-hover-tooltip-bottom:before{top:100%;bottom:auto;left:50%}.cms-hover-tooltip-bottom:before{margin-top:-12px;margin-bottom:0;border-top-color:transparent;border-bottom-color:var(--dca-black)}.cms-hover-tooltip-bottom:focus:after,.cms-hover-tooltip-bottom:focus:before,.cms-hover-tooltip-bottom:hover:after,.cms-hover-tooltip-bottom:hover:before{transform:translateY(12px)}.cms-hover-tooltip-right:after,.cms-hover-tooltip-right:before{bottom:50%;left:100%}.cms-hover-tooltip-right:before{margin-bottom:0;margin-left:-12px;border-top-color:transparent;border-right-color:var(--dca-black)}.cms-hover-tooltip-right:focus:after,.cms-hover-tooltip-right:focus:before,.cms-hover-tooltip-right:hover:after,.cms-hover-tooltip-right:hover:before{transform:translateX(12px) translateY(50%)}.cms-hover-tooltip-left:before,.cms-hover-tooltip-right:before{transform:translateY(50%)}.cms-hover-tooltip-left:after,.cms-hover-tooltip-right:after{margin-left:0;transform:translateY(50%)}.cms-dialog{position:fixed;top:50%;left:50%;z-index:99999;box-sizing:border-box;width:500px;margin:-100px 0 0 -250px;padding:20px 20px 0;border:1px solid var(--dca-gray-lighter);border-radius:var(--dca-border-radius);background:var(--dca-secondary);box-shadow:0 0 10px 2px color-mix(in srgb,var(--dca-black) 25%,transparent);transform:translateZ(0)}.cms-dialog h1{margin:0 0 10px;padding:0}.cms-dialog p{padding:0}.cms-dialog form{margin:0 -20px;padding:0 20px!important}.cms-dialog form label{display:inline}.cms-dialog form input[type=checkbox]{position:relative;top:auto;vertical-align:middle;line-height:20px}.cms-dialog form p{margin-bottom:0;padding:10px 0}.cms-dialog form p:after{display:none}.cms-dialog form input[type=submit]{margin-bottom:0!important}.cms-dialog form .submit-row{margin:0 -20px;padding:8px;background:var(--dca-white);border-radius:0 0 var(--dca-border-radius) var(--dca-border-radius);border-top:1px solid var(--dca-gray-lighter)}.cms-dialog form .submit-row input{line-height:30px;height:30px;font-size:12px;padding:0 12px;-webkit-margin-start:8px;margin-inline-start:8px}@media (max-width:540px){.cms-dialog{right:0;left:0;width:80%;margin:-100px auto 0}}.cms-dialog-dimmer{position:fixed;top:0;left:0;z-index:9999;width:100%;height:100%;background:color-mix(in srgb,var(--dca-black) 60%,transparent)}cms-plugin.cms-plugin-text-node{display:inline}.cms-placeholder{overflow:hidden;height:0}.cms-render-model-icon{display:inline-block;width:18px;height:18px;margin:0;padding:0;cursor:pointer}.cms-render-model-icon,.cms-render-model-icon img{position:relative;max-width:none;margin:0!important;padding:0!important;background:url(../../img/toolbar/render_model_icon.png) no-repeat}.cms-render-model-add{display:inline-block;width:18px;height:18px;margin:0;padding:0;cursor:pointer}.cms-render-model-add,.cms-render-model-add img{position:relative;max-width:none;margin:0!important;padding:0!important;background:url(../../img/toolbar/render_model_add.png) no-repeat}.cms-loader{background:var(--dca-white) url(../../img/loader.gif?uf5b664wnc) no-repeat center center!important}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:1.25dppx){.cms-loader{background-image:url(../../img/loader@2x.gif?uf5b664wnc)!important;background-size:32px!important}}div.cms .cms-toolbar-item-dark-mode-toggle span.cms-icon.cms-toggle{font-size:120%;padding-top:55%;color:var(--dca-gray-darkest)}html[data-theme=light] div.cms .cms-toolbar-item-dark-mode-toggle .cms-toggle{font-size:170%;padding-top:25%}div.cms .cms-tooltip-touch:before,div.cms .cms-tooltip:before{content:"\E016"}div.cms .cms-tooltip,div.cms .cms-tooltip-touch{visibility:hidden;position:absolute;top:0;left:0;font-size:12px;line-height:22px;font-weight:700;color:var(--dca-gray-lighter);white-space:nowrap;padding:0 7px 0 22px;margin:0;border-radius:3px;background:var(--dca-gray-darker)}div.cms .cms-tooltip-touch:before,div.cms .cms-tooltip:before{font-size:14px;top:50%;left:4px;margin-top:-7px;position:absolute}div.cms .cms-tooltip span,div.cms .cms-tooltip-touch span{position:absolute;top:100%;right:0;margin-top:-4px;float:right;color:var(--dca-white);font-weight:400;padding:0 7px;border-radius:3px 0 3px 3px;background:var(--dca-gray-darker)}div.cms .cms-btn{background-image:none;margin-bottom:0;border-radius:var(--dca-btn-radius);color:var(--dca-gray);background-color:var(--dca-white);border:1px solid var(--dca-gray);background-clip:padding-box;-webkit-appearance:none}div.cms .cms-btn.focus,div.cms .cms-btn:focus{color:var(--dca-gray);background-color:color-mix(in srgb,var(--dca-white),var(--dca-black) 5%);border-color:color-mix(in srgb,var(--dca-white),var(--dca-black) 5%);text-decoration:none}div.cms .cms-btn:hover{color:var(--dca-gray);background-color:color-mix(in srgb,var(--dca-white),var(--dca-secondary) 50%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%);text-decoration:none}div.cms .cms-btn.cms-btn-active,div.cms .cms-btn:active,div.cms .cms-dropdown-open .cms-btn.cms-dropdown-toggle{color:var(--dca-gray);background-color:var(--dca-secondary);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 15%);box-shadow:none}div.cms .cms-btn.cms-btn-active:hover,div.cms .cms-btn:active:hover,div.cms .cms-dropdown-open .cms-btn.cms-dropdown-toggle:hover{color:var(--dca-gray);background-color:color-mix(in srgb,var(--dca-secondary),var(--dca-black) 10%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%);text-decoration:none}div.cms .cms-btn.cms-btn-active.focus,div.cms .cms-btn.cms-btn-active:focus,div.cms .cms-btn:active.focus,div.cms .cms-btn:active:focus,div.cms .cms-dropdown-open .cms-btn.cms-dropdown-toggle:focus,div.cms .cms-dropdown-open .cms-btn.focus.cms-dropdown-toggle{color:var(--dca-gray);background-color:var(--dca-secondary);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 25%)}div.cms .cms-btn.cms-btn-active,div.cms .cms-btn:active,div.cms .cms-dropdown-open .cms-btn.cms-dropdown-toggle{background-image:none}div.cms .cms-btn.cms-btn-disabled,div.cms .cms-btn.cms-btn-disabled.cms-btn-active,div.cms .cms-btn.cms-btn-disabled.focus,div.cms .cms-btn.cms-btn-disabled:active,div.cms .cms-btn.cms-btn-disabled:focus,div.cms .cms-btn.cms-btn-disabled:hover,div.cms .cms-btn[disabled],div.cms .cms-btn[disabled].cms-btn-active,div.cms .cms-btn[disabled].focus,div.cms .cms-btn[disabled]:active,div.cms .cms-btn[disabled]:focus,div.cms .cms-btn[disabled]:hover{background-color:color-mix(in srgb,var(--dca-white) 40%,transparent);border-color:color-mix(in srgb,var(--dca-gray) 40%,transparent);color:color-mix(in srgb,var(--dca-gray),var(--dca-white) 50%);cursor:not-allowed;box-shadow:none}div.cms .cms-btn.cms-btn-disabled.cms-btn-active:before,div.cms .cms-btn.cms-btn-disabled.focus:before,div.cms .cms-btn.cms-btn-disabled:active:before,div.cms .cms-btn.cms-btn-disabled:before,div.cms .cms-btn.cms-btn-disabled:focus:before,div.cms .cms-btn.cms-btn-disabled:hover:before,div.cms .cms-btn[disabled].cms-btn-active:before,div.cms .cms-btn[disabled].focus:before,div.cms .cms-btn[disabled]:active:before,div.cms .cms-btn[disabled]:before,div.cms .cms-btn[disabled]:focus:before,div.cms .cms-btn[disabled]:hover:before{color:color-mix(in srgb,var(--dca-gray) 40%,transparent)}div.cms .cms-btn-action{background-image:none;margin-bottom:0;border-radius:var(--dca-btn-radius);color:var(--dca-action-text);background-color:var(--dca-action-bg);border:1px solid var(--dca-gray);background-clip:padding-box;-webkit-appearance:none}div.cms .cms-btn-action.focus,div.cms .cms-btn-action:focus{color:var(--dca-action-text);background-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 5%);border-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 5%);text-decoration:none}div.cms .cms-btn-action:hover{color:var(--dca-action-text);background-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 10%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%);text-decoration:none}div.cms .cms-btn-action.cms-btn-active,div.cms .cms-btn-action:active,div.cms .cms-dropdown-open .cms-btn-action.cms-dropdown-toggle{color:var(--dca-action-text);background-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 15%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 15%);box-shadow:none}div.cms .cms-btn-action.cms-btn-active:hover,div.cms .cms-btn-action:active:hover,div.cms .cms-dropdown-open .cms-btn-action.cms-dropdown-toggle:hover{color:var(--dca-action-text);background-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 10%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%);text-decoration:none}div.cms .cms-btn-action.cms-btn-active.focus,div.cms .cms-btn-action.cms-btn-active:focus,div.cms .cms-btn-action:active.focus,div.cms .cms-btn-action:active:focus,div.cms .cms-dropdown-open .cms-btn-action.cms-dropdown-toggle:focus,div.cms .cms-dropdown-open .cms-btn-action.focus.cms-dropdown-toggle{color:var(--dca-action-text);background-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 20%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 25%)}div.cms .cms-btn-action.cms-btn-active,div.cms .cms-btn-action:active,div.cms .cms-dropdown-open .cms-btn-action.cms-dropdown-toggle{background-image:none}div.cms .cms-btn-action.cms-btn-disabled,div.cms .cms-btn-action.cms-btn-disabled.cms-btn-active,div.cms .cms-btn-action.cms-btn-disabled.focus,div.cms .cms-btn-action.cms-btn-disabled:active,div.cms .cms-btn-action.cms-btn-disabled:focus,div.cms .cms-btn-action.cms-btn-disabled:hover,div.cms .cms-btn-action[disabled],div.cms .cms-btn-action[disabled].cms-btn-active,div.cms .cms-btn-action[disabled].focus,div.cms .cms-btn-action[disabled]:active,div.cms .cms-btn-action[disabled]:focus,div.cms .cms-btn-action[disabled]:hover{background-color:color-mix(in srgb,var(--dca-action-bg) 40%,transparent);border-color:color-mix(in srgb,var(--dca-gray) 40%,transparent);color:color-mix(in srgb,var(--dca-action-text),var(--dca-white) 50%);cursor:not-allowed;box-shadow:none}div.cms .cms-btn-action.cms-btn-disabled.cms-btn-active:before,div.cms .cms-btn-action.cms-btn-disabled.focus:before,div.cms .cms-btn-action.cms-btn-disabled:active:before,div.cms .cms-btn-action.cms-btn-disabled:before,div.cms .cms-btn-action.cms-btn-disabled:focus:before,div.cms .cms-btn-action.cms-btn-disabled:hover:before,div.cms .cms-btn-action[disabled].cms-btn-active:before,div.cms .cms-btn-action[disabled].focus:before,div.cms .cms-btn-action[disabled]:active:before,div.cms .cms-btn-action[disabled]:before,div.cms .cms-btn-action[disabled]:focus:before,div.cms .cms-btn-action[disabled]:hover:before{color:color-mix(in srgb,var(--dca-action-text) 40%,transparent)}div.cms .cms-btn-action{text-transform:uppercase;letter-spacing:var(--dca-default-spacing)}div.cms .cms-btn-caution{background-image:none;margin-bottom:0;border-radius:var(--dca-btn-radius);color:var(--dca-white);background-color:var(--dca-red,red);border:1px solid var(--dca-gray);background-clip:padding-box;-webkit-appearance:none}div.cms .cms-btn-caution.focus,div.cms .cms-btn-caution:focus{color:var(--dca-white);background-color:color-mix(in srgb,var(--dca-red,red),var(--dca-black) 5%);border-color:color-mix(in srgb,var(--dca-red,red),var(--dca-black) 5%);text-decoration:none}div.cms .cms-btn-caution:hover{color:var(--dca-white);background-color:color-mix(in srgb,var(--dca-red,red),var(--dca-black) 10%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%);text-decoration:none}div.cms .cms-btn-caution.cms-btn-active,div.cms .cms-btn-caution:active,div.cms .cms-dropdown-open .cms-btn-caution.cms-dropdown-toggle{color:var(--dca-white);background-color:color-mix(in srgb,var(--dca-red,red),var(--dca-black) 15%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 15%);box-shadow:none}div.cms .cms-btn-caution.cms-btn-active:hover,div.cms .cms-btn-caution:active:hover,div.cms .cms-dropdown-open .cms-btn-caution.cms-dropdown-toggle:hover{color:var(--dca-white);background-color:color-mix(in srgb,var(--dca-red,red),var(--dca-black) 10%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%);text-decoration:none}div.cms .cms-btn-caution.cms-btn-active.focus,div.cms .cms-btn-caution.cms-btn-active:focus,div.cms .cms-btn-caution:active.focus,div.cms .cms-btn-caution:active:focus,div.cms .cms-dropdown-open .cms-btn-caution.cms-dropdown-toggle:focus,div.cms .cms-dropdown-open .cms-btn-caution.focus.cms-dropdown-toggle{color:var(--dca-white);background-color:color-mix(in srgb,var(--dca-red,red),var(--dca-black) 20%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 25%)}div.cms .cms-btn-caution.cms-btn-active,div.cms .cms-btn-caution:active,div.cms .cms-dropdown-open .cms-btn-caution.cms-dropdown-toggle{background-image:none}div.cms .cms-btn-caution.cms-btn-disabled,div.cms .cms-btn-caution.cms-btn-disabled.cms-btn-active,div.cms .cms-btn-caution.cms-btn-disabled.focus,div.cms .cms-btn-caution.cms-btn-disabled:active,div.cms .cms-btn-caution.cms-btn-disabled:focus,div.cms .cms-btn-caution.cms-btn-disabled:hover,div.cms .cms-btn-caution[disabled],div.cms .cms-btn-caution[disabled].cms-btn-active,div.cms .cms-btn-caution[disabled].focus,div.cms .cms-btn-caution[disabled]:active,div.cms .cms-btn-caution[disabled]:focus,div.cms .cms-btn-caution[disabled]:hover{background-color:color-mix(in srgb,var(--dca-red,red) 40%,transparent);border-color:color-mix(in srgb,var(--dca-gray) 40%,transparent);color:color-mix(in srgb,var(--dca-white),var(--dca-white) 50%);cursor:not-allowed;box-shadow:none}div.cms .cms-btn-caution.cms-btn-disabled.cms-btn-active:before,div.cms .cms-btn-caution.cms-btn-disabled.focus:before,div.cms .cms-btn-caution.cms-btn-disabled:active:before,div.cms .cms-btn-caution.cms-btn-disabled:before,div.cms .cms-btn-caution.cms-btn-disabled:focus:before,div.cms .cms-btn-caution.cms-btn-disabled:hover:before,div.cms .cms-btn-caution[disabled].cms-btn-active:before,div.cms .cms-btn-caution[disabled].focus:before,div.cms .cms-btn-caution[disabled]:active:before,div.cms .cms-btn-caution[disabled]:before,div.cms .cms-btn-caution[disabled]:focus:before,div.cms .cms-btn-caution[disabled]:hover:before{color:color-mix(in srgb,var(--dca-white) 40%,transparent)}div.cms .cms-btn-disabled img{opacity:.33!important}div.cms .cms-dropdown-caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:5px dashed;border-right:5px solid transparent;border-left:5px solid transparent}div.cms .cms-dropdown{position:relative}div.cms .cms-dropdown>.cms-btn{border-radius:3px!important}div.cms .cms-dropdown-toggle{cursor:pointer}div.cms .cms-dropdown-toggle:focus{outline:0}div.cms .cms-dropdown-toggle-thin{margin-left:-1px;padding-left:7px!important;padding-right:7px!important}div.cms .cms-dropdown-toggle-thin .cms-dropdown-caret{margin-left:0}div.cms .cms-dropdown-menu{position:absolute;top:100%;left:0;z-index:9999999;display:none!important;float:left;min-width:180px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px!important;text-align:left;background-color:var(--dca-white);border:1px solid transparent;border-radius:5px;box-shadow:0 0 10px color-mix(in srgb,var(--dca-black) 25%,transparent);background-clip:padding-box}div.cms .cms-dropdown-menu>li>a{display:block!important;padding:3px 20px!important;border:none!important;clear:both;font-weight:400;line-height:30px;float:none!important;font-size:14px!important;border-radius:0!important;padding-top:0!important;padding-bottom:0!important;height:30px;color:var(--dca-gray)}div.cms .cms-dropdown-menu>li>a.cms-btn-action,div.cms .cms-dropdown-menu>li>a.cms-btn-caution{color:var(--dca-white)}div.cms .cms-dropdown-menu>li>a{white-space:nowrap}div.cms .cms-dropdown-menu .cms-toolbar-item-navigation-break{text-indent:-119988px;overflow:hidden;text-align:left;height:1px;margin:0 0 4px;padding:0 0 4px;border-bottom:1px solid var(--dca-gray-lighter)}div.cms .cms-toolbar-right .cms-dropdown-menu{left:auto;right:-1px}div.cms .cms-dropdown-menu>li>a{border-radius:none;background-color:none}div.cms .cms-dropdown-menu>li>a:focus,div.cms .cms-dropdown-menu>li>a:hover{text-decoration:none;color:var(--dca-white);background-color:var(--dca-primary)}div.cms .cms-dropdown-menu>li>a.cms-btn-active,div.cms .cms-dropdown-menu>li>a.cms-btn-active:focus,div.cms .cms-dropdown-menu>li>a.cms-btn-active:hover,div.cms .cms-dropdown-open .cms-dropdown-menu>li>a.cms-dropdown-toggle{color:var(--dca-white);text-decoration:none;outline:0;background-color:var(--dca-primary)}div.cms .cms-dropdown-menu>li>a.cms-btn-disabled{opacity:.2!important}div.cms .cms-dropdown-menu>li>a.cms-btn-disabled,div.cms .cms-dropdown-menu>li>a.cms-btn-disabled:focus,div.cms .cms-dropdown-menu>li>a.cms-btn-disabled:hover{color:var(--dca-gray-light)}div.cms .cms-dropdown-menu>li>a.cms-btn-disabled,div.cms .cms-dropdown-menu>li>a.cms-btn-disabled:focus,div.cms .cms-dropdown-menu>li>a.cms-btn-disabled:hover{text-decoration:none!important;background-color:transparent!important;background-image:none!important;cursor:not-allowed!important}div.cms .cms-dropdown-open>.cms-dropdown-menu{display:block!important}div.cms .cms-dropdown-open .cms-dropdown-toggle{outline:0}div.cms .cms-dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:9999990}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full .cms-dropdown-toggle{text-align:left!important}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full .cms-dropdown-toggle .cms-dropdown-caret{position:absolute;right:15px;top:18px}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full .cms-dropdown-menu{display:none!important;margin-left:0!important;width:100%!important;border:1px solid var(--dca-gray-lighter);border-bottom-left-radius:5px;border-bottom-right-radius:5px;margin-top:-1px}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full .cms-dropdown-menu li>a.cms-btn{text-align:left}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full .cms-dropdown-open .cms-dropdown-menu{display:block!important}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full .cms-btn-group{display:table;width:100%}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full .cms-btn-group>.cms-btn{display:table-cell;text-align:left!important}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full .cms-btn-group>.cms-btn.cms-btn-action,div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full .cms-btn-group>.cms-btn.cms-btn-caution{color:var(--dca-white)}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full .cms-btn-group>.cms-btn:first-child{border-right:none!important}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full .cms-btn-group>.cms-btn:last-child{width:40px;text-align:center!important}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full .cms-btn-group>.cms-btn .cms-dropdown-caret{position:static!important}div.cms .cms-btn-group>.cms-btn.cms-btn-action:last-child{border-left:1px solid color-mix(in srgb,var(--dca-primary) 10%,var(--dca-black))}div.cms .cms-btn-group>.cms-btn.cms-btn-caution:last-child{border-left:1px solid color-mix(in srgb,var(--dca-primary) 10%,var(--dca-black))}div.cms.cms.cms-toolbar-debug .cms-btn-group>.cms-btn.cms-btn-action:last-child{border-left:1px solid!important}div.cms .cms-toolbar{position:fixed;top:0;left:0;right:0;z-index:9999999;min-height:46px;margin-top:0;background-color:var(--dca-white);-webkit-backface-visibility:hidden;backface-visibility:hidden}div.cms .cms-toolbar:after{position:absolute;content:"";box-shadow:0 0 5px color-mix(in srgb,var(--dca-black) 20%,transparent);top:100%;left:0;right:0;height:1px;margin-top:-1px;z-index:1;clip:rect(0,auto,10px,0);background:var(--dca-gray-lighter)!important}.cms-structure-mode-structure div.cms .cms-toolbar:after{inset-inline-end:45px}div.cms .cms-toolbar .cms-toolbar-left{position:absolute;inset-inline-start:0;top:0;z-index:10}div.cms .cms-toolbar .cms-toolbar-right{position:absolute;inset-inline-end:0;top:0;z-index:10;-webkit-padding-end:46px;padding-inline-end:46px}div.cms .cms-toolbar .cms-toolbar-left .cms-toolbar-item{-webkit-margin-end:15px;margin-inline-end:15px}div.cms .cms-toolbar .cms-toolbar-left .cms-toolbar-item:last-child{-webkit-margin-end:0;margin-inline-end:0}div.cms .cms-toolbar .cms-toolbar-right .cms-toolbar-item{-webkit-margin-end:15px;margin-inline-end:15px}div.cms .cms-toolbar .cms-toolbar-item{float:left}div.cms .cms-toolbar .cms-toolbar-item:dir(rtl){float:right}.cms-toolbar-non-sticky{position:static!important}.cms-toolbar-non-sticky .cms .cms-toolbar{position:absolute}div.cms.cms-toolbar-debug .cms-debug-bar{position:absolute;left:0;right:0;top:0;z-index:99999999;height:3px;background-color:#fad507;z-index:30}.cms-structure-mode-structure div.cms.cms-toolbar-debug .cms-debug-bar{inset-inline-end:46px}div.cms.cms-toolbar-debug .cms-toolbar .cms-btn-action{background-color:#fad507;border-color:var(--dca-gray);color:#000}div.cms.cms-toolbar-debug .cms-toolbar .cms-btn-action:active,div.cms.cms-toolbar-debug .cms-toolbar .cms-btn-action:focus{background-color:#fad507;border-color:#fad507;color:#000}div.cms .cms-toolbar-item-navigation li{position:relative;float:left}div.cms .cms-toolbar-item-navigation li:dir(rtl){float:right}div.cms .cms-toolbar-item-navigation li a{float:left}div.cms .cms-toolbar-item-navigation li a:dir(rtl){float:right}div.cms .cms-toolbar-item-navigation li a{color:var(--dca-black);padding:0 10px;line-height:46px;height:46px;cursor:default}div.cms .cms-toolbar-item-navigation li ul{display:none}div.cms .cms-toolbar-item-navigation>li:first-child>a span{font-weight:600}div.cms .cms-toolbar-item-logo .cms-toolbar-item-navigation a,div.cms .cms-toolbar-item-navigation .cms-icon,div.cms .cms-toolbar-item-navigation .cms-toolbar-item-logo a{display:none;position:absolute;top:50%;inset-inline-end:7px;margin-top:-5px;font-size:10px;transform:rotate(180deg)}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover ul{display:block;position:absolute;top:46px;inset-block-start:calc(100% - 2px);inset-inline-start:-5px;min-width:180px;padding:8px 0;border:1px solid var(--dca-gray-lightest);border-top:none;border-radius:10px;background-color:var(--dca-white);box-shadow:0 1px 4px color-mix(in srgb,var(--dca-black) 40%,transparent)}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover ul li{float:none}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover ul li a{display:block;float:none;white-space:nowrap;line-height:30px;height:30px;padding:0 25px 0 15px;cursor:pointer}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover ul ul{border-top:1px solid var(--dca-gray-lightest);border-radius:10px}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-toolbar-item-navigation-children ul{display:none;top:-9px;inset-inline-start:calc(100% - 2px)}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-toolbar-item-navigation-children>a{cursor:default}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-toolbar-item-navigation-children>a span{display:block}div.cms .cms-toolbar-item-logo .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-toolbar-item-navigation-children>a span a,div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-toolbar-item-navigation-children>a span .cms-icon,div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-toolbar-item-navigation-children>a span .cms-toolbar-item-logo a{display:block}div.cms .cms-toolbar-item-logo .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-toolbar-item-navigation-children>a span a:dir(rtl),div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-toolbar-item-navigation-children>a span .cms-icon:dir(rtl),div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-toolbar-item-navigation-children>a span .cms-toolbar-item-logo a:dir(rtl){transform:rotate(0)}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover>a{color:var(--dca-white)!important;background:var(--dca-primary)}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-toolbar-item-navigation-active>a{font-weight:800}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-break{text-indent:-119988px;overflow:hidden;text-align:left;height:1px;margin:0 0 4px;padding:0 0 4px;border-bottom:1px solid var(--dca-gray-lighter)}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-disabled a{cursor:default!important;opacity:.33}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-disabled a,div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-disabled a:active,div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-disabled a:focus,div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-disabled a:hover{color:var(--dca-black)!important;background:0 0!important;box-shadow:none}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-disabled ul{display:none!important}div.cms .cms-toolbar-more{display:none}div.cms .cms-toolbar-more .cms-toolbar-item-navigation-children{padding:0}div.cms .cms-toolbar-more .cms-toolbar-item{float:none}[dir=rtl] div.cms .cms-toolbar-more .cms-toolbar-item{float:none}div.cms .cms-toolbar-more .cms-toolbar-item{margin:0 10px!important;overflow:hidden;margin-top:5px;margin-bottom:8px}div.cms .cms-toolbar-more .cms-toolbar-item-cms-mode-switcher a{float:left!important}div.cms .cms-toolbar-more .cms-toolbar-item-cms-mode-switcher a:dir(rtl){float:right!important}div.cms .cms-toolbar-more .cms-toolbar-item-cms-mode-switcher a{width:50%}div.cms .cms-toolbar-more .cms-modal-item-buttons .cms-btn,div.cms .cms-toolbar-more .cms-toolbar-item-buttons .cms-btn{text-align:center}div.cms .cms-toolbar-more .cms-btn{color:var(--dca-gray)}div.cms .cms-toolbar-more .cms-btn-action{color:var(--dca-action-text)}div.cms .cms-toolbar-more .cms-more-buttons+.cms-toolbar-item-navigation-children{padding-top:8px;border-top:1px solid var(--dca-gray-lighter)}div.cms .cms-toolbar-more .cms-toolbar-item-dark-mode-toggle{display:none}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full{position:fixed;width:100vw;top:46px;bottom:0;overflow-y:scroll;-webkit-overflow-scrolling:touch}div.cms .cms-toolbar-item-logo .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full a,div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full .cms-icon,div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full .cms-toolbar-item-logo a{display:none!important}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full>li{border-bottom:1px solid var(--dca-gray-lighter)}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full .cms-more-buttons{border-bottom:none}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full li a:not(.cms-btn){color:var(--dca-black)!important;background:0 0!important}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full li a{position:relative;line-height:42px;height:42px;overflow:hidden;text-overflow:ellipsis}div.cms .cms-toolbar-item-navigation .cms-toolbar-item-navigation-hover .cms-more-dropdown-full ul{display:block!important;border:none;box-shadow:none;position:relative;inset-inline-start:0;top:0;border-radius:0;-webkit-margin-start:20px;margin-inline-start:20px}div.cms .cms-toolbar-item-cms-mode-switcher{position:absolute;inset-inline-end:0;top:0;width:46px;height:46px;-webkit-margin-end:0!important;margin-inline-end:0!important}div.cms .cms-toolbar-item-cms-mode-switcher .cms-btn{position:absolute;inset-inline-end:0;top:0;border-top:0!important;border-right:0!important;width:46px;height:45px;display:block;border-radius:0;border-bottom:0;clip:rect(0,46px,46px,0)}div.cms .cms-toolbar-item-cms-mode-switcher .cms-btn .cms-icon,div.cms .cms-toolbar-item-cms-mode-switcher .cms-btn .cms-toolbar-item-logo a,div.cms .cms-toolbar-item-logo .cms-toolbar-item-cms-mode-switcher .cms-btn a{position:absolute;inset-inline-start:23px;top:23px;-webkit-margin-start:-10px;margin-inline-start:-10px;margin-top:-9px;font-size:20px!important}div.cms .cms-dropdown-open .cms-toolbar-item-cms-mode-switcher .cms-btn.cms-dropdown-toggle,div.cms .cms-toolbar-item-cms-mode-switcher .cms-btn.cms-btn-active,div.cms .cms-toolbar-item-cms-mode-switcher .cms-dropdown-open .cms-btn.cms-dropdown-toggle{height:46px}div.cms .cms-dropdown-open .cms-toolbar-item-cms-mode-switcher .cms-btn.cms-dropdown-toggle,div.cms .cms-toolbar-item-cms-mode-switcher .cms-btn.cms-btn-active,div.cms .cms-toolbar-item-cms-mode-switcher .cms-btn.cms-btn-active:active,div.cms .cms-toolbar-item-cms-mode-switcher .cms-btn.cms-btn-active:focus,div.cms .cms-toolbar-item-cms-mode-switcher .cms-dropdown-open .cms-btn.cms-dropdown-toggle{border-color:var(--dca-gray-lighter)!important;background-color:var(--dca-secondary)!important}.cms-structure-mode-endpoint.cms-structure-mode-structure div.cms .cms-toolbar-item-cms-mode-switcher{display:none}.cms-structure-mode-endpoint.cms-structure-mode-structure div.cms .cms-toolbar-right{-webkit-padding-end:0;padding-inline-end:0}.cms-structure-mode-endpoint.cms-structure-mode-structure div.cms .cms-debug-bar,.cms-structure-mode-endpoint.cms-structure-mode-structure div.cms .cms-toolbar::after{inset-inline-end:0}div.cms .cms-messages{display:none;position:fixed;top:46px;z-index:999999;color:#fff;font-size:12px;font-weight:200;line-height:16px;width:300px;min-height:16px;margin:0;padding:6px 10px 8px;border-radius:0 0 3px 3px;background:color-mix(in srgb,var(--dca-black) 75%,transparent);transition:top .2s}div.cms .cms-messages *{color:#fff;font-size:12px;font-weight:200;line-height:16px}div.cms .cms-messages a{color:var(--dca-primary)}div.cms .cms-messages a:hover{text-decoration:underline}div.cms .cms-messages strong{color:var(--dca-primary);filter:brightness(1.1);font-weight:200}div.cms .cms-messages ul{display:inline;color:#fff}div.cms .cms-messages ul li{display:inline;color:#fff;font-weight:200}div.cms .cms-messages .cms-messages-close{cursor:pointer;display:none;float:right}div.cms .cms-messages .cms-messages-close:dir(rtl){float:left}div.cms .cms-messages .cms-messages-close{position:relative;width:20px;height:16px;text-align:end}div.cms .cms-messages .cms-messages-close span{font-size:10px}div.cms .cms-messages .cms-messages-close:hover span{color:var(--dca-primary)}div.cms .cms-messages-error strong{color:var(--dca-red,red)}div.cms .cms-toolbar-item-logo{-webkit-margin-end:0!important;margin-inline-end:0!important}div.cms .cms-toolbar-item-logo a{color:light-dark(transparent,var(--dca-black));font-size:21px;line-height:46px;height:46px;transition:color .2s,background-image .2s;-webkit-padding-start:15px;padding-inline-start:15px;-webkit-padding-end:15px;padding-inline-end:15px;background-repeat:no-repeat;background-position:center;background-size:96px;background-image:url('data:image/svg+xml;utf8,')}[data-theme=dark] div.cms .cms-toolbar-item-logo a{background-image:none}div.cms .cms-toolbar-item-logo a span{display:none}div.cms .cms-toolbar-item-logo a:active,div.cms .cms-toolbar-item-logo a:focus,div.cms .cms-toolbar-item-logo a:hover{filter:brightness(.9)}@media (prefers-color-scheme:dark){div.cms [data-theme=auto] .cms-toolbar-item-logo a{background-image:none}}div.cms .cms-form-login label{display:inline-block;vertical-align:middle;line-height:46px;-webkit-padding-start:15px;padding-inline-start:15px;margin:0;cursor:pointer}div.cms .cms-form-login label span{display:inline-block}div.cms .cms-form-login input[type=password],div.cms .cms-form-login input[type=text]{display:inline-block;color:var(--dca-gray);font-size:14px;height:26px;line-height:26px;width:100px;margin:0;padding:0 5px;border:1px solid var(--dca-gray-lighter);border-radius:3px;box-shadow:0 1px 0 var(--dca-white);text-transform:none}div.cms .cms-form-login input[type=password]:focus,div.cms .cms-form-login input[type=text]:focus{transition:outline .2s;border-color:var(--dca-primary);box-shadow:inset 0 0 2px var(--dca-gray-lighter)}div.cms .cms-form-login input[type=submit]{display:block;font-size:13px;text-transform:uppercase;height:26px;line-height:26px;padding:0 15px}div.cms .cms-form-login input[type=submit]:-moz-focus-inner{border:0}div.cms .cms-form-login .cms-error{color:var(--dca-red,red)}div.cms .cms-form-login .cms-error input{border:1px solid var(--dca-red,red)}@media (max-width:488px){div.cms .cms-form-login{-webkit-margin-start:-110px;margin-inline-start:-110px}}@media (max-width:768px){div.cms .cms-form-login{position:relative;font-size:1px;line-height:0;background:var(--dca-white)}div.cms .cms-form-login label{position:relative;padding:0;-webkit-margin-end:-1px;margin-inline-end:-1px;margin-bottom:-1px}div.cms .cms-form-login label span{position:absolute;inset-inline-start:5px;top:0;z-index:1;color:var(--dca-gray-light)}div.cms .cms-form-login input[type=text]{border-radius:3px 0 0 3px}div.cms .cms-form-login input[type=password]{border-radius:0}div.cms .cms-form-login input[type=password],div.cms .cms-form-login input[type=text]{position:relative;z-index:10;width:95px}div.cms .cms-form-login input[type=password]:focus,div.cms .cms-form-login input[type=password]:valid,div.cms .cms-form-login input[type=text]:focus,div.cms .cms-form-login input[type=text]:valid{background:var(--dca-white)}div.cms .cms-form-login input[type=submit]{border-radius:0 3px 3px 0;padding:0 7.5px}}div.cms .cms-modal-item-buttons,div.cms .cms-toolbar-item-buttons{margin:8px 0}div.cms .cms-modal-item-buttons a,div.cms .cms-toolbar-item-buttons a{float:left}div.cms .cms-modal-item-buttons a:dir(rtl),div.cms .cms-toolbar-item-buttons a:dir(rtl){float:right}div.cms .cms-modal-item-buttons a,div.cms .cms-toolbar-item-buttons a{line-height:28px;height:30px;font-size:12px;padding:0 12px}div.cms .cms-modal-item-buttons a:first-child,div.cms .cms-toolbar-item-buttons a:first-child{border-radius:var(--dca-btn-radius) 0 0 var(--dca-btn-radius)}div.cms .cms-modal-item-buttons a:last-child,div.cms .cms-toolbar-item-buttons a:last-child{-webkit-margin-start:-1px;margin-inline-start:-1px;border-radius:0 var(--dca-btn-radius) var(--dca-btn-radius) 0}div.cms .cms-modal-item-buttons a:only-child,div.cms .cms-toolbar-item-buttons a:only-child{border-radius:var(--dca-btn-radius)}div.cms .cms-screenblock{position:fixed;top:0;inset-inline-end:0;z-index:100;color:var(--dca-white);text-align:center;width:100%;height:100%;background-color:color-mix(in srgb,var(--dca-primary) 90%,transparent)}div.cms .cms-screenblock-inner{margin-top:300px}div.cms .cms-screenblock-inner h1{font-size:28px;line-height:30px}div.cms .cms-screenblock-inner h1,div.cms .cms-screenblock-inner p{color:var(--dca-gray-light);text-align:center}div.cms .cms-screenblock-inner a{color:var(--dca-white)}div.cms .cms-screenblock-inner a:hover{text-decoration:underline}.cms-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}div.cms .cms-loading-bar{background:var(--dca-primary);position:fixed;z-index:99999999;top:0;inset-inline-start:0;width:100%;height:3px;overflow:hidden;opacity:1;transition:opacity .3s;pointer-events:none;min-width:30%;background:var(--dca-primary);opacity:1;animation:5s cubic-bezier(.4,0,.2,1) forwards cms-loading-bar-fill}div.cms .cms-loading-bar .cms-loading-peg{position:absolute;left:0;top:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px var(--dca-primary);opacity:1;transform:rotate(3deg) translate(0,-4px);animation:1s linear infinite cms-loading-peg-move}@keyframes cms-loading-bar-fill{0%{width:30%}20%{width:50%}40%{width:65%}60%{width:80%}80%{width:90%}100%{width:95%}}@keyframes cms-loading-peg-move{0%{left:0}100%{left:calc(100% - 100px)}}div.cms .cms-modal{display:none;position:fixed;top:50%;left:50%;max-width:unset;max-height:unset;overflow:hidden;z-index:9999999;border-radius:var(--dca-border-radius);background:var(--dca-secondary);box-shadow:0 0 10px 2px color-mix(in srgb,var(--dca-black) 25%,transparent);-webkit-user-select:none;user-select:none;opacity:0;transform:translate3d(0,-10%,0);transition:transform 150ms,opacity 150ms}.cms-structure-mode-structure div.cms .cms-modal{transform:translate3d(10%,0,0)}.cms-modal-maximized div.cms .cms-modal{right:0;bottom:0;top:0!important;left:0!important;border-radius:0;margin:0!important;width:auto!important;height:auto!important}.cms-modal-maximized div.cms .cms-modal .cms-modal-title{cursor:default}.cms-modal-minimized div.cms .cms-modal{width:auto!important;height:auto!important;top:1px!important;margin:0!important}.cms-modal-minimized div.cms .cms-modal .cms-modal-body,.cms-modal-minimized div.cms .cms-modal .cms-modal-breadcrumb,.cms-modal-minimized div.cms .cms-modal .cms-modal-foot{display:none!important}.cms-modal-minimized div.cms .cms-modal .cms-modal-title{cursor:default;-webkit-padding-end:90px;padding-inline-end:90px}.cms-modal-minimized div.cms .cms-modal .cms-modal-title-suffix{display:none}.cms-modal-minimized div.cms .cms-modal .cms-modal-minimize{inset-inline-end:33px}div.cms .cms-modal-morphing{transition:.2s}div.cms .cms-modal-open{opacity:1}.cms-structure-mode-structure div.cms .cms-modal-open,div.cms .cms-modal-open{transform:translate3d(0,0,0)}div.cms .cms-modal-body{position:absolute;z-index:10;left:0;top:46px;right:0;bottom:46px;border-top:1px solid var(--dca-gray-lighter);background:var(--dca-white);border-bottom:1px solid var(--dca-gray-lighter)}div.cms .cms-modal-foot{position:absolute;background-color:var(--dca-white);overflow:hidden;clear:both;height:46px;left:0;bottom:0;right:0;z-index:11}div.cms .cms-modal-shim{display:none;position:absolute;top:0;left:0;z-index:20;width:100%;height:100%}div.cms .cms-modal-frame{position:relative;z-index:10;width:100%;height:100%;-webkit-overflow-scrolling:touch;overflow-y:auto}div.cms .cms-modal-frame iframe{display:block;width:100%;height:100%}div.cms .cms-modal-head{position:relative}div.cms .cms-modal-title{display:block;color:var(--dca-gray-darker);font-size:16px;font-weight:700;line-height:46px;min-height:46px;padding:0 20px;cursor:move;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-margin-end:100px;margin-inline-end:100px}div.cms .cms-modal-title .cms-modal-title-suffix{font-weight:400;-webkit-padding-start:10px;padding-inline-start:10px}div.cms .cms-modal-close,div.cms .cms-modal-maximize,div.cms .cms-modal-minimize{display:block;position:absolute;top:50%;margin-top:-15px;inset-inline-end:10px;color:var(--dca-gray-light);text-align:center;width:30px;height:30px;cursor:pointer}div.cms .cms-modal-close:before,div.cms .cms-modal-maximize:before,div.cms .cms-modal-minimize:before{position:relative;top:7px}div.cms .cms-modal-close:hover,div.cms .cms-modal-maximize:hover,div.cms .cms-modal-minimize:hover{color:var(--dca-primary)}div.cms .cms-modal-minimize{inset-inline-end:70px}.cms-modal-minimized div.cms .cms-modal-minimize:before{content:"\E031"}.cms-modal-minimized div.cms .cms-modal-minimize{color:var(--dca-primary)}.cms-modal-maximized div.cms .cms-modal-minimize{display:none!important}div.cms .cms-modal-maximize{inset-inline-end:40px}.cms-modal-minimized div.cms .cms-modal-maximize{display:none!important}.cms-modal-maximized div.cms .cms-modal-maximize{color:var(--dca-primary)}.cms-modal-maximized div.cms .cms-modal-maximize:before{content:"\E025"}div.cms .cms-modal-resize{position:absolute;inset-inline-end:0;bottom:0;z-index:102;font-size:10px;color:var(--dca-gray-light);width:25px;height:25px;cursor:nw-resize}div.cms .cms-modal-resize:dir(rtl){cursor:ne-resize}div.cms .cms-modal-resize span{position:absolute;bottom:5px;right:5px;font-size:12px}div.cms .cms-modal-resize span:dir(rtl){transform:scale(-1,1) translate(2px,0)}div.cms .cms-modal-breadcrumb{display:none!important;font-size:14px;line-height:40px;padding:0 20px;border-top:1px solid var(--dca-gray-lighter);overflow-y:hidden;overflow-x:scroll;height:80px;width:100%;white-space:nowrap;-webkit-overflow-scrolling:touch}div.cms .cms-modal-breadcrumb a{color:var(--dca-primary)}div.cms .cms-modal-breadcrumb a:hover{filter:brightness(.8)}div.cms .cms-modal-breadcrumb a:after{content:"/";color:var(--dca-gray-lighter);text-decoration:none;padding:0 10px}div.cms .cms-modal-breadcrumb a.active{color:var(--dca-gray-light)}div.cms .cms-modal-breadcrumb a:last-child:after{content:""}div.cms .cms-modal-buttons{position:absolute;top:0;right:0;left:0;z-index:101;padding-block:0;padding-inline:10px 25px}div.cms .cms-modal-item-buttons{-webkit-margin-start:8px;margin-inline-start:8px;display:inline-block}div.cms .cms-modal-item-buttons .cancel-link{display:none}div.cms .cms-modal-item-buttons{float:inline-end}div.cms .cms-modal-item-buttons:has(.deletelink){float:inline-start}div.cms .cms-modal-item-buttons-left{float:inline-start}div.cms .cms-modal-markup .cms-modal-foot{height:23px}div.cms .cms-modal-markup .cms-modal-body{bottom:23px}div.cms .cms-modal-has-breadcrumb .cms-modal-body{top:86px!important}div.cms .cms-modal-has-breadcrumb .cms-modal-breadcrumb{display:block!important}.cms-modal-maximized{overflow:hidden!important}.cms-modal-maximized .cms.cms-toolbar-debug .cms-modal{top:3px!important}.cms-modal-minimized .cms.cms-toolbar-debug .cms-modal{top:4px!important}div.cms .cms-sideframe{display:none;position:fixed;top:0;inset-inline-start:0;width:0;bottom:0;z-index:999999}@media (max-width:768px){div.cms .cms-sideframe{width:100%!important}}div.cms .cms-sideframe-frame{position:absolute;inset-inline-start:0;top:0;padding-top:46px;-webkit-overflow-scrolling:touch;overflow-y:auto;z-index:10;width:100%;height:100%;background:var(--dca-white);-webkit-backface-visibility:hidden}div.cms .cms-sideframe-frame iframe{-webkit-overflow-scrolling:touch;overflow-y:auto;transform:translateZ(0);display:block;width:100%;height:100%;border:none;background:var(--dca-white)}div.cms .cms-sideframe-shim{position:absolute;top:0;left:0;z-index:5;width:100%;height:100%;background:0 0}div.cms .cms-sideframe-controls{position:absolute;top:48px;inset-inline-end:20px;z-index:40;box-shadow:none;background-color:var(--dca-white);border-radius:3px;border:1px solid var(--dca-gray-lighter)}div.cms.cms-toolbar-debug .cms-sideframe-controls{top:51px}div.cms .cms-sideframe-close,div.cms .cms-sideframe-history{display:inline-block;position:relative;cursor:pointer;vertical-align:top;font-size:12px;color:var(--dca-gray-darker);text-align:center;width:32px;height:32px}div.cms .cms-sideframe-close span,div.cms .cms-sideframe-history span{position:absolute;top:50%;left:50%;margin-left:-8px;margin-top:-8px}div.cms .cms-sideframe-close span:hover,div.cms .cms-sideframe-history span:hover{color:var(--dca-gray-darkest)}div.cms .cms-sideframe-history{width:65px;border-right:1px solid var(--dca-gray-lighter)}div.cms .cms-sideframe-history .cms-icon,div.cms .cms-sideframe-history .cms-toolbar-item-logo a,div.cms .cms-toolbar-item-logo .cms-sideframe-history a{float:left;position:relative;left:0;top:0;padding:8px 4px 8px 10px;margin:0}div.cms .cms-sideframe-history .cms-icon-arrow-forward:before{content:"\E005"}div.cms .cms-sideframe-history .cms-icon-arrow-forward{padding:8px 10px 8px 4px}div.cms .cms-sideframe-history .cms-icon-disabled{opacity:.5;cursor:not-allowed}div.cms .cms-sideframe-dimmer{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;background:color-mix(in srgb,var(--dca-black) 60%,transparent)}div.cms .cms-droppable{position:relative;z-index:1000;line-height:0;height:0;min-height:0;box-shadow:0 0 0 2px var(--dca-primary);transform:translateY(2px)}.cms-draggable+div.cms .cms-droppable{transform:translateY(-2px)}div.cms .cms-droppable:before{content:"";position:absolute;top:-8px;inset-inline-start:-4px;width:0;height:0;border-top:8px solid transparent;border-bottom:8px solid transparent;-webkit-border-start:8px solid var(--dca-primary);border-inline-start:8px solid var(--dca-primary)}div.cms .cms-draggables>.cms-droppable:first-child{transform:translateY(-2px)}div.cms .cms-draggables>.cms-droppable:only-child{transform:translateY(2px)}div.cms .cms-structure{display:none;position:fixed;top:0;overflow:hidden;z-index:9999;width:100%;height:100%;background:var(--dca-secondary)}div.cms .cms-structure .cms-structure-content{position:relative;overflow-y:scroll;overscroll-behavior:contain;top:0;left:0;padding:46px 5%;z-index:100;width:100%;height:100%;-webkit-user-select:none;user-select:none;transform:translateZ(0);-webkit-overflow-scrolling:touch}@media (max-width:480px){div.cms .cms-structure .cms-structure-content{padding-right:0;padding-left:0}}div.cms .cms-structure .cms-dragarea{position:static;max-width:980px;margin:20px auto;padding:10px 28px}div.cms .cms-structure .cms-dragbar .cms-submenu-item-highlight{display:none}div.cms .cms-structure .cms-dragarea-static>.cms-draggables{display:none}div.cms .cms-structure .cms-dragarea-static>.cms-dragbar>.cms-btn{display:none}div.cms .cms-structure .cms-dragarea-static .cms-dragarea-static-icon{position:relative;top:2px}div.cms .cms-structure .cms-dragarea-static-expanded>.cms-draggables{display:block}div.cms .cms-structure .cms-dragarea-static-expanded>.cms-dragbar>.cms-btn{display:block}div.cms .cms-structure .cms-dragbar{position:relative;top:0;left:0;font-size:14px;line-height:20px;-webkit-padding-start:7px;padding-inline-start:7px;border-radius:3px}div.cms .cms-structure .cms-dragbar .cms-dragbar-title{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;color:var(--dca-black);font-size:16px;font-weight:700;line-height:44px;height:44px;-webkit-margin-end:97px;margin-inline-end:97px}div.cms .cms-structure .cms-dragbar .cms-dragbar-toggler{position:absolute;inset-inline-end:0;background-image:linear-gradient(to right,var(--dca-secondary) 0,var(--dca-secondary) 40px);-webkit-padding-start:50px;padding-inline-start:50px;font-weight:400;text-transform:uppercase;-webkit-margin-start:30px;margin-inline-start:30px;cursor:pointer}div.cms .cms-structure .cms-dragbar .cms-dragbar-toggler a{color:var(--dca-gray)!important;font-size:12px!important}div.cms .cms-structure .cms-dragbar .cms-dragbar-toggler a:hover{color:var(--dca-gray)!important;filter:brightness(.9)}div.cms .cms-structure .cms-dragbar .cms-dragbar-collapse-all{display:none}div.cms .cms-structure .cms-dragbar .cms-dragbar-expand-all{display:inline}div.cms .cms-structure .cms-dragbar .cms-dragbar-title-expanded .cms-dragbar-collapse-all{display:inline}div.cms .cms-structure .cms-dragbar .cms-dragbar-title-expanded .cms-dragbar-expand-all{display:none}div.cms .cms-structure .cms-dragbar-empty{font-size:12px;text-transform:uppercase;padding-top:0;padding-bottom:0}div.cms .cms-structure .cms-dragarea-empty .cms-dragbar-empty-wrapper{display:block!important}div.cms .cms-structure .cms-dragarea-empty .cms-dragbar-toggler{display:none}div.cms .cms-structure .cms-draggables{margin:0;padding:0;list-style-type:none}div.cms .cms-structure .cms-draggables.cms-hidden{display:none!important}div.cms .cms-structure .cms-draggables .cms-draggables{-webkit-padding-start:30px;padding-inline-start:30px}div.cms .cms-structure .cms-dragarea-empty .cms-draggables-root{position:relative;min-height:50px;border:2px solid var(--dca-gray);border-radius:3px}div.cms .cms-structure .cms-draggable{display:block!important;top:0;left:0;white-space:nowrap;margin-left:0!important;padding:0;border-radius:3px;list-style-type:none;touch-action:none}div.cms .cms-structure .cms-draggable .cms-draggable{border-color:var(--dca-gray-lighter)}div.cms .cms-structure .cms-draggable .cms-draggable:hover{border-color:var(--dca-gray-light)}div.cms .cms-structure .cms-draggable .cms-submenu-dropdown-top{top:46px}div.cms .cms-structure .cms-draggable .cms-submenu-dropdown-bottom{bottom:46px}div.cms .cms-structure .cms-draggable .cms-dragitem{line-height:26px;border:2px solid var(--dca-secondary)}div.cms .cms-structure .cms-draggable .cms-dragitem-text{display:block;position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-margin-end:128px;margin-inline-end:128px;padding:10px 28px}div.cms .cms-structure .cms-draggable .cms-dragitem-collapsable .cms-dragitem-text{-webkit-padding-start:50px;padding-inline-start:50px}div.cms .cms-structure .cms-collapsable-container.cms-hidden>.cms-draggable{display:none!important}div.cms .cms-structure .cms-draggable-success{position:relative}div.cms .cms-structure .cms-draggables-empty{display:none}div.cms .cms-structure .cms-dragarea-empty .cms-droppable{position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;z-index:1;color:var(--dca-gray);line-height:26px;height:auto;margin:0;border:2px solid var(--dca-primary);border-radius:3px;background-color:color-mix(in srgb,var(--dca-primary) 20%,transparent);box-shadow:none;transform:translateY(0)!important}div.cms .cms-structure .cms-dragarea-empty .cms-droppable:before{display:none}div.cms .cms-structure .cms-dragarea-empty .cms-droppable.cms-draggable-disallowed{border:2px solid hsl(from var(--dca-red,red) h calc(s + 80%) l);background:color-mix(in srgb,var(--dca-red,red) 10%,transparent)}div.cms .cms-structure .cms-dragarea-empty .cms-draggables-empty{display:block;position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;color:var(--dca-gray);line-height:44px;-webkit-padding-start:20px;padding-inline-start:20px}div.cms .cms-structure .cms-dragarea-empty>.cms-draggables-root>.cms-add-plugin-placeholder{position:absolute;right:0;left:0;height:50px;margin:-2px}div.cms .cms-structure .cms-draggable.cms-slot:has(>.cms-dragitem-expanded){background-color:var(--dca-gray-lightest);padding-bottom:6px;border:2px solid var(--dca-secondary);border-radius:5px}div.cms .cms-structure .cms-draggable.cms-slot:has(>.cms-dragitem-expanded)>.cms-dragitem{background-color:var(--dca-gray-lightest);margin-bottom:2px;border:none}div.cms .cms-structure .cms-draggable.cms-slot>.cms-collapsable-container .cms-dragitem{border-color:var(--dca-gray-lightest);-webkit-border-end:none;border-inline-end:none}div.cms .cms-structure .cms-draggable.cms-slot>.cms-dragitem{background-color:var(--dca-gray-lightest)}div.cms .cms-structure .cms-draggable.cms-slot>.cms-dragitem>.cms-dragitem-text{color:var(--dca-gray)}div.cms .cms-structure .cms-draggable{color:var(--dca-black)}div.cms .cms-structure .cms-draggable-is-dragging{z-index:1;width:200px!important;height:46px!important;border-radius:0;transform:translateZ(0)}div.cms .cms-structure .cms-draggable-is-dragging .cms-dragitem{color:var(--dca-white)!important;border:none;border-radius:0;background-color:var(--dca-primary)!important;background-image:none!important}div.cms .cms-structure .cms-draggable-is-dragging .cms-dragitem:before{display:none;color:var(--dca-white)}div.cms .cms-structure .cms-draggable-is-dragging .cms-dragitem .cms-draggables{display:none}div.cms .cms-structure .cms-draggable-is-dragging .cms-dragitem .cms-dragitem-text{-webkit-padding-start:28px;padding-inline-start:28px}div.cms .cms-structure .cms-draggable-is-dragging .cms-dragitem-text{-webkit-margin-end:0;margin-inline-end:0}div.cms .cms-structure .cms-draggable-is-dragging.cms-draggable-from-clipboard .cms-dragitem-text{-webkit-margin-end:20px;margin-inline-end:20px}div.cms .cms-structure .cms-draggable-is-dragging.cms-draggable-disabled>.cms-draggable{display:none!important}div.cms .cms-structure .cms-draggable-stack{overflow:hidden;height:46px!important;box-shadow:1px 1px 1px rgba(var(--dca-black),.2),4px 4px 0 0 var(--dca-primary)}div.cms .cms-structure .cms-dragitem{cursor:move;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAABCCAAAAAB73glBAAAAAnRSTlMAAHaTzTgAAAAeSURBVHgBY7gCBgxAAGHRRoAKYOi5dNSloy4ddSkA3VChcDH0cxcAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:10px 50%;background-size:8px 33px}div.cms .cms-structure .cms-draggable-disabled>.cms-collapsable-container .cms-dragitem{background-image:none}div.cms .cms-structure .cms-dragitem{position:relative;border-radius:5px;background-color:var(--dca-white)}div.cms .cms-structure .cms-dragitem:hover{box-shadow:inset 0 0 0 1px var(--dca-gray-light)}div.cms .cms-structure .cms-drag-disabled .cms-dragitem:hover{box-shadow:inherit}div.cms .cms-structure .cms-dragitem-collapsable:before{content:"\E006"}div.cms .cms-structure .cms-dragitem-collapsable:before{position:absolute;top:50%;inset-inline-start:12px;color:var(--dca-gray);font-size:12px;margin-top:-6px;-webkit-margin-start:18px;margin-inline-start:18px;cursor:pointer;transform:rotate(180deg)}div.cms .cms-structure .cms-dragitem-collapsable:before:dir(rtl){transform:rotate(0)}div.cms .cms-structure .cms-dragitem-collapsable .cms-dragitem-text{cursor:pointer}div.cms .cms-structure .cms-dragitem-expanded:before{transform:rotate(-90deg)}div.cms .cms-structure .cms-dragitem-expanded:before:dir(rtl){transform:rotate(-90deg)}div.cms .cms-structure .cms-draggable-selected .cms-dragitem,div.cms .cms-structure .cms-draggable-selected .cms-dragitem strong{color:hsl(from color-primary calc(h + 15) s l)}div.cms .cms-structure .cms-draggable-selected .cms-draggable .cms-dragitem,div.cms .cms-structure .cms-draggable-selected .cms-draggable .cms-dragitem strong{color:var(--dca-black)}div.cms .cms-structure .cms-draggable-allowed,div.cms .cms-structure .cms-draggable-hover-allowed,div.cms .cms-structure .cms-draggable-placeholder{color:color-mix(rgba var(--dca-primary),var(--dca-white) 40%);border-color:color-mix(rgba var(--dca-primary),var(--dca-white) 40%)}div.cms .cms-structure .cms-draggable-hover-allowed,div.cms .cms-structure .cms-draggable-placeholder{color:var(--dca-white);background:rgba(var(--dca-primary),.2)}div.cms .cms-structure .cms-draggable-disallowed,div.cms .cms-structure .cms-draggable-hover-disallowed{color:hsl(from var(--dca-red,red) h calc(s + 80%) l);background:color-mix(in srgb,var(--dca-red,red) 10%,transparent);box-shadow:0 0 0 2px hsl(from var(--dca-red,red) h calc(s + 80%) l)}div.cms .cms-structure .cms-draggable-disallowed:before,div.cms .cms-structure .cms-draggable-hover-disallowed:before{display:none}div.cms .cms-structure .cms-draggable-disabled .cms-submenu{display:none}div.cms .cms-structure .cms-draggable-disabled>.cms-dragitem .cms-submenu,div.cms .cms-structure .cms-draggable-disabled>.cms-dragitem-collapsable .cms-submenu{display:block}div.cms .cms-structure .cms-draggable-disabled .cms-draggable{-webkit-margin-start:30px!important;margin-inline-start:30px!important}div.cms .cms-structure .cms-draggable-disabled .cms-draggable .cms-dragitem{background-image:none}div.cms .cms-structure .cms-draggable-disabled .cms-draggable .cms-dragitem:hover{box-shadow:none}div.cms .cms-structure .cms-draggable-disabled .cms-draggables,div.cms .cms-structure .cms-draggable-disabled .cms-droppable{display:none!important}div.cms .cms-structure .cms-drag-disabled.cms-draggable>.cms-dragitem{background-image:none}div.cms .cms-structure .cms-plugin-disabled{position:absolute;top:50%;right:5px;width:36px;height:36px;margin-top:-18px}div.cms .cms-structure .cms-plugin-disabled .cms-icon,div.cms .cms-structure .cms-plugin-disabled .cms-toolbar-item-logo a,div.cms .cms-toolbar-item-logo .cms-structure .cms-plugin-disabled a{position:absolute;top:50%;left:50%;color:var(--dca-gray);font-size:20px;margin-top:-10px;-webkit-margin-start:-10px;margin-inline-start:-10px}div.cms .cms-structure .cms-is-dragging{display:block!important;opacity:.3}div.cms .cms-structure.cms-structure-condensed{width:416px;inset-inline-end:0;box-shadow:0 0 5px 0 rgba(0,0,0,.2)}div.cms .cms-structure.cms-structure-condensed .cms-structure-content{padding-inline:15px;overflow-x:hidden}div.cms .cms-structure.cms-structure-condensed .cms-collapsable-container{-webkit-padding-start:15px;padding-inline-start:15px}div.cms .cms-structure.cms-structure-condensed .cms-draggable-disabled .cms-draggable{-webkit-margin-start:15px!important;margin-inline-start:15px!important}div.cms .cms-structure.cms-structure-condensed .cms-dragitem{line-height:24px;background-size:8px 28px}div.cms .cms-structure.cms-structure-condensed .cms-dragitem-text{padding-top:8px;padding-bottom:8px;-webkit-margin-end:110px;margin-inline-end:110px;-webkit-padding-end:5px;padding-inline-end:5px}div.cms .cms-structure.cms-structure-condensed .cms-dragarea-empty .cms-draggables-root{min-height:43px}div.cms .cms-structure.cms-structure-condensed .cms-draggables-empty{line-height:40px}div.cms .cms-structure.cms-structure-condensed .cms-dragarea-empty>.cms-draggables-root>.cms-add-plugin-placeholder{height:44px}div.cms .cms-structure.cms-structure-condensed .cms-add-plugin-placeholder{line-height:38px}div.cms .cms-structure.cms-structure-condensed .cms-submenu-btn{width:32px;height:32px;margin-top:-16px}div.cms .cms-structure.cms-structure-condensed .cms-submenu-add,div.cms .cms-structure.cms-structure-condensed .cms-submenu-edit-obj{inset-inline-end:39px}div.cms .cms-structure.cms-structure-condensed .cms-submenu-edit{inset-inline-end:75px}div.cms .cms-structure.cms-structure-condensed .cms-submenu-dropdown-settings .cms-submenu-item a,div.cms .cms-structure.cms-structure-condensed .cms-submenu-dropdown-settings .cms-submenu-item a:before{line-height:40px;min-height:40px}div.cms .cms-structure.cms-structure-condensed .cms-dragarea{padding:0}div.cms .cms-structure.cms-structure-condensed .cms-dragbar-title{-webkit-margin-end:82px;margin-inline-end:82px}div.cms .cms-structure.cms-structure-condensed .cms-draggable-stack{height:40px!important}.cms-dragitem-success{position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;z-index:1000;border:1px solid!important;background:color-mix(in srgb,var(--dca-primary) 20%,transparent)!important;border-radius:3px;opacity:.6}.cms-dragitem-success.cms-plugin-overlay-see-through{top:-3px;right:-3px;left:-3px;bottom:-3px;border-width:3px!important;background:0 0!important;opacity:.6;pointer-events:none}.cms-dragitem-success.cms-plugin-overlay-prominent{box-shadow:0 0 20px var(--dca-primary)}.ui-sortable-helper.cms-draggable .cms-submenu-btn{display:none!important}.ui-sortable-helper.cms-draggable .cms-draggables{display:none!important}.cms-overflow{overflow:hidden!important}.cms-content-reloading{position:fixed;width:100%;left:0;top:0;bottom:0;background:var(--dca-white)!important;opacity:.5;z-index:9999}div.cms .cms-submenu-btn:before{content:"\E024"}div.cms .cms-submenu-btn{display:block;position:absolute;inset-inline-end:5px;width:36px;height:36px;cursor:pointer;top:50%;margin-top:-18px}div.cms .cms-submenu-btn:before{position:absolute;left:50%;top:50%;margin-left:-9px;margin-top:-9px;color:var(--dca-gray)}div.cms .cms-submenu-btn .cms-hover-tooltip{position:absolute;left:0;top:0;right:0;bottom:0}div.cms .cms-submenu-btn{margin-right:2px;background-color:transparent}div.cms .cms-dropdown-open .cms-submenu-btn.cms-dropdown-toggle,div.cms .cms-submenu-btn.cms-btn-active,div.cms .cms-submenu-btn:active{color:var(--dca-gray)!important;filter:brightness(.9)}div.cms .cms-submenu-settings{border:none}div.cms .cms-submenu-edit:before{content:"\E016"}div.cms .cms-submenu-edit{inset-inline-end:87px}div.cms .cms-submenu-edit-obj:before{content:"\E016"}div.cms .cms-submenu-edit-obj{inset-inline-end:46px}div.cms .cms-submenu-add:before{content:"\E031"}div.cms .cms-submenu-add{inset-inline-end:46px}div.cms .cms-submenu-add:before,div.cms .cms-submenu-edit-obj:before,div.cms .cms-submenu-edit:before{margin-left:-8px;margin-top:-8px;font-size:16px}div.cms .cms-submenu-lang{position:absolute;top:50%;height:20px;margin-top:-10px;line-height:18px;right:10px;padding:0 5px;border:1px solid var(--dca-gray-lighter);border-radius:12.5px}div.cms .cms-structure-content .cms-submenu-lang{display:none}div.cms .cms-submenu-dropdown-top{top:44px}div.cms .cms-submenu-dropdown-bottom{bottom:44px}div.cms .cms-submenu-dropdown-settings{display:none;position:absolute;z-index:1002;min-width:180px;background:var(--dca-white);border:1px solid var(--dca-gray-lightest);border-radius:12.5px;box-shadow:0 0 10px color-mix(in srgb,var(--dca-black) 25%,transparent);inset-inline-end:46px;transform:translateZ(0)}div.cms .cms-submenu-dropdown-settings .cms-submenu-item a{position:relative;display:block;font-size:14px;text-align:start;padding:0 20px;line-height:46px;min-height:46px;-webkit-padding-start:40px;padding-inline-start:40px;color:var(--dca-gray)}div.cms .cms-submenu-dropdown-settings .cms-submenu-item a:focus,div.cms .cms-submenu-dropdown-settings .cms-submenu-item a:hover{color:var(--dca-white);background:var(--dca-primary)}div.cms .cms-submenu-dropdown-settings .cms-submenu-item a[data-cms-icon]:before,div.cms .cms-submenu-dropdown-settings .cms-submenu-item a[data-rel]:before{position:absolute;inset-inline-start:14px;top:0;height:46px;line-height:46px}div.cms .cms-submenu-dropdown-settings .cms-submenu-item a[data-cms-icon=view]:before{content:"\E042"}div.cms .cms-submenu-dropdown-settings .cms-submenu-item a[data-cms-icon=edit]:before{content:"\E016"}div.cms .cms-submenu-dropdown-settings .cms-submenu-item a[data-cms-icon=edit-new]:before{content:"\E015"}div.cms .cms-submenu-dropdown-settings .cms-submenu-item a[data-cms-icon=publish]:before{content:"\E032"}div.cms .cms-submenu-dropdown-settings .cms-submenu-item a[data-cms-icon=copy]:before{content:"\E013"}div.cms .cms-submenu-dropdown-settings .cms-submenu-item a[data-cms-icon=paste]:before{content:"\E02B"}div.cms .cms-submenu-dropdown-settings .cms-submenu-item a[data-cms-icon=cut]:before{content:"\E014"}div.cms .cms-submenu-dropdown-settings .cms-submenu-item a[data-cms-icon=bin]:before{content:"\E008"}div.cms .cms-submenu-dropdown-settings .cms-submenu-item a[data-cms-icon=alias]:before{content:"\E002"}div.cms .cms-submenu-dropdown-settings .cms-submenu-item a[data-cms-icon=highlight]:before{content:"\E01B"}div.cms .cms-submenu-dropdown-settings .cms-submenu-item:first-child a:focus,div.cms .cms-submenu-dropdown-settings .cms-submenu-item:first-child a:hover{border-radius:12.5px 12.5px 0 0}div.cms .cms-submenu-dropdown-settings .cms-submenu-item:last-child a:focus,div.cms .cms-submenu-dropdown-settings .cms-submenu-item:last-child a:hover{border-radius:0 0 12.5px 12.5px}div.cms .cms-submenu-dropdown-settings .cms-submenu-item-paste-tooltip{display:none}div.cms .cms-submenu-dropdown-settings .cms-submenu-item-disabled{position:relative}div.cms .cms-submenu-dropdown-settings .cms-submenu-item-disabled a,div.cms .cms-submenu-dropdown-settings .cms-submenu-item-disabled a:focus,div.cms .cms-submenu-dropdown-settings .cms-submenu-item-disabled a:hover{cursor:default!important;opacity:.33;color:var(--dca-gray)!important;background:0 0!important;box-shadow:none}div.cms .cms-submenu-dropdown-settings .cms-submenu-item-disabled .cms-submenu-item-paste-tooltip{cursor:default;position:absolute;left:0;top:0;right:0;bottom:0}div.cms .cms-submenu-dropdown-settings:before{z-index:-1;position:absolute;content:"";inset-inline-start:100%;width:10px;height:10px;-webkit-margin-start:-5px;margin-inline-start:-5px;transform:rotate(45deg);background-color:var(--dca-white);border:1px solid var(--dca-gray-lightest);box-shadow:0 0 10px color-mix(in srgb,var(--dca-black) 25%,transparent)}div.cms .cms-submenu-dropdown-settings.cms-submenu-dropdown-top{top:0!important}div.cms .cms-submenu-dropdown-settings.cms-submenu-dropdown-top:before{top:18px!important}div.cms .cms-submenu-dropdown-settings.cms-submenu-dropdown-bottom{bottom:0!important}div.cms .cms-submenu-dropdown-settings.cms-submenu-dropdown-bottom:before{bottom:18px!important}div.cms .cms-submenu-dropdown-settings .cms-dropdown-inner{z-index:1;background-color:var(--dca-white);border-radius:12.5px}div.cms .cms-dragbar .cms-submenu-dropdown-settings.cms-submenu-dropdown-top:before{top:14px!important}div.cms .cms-dragbar .cms-submenu-dropdown-settings.cms-submenu-dropdown-bottom:before{bottom:12px!important;bottom:14px!important}div.cms .cms-z-index-9999{z-index:9999!important}div.cms .cms-clipboard{display:none}div.cms .cms-clipboard-containers{display:none!important}div.cms .cms-clipboard-containers .cms-dragarea{padding-top:3px}div.cms .cms-clipboard-containers .cms-draggable{display:block!important;position:relative;top:0;left:0;border-radius:3px;cursor:move}div.cms .cms-clipboard-containers .cms-draggable .cms-dragitem{line-height:46px;height:46px;padding-left:20px}div.cms .cms-clipboard-containers .cms-draggable .cms-dragitem .cms-submenu-btn{display:none!important}div.cms .cms-clipboard-containers .cms-draggable .cms-dragitem-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-margin-end:40px;margin-inline-end:40px}div.cms .cms-clipboard-containers .cms-plugins{display:none}div.cms .cms-clipboard-containers .cms-droppable{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;color:var(--dca-gray-light);line-height:26px;height:auto;margin:0;border:2px solid var(--dca-primary);border-radius:3px;background-color:color-mix(in srgb,var(--dca-primary) 20%,transparent);box-shadow:none;transform:translateY(0)!important}div.cms .cms-clipboard-containers .cms-droppable:before{display:none}div.cms .cms-modal-markup .cms-clipboard-containers{display:block!important}div.cms .cms-modal-markup .cms-clipboard-containers .cms-is-dragging{display:block!important;opacity:.3}div.cms .cms-plugin-picker{display:none}div.cms .cms-plugin-picker .cms-submenu-item.cms-submenu-item-title{position:-webkit-sticky;position:sticky;top:0;z-index:1;background-color:var(--dca-white)}div.cms .cms-plugin-picker .cms-submenu-item a,div.cms .cms-plugin-picker span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;line-height:32px;text-align:start;min-height:32px;padding:0 20px}div.cms .cms-plugin-picker .cms-submenu-item a{color:var(--dca-black);border-top:1px solid transparent;border-bottom:1px solid transparent}div.cms .cms-plugin-picker .cms-submenu-item a:hover{color:var(--dca-primary);background-color:var(--dca-secondary);border-top:1px solid var(--dca-primary);border-bottom:1px solid var(--dca-primary)}div.cms .cms-plugin-picker .cms-submenu-item a:focus{color:var(--dca-white);background:var(--dca-primary);border-top:1px solid var(--dca-primary);border-bottom:1px solid var(--dca-primary)}div.cms .cms-plugin-picker .cms-submenu-item span{color:var(--dca-black);font-weight:700;border-bottom:1px solid var(--dca-gray-lighter);cursor:default}div.cms .cms-modal-markup .cms-plugin-picker{display:block}div.cms .cms-quicksearch{display:none;position:relative;height:40px;border-bottom:1px solid var(--dca-gray-lighter);cursor:default}div.cms .cms-quicksearch label{display:block;width:100%;height:100%;cursor:pointer}div.cms .cms-quicksearch input{display:block;width:100%;height:100%;padding:0 20px;border:none;background-color:var(--dca-gray-lightest);-webkit-border-radius:0;-webkit-appearance:none;appearance:none}div.cms .cms-modal-markup .cms-quicksearch{display:block}div.cms .cms-add-plugin-placeholder{position:relative;z-index:3;color:var(--dca-primary);line-height:44px;-webkit-padding-start:20px;padding-inline-start:20px;border:2px solid var(--dca-primary);border-radius:3px;background-color:var(--dca-white)}div.cms .cms-add-plugin-placeholder:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:color-mix(in srgb,var(--dca-primary) 40%,transparent)}div.cms .cms-shortcuts{padding:0 20px}div.cms .cms-shortcuts h2{padding-top:20px;padding-left:8px;font-weight:700;margin-bottom:5px}div.cms .cms-shortcuts{margin-bottom:20px}div.cms .cms-shortcut{clear:both}div.cms .cms-shortcut-key-wrapper{width:100px;text-align:right;vertical-align:top;padding-bottom:5px;white-space:nowrap}div.cms .cms-shortcut-key{display:inline-block;background-color:var(--dca-gray-lightest);padding:3px 6px;border-radius:3px;font-family:"Operator Mono",Menlo,Monaco,Consolas,monospace;border-top:1px solid var(--dca-gray-lightest);box-shadow:inset 0 0 25px var(--dca-gray-lightest),0 1px 0 var(--dca-gray-light),0 2px 0 var(--dca-gray-light),0 2px 3px var(--dca-gray-darkest);text-shadow:0 1px 0 var(--dca-gray-lightest)}div.cms .cms-shortcut-desc{padding:3px 10px;width:100%;padding-bottom:5px}div.cms :not(.cms-modal):focus{outline:2px dotted var(--dca-gray-darker);outline-offset:-3px}div.cms :not(.cms-modal):focus::-moz-focus-inner{border:0!important}@media screen and (-webkit-min-device-pixel-ratio:0){div.cms :not(.cms-modal):focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-3px}}div.cms :not(.cms-modal):focus .cms-hover-tooltip{display:none}div.cms .cms-pagetree-node-state{box-sizing:border-box;display:inline-block;width:16px;height:16px;border-radius:100%;border:1px solid var(--dca-white);background:var(--dca-white);vertical-align:top}div.cms .cms-btn .cms-pagetree-node-state{vertical-align:middle;margin-right:5px;margin-top:-4px}div.cms .cms-btn:hover .cms-pagetree-node-state-dirty{box-shadow:0 0 0 1px #fff}div.cms .cms-pagetree-node-state-empty{border-color:var(--dca-gray-light);background-color:var(--dca-white)}div.cms .cms-pagetree-node-state-unpublished,div.cms .cms-pagetree-node-state-unpublished-parent{border-color:var(--dca-gray-light);background-color:var(--dca-gray-light)}div.cms .cms-pagetree-node-state-archived{border-color:var(--dca-gray-light);background-color:var(--dca-gray-lighter)}div.cms .cms-pagetree-node-state-public,div.cms .cms-pagetree-node-state-published{border-color:var(--dca-green,#693);background-color:var(--dca-green,#693)}div.cms .cms-pagetree-node-state-draft{border-color:light-dark(#0bf,color-mix(in srgb,#0bf,#000 10%));background-color:var(--dca-white);border-width:2px}div.cms .cms-pagetree-node-state-dirty{animation:2.5s ease-out infinite pulsate;border-color:light-dark(#0bf,color-mix(in srgb,#0bf,#000 10%));background-color:light-dark(#0bf,color-mix(in srgb,#0bf,#000 10%))}div.cms .cms-pagetree-node-state-deletion{border-color:var(--dca-red,red);background-color:var(--dca-red,red)}@keyframes pulsate{0%{opacity:.5}50%{opacity:1}100%{opacity:.5}}div.cms[dir=rtl] .cms-toolbar .cms-toolbar-item{float:right}div.cms[dir=rtl] .cms-toolbar-item-navigation li,div.cms[dir=rtl] .cms-toolbar-item-navigation li a{float:right}div.cms[dir=rtl] .cms-toolbar-item-logo .cms-toolbar-item-navigation .cms-toolbar-item-navigation-children>a span a,div.cms[dir=rtl] .cms-toolbar-item-navigation .cms-toolbar-item-navigation-children>a span .cms-icon,div.cms[dir=rtl] .cms-toolbar-item-navigation .cms-toolbar-item-navigation-children>a span .cms-toolbar-item-logo a{transform:rotate(0)}div.cms[dir=rtl] .cms-toolbar-more .cms-toolbar-item-cms-mode-switcher a{float:right!important}div.cms[dir=rtl] .cms-messages .cms-messages-close{float:left}div.cms[dir=rtl] .cms-modal-item-buttons a,div.cms[dir=rtl] .cms-toolbar-item-buttons a{float:right}div.cms[dir=rtl] .cms-modal-item-buttons{float:left}div.cms[dir=rtl] .cms-modal-item-buttons-left{float:right}div.cms[dir=rtl] .cms-modal-resize{cursor:ne-resize}div.cms[dir=rtl] .cms-modal-resize span{transform:scale(-1,1) translate(2px,0)}div.cms[dir=rtl] .cms-structure .cms-dragitem-collapsable:before{transform:rotate(0)}div.cms[dir=rtl] .cms-structure .cms-dragitem-expanded:before{transform:rotate(-90deg)}div.cms[dir=rtl] .cms-pagetree-section h2{float:right}div.cms[dir=rtl] .cms-tree-col,div.cms[dir=rtl] .cms-tree-filters,div.cms[dir=rtl] .cms-tree-reload{float:left}div.cms[dir=rtl] .cms-tree-search{float:right}div.cms[dir=rtl] .jstree-django-cms .jstree-ocl{float:right}div.cms[dir=rtl] .jstree-anchor{background-position:calc(100% - 2px) center} \ No newline at end of file diff --git a/cms/static/cms/css/5.2.0dev1/cms.headless.css b/cms/static/cms/css/5.2.0dev1/cms.headless.css new file mode 100644 index 00000000..91b38f5a --- /dev/null +++ b/cms/static/cms/css/5.2.0dev1/cms.headless.css @@ -0,0 +1 @@ +:root{color-scheme:dark light;--cms-dark-mode:0;--dca-dark:#2d4c4d;--dca-light:#defcb9;--dca-white:light-dark(#FFF, #000);--dca-black:light-dark(#2a2c2e, rgb(from white calc(r - 45) calc(g - 44) calc(b - 46)));--dca-primary:light-dark(var(--dca-dark), rgb(from var(--dca-light) calc(r - 45) calc(g - 44) calc(b - 46)));--dca-secondary:light-dark(var(--dca-light), var(--dca-dark));--dca-red:#d44848;--dca-action-bg:var(--dca-secondary);--dca-action-text:var(--dca-black);--dca-gray:light-dark(#7c7c7c, #a7a7a7);--dca-gray-lightest:light-dark(#f7f7f7, #303030);--dca-gray-lighter:light-dark(#ddd, #666);--dca-gray-light:light-dark(#999, #888);--dca-gray-darker:light-dark(#454545, #ddd);--dca-gray-darkest:light-dark(#333, #eee);--dca-border-radius:20px;--dca-btn-radius:40px;--dca-default-spacing:2px}@media (prefers-color-scheme:dark){:root{--cms-dark-mode:1}}:root[data-cms-theme="3"],:root[data-cms-theme="4"]{--dca-dark:#00bbff;--dca-light:color-mix(in srgb, var(--dca-dark), var(--dca-white) 55%);--dca-white:light-dark(#FFF, #000);--dca-black:light-dark(#000, #FFF);--dca-primary:light-dark(var(--dca-dark), color-mix(in srgb, var(--dca-light), black 10%));--dca-secondary:var(--dca-gray-lightest);--dca-red:#d44848;--dca-action-bg:var(--dca-primary);--dca-action-text:var(--dca-white);--dca-gray:light-dark(#7c7c7c, #aaa);--dca-gray-lightest:light-dark(#f7f7f7, #303030);--dca-gray-lighter:light-dark(#ddd, #666);--dca-gray-light:light-dark(#999, #888);--dca-gray-darker:light-dark(#454545, #ddd);--dca-gray-darkest:light-dark(#333, #eee);--dca-border-radius:5px;--dca-btn-radius:3px;--dca-default-spacing:0px}:root[data-theme=auto]{color-scheme:dark light}:root[data-theme=light]{color-scheme:light;--cms-dark-mode:0}:root[data-theme=dark]{color-scheme:dark;--cms-dark-mode:1}html.cms-structure-mode-structure section{-webkit-margin-end:436px;margin-inline-end:436px}.cms-placeholder-view section{font:18px/24px Helvetica,Arial,sans-serif;padding:20px}.cms-placeholder-view h1{margin:0 0 20px;padding:0;padding-bottom:10px;font-size:1.5em;border-bottom:1px solid var(--dca-gray-light)}.cms-placeholder-view h1 small{font-size:.5em;color:var(--dca-gray)}.cms-placeholder-view section img{max-width:100%;padding:3px;margin:-5px;border:1px solid var(--dca-gray-light)} \ No newline at end of file diff --git a/cms/static/cms/css/5.2.0dev1/cms.pagetree.css b/cms/static/cms/css/5.2.0dev1/cms.pagetree.css new file mode 100644 index 00000000..1a97bb4a --- /dev/null +++ b/cms/static/cms/css/5.2.0dev1/cms.pagetree.css @@ -0,0 +1,3 @@ +/*! + * @copyright: https://github.com/divio/django-cms + */:root{color-scheme:dark light;--cms-dark-mode:0;--dca-dark:#2d4c4d;--dca-light:#defcb9;--dca-white:light-dark(#FFF, #000);--dca-black:light-dark(#2a2c2e, rgb(from white calc(r - 45) calc(g - 44) calc(b - 46)));--dca-primary:light-dark(var(--dca-dark), rgb(from var(--dca-light) calc(r - 45) calc(g - 44) calc(b - 46)));--dca-secondary:light-dark(var(--dca-light), var(--dca-dark));--dca-red:#d44848;--dca-action-bg:var(--dca-secondary);--dca-action-text:var(--dca-black);--dca-gray:light-dark(#7c7c7c, #a7a7a7);--dca-gray-lightest:light-dark(#f7f7f7, #303030);--dca-gray-lighter:light-dark(#ddd, #666);--dca-gray-light:light-dark(#999, #888);--dca-gray-darker:light-dark(#454545, #ddd);--dca-gray-darkest:light-dark(#333, #eee);--dca-border-radius:20px;--dca-btn-radius:40px;--dca-default-spacing:2px}@media (prefers-color-scheme:dark){:root{--cms-dark-mode:1}}:root[data-cms-theme="3"],:root[data-cms-theme="4"]{--dca-dark:#00bbff;--dca-light:color-mix(in srgb, var(--dca-dark), var(--dca-white) 55%);--dca-white:light-dark(#FFF, #000);--dca-black:light-dark(#000, #FFF);--dca-primary:light-dark(var(--dca-dark), color-mix(in srgb, var(--dca-light), black 10%));--dca-secondary:var(--dca-gray-lightest);--dca-red:#d44848;--dca-action-bg:var(--dca-primary);--dca-action-text:var(--dca-white);--dca-gray:light-dark(#7c7c7c, #aaa);--dca-gray-lightest:light-dark(#f7f7f7, #303030);--dca-gray-lighter:light-dark(#ddd, #666);--dca-gray-light:light-dark(#999, #888);--dca-gray-darker:light-dark(#454545, #ddd);--dca-gray-darkest:light-dark(#333, #eee);--dca-border-radius:5px;--dca-btn-radius:3px;--dca-default-spacing:0px}:root[data-theme=auto]{color-scheme:dark light}:root[data-theme=light]{color-scheme:light;--cms-dark-mode:0}:root[data-theme=dark]{color-scheme:dark;--cms-dark-mode:1}@font-face{font-family:django-cms-iconfont;src:url(../../fonts/5.2.0dev1/django-cms-iconfont.eot);src:url(../../fonts/5.2.0dev1/django-cms-iconfont.eot#iefix) format("eot"),url(../../fonts/5.2.0dev1/django-cms-iconfont.woff2) format("woff2"),url(../../fonts/5.2.0dev1/django-cms-iconfont.woff) format("woff"),url(../../fonts/5.2.0dev1/django-cms-iconfont.ttf) format("truetype"),url(../../fonts/5.2.0dev1/django-cms-iconfont.svg#django-cms-iconfont) format("svg");font-weight:400;font-style:normal}.cms-icon,.cms-tooltip-touch:before,.cms-tooltip:before,.cms-tree-item-preview a,.cms-tree-node-success>.jstree-anchor .jstree-themeicon,.jstree-django-cms .jstree-ocl{display:inline-block;font:18px/1 django-cms-iconfont;text-rendering:auto;transform:translate(0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cms-icon-none{width:1em}.cms-icon-advanced-settings:before{content:"\E001"}.cms-icon-alias:before{content:"\E002"}.cms-icon-apphook:before{content:"\E003"}.cms-icon-archive:before{content:"\E004"}.cms-icon-arrow-right:before{content:"\E005"}.cms-icon-arrow-wide:before{content:"\E006"}.cms-icon-arrow:before{content:"\E007"}.cms-icon-bin:before{content:"\E008"}.cms-icon-broadcast-off:before{content:"\E009"}.cms-icon-broadcast-on:before{content:"\E00A"}.cms-icon-check-circle:before{content:"\E00B"}.cms-icon-check-o:before{content:"\E00C"}.cms-icon-check-square:before{content:"\E00D"}.cms-icon-check:before{content:"\E00E"}.cms-icon-close:before{content:"\E00F"}.cms-icon-cogs:before{content:"\E010"}.cms-icon-comment:before{content:"\E011"}.cms-icon-compare:before{content:"\E012"}.cms-icon-copy:before{content:"\E013"}.cms-icon-cut:before{content:"\E014"}.cms-icon-edit-new:before{content:"\E015"}.cms-icon-edit:before{content:"\E016"}.cms-icon-external-placeholder:before{content:"\E017"}.cms-icon-eye:before{content:"\E018"}.cms-icon-forbidden:before{content:"\E019"}.cms-icon-handler:before{content:"\E01A"}.cms-icon-highlight:before{content:"\E01B"}.cms-icon-home:before{content:"\E01C"}.cms-icon-info:before{content:"\E01D"}.cms-icon-layers:before{content:"\E01E"}.cms-icon-list-ol:before{content:"\E01F"}.cms-icon-loader:before{content:"\E020"}.cms-icon-lock:before{content:"\E021"}.cms-icon-logo:before{content:"\E022"}.cms-icon-manage-versions:before{content:"\E023"}.cms-icon-menu:before{content:"\E024"}.cms-icon-minimize:before{content:"\E025"}.cms-icon-minus-circle:before{content:"\E026"}.cms-icon-minus-square-o:before{content:"\E027"}.cms-icon-minus-square:before{content:"\E028"}.cms-icon-minus:before{content:"\E029"}.cms-icon-moderate:before{content:"\E02A"}.cms-icon-paste:before{content:"\E02B"}.cms-icon-pencil:before{content:"\E02C"}.cms-icon-pin:before{content:"\E02D"}.cms-icon-plugins:before{content:"\E02E"}.cms-icon-plus-circle:before{content:"\E02F"}.cms-icon-plus-square-o:before{content:"\E030"}.cms-icon-plus:before{content:"\E031"}.cms-icon-publish:before{content:"\E032"}.cms-icon-puzzle:before{content:"\E033"}.cms-icon-redirect:before{content:"\E034"}.cms-icon-redo:before{content:"\E035"}.cms-icon-rename:before{content:"\E036"}.cms-icon-scissors:before{content:"\E037"}.cms-icon-search:before{content:"\E038"}.cms-icon-settings:before{content:"\E039"}.cms-icon-sitemap:before{content:"\E03A"}.cms-icon-squares:before{content:"\E03B"}.cms-icon-theme-auto:before{content:"\E03C"}.cms-icon-theme-dark:before{content:"\E03D"}.cms-icon-theme-light:before{content:"\E03E"}.cms-icon-undo:before{content:"\E03F"}.cms-icon-unlock:before{content:"\E040"}.cms-icon-unpublish:before{content:"\E041"}.cms-icon-view:before{content:"\E042"}.cms-icon-window:before{content:"\E043"}.cms-pagetree-wrapper .cms-btn{background-image:none!important;margin-bottom:0;border-radius:var(--dca-btn-radius)!important;color:var(--dca-gray)!important;background-color:var(--dca-white)!important;border:1px solid!important;background-clip:padding-box;-webkit-appearance:none}.cms-pagetree-wrapper .cms-btn.focus,.cms-pagetree-wrapper .cms-btn:focus{color:var(--dca-gray)!important;background-color:color-mix(in srgb,var(--dca-white),var(--dca-black) 5%)!important;border-color:color-mix(in srgb,var(--dca-white),var(--dca-black) 5%)!important;text-decoration:none!important}.cms-pagetree-wrapper .cms-btn:hover{color:var(--dca-gray)!important;background-color:color-mix(in srgb,var(--dca-white),var(--dca-secondary) 50%)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%)!important;text-decoration:none!important}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-wrapper .cms-btn,.cms-pagetree-wrapper .cms-btn.cms-btn-active,.cms-pagetree-wrapper .cms-btn:active,.cms-pagetree-wrapper .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-btn{color:var(--dca-gray)!important;background-color:var(--dca-secondary)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 15%)!important;box-shadow:none!important}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-wrapper .cms-btn:hover,.cms-pagetree-wrapper .cms-btn.cms-btn-active:hover,.cms-pagetree-wrapper .cms-btn:active:hover,.cms-pagetree-wrapper .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-btn:hover{color:var(--dca-gray)!important;background-color:color-mix(in srgb,var(--dca-secondary),var(--dca-black) 10%)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%)!important;text-decoration:none!important}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-wrapper .cms-btn.focus,.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-wrapper .cms-btn:focus,.cms-pagetree-wrapper .cms-btn.cms-btn-active.focus,.cms-pagetree-wrapper .cms-btn.cms-btn-active:focus,.cms-pagetree-wrapper .cms-btn:active.focus,.cms-pagetree-wrapper .cms-btn:active:focus,.cms-pagetree-wrapper .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-btn.focus,.cms-pagetree-wrapper .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-btn:focus{color:var(--dca-gray)!important;background-color:var(--dca-secondary)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 25%)!important}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-wrapper .cms-btn,.cms-pagetree-wrapper .cms-btn.cms-btn-active,.cms-pagetree-wrapper .cms-btn:active,.cms-pagetree-wrapper .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-btn{background-image:none!important}.cms-pagetree-wrapper .cms-btn.cms-btn-disabled,.cms-pagetree-wrapper .cms-btn.cms-btn-disabled.cms-btn-active,.cms-pagetree-wrapper .cms-btn.cms-btn-disabled.focus,.cms-pagetree-wrapper .cms-btn.cms-btn-disabled:active,.cms-pagetree-wrapper .cms-btn.cms-btn-disabled:focus,.cms-pagetree-wrapper .cms-btn.cms-btn-disabled:hover,.cms-pagetree-wrapper .cms-btn[disabled],.cms-pagetree-wrapper .cms-btn[disabled].cms-btn-active,.cms-pagetree-wrapper .cms-btn[disabled].focus,.cms-pagetree-wrapper .cms-btn[disabled]:active,.cms-pagetree-wrapper .cms-btn[disabled]:focus,.cms-pagetree-wrapper .cms-btn[disabled]:hover{background-color:color-mix(in srgb,var(--dca-white) 40%,transparent)!important;border-color:color-mix(in srgb,var(--dca-gray) 40%,transparent)!important;color:color-mix(in srgb,var(--dca-gray),var(--dca-white) 50%);cursor:not-allowed;box-shadow:none!important}.cms-pagetree-wrapper .cms-btn.cms-btn-disabled.cms-btn-active:before,.cms-pagetree-wrapper .cms-btn.cms-btn-disabled.focus:before,.cms-pagetree-wrapper .cms-btn.cms-btn-disabled:active:before,.cms-pagetree-wrapper .cms-btn.cms-btn-disabled:before,.cms-pagetree-wrapper .cms-btn.cms-btn-disabled:focus:before,.cms-pagetree-wrapper .cms-btn.cms-btn-disabled:hover:before,.cms-pagetree-wrapper .cms-btn[disabled].cms-btn-active:before,.cms-pagetree-wrapper .cms-btn[disabled].focus:before,.cms-pagetree-wrapper .cms-btn[disabled]:active:before,.cms-pagetree-wrapper .cms-btn[disabled]:before,.cms-pagetree-wrapper .cms-btn[disabled]:focus:before,.cms-pagetree-wrapper .cms-btn[disabled]:hover:before{color:color-mix(in srgb,var(--dca-gray) 40%,transparent)}.cms-pagetree-wrapper .cms-btn-action{background-image:none!important;margin-bottom:0;border-radius:var(--dca-btn-radius)!important;color:var(--dca-action-text)!important;background-color:var(--dca-action-bg)!important;border:1px solid!important;background-clip:padding-box;-webkit-appearance:none}.cms-pagetree-wrapper .cms-btn-action.focus,.cms-pagetree-wrapper .cms-btn-action:focus{color:var(--dca-action-text)!important;background-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 5%)!important;border-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 5%)!important;text-decoration:none!important}.cms-pagetree-wrapper .cms-btn-action:hover{color:var(--dca-action-text)!important;background-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 10%)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%)!important;text-decoration:none!important}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-wrapper .cms-btn-action.cms-btn,.cms-pagetree-wrapper .cms-btn-action.cms-btn-active,.cms-pagetree-wrapper .cms-btn-action:active,.cms-pagetree-wrapper .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-btn-action.cms-btn{color:var(--dca-action-text)!important;background-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 15%)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 15%)!important;box-shadow:none!important}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-wrapper .cms-btn-action.cms-btn:hover,.cms-pagetree-wrapper .cms-btn-action.cms-btn-active:hover,.cms-pagetree-wrapper .cms-btn-action:active:hover,.cms-pagetree-wrapper .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-btn-action.cms-btn:hover{color:var(--dca-action-text)!important;background-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 10%)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%)!important;text-decoration:none!important}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-wrapper .cms-btn-action.cms-btn:focus,.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-wrapper .cms-btn-action.focus.cms-btn,.cms-pagetree-wrapper .cms-btn-action.cms-btn-active.focus,.cms-pagetree-wrapper .cms-btn-action.cms-btn-active:focus,.cms-pagetree-wrapper .cms-btn-action:active.focus,.cms-pagetree-wrapper .cms-btn-action:active:focus,.cms-pagetree-wrapper .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-btn-action.cms-btn:focus,.cms-pagetree-wrapper .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-btn-action.focus.cms-btn{color:var(--dca-action-text)!important;background-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 20%)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 25%)!important}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-wrapper .cms-btn-action.cms-btn,.cms-pagetree-wrapper .cms-btn-action.cms-btn-active,.cms-pagetree-wrapper .cms-btn-action:active,.cms-pagetree-wrapper .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-btn-action.cms-btn{background-image:none!important}.cms-pagetree-wrapper .cms-btn-action.cms-btn-disabled,.cms-pagetree-wrapper .cms-btn-action.cms-btn-disabled.cms-btn-active,.cms-pagetree-wrapper .cms-btn-action.cms-btn-disabled.focus,.cms-pagetree-wrapper .cms-btn-action.cms-btn-disabled:active,.cms-pagetree-wrapper .cms-btn-action.cms-btn-disabled:focus,.cms-pagetree-wrapper .cms-btn-action.cms-btn-disabled:hover,.cms-pagetree-wrapper .cms-btn-action[disabled],.cms-pagetree-wrapper .cms-btn-action[disabled].cms-btn-active,.cms-pagetree-wrapper .cms-btn-action[disabled].focus,.cms-pagetree-wrapper .cms-btn-action[disabled]:active,.cms-pagetree-wrapper .cms-btn-action[disabled]:focus,.cms-pagetree-wrapper .cms-btn-action[disabled]:hover{background-color:color-mix(in srgb,var(--dca-action-bg) 40%,transparent)!important;border-color:color-mix(in srgb,var(--dca-gray) 40%,transparent)!important;color:color-mix(in srgb,var(--dca-action-text),var(--dca-white) 50%);cursor:not-allowed;box-shadow:none!important}.cms-pagetree-wrapper .cms-btn-action.cms-btn-disabled.cms-btn-active:before,.cms-pagetree-wrapper .cms-btn-action.cms-btn-disabled.focus:before,.cms-pagetree-wrapper .cms-btn-action.cms-btn-disabled:active:before,.cms-pagetree-wrapper .cms-btn-action.cms-btn-disabled:before,.cms-pagetree-wrapper .cms-btn-action.cms-btn-disabled:focus:before,.cms-pagetree-wrapper .cms-btn-action.cms-btn-disabled:hover:before,.cms-pagetree-wrapper .cms-btn-action[disabled].cms-btn-active:before,.cms-pagetree-wrapper .cms-btn-action[disabled].focus:before,.cms-pagetree-wrapper .cms-btn-action[disabled]:active:before,.cms-pagetree-wrapper .cms-btn-action[disabled]:before,.cms-pagetree-wrapper .cms-btn-action[disabled]:focus:before,.cms-pagetree-wrapper .cms-btn-action[disabled]:hover:before{color:color-mix(in srgb,var(--dca-action-text) 40%,transparent)}.cms-pagetree-wrapper .cms-btn-action{text-transform:uppercase;letter-spacing:var(--dca-default-spacing)}.cms-pagetree-wrapper .cms-btn-caution{background-image:none!important;margin-bottom:0;border-radius:var(--dca-btn-radius)!important;color:var(--dca-white)!important;background-color:var(--dca-red,red)!important;border:1px solid!important;background-clip:padding-box;-webkit-appearance:none}.cms-pagetree-wrapper .cms-btn-caution.focus,.cms-pagetree-wrapper .cms-btn-caution:focus{color:var(--dca-white)!important;background-color:color-mix(in srgb,var(--dca-red,red),var(--dca-black) 5%)!important;border-color:color-mix(in srgb,var(--dca-red,red),var(--dca-black) 5%)!important;text-decoration:none!important}.cms-pagetree-wrapper .cms-btn-caution:hover{color:var(--dca-white)!important;background-color:color-mix(in srgb,var(--dca-red,red),var(--dca-black) 10%)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%)!important;text-decoration:none!important}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-wrapper .cms-btn-caution.cms-btn,.cms-pagetree-wrapper .cms-btn-caution.cms-btn-active,.cms-pagetree-wrapper .cms-btn-caution:active,.cms-pagetree-wrapper .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-btn-caution.cms-btn{color:var(--dca-white)!important;background-color:color-mix(in srgb,var(--dca-red,red),var(--dca-black) 15%)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 15%)!important;box-shadow:none!important}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-wrapper .cms-btn-caution.cms-btn:hover,.cms-pagetree-wrapper .cms-btn-caution.cms-btn-active:hover,.cms-pagetree-wrapper .cms-btn-caution:active:hover,.cms-pagetree-wrapper .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-btn-caution.cms-btn:hover{color:var(--dca-white)!important;background-color:color-mix(in srgb,var(--dca-red,red),var(--dca-black) 10%)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%)!important;text-decoration:none!important}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-wrapper .cms-btn-caution.cms-btn:focus,.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-wrapper .cms-btn-caution.focus.cms-btn,.cms-pagetree-wrapper .cms-btn-caution.cms-btn-active.focus,.cms-pagetree-wrapper .cms-btn-caution.cms-btn-active:focus,.cms-pagetree-wrapper .cms-btn-caution:active.focus,.cms-pagetree-wrapper .cms-btn-caution:active:focus,.cms-pagetree-wrapper .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-btn-caution.cms-btn:focus,.cms-pagetree-wrapper .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-btn-caution.focus.cms-btn{color:var(--dca-white)!important;background-color:color-mix(in srgb,var(--dca-red,red),var(--dca-black) 20%)!important;border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 25%)!important}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-wrapper .cms-btn-caution.cms-btn,.cms-pagetree-wrapper .cms-btn-caution.cms-btn-active,.cms-pagetree-wrapper .cms-btn-caution:active,.cms-pagetree-wrapper .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-btn-caution.cms-btn{background-image:none!important}.cms-pagetree-wrapper .cms-btn-caution.cms-btn-disabled,.cms-pagetree-wrapper .cms-btn-caution.cms-btn-disabled.cms-btn-active,.cms-pagetree-wrapper .cms-btn-caution.cms-btn-disabled.focus,.cms-pagetree-wrapper .cms-btn-caution.cms-btn-disabled:active,.cms-pagetree-wrapper .cms-btn-caution.cms-btn-disabled:focus,.cms-pagetree-wrapper .cms-btn-caution.cms-btn-disabled:hover,.cms-pagetree-wrapper .cms-btn-caution[disabled],.cms-pagetree-wrapper .cms-btn-caution[disabled].cms-btn-active,.cms-pagetree-wrapper .cms-btn-caution[disabled].focus,.cms-pagetree-wrapper .cms-btn-caution[disabled]:active,.cms-pagetree-wrapper .cms-btn-caution[disabled]:focus,.cms-pagetree-wrapper .cms-btn-caution[disabled]:hover{background-color:color-mix(in srgb,var(--dca-red,red) 40%,transparent)!important;border-color:color-mix(in srgb,var(--dca-gray) 40%,transparent)!important;color:color-mix(in srgb,var(--dca-white),var(--dca-white) 50%);cursor:not-allowed;box-shadow:none!important}.cms-pagetree-wrapper .cms-btn-caution.cms-btn-disabled.cms-btn-active:before,.cms-pagetree-wrapper .cms-btn-caution.cms-btn-disabled.focus:before,.cms-pagetree-wrapper .cms-btn-caution.cms-btn-disabled:active:before,.cms-pagetree-wrapper .cms-btn-caution.cms-btn-disabled:before,.cms-pagetree-wrapper .cms-btn-caution.cms-btn-disabled:focus:before,.cms-pagetree-wrapper .cms-btn-caution.cms-btn-disabled:hover:before,.cms-pagetree-wrapper .cms-btn-caution[disabled].cms-btn-active:before,.cms-pagetree-wrapper .cms-btn-caution[disabled].focus:before,.cms-pagetree-wrapper .cms-btn-caution[disabled]:active:before,.cms-pagetree-wrapper .cms-btn-caution[disabled]:before,.cms-pagetree-wrapper .cms-btn-caution[disabled]:focus:before,.cms-pagetree-wrapper .cms-btn-caution[disabled]:hover:before{color:color-mix(in srgb,var(--dca-white) 40%,transparent)}.cms-pagetree-wrapper .cms-btn-disabled img{opacity:.33!important}.cms-admin-sideframe:not(.djangocms-admin-style){-webkit-margin-before:46px;margin-block-start:46px}.cms-btn-toolbar{display:inline-block;line-height:32px;height:32px;font-size:12px;padding-block:0;padding-inline:22px}.cms-hidden,.hidden{display:none!important}.cms-clear{clear:both;overflow:hidden}.cms-clear-mobile{clear:both;overflow:hidden}@media (min-width:520px){.cms-clear-mobile{display:none}}.jstree li{touch-action:none}.cms-pagetree-root#changelist{display:block;align-items:flex-start;justify-content:space-between}.cms-pagetree-root,.cms-pagetree-root.filtered{min-height:0;padding:0!important;box-shadow:0 0 5px 0 rgba(var(--dca-shadow),.2)!important}#content-main .cms-pagetree.cms-pagetree.cms-pagetree a{text-decoration:none}.cms-pagetree{box-shadow:0 0 5px 0 rgba(var(--dca-shadow),.2)}.cms-pagetree .cms-hover-tooltip{z-index:auto}.cms-pagetree .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.cms-pagetree .cms-btn.cms-icon{display:inline-block;box-sizing:border-box;width:35px;height:35px;position:relative}.cms-pagetree .cms-btn.cms-icon:before{position:absolute;inset-inline-start:50%;inset-block-start:50%;-webkit-margin-before:-9px;margin-block-start:-9px;-webkit-margin-start:-9px;margin-inline-start:-9px}.cms-pagetree .cms-btn.cms-btn-no-border{border:none!important}.cms-pagetree-header{position:relative;display:flex;width:100%;box-sizing:border-box;z-index:auto;min-height:36px;padding-block:15px;box-shadow:none;-webkit-border-after:none;border-block-end:none}.cms-pagetree-header:before{content:"";position:absolute;inset-block-end:-6px;inset-inline-start:0;inset-inline-end:0;height:5px;background-color:var(--dca-white)}.cms-pagetree-header+.module{-webkit-padding-before:0!important;padding-block-start:0!important}.djangocms-admin-style .cms-pagetree-header{margin-block:-40px 0;margin-inline:0}.djangocms-admin-style.cms-admin-sideframe .cms-pagetree-header{-webkit-margin-before:-25px;margin-block-start:-25px}.cms-pagetree-header-title{display:table-cell;width:100%;line-height:36px;height:36px}.cms-pagetree-header-title h1{line-height:36px;margin:0!important;padding-top:0}.cms-pagetree-header-title h1 span{font-weight:400}.cms-pagetree-header-row{display:table;width:100%;table-layout:fixed}@media (max-width:520px){.cms-pagetree-header-row{display:block}}.cms-pagetree-header-cell{display:table-cell;white-space:nowrap;vertical-align:middle}@media (max-width:520px){.cms-pagetree-header-cell{display:block}}.cms-pagetree-header-cell-fluid{width:100%}.cms-pagetree-header-cell-search{width:220px!important;position:relative}.cms-pagetree-header-filter-active .cms-pagetree-header-cell-search{position:static}@media (max-width:520px){.cms-pagetree-header-cell-search{width:100%!important}}@media (max-width:520px){.cms-pagetree-header-body{text-align:end;-webkit-padding-before:10px;padding-block-start:10px}}.cms-pagetree-header-filter-active .cms-pagetree-search-container{position:relative}.cms-pagetree-header-search{position:absolute;inset-block-start:0;display:table;width:100%;inset-inline-start:0;inset-inline-end:0;padding:0;box-shadow:none;background:0 0}@media (max-width:520px){.cms-pagetree-header-search{position:relative}}.cms-pagetree-header-search .cms-pagetree-header-search-btn{display:table-cell;vertical-align:middle;position:relative;padding:6px 8px;background-image:none;margin-bottom:0;border-radius:var(--dca-btn-radius);color:var(--dca-black);background-color:var(--dca-secondary);border:1px solid var(--dca-gray);background-clip:padding-box;-webkit-appearance:none}.cms-pagetree-header-search .cms-pagetree-header-search-btn.focus,.cms-pagetree-header-search .cms-pagetree-header-search-btn:focus{color:var(--dca-black);background-color:color-mix(in srgb,var(--dca-secondary),var(--dca-black) 5%);border-color:color-mix(in srgb,var(--dca-secondary),var(--dca-black) 5%);text-decoration:none}.cms-pagetree-header-search .cms-pagetree-header-search-btn:hover{color:var(--dca-black);background-color:color-mix(in srgb,var(--dca-secondary),var(--dca-black) 10%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%);text-decoration:none}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn,.cms-pagetree-header-search .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-header-search-btn.cms-btn,.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-active,.cms-pagetree-header-search .cms-pagetree-header-search-btn:active{color:var(--dca-black);background-color:color-mix(in srgb,var(--dca-secondary),var(--dca-black) 15%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 15%);box-shadow:none}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn:hover,.cms-pagetree-header-search .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-header-search-btn.cms-btn:hover,.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-active:hover,.cms-pagetree-header-search .cms-pagetree-header-search-btn:active:hover{color:var(--dca-black);background-color:color-mix(in srgb,var(--dca-secondary),var(--dca-black) 10%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%);text-decoration:none}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn:focus,.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-header-search .cms-pagetree-header-search-btn.focus.cms-btn,.cms-pagetree-header-search .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-header-search-btn.cms-btn:focus,.cms-pagetree-header-search .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-header-search-btn.focus.cms-btn,.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-active.focus,.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-active:focus,.cms-pagetree-header-search .cms-pagetree-header-search-btn:active.focus,.cms-pagetree-header-search .cms-pagetree-header-search-btn:active:focus{color:var(--dca-black);background-color:color-mix(in srgb,var(--dca-secondary),var(--dca-black) 20%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 25%)}.cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn,.cms-pagetree-header-search .cms-pagetree .cms-pagetree-dropdown-menu-open .cms-pagetree-header-search-btn.cms-btn,.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-active,.cms-pagetree-header-search .cms-pagetree-header-search-btn:active{background-image:none}.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-disabled,.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-disabled.cms-btn-active,.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-disabled.focus,.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-disabled:active,.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-disabled:focus,.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-disabled:hover,.cms-pagetree-header-search .cms-pagetree-header-search-btn[disabled],.cms-pagetree-header-search .cms-pagetree-header-search-btn[disabled].cms-btn-active,.cms-pagetree-header-search .cms-pagetree-header-search-btn[disabled].focus,.cms-pagetree-header-search .cms-pagetree-header-search-btn[disabled]:active,.cms-pagetree-header-search .cms-pagetree-header-search-btn[disabled]:focus,.cms-pagetree-header-search .cms-pagetree-header-search-btn[disabled]:hover{background-color:color-mix(in srgb,var(--dca-secondary) 40%,transparent);border-color:color-mix(in srgb,var(--dca-gray) 40%,transparent);color:color-mix(in srgb,var(--dca-black),var(--dca-white) 50%);cursor:not-allowed;box-shadow:none}.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-disabled.cms-btn-active:before,.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-disabled.focus:before,.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-disabled:active:before,.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-disabled:before,.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-disabled:focus:before,.cms-pagetree-header-search .cms-pagetree-header-search-btn.cms-btn-disabled:hover:before,.cms-pagetree-header-search .cms-pagetree-header-search-btn[disabled].cms-btn-active:before,.cms-pagetree-header-search .cms-pagetree-header-search-btn[disabled].focus:before,.cms-pagetree-header-search .cms-pagetree-header-search-btn[disabled]:active:before,.cms-pagetree-header-search .cms-pagetree-header-search-btn[disabled]:before,.cms-pagetree-header-search .cms-pagetree-header-search-btn[disabled]:focus:before,.cms-pagetree-header-search .cms-pagetree-header-search-btn[disabled]:hover:before{color:color-mix(in srgb,var(--dca-black) 40%,transparent)}.cms-pagetree-header-search .cms-pagetree-header-filter{position:relative;display:table-cell;width:100%;-webkit-padding-end:5px;padding-inline-end:5px;vertical-align:middle}.cms-pagetree-header-search .cms-pagetree-header-filter input{width:100%;box-sizing:border-box;width:100%;display:inline-block;height:36px;padding:6px;line-height:24px;-webkit-padding-end:35px!important;padding-inline-end:35px!important;transition:width .2s;border:1px solid var(--dca-gray)}.cms-pagetree-header-filter-active .cms-pagetree-header-search{inset-inline-start:0;inset-inline-end:0;inset-block-start:0}.djangocms-admin-style .cms-pagetree-header-search{margin-block:5px 10px;margin-inline:0}.cms-pagetree-header-filter-trigger{position:absolute;inset-inline-end:5px;inset-block-start:0;cursor:pointer;padding:10px;transform:rotate(270deg)}.cms-pagetree-header-filter-trigger:active .cms-icon,.cms-pagetree-header-filter-trigger:focus .cms-icon,.cms-pagetree-header-filter-trigger:hover .cms-icon{color:var(--dca-primary)}.cms-pagetree-header-filter-trigger .cms-icon{font-size:11px;color:var(--dca-gray)}.cms-pagetree-header-filter-container{display:none;overflow:auto;position:absolute;inset-inline-start:0;inset-block-start:38px;width:100%;padding-block:5px 15px;padding-inline:20px;max-height:400px;box-shadow:0 0 5px 0 rgba(var(--dca-shadow),.2);box-sizing:border-box;border-radius:3px;background:var(--dca-white);z-index:1000}.cms-pagetree-header-filter-container h3{color:var(--dca-gray);font-size:14px;font-weight:400;text-transform:uppercase;padding-block:10px 0;padding-inline:0}.cms-pagetree-header-filter-container li,.cms-pagetree-header-filter-container ul{list-style-type:none;padding-block:2px;padding-inline:0;margin:0}.cms-pagetree-header-filter-container li a{color:var(--dca-gray-light)}.cms-pagetree-header-filter-container .selected a{color:var(--dca-primary);font-weight:700}.cms-pagetree-header-search-close{position:absolute;inset-inline-end:0;inset-block-start:0;padding:10px}.cms-pagetree-header-search-close:active .cms-icon,.cms-pagetree-header-search-close:focus .cms-icon,.cms-pagetree-header-search-close:hover .cms-icon{color:var(--dca-primary)}.cms-pagetree-header-search-close .cms-icon{font-size:12px;color:var(--dca-gray)}.cms-pagetree-header-search-reset{font-size:90%;padding-block:0;padding-inline:10px}.cms-pagetree-sites-list{display:inline-block;vertical-align:top;-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;-webkit-margin-start:10px;margin-inline-start:10px;-webkit-margin-end:10px;margin-inline-end:10px}.cms-pagetree-sites-list .cms-pagetree-dropdown-trigger{display:inline-block;color:var(--dca-gray)!important;padding:10px;height:16px}.cms-pagetree-sites-list .cms-pagetree-dropdown-menu{inset-inline-end:50%;-webkit-margin-end:-19px!important;margin-inline-end:-19px!important}.cms-pagetree-header-create{display:inline-block;vertical-align:top;height:36px!important;box-sizing:border-box}.djangocms-admin-style .cms-pagetree-breadcrumbs{-webkit-margin-after:-30px!important;margin-block-end:-30px!important;border:none!important}.cms-pagetree-section{position:relative;z-index:auto;min-height:15px;padding-block:15px;padding-inline:20px;box-shadow:none;-webkit-border-after:none;border-block-end:none;background:var(--dca-white)}.cms-pagetree-section h2,.cms-pagetree-section p{padding:0;margin:0;border:none}.cms-pagetree-section h2{float:left;font-weight:700;color:var(--dca-gray-darkest);background:0 0}.cms-pagetree-section h2:dir(rtl){float:right}.cms-pagetree-section-header{display:flex;flex-direction:row;align-items:center;background-color:var(--dca-secondary);border-top-left-radius:var(--dca-border-radius);border-top-right-radius:var(--dca-border-radius)}.cms-pagetree-section-header select{width:120px!important;-webkit-margin-start:15px;margin-inline-start:15px}.cms-pagetree-section-condensed{padding-block:10px;padding-inline:20px}.cms-pagetree-section-nav{position:absolute;inset-inline-end:15px;inset-block-start:50%;-webkit-margin-before:-18px;margin-block-start:-18px}.cms-pagetree-section-nav .cms-pagetree-dropdown-menu{inset-inline-end:40px;inset-block-start:-2px;min-width:205px;max-width:40vw;overflow:hidden}.cms-pagetree-dropdown-separator{padding:0;margin-block:4px!important;margin-inline:1px!important;line-height:1;height:1px;background:var(--dca-gray-lighter)}.cms-pagetree-container{position:relative;z-index:auto;-webkit-border-after:none;border-block-end:none;background-color:var(--dca-secondary);padding:0 15px 20px 20px}.cms-tree-col{float:right;min-width:30px;height:30px}.cms-tree-col:dir(rtl){float:left}.cms-tree-col-padding-sm{-webkit-margin-before:-3px;margin-block-start:-3px;-webkit-margin-start:-4px;margin-inline-start:-4px;margin-inline-start:-4px;height:36px}.cms-tree-item{display:table;width:100%;text-align:center;height:30px}.cms-tree-item+.cms-tree-item{-webkit-padding-start:4px;padding-inline-start:4px}.cms-tree-item-disabled{opacity:.3;pointer-events:none}.cms-tree-item-wrapper{display:table-row;min-width:30px}.cms-tree-item-wrapper .cms-tree-item{display:table-cell;vertical-align:middle;text-align:center;min-width:30px}.cms-tree-item-wrapper .cms-tree-item-inner{display:block}.cms-tree-item-inner{display:table-cell;text-align:center;vertical-align:middle}.cms-tree-reload{float:right}.cms-tree-reload:dir(rtl){float:left}.cms-tree-item-lang .cms-pagetree-dropdown-menu{inset-inline-end:32px;inset-block-start:-5px;min-width:180px}.cms-tree-item-button .cms-pagetree-dropdown-menu{inset-inline-end:40px;inset-block-start:-2px;min-width:205px;max-width:40vw;overflow:hidden}.cms-tree-item-button .cms-hover-tooltip:after,.cms-tree-item-button .cms-hover-tooltip:before{inset-block-end:22px}.cms-pagetree-alt-mode .cms-tree-item-button .cms-icon-settings:not(.cms-btn-disabled)[data-url]:before{content:"\E001"}.cms-tree-item-icons{position:relative}.cms-tree-item-icons .cms-icon{display:block}.cms-tree-item-icons span:before{color:var(--dca-gray-light)}.cms-tree-item-icons-dark span:before{color:var(--dca-gray-darker)}.cms-tree-item-preview{position:relative}.cms-tree-item-preview a{font-size:18px;line-height:18px;height:18px;display:block}.cms-tree-item-preview a:before{display:block;color:var(--dca-gray-darker)}.cms-tree-item-preview a:hover:before{color:var(--dca-black)}.cms-tree-item-preview-active a:before{color:var(--dca-black)}.cms-tree-item-lang{position:relative}.cms-tree-item-lang .cms-tree-item-inner>.cms-tree-lang-container,.cms-tree-item-lang .cms-tree-item-inner>a{display:block;height:16px}.cms-tree-item-menu{position:relative}.cms-tree-item-menu .cms-tree-item-inner>a{display:block;height:18px}.cms-tree-item-menu .cms-icon{display:block}.cms-tree-item-menu .cms-icon:before{display:block;font-size:18px;color:var(--dca-gray-darker)}.cms-tree-item-menu .cms-icon-check-square:before{color:var(--dca-green,#693)}.cms-tree-item-info{position:relative}.cms-tree-item-info .cms-tree-item-inner>a{display:block;height:16px}.cms-tree-item-info .cms-icon{display:block}.cms-tree-item-info .cms-icon:before{display:block;font-size:16px}.cms-tree-item-info p{color:var(--dca-gray-darkest);padding:0;margin:0}.cms-tree-item-info strong{color:var(--dca-gray-light);font-weight:400}.cms-tree-item-info a{display:inline-block;line-height:1}.cms-tree-search{float:left;-webkit-margin-end:5px;margin-inline-end:5px}.cms-tree-search:dir(rtl){float:right}.cms-tree-search label{display:none!important}.cms-tree-search select{position:relative;inset-block-start:2px;width:175px!important}.cms-tree-search #toolbar form#changelist-search input[type=submit]{-webkit-margin-start:0!important;margin-inline-start:0!important}.cms-tree-search #toolbar form#changelist-search #searchbar{width:175px!important}.cms-tree-filters{float:right}.cms-tree-filters:dir(rtl){float:left}.cms-tree-filters .js-cms-tree-filter-trigger{position:absolute;inset-block-start:0;inset-inline-end:0;-webkit-padding-end:20px;padding-inline-end:20px;line-height:30px;width:175px;-webkit-border-after:1px solid var(--dca-gray-lighter);border-block-end:1px solid var(--dca-gray-lighter)}.cms-tree-filters h2{display:none}.cms-pagetree-empty{padding-block:15px;padding-inline:20px;-webkit-border-before:none;border-block-start:none}.cms-pagetree-empty .addlink{-webkit-padding-start:16px;padding-inline-start:16px}.cms-pagetree-empty{background:var(--dca-secondary);border-bottom-left-radius:var(--dca-border-radius);border-bottom-right-radius:var(--dca-border-radius)}.jstree-django-cms .jstree-children,.jstree-django-cms .jstree-container-ul,.jstree-django-cms .jstree-leaf,.jstree-django-cms .jstree-node{list-style-type:none;padding:0;margin:0;transform:translateZ(0)}.jstree-django-cms .jstree-is-dragging{opacity:.1!important}.jstree-django-cms .jstree-is-dragging+.jstree-grid-cell{height:45px;-webkit-border-before:1px solid var(--dca-gray-lighter);border-block-start:1px solid var(--dca-gray-lighter);-webkit-margin-before:-1px;margin-block-start:-1px}.jstree-django-cms .jstree-is-dragging-copy{opacity:.9!important}.jstree-django-cms .jstree-grid-header,.jstree-django-cms .jstree-grid-separator{padding:0;margin:0;margin-left:0!important;border:none;background:0 0}.jstree-django-cms .jstree-grid-header{z-index:1;position:relative}.jstree-django-cms.jstree-grid-cell{padding:0}.jstree-django-cms .jstree-grid-cell,.jstree-django-cms .jstree-grid-column{box-sizing:border-box;overflow:visible}.jstree-django-cms .jstree-grid-column{vertical-align:top}.jstree-django-cms{-webkit-tap-highlight-color:transparent}.jstree-grid-wrapper{box-sizing:border-box;overflow:visible!important;width:100%!important}.jstree-django-cms .jstree-grid-header{font-size:12px;color:var(--dca-gray);text-align:center;padding-block:3px;padding-inline:6px;-webkit-border-after:1px solid var(--dca-gray-lighter);border-block-end:1px solid var(--dca-gray-lighter);background:var(--dca-secondary)}.jstree-django-cms .jstree-grid-header-fixed{position:fixed;z-index:2}.jstree-django-cms .jstree-grid-column-0 .jstree-grid-header{text-align:start!important}.jstree-django-cms .jstree-children{-webkit-margin-start:20px;margin-inline-start:20px}.jstree-django-cms .jstree-container-ul{-webkit-margin-start:-1px;margin-inline-start:-1px}.jstree-django-cms .jstree-ocl{float:left;position:relative;inset-inline-start:20px;font-size:12px;color:var(--dca-gray-light);-webkit-padding-before:19px;padding-block-start:19px;-webkit-padding-end:10px;padding-inline-end:10px;-webkit-padding-after:10px;padding-block-end:10px;-webkit-padding-start:0;padding-inline-start:0}.jstree-django-cms .jstree-ocl:dir(rtl){float:right}.jstree-django-cms .jstree-ocl:before{display:inline-block}.jstree-django-cms .jstree-closed>.jstree-ocl,.jstree-django-cms .jstree-open>.jstree-ocl{cursor:pointer}.jstree-django-cms .jstree-open>.jstree-ocl:before{content:"\E005"}.jstree-django-cms .jstree-open>.jstree-ocl:before{transform:rotate(90deg)}.jstree-django-cms .jstree-closed>.jstree-ocl:before{content:"\E005"}.jstree-django-cms .jstree-loading>.jstree-ocl:before{content:"\E020"}.jstree-django-cms .jstree-loading>.jstree-ocl:before{animation:2s linear infinite cms-spin}.jstree-django-cms .jstree-anchor{box-sizing:border-box;display:block;cursor:move;outline:0;color:var(--dca-gray-darkest);height:45px;padding-block:10px 10px;padding-inline:25px 25px;-webkit-margin-before:-1px;margin-block-start:-1px;-webkit-margin-after:0;margin-block-end:0;border-block:1px solid var(--dca-gray-lighter);border-inline:1px solid var(--dca-gray-lighter);-webkit-border-end:none;border-inline-end:none;background-color:var(--dca-white);background-image:url(../../img/pagetree/tree-li-drag.gif);background-repeat:no-repeat;background-position:2px center;image-rendering:pixelated;white-space:nowrap;text-overflow:ellipsis;min-width:100%;max-width:1px}.jstree-django-cms .jstree-anchor:hover{color:var(--dca-gray)!important}.jstree-django-cms .jstree-anchor:dir(rtl){background-position:calc(100% - 2px) center}.jstree-django-cms .jstree-anchor em{color:var(--dca-gray-light)}.jstree-django-cms .jstree-node[data-move-permission=false]>.jstree-anchor{cursor:default;background-image:none}.jstree-django-cms .jstree-closed>.jstree-anchor,.jstree-django-cms .jstree-loading>.jstree-anchor,.jstree-django-cms .jstree-open>.jstree-anchor{padding-inline:45px 25px;padding-block:12px 12px}.jstree-django-cms .cms-tree-node-filtered .jstree-anchor{cursor:default}.jstree-django-cms .jstree-grid-cell{height:44px;-webkit-border-after:1px solid var(--dca-gray-lighter);border-block-end:1px solid var(--dca-gray-lighter);background:var(--dca-white);-webkit-margin-after:0;margin-block-end:0}.jstree-django-cms .jstree-grid-cell>span{display:block}.jstree-django-cms .jstree-grid-cell.jstree-django-cms{height:auto;border:none;background:0 0}.jstree-django-cms .jstree-grid-cell-regular{text-align:center;padding-block:7px 7px;padding-inline:8px 8px;-webkit-border-start:1px solid var(--dca-gray-lighter);border-inline-start:1px solid var(--dca-gray-lighter)}.jstree-django-cms .jstree-grid-cell-regular.jstree-grid-cell-last{-webkit-border-end:1px solid var(--dca-gray-lighter);border-inline-end:1px solid var(--dca-gray-lighter)}.jstree-django-cms .jstree-grid-cell-regular-options{-webkit-border-start:none;border-inline-start:none;text-align:end}.jstree-django-cms .jstree-clicked,.jstree-django-cms .jstree-hovered{background-color:var(--dca-gray-lightest)!important}.jstree-django-cms .jstree-grid-column-1 .jstree-grid-header{text-align:end}.jstree-django-cms .jstree-grid-column-1 .jstree-grid-header a{font-size:12px;inset-block-start:0}.jstree-django-cms .jstree-grid-column-1 .jstree-grid-header span{line-height:1}.jstree-django-cms .jstree-grid-column-1 .jstree-grid-header .cms-icon{font-size:12px;-webkit-padding-end:5px;padding-inline-end:5px;-webkit-margin-start:5px;margin-inline-start:5px}.jstree.jstree-loading .jstree-container-ul{margin:0}.jstree.jstree-loading .jstree-anchor{-webkit-padding-before:33px;padding-block-start:33px;-webkit-padding-start:15px;padding-inline-start:15px;border:none;background:0 0}.jstree.jstree-loading .jstree-loading>.jstree-ocl{display:none}.cms-tree-node-success>.jstree-anchor .jstree-themeicon{content:"";position:relative;inset-block-start:4px;color:var(--dca-green,#693)}.cms-tree-node-success>.jstree-anchor .jstree-themeicon:before{content:"\E00E"}.jstree-django-cms .cms-tree-node-shared-true>.jstree-anchor{border-style:dashed;-webkit-border-end:none;border-inline-end:none;color:#999;background-color:#f2f2f2!important}.jstree-django-cms .cms-tree-node-shared-true>.jstree-anchor:hover{color:#999!important}.jstree-django-cms .cms-tree-node-shared-true>.jstree-anchor.jstree-clicked,.jstree-django-cms .cms-tree-node-shared-true>.jstree-anchor.jstree-hovered{background-color:#f2f2f2!important}.jstree-django-cms .jstree-grid-cell.jstree-clicked,.jstree-django-cms .jstree-grid-cell.jstree-hovered{background-color:#f2f2f2}.jstree-django-cms .cms-tree-node-shared-false>.jstree-anchor{border-style:solid;-webkit-border-end:none;border-inline-end:none;background-color:var(--dca-white)!important;-webkit-border-after:1px solid var(--dca-gray-lighter);border-block-end:1px solid var(--dca-gray-lighter)}.jstree-django-cms .cms-tree-node-shared-false>.jstree-anchor.jstree-clicked,.jstree-django-cms .cms-tree-node-shared-false>.jstree-anchor.jstree-hovered{background-color:var(--dca-gray-lightest)!important}.jstree-django-cms .cms-tree-node-shared-false+.cms-tree-node-shared-true>.jstree-anchor{border-block-start-style:solid}.jstree-django-cms .cms-tree-node-shared-false+.cms-tree-node-shared-true.jstree-clicked,.jstree-django-cms .cms-tree-node-shared-false+.cms-tree-node-shared-true.jstree-hovered{background-color:#f2f2f2}.jstree-django-cms .cms-page-tree-cell-shared--true{border-style:dashed;background-color:#f2f2f2}.jstree-django-cms .cms-page-tree-cell-shared--true.jstree-grid-cell-regular-options{-webkit-border-start:none;border-inline-start:none}.jstree-django-cms .cms-page-tree-cell-shared--true .cms-btn-no-border{background-color:transparent!important}.jstree-django-cms .cms-page-tree-cell-shared--true .cms-btn-no-border:hover{background-color:#fff!important;border-block:1px solid #ddd!important;border-inline:1px solid #ddd!important}.jstree-django-cms .cms-page-tree-cell-shared--true.jstree-clicked,.jstree-django-cms .cms-page-tree-cell-shared--true.jstree-hovered{background-color:#f2f2f2!important}.jstree-django-cms .cms-page-tree-cell-shared--false{background-color:var(--dca-white)}.jstree-django-cms .cms-page-tree-cell-shared--false.jstree-clicked,.jstree-django-cms .cms-page-tree-cell-shared--false.jstree-hovered{background-color:var(--dca-gray-lightest)!important}.jstree-django-cms .cms-page-tree-cell-shared--true+.cms-page-tree-cell-shared--false{-webkit-border-before:1px solid var(--dca-gray-lighter);border-block-start:1px solid var(--dca-gray-lighter);-webkit-margin-before:-1px;margin-block-start:-1px;-webkit-padding-before:8px;padding-block-start:8px;height:47px}#jstree-dnd{box-sizing:border-box;display:block;min-width:300px;height:44px;padding-block:10px 10px!important;padding-inline:25px 25px!important;-webkit-margin-start:-5px;margin-inline-start:-5px;background-color:var(--dca-primary)!important;color:var(--dca-white)}#jstree-dnd .jstree-copy{color:var(--dca-white);padding-block:0 2px;padding-inline:5px;-webkit-margin-start:5px;margin-inline-start:5px;border-radius:3px;background:var(--dca-gray-light)}#jstree-dnd .jstree-er,#jstree-dnd .jstree-ok{position:absolute;inset-block-start:0;inset-inline-start:-5px;inset-block-end:0;inset-inline-end:0;background-color:rgba(255,255,255,.6)}#jstree-dnd .jstree-ok{display:none}.is-stacked #jstree-dnd{box-shadow:1px 1px 1px rgba(var(--dca-black),.2),4px 4px 0 0 var(--dca-primary)}.is-stacked .jstree-er{box-shadow:4px 4px 0 0 rgba(255,255,255,.6)}#jstree-marker{position:absolute;z-index:102;-webkit-margin-start:-6px;margin-inline-start:-6px;-webkit-margin-before:-6px;margin-block-start:-6px;-webkit-border-end:0;border-inline-end:0;-webkit-border-before:6px solid transparent;border-block-start:6px solid transparent;-webkit-border-after:6px solid transparent;border-block-end:6px solid transparent;-webkit-border-start:6px solid var(--dca-primary);border-inline-start:6px solid var(--dca-primary);height:0}#jstree-marker:after{content:"";display:block;position:absolute;height:3px;inset-block-start:-1px;inset-inline-start:-6px;inset-inline-end:0;background-color:var(--dca-primary)}#jstree-marker.jstree-marker-child{border:2px solid var(--dca-primary);height:46px;margin-block:-24px 0;margin-inline:0;background-color:rgba(var(--dca-primary),.1);box-sizing:border-box}#jstree-marker.jstree-marker-child:after{display:none}.djangocms-admin-style.cms-pagetree-wrapper.cms-admin-sideframe .messagelist+#content{-webkit-margin-before:117px!important;margin-block-start:117px!important}.djangocms-admin-style.cms-pagetree-wrapper.cms-admin-sideframe #container .breadcrumbs{inset-inline-start:20px}.djangocms-admin-style.cms-pagetree-wrapper.cms-admin-sideframe #container .breadcrumbs+#content,.djangocms-admin-style.cms-pagetree-wrapper.cms-admin-sideframe #container .breadcrumbs+.messagelist+#content{-webkit-margin-start:0!important;margin-inline-start:0!important;-webkit-margin-end:0!important;margin-inline-end:0!important}.djangocms-admin-style.cms-pagetree-wrapper.cms-admin-sideframe #jstree-marker{inset-inline-end:0}.cms-pagetree-header-lang,.cms-pagetree-header-lang:active,.cms-pagetree-header-lang:focus,.cms-pagetree-header-lang:hover,.cms-pagetree-header-lang:link{color:var(--dca-gray-darkest)!important}.cms-pagetree-header-lang.active{font-weight:700}.cms-pagetree-dropdown{position:relative}.cms-pagetree-dropdown-menu{display:none;position:absolute;inset-block-start:30px;inset-inline-end:-1px;z-index:1000;min-width:180px;border:1px solid var(--dca-gray-lightest);border-radius:5px;background:var(--dca-white);box-shadow:0 0 10px color-mix(in srgb,var(--dca-black) 25%,transparent);transform:translateZ(0)}.cms-pagetree-dropdown-menu .cms-pagetree-dropdown-item,.cms-pagetree-dropdown-menu a,.cms-pagetree-dropdown-menu a:link,.cms-pagetree-dropdown-menu a:link:visited,.cms-pagetree-dropdown-menu a:visited{display:block;color:var(--dca-gray);line-height:1.5;text-align:start;padding-block:10px;padding-inline:15px}.cms-pagetree-dropdown-menu a:active,.cms-pagetree-dropdown-menu a:focus,.cms-pagetree-dropdown-menu a:hover{color:var(--dca-white)!important;background:var(--dca-primary)}.cms-pagetree-dropdown-menu li:first-child>a{border-start-start-radius:5px;border-start-end-radius:5px}.cms-pagetree-dropdown-menu li:last-child>a{border-end-start-radius:5px;border-end-end-radius:5px}.cms-pagetree-dropdown-menu .cms-pagetree-dropdown-item-disabled{opacity:.33;color:var(--dca-gray-light);cursor:default}.cms-pagetree-dropdown-menu .cms-pagetree-dropdown-item-disabled:focus,.cms-pagetree-dropdown-menu .cms-pagetree-dropdown-item-disabled:hover{background:0 0!important;color:var(--dca-gray-darker)!important}.cms-pagetree-dropdown-menu.cms-pagetree-dropdown-menu-condensed .cms-pagetree-dropdown-item,.cms-pagetree-dropdown-menu.cms-pagetree-dropdown-menu-condensed a{padding-block:5px;padding-inline:15px}.cms-pagetree-dropdown-menu .active{font-weight:700}.cms-pagetree-dropdown-menu .label{display:block;color:var(--dca-gray);font-size:90%;font-weight:400;line-height:1.5;text-align:start;text-transform:uppercase;padding-block:7px 5px;padding-inline:15px;-webkit-border-after:1px solid var(--dca-gray-lighter);border-block-end:1px solid var(--dca-gray-lighter);-webkit-margin-after:4px;margin-block-end:4px}.cms-pagetree-dropdown-menu li{margin:0;padding:0;list-style-type:none}.cms-pagetree-dropdown-menu p{display:block;overflow:hidden;font-size:12px!important;text-align:start;text-overflow:ellipsis;margin:0;padding-block:5px 3px!important;padding-inline:15px!important}.cms-pagetree-dropdown-menu p strong{font-size:12px!important}.cms-pagetree-dropdown-menu p+p{-webkit-margin-before:-2px;margin-block-start:-2px;-webkit-padding-before:0!important;padding-block-start:0!important}.cms-pagetree-dropdown-menu p:last-child{-webkit-padding-after:7px!important;padding-block-end:7px!important}.cms-pagetree-dropdown-menu .cms-icon{-webkit-margin-end:10px;margin-inline-end:10px}.cms-pagetree-dropdown-menu span{vertical-align:middle}.cms-pagetree-dropdown-menu:before{content:"";position:absolute;inset-inline-start:100%;z-index:-1;width:10px;height:10px;-webkit-margin-start:-5px;margin-inline-start:-5px;background-color:var(--dca-white);box-shadow:0 0 10px color-mix(in srgb,var(--dca-black) 25%,transparent);transform:rotate(45deg) translateZ(0);border:1px solid var(--dca-gray-lightest)}.cms-pagetree-dropdown-menu .cms-pagetree-dropdown-menu-inner{margin:0;padding:0!important;border-radius:5px;background-color:var(--dca-white)}.cms-pagetree-dropdown-menu-open .cms-pagetree-dropdown-menu{display:block}.cms-pagetree-dropdown-menu-arrow-block-start-inline-end:before{-webkit-margin-before:-5px;margin-block-start:-5px;-webkit-margin-start:-24px;margin-inline-start:-24px}.cms-pagetree-dropdown-menu-arrow-inline-end-block-start:before{inset-block-start:16px}.cms-pagetree-dropdown-menu-arrow-inline-end-block-end:before{inset-block-end:18px}.cms-pagetree-dropdown-loader{position:absolute;inset-block-start:0;inset-inline-start:0;inset-inline-end:0;inset-block-end:0;border-radius:5px}.cms-pagetree-node-state{box-sizing:border-box;display:inline-block;width:16px;height:16px;border-radius:100%;border:1px solid var(--dca-white);background:var(--dca-white);vertical-align:top}.cms-btn .cms-pagetree-node-state{vertical-align:middle;margin-right:5px;margin-top:-4px}.cms-btn:hover .cms-pagetree-node-state-dirty{box-shadow:0 0 0 1px #fff}.cms-pagetree-node-state-empty{border-color:var(--dca-gray-light);background-color:var(--dca-white)}.cms-pagetree-node-state-unpublished,.cms-pagetree-node-state-unpublished-parent{border-color:var(--dca-gray-light);background-color:var(--dca-gray-light)}.cms-pagetree-node-state-archived{border-color:var(--dca-gray-light);background-color:var(--dca-gray-lighter)}.cms-pagetree-node-state-public,.cms-pagetree-node-state-published{border-color:var(--dca-green,#693);background-color:var(--dca-green,#693)}.cms-pagetree-node-state-draft{border-color:light-dark(#0bf,color-mix(in srgb,#0bf,#000 10%));background-color:var(--dca-white);border-width:2px}.cms-pagetree-node-state-dirty{animation:2.5s ease-out infinite pulsate;border-color:light-dark(#0bf,color-mix(in srgb,#0bf,#000 10%));background-color:light-dark(#0bf,color-mix(in srgb,#0bf,#000 10%))}.cms-pagetree-node-state-deletion{border-color:var(--dca-red,red);background-color:var(--dca-red,red)}@keyframes pulsate{0%{opacity:.5}50%{opacity:1}100%{opacity:.5}}.cms-pagetree-legend{position:relative;text-align:end;background-color:var(--dca-secondary);border-bottom-left-radius:var(--dca-border-radius);border-bottom-right-radius:var(--dca-border-radius);padding-top:0}.cms-pagetree-legend .cms-icon-info{color:var(--dca-primary);vertical-align:middle;-webkit-margin-end:5px;margin-inline-end:5px}.cms-pagetree-legend .cms-pagetree-dropdown{display:inline-block}.cms-pagetree-legend .cms-pagetree-dropdown-menu{inset-block-start:auto;inset-inline-end:100%;inset-block-end:0;inset-inline-start:auto;-webkit-margin-end:10px;margin-inline-end:10px;-webkit-margin-after:-90px;margin-block-end:-90px}.cms-pagetree-legend .cms-pagetree-dropdown-menu:before{inset-block-end:96px}.cms-pagetree-legend .cms-pagetree-dropdown-item .cms-pagetree-node-state{-webkit-margin-end:10px;margin-inline-end:10px}.cms-pagetree-legend .cms-pagetree-dropdown-item .cms-icon{-webkit-margin-end:8px;margin-inline-end:8px}.cms-pagetree-legend .cms-pagetree-dropdown-item .cms-icon-apphook,.cms-pagetree-legend .cms-pagetree-dropdown-item .cms-icon-home,.cms-pagetree-legend .cms-pagetree-dropdown-item .cms-icon-sitemap{color:var(--dca-gray-light)}.cms-pagetree-legend .cms-icon{text-align:center;width:20px;-webkit-margin-start:-2px;margin-inline-start:-2px}.cms-pagetree-legend .cms-icon-check-square{color:var(--dca-green,#693);font-size:14px}.cms-pagetree-legend .cms-icon-minus-square{font-size:14px}.cms-pagetree-legend-title-wrap{cursor:pointer}.cms-pagetree-legend-title{color:var(--dca-gray-light);vertical-align:middle;text-transform:uppercase}.cms-tooltip-touch:before,.cms-tooltip:before{content:"\E016"}.cms-tooltip,.cms-tooltip-touch{visibility:hidden;position:absolute;top:0;left:0;font-size:12px;line-height:22px;font-weight:700;color:var(--dca-gray-lighter);white-space:nowrap;padding:0 7px 0 22px;margin:0;border-radius:3px;background:var(--dca-gray-darker)}.cms-tooltip-touch:before,.cms-tooltip:before{font-size:14px;top:50%;left:4px;margin-top:-7px;position:absolute}.cms-tooltip span,.cms-tooltip-touch span{position:absolute;top:100%;right:0;margin-top:-4px;float:right;color:var(--dca-white);font-weight:400;padding:0 7px;border-radius:3px 0 3px 3px;background:var(--dca-gray-darker)} \ No newline at end of file diff --git a/cms/static/cms/css/5.2.0dev1/cms.welcome.css b/cms/static/cms/css/5.2.0dev1/cms.welcome.css new file mode 100644 index 00000000..2c5b80f2 --- /dev/null +++ b/cms/static/cms/css/5.2.0dev1/cms.welcome.css @@ -0,0 +1,3 @@ +/*! + * @copyright: https://github.com/divio/django-cms + */:root{color-scheme:dark light;--cms-dark-mode:0;--dca-dark:#2d4c4d;--dca-light:#defcb9;--dca-white:light-dark(#FFF, #000);--dca-black:light-dark(#2a2c2e, rgb(from white calc(r - 45) calc(g - 44) calc(b - 46)));--dca-primary:light-dark(var(--dca-dark), rgb(from var(--dca-light) calc(r - 45) calc(g - 44) calc(b - 46)));--dca-secondary:light-dark(var(--dca-light), var(--dca-dark));--dca-red:#d44848;--dca-action-bg:var(--dca-secondary);--dca-action-text:var(--dca-black);--dca-gray:light-dark(#7c7c7c, #a7a7a7);--dca-gray-lightest:light-dark(#f7f7f7, #303030);--dca-gray-lighter:light-dark(#ddd, #666);--dca-gray-light:light-dark(#999, #888);--dca-gray-darker:light-dark(#454545, #ddd);--dca-gray-darkest:light-dark(#333, #eee);--dca-border-radius:20px;--dca-btn-radius:40px;--dca-default-spacing:2px}@media (prefers-color-scheme:dark){:root{--cms-dark-mode:1}}:root[data-cms-theme="3"],:root[data-cms-theme="4"]{--dca-dark:#00bbff;--dca-light:color-mix(in srgb, var(--dca-dark), var(--dca-white) 55%);--dca-white:light-dark(#FFF, #000);--dca-black:light-dark(#000, #FFF);--dca-primary:light-dark(var(--dca-dark), color-mix(in srgb, var(--dca-light), black 10%));--dca-secondary:var(--dca-gray-lightest);--dca-red:#d44848;--dca-action-bg:var(--dca-primary);--dca-action-text:var(--dca-white);--dca-gray:light-dark(#7c7c7c, #aaa);--dca-gray-lightest:light-dark(#f7f7f7, #303030);--dca-gray-lighter:light-dark(#ddd, #666);--dca-gray-light:light-dark(#999, #888);--dca-gray-darker:light-dark(#454545, #ddd);--dca-gray-darkest:light-dark(#333, #eee);--dca-border-radius:5px;--dca-btn-radius:3px;--dca-default-spacing:0px}:root[data-theme=auto]{color-scheme:dark light}:root[data-theme=light]{color-scheme:light;--cms-dark-mode:0}:root[data-theme=dark]{color-scheme:dark;--cms-dark-mode:1}@font-face{font-family:django-cms-iconfont;src:url(../../fonts/5.2.0dev1/django-cms-iconfont.eot);src:url(../../fonts/5.2.0dev1/django-cms-iconfont.eot#iefix) format("eot"),url(../../fonts/5.2.0dev1/django-cms-iconfont.woff2) format("woff2"),url(../../fonts/5.2.0dev1/django-cms-iconfont.woff) format("woff"),url(../../fonts/5.2.0dev1/django-cms-iconfont.ttf) format("truetype"),url(../../fonts/5.2.0dev1/django-cms-iconfont.svg#django-cms-iconfont) format("svg");font-weight:400;font-style:normal}.cms-icon{display:inline-block;font:18px/1 django-cms-iconfont;text-rendering:auto;transform:translate(0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cms-icon-none{width:1em}.cms-icon-advanced-settings:before{content:"\E001"}.cms-icon-alias:before{content:"\E002"}.cms-icon-apphook:before{content:"\E003"}.cms-icon-archive:before{content:"\E004"}.cms-icon-arrow-right:before{content:"\E005"}.cms-icon-arrow-wide:before{content:"\E006"}.cms-icon-arrow:before{content:"\E007"}.cms-icon-bin:before{content:"\E008"}.cms-icon-broadcast-off:before{content:"\E009"}.cms-icon-broadcast-on:before{content:"\E00A"}.cms-icon-check-circle:before{content:"\E00B"}.cms-icon-check-o:before{content:"\E00C"}.cms-icon-check-square:before{content:"\E00D"}.cms-icon-check:before{content:"\E00E"}.cms-icon-close:before{content:"\E00F"}.cms-icon-cogs:before{content:"\E010"}.cms-icon-comment:before{content:"\E011"}.cms-icon-compare:before{content:"\E012"}.cms-icon-copy:before{content:"\E013"}.cms-icon-cut:before{content:"\E014"}.cms-icon-edit-new:before{content:"\E015"}.cms-icon-edit:before{content:"\E016"}.cms-icon-external-placeholder:before{content:"\E017"}.cms-icon-eye:before{content:"\E018"}.cms-icon-forbidden:before{content:"\E019"}.cms-icon-handler:before{content:"\E01A"}.cms-icon-highlight:before{content:"\E01B"}.cms-icon-home:before{content:"\E01C"}.cms-icon-info:before{content:"\E01D"}.cms-icon-layers:before{content:"\E01E"}.cms-icon-list-ol:before{content:"\E01F"}.cms-icon-loader:before{content:"\E020"}.cms-icon-lock:before{content:"\E021"}.cms-icon-logo:before{content:"\E022"}.cms-icon-manage-versions:before{content:"\E023"}.cms-icon-menu:before{content:"\E024"}.cms-icon-minimize:before{content:"\E025"}.cms-icon-minus-circle:before{content:"\E026"}.cms-icon-minus-square-o:before{content:"\E027"}.cms-icon-minus-square:before{content:"\E028"}.cms-icon-minus:before{content:"\E029"}.cms-icon-moderate:before{content:"\E02A"}.cms-icon-paste:before{content:"\E02B"}.cms-icon-pencil:before{content:"\E02C"}.cms-icon-pin:before{content:"\E02D"}.cms-icon-plugins:before{content:"\E02E"}.cms-icon-plus-circle:before{content:"\E02F"}.cms-icon-plus-square-o:before{content:"\E030"}.cms-icon-plus:before{content:"\E031"}.cms-icon-publish:before{content:"\E032"}.cms-icon-puzzle:before{content:"\E033"}.cms-icon-redirect:before{content:"\E034"}.cms-icon-redo:before{content:"\E035"}.cms-icon-rename:before{content:"\E036"}.cms-icon-scissors:before{content:"\E037"}.cms-icon-search:before{content:"\E038"}.cms-icon-settings:before{content:"\E039"}.cms-icon-sitemap:before{content:"\E03A"}.cms-icon-squares:before{content:"\E03B"}.cms-icon-theme-auto:before{content:"\E03C"}.cms-icon-theme-dark:before{content:"\E03D"}.cms-icon-theme-light:before{content:"\E03E"}.cms-icon-undo:before{content:"\E03F"}.cms-icon-unlock:before{content:"\E040"}.cms-icon-unpublish:before{content:"\E041"}.cms-icon-view:before{content:"\E042"}.cms-icon-window:before{content:"\E043"}.cms-welcome-bg{background:var(--dca-gray-lightest)}.cms-welcome{color:var(--dca-gray-darker);width:60%;min-width:320px;margin:0 auto}.cms-welcome a{color:var(--dca-primary)}.cms-welcome a:active,.cms-welcome a:focus,.cms-welcome a:hover{text-decoration:underline}.cms-welcome .cms-hidden{display:none}.cms-welcome .cms-welcome-header{text-align:center}.cms-welcome .cms-welcome-header h2,.cms-welcome .cms-welcome-header p{text-align:center}.cms-welcome .cms-welcome-header h2{padding-bottom:30px}.cms-welcome .cms-welcome-header{padding-bottom:10px}.cms-welcome h1{color:var(--dca-gray-light);font-size:22px;font-weight:200;text-align:center;padding:40px 0 15px;border-bottom:1px solid var(--dca-gray-lighter)}.cms-welcome h1 .cms-icon{color:var(--dca-green,#693)}.cms-welcome h2{font-size:16px;font-weight:700;padding-bottom:10px}.cms-welcome p.lead{font-size:16px;font-weight:200;margin-bottom:30px}.cms-welcome a.cms-btn-action{background-image:none;margin-bottom:0;border-radius:var(--dca-btn-radius);color:var(--dca-action-text);background-color:var(--dca-action-bg);border:1px solid var(--dca-gray);background-clip:padding-box;-webkit-appearance:none}.cms-welcome a.cms-btn-action.focus,.cms-welcome a.cms-btn-action:focus{color:var(--dca-action-text);background-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 5%);border-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 5%);text-decoration:none}.cms-welcome a.cms-btn-action:hover{color:var(--dca-action-text);background-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 10%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%);text-decoration:none}.cms-welcome a.cms-btn-action.cms-btn-active,.cms-welcome a.cms-btn-action:active{color:var(--dca-action-text);background-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 15%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 15%);box-shadow:none}.cms-welcome a.cms-btn-action.cms-btn-active:hover,.cms-welcome a.cms-btn-action:active:hover{color:var(--dca-action-text);background-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 10%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%);text-decoration:none}.cms-welcome a.cms-btn-action.cms-btn-active.focus,.cms-welcome a.cms-btn-action.cms-btn-active:focus,.cms-welcome a.cms-btn-action:active.focus,.cms-welcome a.cms-btn-action:active:focus{color:var(--dca-action-text);background-color:color-mix(in srgb,var(--dca-action-bg),var(--dca-black) 20%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 25%)}.cms-welcome a.cms-btn-action.cms-btn-active,.cms-welcome a.cms-btn-action:active{background-image:none}.cms-welcome a.cms-btn-action.cms-btn-disabled,.cms-welcome a.cms-btn-action.cms-btn-disabled.cms-btn-active,.cms-welcome a.cms-btn-action.cms-btn-disabled.focus,.cms-welcome a.cms-btn-action.cms-btn-disabled:active,.cms-welcome a.cms-btn-action.cms-btn-disabled:focus,.cms-welcome a.cms-btn-action.cms-btn-disabled:hover,.cms-welcome a.cms-btn-action[disabled],.cms-welcome a.cms-btn-action[disabled].cms-btn-active,.cms-welcome a.cms-btn-action[disabled].focus,.cms-welcome a.cms-btn-action[disabled]:active,.cms-welcome a.cms-btn-action[disabled]:focus,.cms-welcome a.cms-btn-action[disabled]:hover{background-color:color-mix(in srgb,var(--dca-action-bg) 40%,transparent);border-color:color-mix(in srgb,var(--dca-gray) 40%,transparent);color:color-mix(in srgb,var(--dca-action-text),var(--dca-white) 50%);cursor:not-allowed;box-shadow:none}.cms-welcome a.cms-btn-action.cms-btn-disabled.cms-btn-active:before,.cms-welcome a.cms-btn-action.cms-btn-disabled.focus:before,.cms-welcome a.cms-btn-action.cms-btn-disabled:active:before,.cms-welcome a.cms-btn-action.cms-btn-disabled:before,.cms-welcome a.cms-btn-action.cms-btn-disabled:focus:before,.cms-welcome a.cms-btn-action.cms-btn-disabled:hover:before,.cms-welcome a.cms-btn-action[disabled].cms-btn-active:before,.cms-welcome a.cms-btn-action[disabled].focus:before,.cms-welcome a.cms-btn-action[disabled]:active:before,.cms-welcome a.cms-btn-action[disabled]:before,.cms-welcome a.cms-btn-action[disabled]:focus:before,.cms-welcome a.cms-btn-action[disabled]:hover:before{color:color-mix(in srgb,var(--dca-action-text) 40%,transparent)}.cms-welcome a.cms-btn-action{padding:10px 20px;font-size:14px;font-weight:700}.cms-welcome a.cms-btn-action:hover{text-decoration:none;cursor:pointer}.cms-welcome .cms-welcome-logo,.cms-welcome .cms-welcome-logo:focus,.cms-welcome .cms-welcome-logo:hover{display:inline-block;background-image:url(../../fonts/src/logo.svg);background-repeat:no-repeat;background-position:center center;filter:invert(var(--cms-dark-mode));height:35px;width:200px;font-size:35px;text-decoration:none;margin:50px auto 10px}.cms-welcome .cms-welcome-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px}.cms-welcome .cms-welcome-section{display:inline-block;box-shadow:0 0 5px var(--dca-gray-lighter);padding:20px;margin-top:30px;margin-bottom:20px;background:var(--dca-white)}.cms-welcome .cms-welcome-section p+h2{padding-top:20px}.cms-welcome .cms-welcome-section p{padding:6px 0}.cms-welcome .cms-welcome-section li{list-style-type:disc;-webkit-margin-start:1.1em;margin-inline-start:1.1em}.cms-welcome .cms-welcome-links{text-align:center;padding:10px 5px;margin:0 0 15px;border-bottom:1px solid var(--dca-gray-lighter)}.cms-welcome .cms-welcome-links a{padding:0 5px}.cms-welcome .cms-welcome-notes{font-size:12px;line-height:16px;color:var(--dca-gray-light);padding:5px 10px} \ No newline at end of file diff --git a/cms/static/cms/css/5.2.0dev1/cms.wizard.css b/cms/static/cms/css/5.2.0dev1/cms.wizard.css new file mode 100644 index 00000000..542c6dff --- /dev/null +++ b/cms/static/cms/css/5.2.0dev1/cms.wizard.css @@ -0,0 +1,3 @@ +/*! + * @copyright: https://github.com/divio/django-cms + */:root{color-scheme:dark light;--cms-dark-mode:0;--dca-dark:#2d4c4d;--dca-light:#defcb9;--dca-white:light-dark(#FFF, #000);--dca-black:light-dark(#2a2c2e, rgb(from white calc(r - 45) calc(g - 44) calc(b - 46)));--dca-primary:light-dark(var(--dca-dark), rgb(from var(--dca-light) calc(r - 45) calc(g - 44) calc(b - 46)));--dca-secondary:light-dark(var(--dca-light), var(--dca-dark));--dca-red:#d44848;--dca-action-bg:var(--dca-secondary);--dca-action-text:var(--dca-black);--dca-gray:light-dark(#7c7c7c, #a7a7a7);--dca-gray-lightest:light-dark(#f7f7f7, #303030);--dca-gray-lighter:light-dark(#ddd, #666);--dca-gray-light:light-dark(#999, #888);--dca-gray-darker:light-dark(#454545, #ddd);--dca-gray-darkest:light-dark(#333, #eee);--dca-border-radius:20px;--dca-btn-radius:40px;--dca-default-spacing:2px}@media (prefers-color-scheme:dark){:root{--cms-dark-mode:1}}:root[data-cms-theme="3"],:root[data-cms-theme="4"]{--dca-dark:#00bbff;--dca-light:color-mix(in srgb, var(--dca-dark), var(--dca-white) 55%);--dca-white:light-dark(#FFF, #000);--dca-black:light-dark(#000, #FFF);--dca-primary:light-dark(var(--dca-dark), color-mix(in srgb, var(--dca-light), black 10%));--dca-secondary:var(--dca-gray-lightest);--dca-red:#d44848;--dca-action-bg:var(--dca-primary);--dca-action-text:var(--dca-white);--dca-gray:light-dark(#7c7c7c, #aaa);--dca-gray-lightest:light-dark(#f7f7f7, #303030);--dca-gray-lighter:light-dark(#ddd, #666);--dca-gray-light:light-dark(#999, #888);--dca-gray-darker:light-dark(#454545, #ddd);--dca-gray-darkest:light-dark(#333, #eee);--dca-border-radius:5px;--dca-btn-radius:3px;--dca-default-spacing:0px}:root[data-theme=auto]{color-scheme:dark light}:root[data-theme=light]{color-scheme:light;--cms-dark-mode:0}:root[data-theme=dark]{color-scheme:dark;--cms-dark-mode:1}.cms-content-wizard .clear{clear:both;overflow:hidden}.cms-content-wizard .errornote{box-sizing:border-box;display:block;width:100%}.cms-content-wizard .choice-wrapper{clear:both;overflow:hidden;margin:-1%}.cms-content-wizard .choice{background-image:none;margin-bottom:0;border-radius:var(--dca-btn-radius);color:var(--dca-gray);background-color:var(--dca-white);border:1px solid var(--dca-gray);background-clip:padding-box;-webkit-appearance:none}.cms-content-wizard .choice.focus,.cms-content-wizard .choice:focus{color:var(--dca-gray);background-color:color-mix(in srgb,var(--dca-white),var(--dca-black) 5%);border-color:color-mix(in srgb,var(--dca-white),var(--dca-black) 5%);text-decoration:none}.cms-content-wizard .choice:hover{color:var(--dca-gray);background-color:color-mix(in srgb,var(--dca-white),var(--dca-secondary) 50%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%);text-decoration:none}.cms-content-wizard .choice.cms-btn-active,.cms-content-wizard .choice:active{color:var(--dca-gray);background-color:var(--dca-secondary);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 15%);box-shadow:none}.cms-content-wizard .choice.cms-btn-active:hover,.cms-content-wizard .choice:active:hover{color:var(--dca-gray);background-color:color-mix(in srgb,var(--dca-secondary),var(--dca-black) 10%);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 10%);text-decoration:none}.cms-content-wizard .choice.cms-btn-active.focus,.cms-content-wizard .choice.cms-btn-active:focus,.cms-content-wizard .choice:active.focus,.cms-content-wizard .choice:active:focus{color:var(--dca-gray);background-color:var(--dca-secondary);border-color:color-mix(in srgb,var(--dca-gray),var(--dca-black) 25%)}.cms-content-wizard .choice.cms-btn-active,.cms-content-wizard .choice:active{background-image:none}.cms-content-wizard .choice.cms-btn-disabled,.cms-content-wizard .choice.cms-btn-disabled.cms-btn-active,.cms-content-wizard .choice.cms-btn-disabled.focus,.cms-content-wizard .choice.cms-btn-disabled:active,.cms-content-wizard .choice.cms-btn-disabled:focus,.cms-content-wizard .choice.cms-btn-disabled:hover,.cms-content-wizard .choice[disabled],.cms-content-wizard .choice[disabled].cms-btn-active,.cms-content-wizard .choice[disabled].focus,.cms-content-wizard .choice[disabled]:active,.cms-content-wizard .choice[disabled]:focus,.cms-content-wizard .choice[disabled]:hover{background-color:color-mix(in srgb,var(--dca-white) 40%,transparent);border-color:color-mix(in srgb,var(--dca-gray) 40%,transparent);color:color-mix(in srgb,var(--dca-gray),var(--dca-white) 50%);cursor:not-allowed;box-shadow:none}.cms-content-wizard .choice.cms-btn-disabled.cms-btn-active:before,.cms-content-wizard .choice.cms-btn-disabled.focus:before,.cms-content-wizard .choice.cms-btn-disabled:active:before,.cms-content-wizard .choice.cms-btn-disabled:before,.cms-content-wizard .choice.cms-btn-disabled:focus:before,.cms-content-wizard .choice.cms-btn-disabled:hover:before,.cms-content-wizard .choice[disabled].cms-btn-active:before,.cms-content-wizard .choice[disabled].focus:before,.cms-content-wizard .choice[disabled]:active:before,.cms-content-wizard .choice[disabled]:before,.cms-content-wizard .choice[disabled]:focus:before,.cms-content-wizard .choice[disabled]:hover:before{color:color-mix(in srgb,var(--dca-gray) 40%,transparent)}.cms-content-wizard .choice{border-radius:var(--dca-border-radius);box-sizing:border-box;position:relative;text-transform:none;height:85px;padding:20px 25px!important;margin:1%!important}@media (min-width:768px){.cms-content-wizard .choice{float:left!important}.cms-content-wizard .choice:dir(rtl){float:right!important}.cms-content-wizard .choice{width:48%!important}}.cms-content-wizard .choice input{position:absolute;left:-9999px;opacity:0;visibility:hidden}.cms-content-wizard .choice strong{display:block;font-size:16px;margin-bottom:3px}.cms-content-wizard .choice .info{display:block;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cms-content-wizard .choice.active{border-color:var(--dca-gray);background:var(--dca-secondary)} \ No newline at end of file diff --git a/cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.eot b/cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..00af9292af7a55a5cab5c0f8d84a6ccbcf0c9871 GIT binary patch literal 15184 zcmd^md2nRMd0+RtdfwcFc{6VYGr(M!nO&TV!7<=o7%#cIT8YP!++ER>v;qjs0wA#f z3}DG6DbY}cw#<^mS{<o~MI|y9LtQSJO4(0#9H&xB6;-y( zh!h9;eXrjDgVmB@Ir%RGbiY2n*VFy=cX!X(BaD6MFk_r4j6Mp}RkwhaYn)2ApOy8! z+-*knbn1)u@3po|6*kWvWV39AEwEKK#OBy#wt?poN~>tS%@> z#%Ygv<5P}rf>ZXx-W<*w_l7yPVcoe<-_Q2OYPWSh-SQhWXDk!=1a*Tzk$`jl19xv3 z`wm)Zmk060&Z1po&$uuewL7=c+YWcfp#7rVQUI%AM1u+JoQd}WEXYD&&j^dM80%tj zX0ZgA(`G5`S~ttEEbBpgFUzq!E3hIfu|8G?lUCUQc98W0b^vo20`rc5o>Z`Ljg4WH zaW=swS)EO>Ti9WCgdJtaFy?VggZB3S_fL=zppJWJxRrKFCU@^Z9*##M4)&fBFv}e5 zA|={Q2XsM+=)(aGZz(33xkO`c`oI#mfJPe_X1ny$auuLQaoDrG8am<0bqy*k$&Ztb_Lgv(D0zWcm zOeU9pKyMDw9KlY=1a4){q)gyj=G0|!_h<@bB=9nGZjlLG%^c`NO5ktiz^b4GPG`fjJGCARCzTOEN)9Fz19!?!MoOG7?D+d_Kdz#V_(_ z_&50v_}?oJtG((gT3&llyRQ8}H;kZlWb=-O~ zaWru?@q5Wy^8JLtoi`P(XzZ8RoiJ`#T-eDYyq4pl5>^scFF&qS>$WhGIi9Rd^U3iM zKFlM$T2CHVCdR8`gx3LRi)!TNAAJM0^eEyU_s)o!9=aPeE zD>pXPAN8Hj`BmLmGBf6wX)YOEW>4-yaUXE^1~-|A78# zBxZ)W&&R`NEYeX{Sbh#epBHB4fSo;L`^uAssJwvBf=8^!dPzKG%pnaOnn4|A+Y1~N;YwaFtdunH9ayM(KW6pSySAR$SOkk z)3IQ{X9NOlYit-cll#+@kfFG{y87-3iFyj>Qjx+nGo78eeJaP zbwwe4$14%+V;$As#RqMC>mwi8k|gK?&&uzp+sWhf9m5tBEG>K&(#1>yI7nrD2R__8-rGBVl(H`1+!U1YH~k@P>=O+U7+s#P>iX!DPmYop z9oX0y@L9K+VJ&^)L`v0y{Ll)zd+)s`2e~9tCr+e=HK~--$)fQb4fdSTKbmVj?tKBi zWs68XOz7Oj=MLEfsM z@Oy5+u+5YX>~)p(E|dS9t9l2Th04`VL~8+4JIU2fPr9R*ywl?oY;=q3x&K*d##y$bp!>D@3!piyW%h14c}#W0$wi{4d8&(R1Z zE~tw}RnX%i0=6ozbCx}n%^sSfY`*_!KmI@B8y)qjS~_T^YgSk{{2_nVva)y>df2L^ z&0tzn-vP{fHQUxytt*`gnnBwybVCVPA%Dm;ky!!7(1qVdS0>#Buy+p27rpsn(u=(` z~$!R%GoHij10&EW%Vq_?f+0sChrdi^K z3K_goOTx^8T{hMoZ^T2HvL)VchFbrL7!;NwheZI*?oi%YzD^CuxDyZUFbvS(8=-g} z47?EVVFd6v%alE1?F@jS$h^m{Oy%E&Etw-uA3$mA!b>k*SVPZCFTKQH(zGqj(rPtiTOH+@;gyx)qnegqSy}0j z=Mj82d`Q?*WW_>ixfblijS>vzNL!*E<71wkOXxkq6I*hb<;)HiE73@}2(`9cl%fob zP#M&T*u2+p= zV`EYdXSXCQ5mO6DRb!&;J(eyaO=x z~8W@Cu`UqJb+`sF zXNhn`%O$s$iRNCmviutWr5E(8jaL-y4qYf|ML9!e>o$S78J}^9E^E26_D$FC=7=pN z5N|;Q!qpP+9i9y`{%bHMW^}!^t*F=i5v{>h zUOaQ~jCtl|SiSf+7uC_nRL!88?&ELh`V8J^ZL7SYMf}%Q<)?st>decSWfcGY>SLp- z;?t=NrvXY7Gy4($E6h<+CNXK7GT~)HB>;!6b4A*fTm-vq=^o)Em~9UC0`L4sQ+$sQ z(%SY=$Qy*3?+NoWo|pA#>*u7lIP{gtpM^8(!e%XixNzWidgW(G0MJR3wSN96byD<@ zCd;3NG`a~#4D519T)N6J6A((Yf`eYhSpLLBtxdc}33TA~H9YgNIFforBm zy3*NVdEowmaxt6kiUa~TG_*$T-cot^;&8dtYa5B~cKP4JXFM@7^2t3r8jhH0Cwi0F zXjfM>o9s>4U0pZSOT8s4m9p?Kb7`-*LBpIFIlE_+?zce@B?NiwX>B3*f;P(CxK4ZP z{Q>bqUm)Q7p$K#uS9gj)K$Iy1N?pGZF^O$(mq0uMqs+*V=EY=eFs$Of>M+x$HjZ*n`pSj}kL{6!`Gs7@j@fPZ7(v zvFJg?uAK$9d>RJkGz1tdK5~Ci6lZ= zc+kuz#w4qisuYEwMmJmqTAHX&0@-+{UYaP0iTc>}{rbLB_wSXLOzf{;#CfzQ%1z<( zTRjN61bsfkw4yyRO%?Itv0lG0jf}4AU^QKse+VeuW2p!Ehv? z8HV5ZEDuD(exJ~U#iOB|U!YaL?L?@nO*=TRld-5Wb_MDXggsFr0%IV2W^!A$oMRqgtoQ3)Euq!9nP4nNIDrv%u9y|52yL01zZ>O;|s@e1ktt@7hj zXQxQ}la;`oa%O8QQ{LV>Fg0}mM#gpOL58s-NX+DX2l62S+o_6p_eu6%9E@+Vr`V@( zg7;z&cV5~84R>BG^qIz6CrjQh&&R*UF(yo9Y>L39GTioyp z!M1xrEYuEo41qb*xI}-X>Wj4!R1n2OtMyVv7!>=%tI~Htq-)n4fn*b(YFOF6c z*c`hAp@X+j!cJjZO4y_77~tSRBBTQWHG%B|sS{)gqtF-#m5oVI^kJ{+W3keNC{+`s zk53Pk4<9))8VUIWsZ4juAN(B=wXGwGWLTe`oyg{$OAEfm|vbik+Vv zI+XB>=};^jnf^|`l*@M62S?v?TV*g|sN7I|{+=^^xetp(#7-vs;q8&hsSi$0jdWR7 z*|PXx?^sXISg(3fKA-Lx?&d|cJXNrIyZdYDp`OB_3@<7N^F5__uDgFUHSp%k!^eF^ z-(WsFm`V+1^8>z;@A&Y6qlLoJZw=1P4iw+t`+*{VuJxC`vDsVHnwqU;l+Ro%_xC3J z8Gk%eIr!L2V>q4`3F`@w&E*Sv*eBv+Y9QF9elnc&r&Etz?TYB1DMq_{xvw@bao8N< zmk$g?hk}2{{lP*it$nsWdrN)h@E3Y$>OK5)?^ti^M{@o=hstWAnojkmlF=@3c%d&< zvFw3NwwO-F;-)4FWxLO+4fYhWwMH#l=ozS$8s{2)>fiot>wo+ge27HptYZf;d{8%H zpk&PmMD34&J;^z7$w(SmL|d{;h71M}Q~`~llMEj+aVBE_>}oD~-+h6|M9ltlAd<-? zKbA}WSu&SPe)@ph5()fSAfm7*TK`}dve6(%1br$R1V0zPPE7@ypS255xQ(r6gHeL; z<_PY5mVeTdv+q>Gp7m@a(b^{UB2B9s%Uk<|oG0>j^$&Nzy=CZQvYfG0xmwparUiq! zVy=V-atdG%pswDIs;jcChf|b<1Vd|EKH)mRuV`&UjSRt|Yq*{WY9vnDo`-ZVTGyRS znYzh!+qzDr>viqS9pQ$c=gnrFhsB4&e#eTj)V1akaZAIIdtg z6VB85qwCM^x?n&JBH(Q&!gbsP5Y)DcU3vP~J^ig0`wt)P=TrTMZ%KExUhGPzyZBUB z`t%Mnpqy~y1V>wc-E$al2ag;%2)Nd7w_(y-av`-Uq zdoUFl@$!s64l7TNe>1bnw9B9v7+>#D7c2xrIw9z8tP}}Sx=yX4gHb8wd zgj@2E?lk-qACWgc$Uc7_@L5pVFnbSUBzAX0NH9kH-MJ4bo-*E|A#pjPQ=V zl9XDiOREw~cIl?Ahl`ap!lblr;K0Erb3G_nm08QJW7`PXeur`!((hMDPjtI8|}V ztLaz{3*I0r=(Ot&c0aD_ZL*KBr`hMRS}Cxk-x~Lj@0vf=&Psb*+C3!ry@uXe3503sn z%Y8CSX^&xCw>cR)QnIsaV8FJ18(lE(O89w_^n1m((F!*}dN0x3J^2j3ogxBnk3C^t zCp=vTp1cAHk&dd{4jJz9mC64#VgO~_hq)bR1T5|z(IsIe!z_lqjzGQzYaM}>-4<*c z#o%1;2hn@D@(>e{Ak+k@f!EM9PHhx#p*GhuJO#;7f2d2>-J*9On$kmO)r^@rpsDxwBI`<)e$iE!G2(OAS-IT~%+_On$v_Y5o>*YH`#E>Y8!*!{^MCS0B6Mt|xR& zomPCxw5kC|9?$b{vr~}BE1)0OX-h(#L#b2jfOI-VJY81DT)b8&7SM|4JtBBVM!U=Z zpc@ozfKe|m=n4DqnK}{Tc)1~RU)&)8XYx+}oJf#EU;hQ)AGDdMND~ypxJf0qI6V4NV=Gt}w z_vNrJWdy*Ku!1A9`Y3k7jX>2Yn9x4(JevF+N0j5gSP1Ce0}Bw808+RTbG@ zf?_rl-NW}*s)Y%AH$3Wg;6jbtQJSD@5;AUj!y9}J76@YX59ou32lW#t+(+v#u64HZ zV(Twt_gg^oZ5ij!XZ!lHGTV9wE%0w#=A?U7Be*|)7yF<~b>KdiVoEZ+PSz%riYIy6 zPnW{r{ov@c4NrF51ma$ATSw?GPe#|XF7vsf6trN9XRU0z3;j1Q;*uG(Q;kg#lOu*v8ORQE3V5Rp=FHyLSaU3!^ihMUY4ls%w05k zwiWCMx=mS@7JMnTOOO=Bl7YyM%LP*Jw(@&nTX!taA6KBGaPu>cLnAlpGKTOxlm#vi zP~ZhJs6LrQ#S5}P22kU+&efjj4zF4?=8flXC6Pz zUo#@c_>t*{rgg;#M#b>>>Bru6&#(2WTD5m&>!InsqJjoo^Yri9j6Qh5?Gw!l_|eB2 z`w&?s5H=)}_TR3M6eLAUyt7g!NhAeSEva`_vUOOYvMw(R$P1M6=74*8 zZgD34j{~J6#p01ul#%Qra*_`&_RP4}%wCzF*YzPi>Hr?5#FdH+xJkF<-Php*#mJ*bDa-jKWK z8k8M7S>ZD>lCe!fpAZDZ%V_9c3{=KM2~7~>4ELhmfDAYIzr#JVEFw+gum(=EdqLq9 zdFcuFCqUB`9RXo17IaM}QMpK+2nkb{Ef6BdRSI-K?IBD#iaWTjWk8q9U^=LxeAVs=7b@;uuS%@-yXY-P)2V1AE5zT}v2c&j<3=U&`$Aah6G!gA zVyyJ49`@_4e?d9_Q?953zw&U+9=J5y=j-aT2N&kbuE8|8an(}P^5RIU?~bf5UbV|- zdyKdyDi0R8ViXh8(|7z1q2M{A^yj)iOamgPy>9D#r+s>KgJ)dQCkhF@5G%M6jyp6; z>kw{V(hbZ8T>@;)P#Xu;ZOzQ&apMM`DEpSQa*^YJ!YeC~OL4EPqSWn`HI#?EvW_@) z!z&wTe~(x8!~ebLl>=yh3R0A7bg#3*e#*wb%#Wfko&du0vffAGpWOY*E&Hduw% zyt1EN;P-ju0NVd>{=wOmh1H?C%Ns*WbE_+tR#!IfX)at@o?X95&rO;xG}kwlR#)<) z!-sCtd%C&OT%X-+&gUO^G{5oiLTz*NQvTBV>gD_?d{J|Gc{RVbzWQKuZgY5Xb93$R z$Ouh<+K1;>FTcZ|!R`ME+&lZ}+&hE1`A_NI*}JFlGrSe|r+BmQ`I}fvo;|=GMZUov zMjW7q)=k`Y&m*nlw)JI{PI*7t{rIz(--*zEknvnzAW`Js*G=H}AM!iGM(yfnKZX4lphS63erv+Hw(|$`G`gZ zt9f;^xxO;HJhZkvJJ(!XU7l~QtIbE7=B3s32bSjNn=4{*c4dCKxo$3E>iCi0;-0p6SjNl%LX_z<#%)yU=9mDz>n(8H3cHZ;uTitqB$%F^Yf$C^PD zu55Vg3CoIH$IzY&2S`8%vu_`~+0UAvXM*i_Oc;q1h{&t6p(_ gcKxA%Y?X+(vVzgBtkAN}D=XfY8ILTX`4PtcH~H#1kpKVy literal 0 HcmV?d00001 diff --git a/cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.svg b/cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.svg new file mode 100644 index 00000000..db129f4f --- /dev/null +++ b/cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.svg @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.ttf b/cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8ad3214c3879f585b327e79df6863483027e8bbf GIT binary patch literal 14972 zcmd^md2nRMd0+RtdfwcFc{6VYGr(M!nO&TV!7<=o7%#cIT8TGzS2QJ30D)NmBo=@H zEV(2l8miEiS)y30BUU20tW}w!6T57)SmjubR0_zbMCM|s%Oz7O`^k>uR7$C$%9a_C z;vm28^&4QYS~4sr|78~a`ubkK?(h5hySkTg##n%DF_j%Ueb>1Y`A?P~WsFau_3UkT zjnqcIdh(y5{uJux=Pu5!{mnC{{fsFNV|s95`H>5M^5oZkgE8MSV}oB^Y|hS4e0J$D zVA0Pe7t!E<)1>;>k@^-dZeIQ;xt$j<-hV~?=gX^ev-eIft}`ZnjQZBa*~@GEZZ6QD zLOs7Sd$IY=MdzE0P4wZLUszk+*c^I3(Zg7M8}+X<%v}K>W2U=#((>U)k~0++QX9+GAdu%kfRjd_U~<;k(MU8|iI_yJHZ&h*}C@HH>I50m_+pFTjE<#KPc{ zD2uT!7H1Yquq3lt3RLT68J1-|Xzyh?mS+W4WF^+e%B;ew>;OB+`T;wDISjF3HUfT9 z*(j^AF^n?KCfFpavnh51JIs!-qwE;QJdSA)ZU2A&1qlJ_xQB)tiBdATv;%uM9*a1j zJtbh4IiMmXqNW4BphW!P0Hc&>*Eo;^lo;jMuarP*=9n^p>dXPZP$Ir@0y2RUn1fkS z0#7g}BonxUIboT=C(MCFp+u6!iOK}tVNOgYa1nF5WCGtXCoU5>i#e7|;11>_WCFJ_ zCn*zni8;1R;6Ua;j#2{OFefb&xRN>DGJ!vtlaUFW%ABlB;92HC&Qb#RG6%Afk~^Oq z%1Gd7=Hz7pZ!@PL6S$l?MVY|w%qhtP&Sy@aOxOd=Da(Z2z?_Oq*cZ&H%7h)loC7jp zuQ2DJOxQKd>6Z!nhdBc>VJ9(XP$m}-LntF*cQI#JCXxZph)mdV%sC_z_8xOaWx_6G zPE984N9K&lN2@BnnD=~dzm>m$b?YMldl^Hb;o4;Yc z=(qgO`u{#q3_cWmIi!TnhCUN|Eu0OHho6lokq4s3qfbYF981QYjs3i9s_W&r5?_!1 z*h*Q)ttS#k6PFXem#if}Oc>mGTj7eveu>@6E-)4scJc_X<+!MXm4wyHk1N%>EsSK2 zCu`Gua(sjj^9ZljlgE{b@v0c%bpYC;S~7vUBh*(*pU3cO)ZhAvj=@7FJ`)zdFu42>XvB$7{6~tr_sU5t!i`}*%?riK zL~MMrmQ2K~{MW{V2VkpgGJG{p|H zvQ2_@hbO(JaQ*^Y1sy7rAVac;Tfz_tJ836t^~q^IQE?IN_C@$uZE~zeeFS8bij@Iw zCyfDKBx2Mj>l0Og7ljew2>@X%w{M!4iU6iQ0>TiW_`H%$+#<}ZqHs-*3`ca0D@xWB zw`q{KMN@n}JTQKuJ1ERt@urXmLh&;8)W4vBS6!dWy ze-az<5Z?~P0E2)xj&s^M7JuT8{OK-#EH3^i@ZZ1S<6U81^GAKE@dXn? z+vTsF7Qd<}r0;ko0y@@F{ayUf#AdVzT3qk@4Db4$2h6 z9741TJV|yNpX9$MOl>Tc3x`sArK-1{HT2O^X_REpKrS}`A*2gaPsL&>mD}Atp{o8J zL(e4=IU}x%bS#z@zVqo~CIK9zGQI;J>mBdy9Y0EsF5ui0^x$v%L)zG<8X_>dJYUuI z(I=i5B{4d%u`%GYZZgAK`oxKpss;I>6?FIBb!QH8Nu*AkNDFIHDW{V~<9QnFd82{0CK7puCgzCnAgc5peug$}t*W|vohi1Ii zfmCH!*@x6Rx=GKF&Z$EN^JjHc+rzAAJ)^0em{k?SKdq^qsHCQsG*$0JxAC}@cCi~v znP$59nLYfT9WZP&r2~6iWxdPfKj*66fo7p{wG+`=z|>B1wG+8&zz@NvLJxG{UmP)t z18scksbV4J>%{n#(*ebo*21P9JMM#3%2X-$po@aA9AQ6|i^Cj(rq;``Ek!5a#ScMM zSHQh(?OiEyc5LD3(S=9paqQHklP51dMUSuW)f+`TY@8Db@v9!I$sz@lToN2i| z)Q=U5FZskdGb{Wzeu|tB`WDtK*I&41^;oED2f=ER9O^29js@TPMXYc^*SnE5E@8>t z`&QZgMO|OOg1QZ(u}M%MzElD)@E6HXh__cjD}oU~pA(S3Y zhN005vuM(-z+52=Lq`GEZlyxTBf80gG*EGsW3Pg~NqRSo5oi<|Pa(BQpBP3nb6#VR4S&d=wX7^M zLl0ZEv>8lm>U)6spk~{es&%C^K{IIkg>EPTE94KECLUHmF?8X#(UnPe0qniQ@&abzAxz(uK@oV7Bk*?4bndhqr=2z-4FZsd3^6j4$82e! zNz*KGO@$0zsU=}%!7dx?jyK|=OxY42HbbrdL>m;AB8No)&F;{%vwW2r@Ze57w8Jn! zgKvc5d2HZ?fDa>JkF!kKGuF-k7>dlxc4aF6E^Nsh`NCv_k(`1i10#Y#;rP^H5D2(B zu)FH0+3-euuls!W-A9>#*>NvQTjyVS<@_3YUU}se{)(n;X_i*2;jz_Go*7eqC$5!XFh|-F?HC{P>|8?c5uVtR%PePhuvm#k!bPaH z<)Rd2V1)XBOTJB+tnj>twGao)R=bkV69^$Lk9oF$7l(fnvphilHukwKVEI7mV5<&e zE86v{F{~WN9u{_$>_)OB?RJ4*v4+Dhy%Zj{o;eqejvcFNgU3>*PNj|wYSm+7(eSz7 zf}M8&rk>3Bm2j7R>5|ms9b_Hm5W^p*uJYoUgJ;Y$ufpoZpSh@xKB{U4)pQ?!OV?-cMr&K;4K3ooswzJP^pj^^#Vn)v z>sKEgRTZC3WjGB`qL|r__+Md;k~3+OwmB1CCR74&=sH)VUCBkT+m`MTPJ-Fya4+!A ze>BDS2qCR)4~4uzsQI2SKj(Q_kF%_Ih3u4!* zf*AwXOpkP>v&HhjJp<)pHr*8o1g>dljoQ7X^6-7be+!@S#K_2}_v~mm zVy2zwO=hEAUD0f^H(_^mT~jahmaJ6DLT2XDUU7qlIWcnko>98r20@e%?6Ie{g`@=$ z$|YQUj++cR@p|LZq(A@twu z9UXe|*YCRP*Pk4EDjZiH3;2A2$CP;3slz{{SST!pje zijHHP+x~9<_sGin{`bk^`T*QkVa{xWe;vpMY%RC>doIY$OT@4TquZaL&F~4}!;52h z_Iy7@EZ@bV2N%0`7Toe_7?{%#V6gbe{kgtjKmUFuEHuS7OQDQV%x)`wmGRSPoQ>I)Co6;0JT+u zo03c<5z<0NGoKifTdh>3Cp$UseLpi@dtA5joP*JW@QQ6dJf3ixM+ zuqWZCCB{gy*!4

@q%J_;*9ycFmp`%*=NWkE7I0)$yV3X7|vzJ!Xf#yJy_~XS9bt z80sF%bPso`kqk<9>b&%|G5f3%}1vMAi`eQhqR!p2@&<7=*4)2 z^!--(v8mgqNc)qOz@2htYb#UU-a0TfbpS@jRqDY5V@Hsf$@vcCLjtx_74hzq?1StQ z+hR|$&)@{_+w6a`H(}R|#VAM#&ZyZ5#89xY#;~&zR#*|$~m^mny=b*dJb%z6&B=J|y-a-kK0$EC+QFRP(@E{S=fqRGqV&}CQ2FqYBcqX!Kak3Fr~JX+5mDPZl1PU2>FN0cgNGsrRNT>5JM0hkmG94` z(xKS7$)Q6DznBii!jb9k2(~9VCoUUFBa3)TcFB;z0D>yuF?5pQLnh8d?4MoECGWmF5SfVC zpAAGZx#TBv$v;cxa>>sga9bjQKMO<@_IT?b>_RpgO((!REKyg~#2- z)^ouqL3ne-?tG4a+LN>IRl?rx*+!zZP3lFOR@aud_6a#pg}kyD%*NEMM+37w6SW5)O|IM4RVrQ0yYLMcFT4IG#hEJarXdlPCR0Ze>K&BgVN*DSCp_Lk4>F0X zU7Fyyg5gX!Pv?)WKfCLK0X2w#x19*raT7pL+bVYD>0kHsw_ff)e7K)a^&h?=-PL-z zE1mA*Q(fuPJIsJ`!i^IgZT)r6VZa?ca^xW3TEE?fNq24ea1IDCJY4%}H@=ml_#aWL z?JE+UCM0<<6&dmJj6V+}K!4jEBvQ%17oBvpF+vWs=PqtZ2O3nBfIDrp$T-wCyAOQ2 zpGO5 zBP)BdP6_~GK4IA~3;C5jllYoA?E}zb_?y8ZCd=iLu6$V+k*=P;S}+(0+udglRpMcv z;rHzs=leshFGJ;FghhILvg|~0S`iD!10fy@soe=kAeekA5CR4PEnYx2z;1$c*-r%$ z8=eu~K`Y6rrMk2#v1FHT+IqNHStCqJ>jn-Sd@|RAf>oKd+&aic$R>{z=q9%aEv+s0 zEqc=FV{41RIi9E<@}T8tsJLF*i58`lCnB`E|&=YmjRKmfS zcvHke5v;&ezpDD-p_(FN8QRm_=P#6ndBq<~Bx3$6rYIKzzNaC$l74I4L%wVNR68qevb1|h@X2@3 zvsbY@-@yQTJ^KcLS|P`VR8DQu6PeeU0pDsz7ib@$(jaQ$f#Nn5@z~$GC+A`D?p1zu z->dG{6`bvRc^|~yn;paR*CoTWPRo2&?r0&i88n9c{y&x3AINOxdLVAR1Z>J*lH-6* zoqk}N?p?f#*F*Ly^si(@n1(JJ(sqJMdIuSQ3N9GFC1$|&Uf~^NJ(k-6FA zavwYT|19^(EF~JlxNh%c=t#MpT>}HQ^}FbTc~`>Elce7(zKd442GVv< zXxVK6*(e6*dOwKX!GN?;?9~#S6cyYrqqb9j&IefM3s zuTSS@=nM`$Qv#u+AG9=4n$LW=!`r-C1~9n;kk5K%Z>JXhom|J#-99F zNDcJS?H??OSb+>B(!^v3xID3IDiB+A2naXMP^V*LsBLa}(K6m>2OPJFNC<`fcrRK; zAqN>PyYi0FvITd)wcet@1lMG=tgWm5J^vY^IhZ^JS=_5Wh}RM66a;e-`2IxZSoDJpjd*nb~@9sP96<)NWSQn>CYPZCseYL7Z9~HG;Zk9RAo@^W^16 zZ@KMpT~ntOpE9j#z>&A-`M23ANaPjpkL$E0q0XVyDRw|Qog$v@R>xetRwx$miswBd zct=LNyZ^yADB1v{ST6LGx6fd-1IAOQ1Whq8iXjy90>4~|(Ak|5LTW<8m+GdLQto=a zLf9E>6PQEs5V^tR40{5 z38msmo_6kX7`z`GeYWArj+;Q->s{*z{pHE%dd}T^t|$dBnBqAr+wMaD^@}(q!JFvL zyJ1Awe3C=mXC4kq)^a=u?ofv0o_6NHRRNFMCy@ zw)5$t(X*{!N6>A`vb5k!v0a9wD3%OFc3duydbgF|3){M5dH%Qp9fg~paU2@CQI|1< z=b^-v zd2_%$J-0ZM{>OpRkz(=4DSD9XB6gA)7kg%0Yi6&^&*}P*9`e(p^_OlLiVqb&04+I0 zYIR6&eV@vt>xT5J(oxELU%{uy7HyDN#G`ZQtNSMKhcpB<=k9Q>rX13tH}N%7qfg>! zY>2ch${y_@VgAFe{z2FcCx}WNR|6pCdvSz_$QtyIcM6+?k@x>Z|46&&1^7Cy)`NOz z>kUao*P!g6WQEVjNX9k^eL@frFQcJ*F;E#3B{V^hGu(@M3o_i`{|@)evWPT|!x}iv z?gEEb}z(I(+Cly{DTi&Gp&M=6wGCNAepFEz~wQFXS(*uU^cb!iSp6%d7dd_03cTi3U~UfgBsY*Rp|pzD3+{81-N~AOxP-HyS+@Qj z-+6B%pU24S_~w%PCAzOUjM&?Id-pWnU2)%^h0ou_TX}Xrdj!u7_7LV#GkBtuHMsZu({U;idVe z?iSVimsUdeudmL|&&}fh0IpuR5bUU}1m_l;a}N&9Ev?TjH-)UMdW{>ua%pzGsk@E( z-16#1Q=3~|*bv~li_Miy%GUsZ#MT*TDzpZpd#wZ+woO>GHVOe`_T(sA-SnGG|c6a@8Z(R(#54mn?V#VZFuVm%Zgmb(5lzx zEz9lmU0lWB*nIjLu+vo6mR7{t@}-5Pm5l)M_CO)G+#W}xnpnGZKc=|oTgPJ8u{kvq zR*m&0{ntxlqe-;!wdp1{mNuLCFQ7sWvEkobY+h^*&0gAE^@{Ve>kkHGt3<@56^wRi Tg_dnzTJb(+JiLVFhZ+0dsNf+3 literal 0 HcmV?d00001 diff --git a/cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.woff b/cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..47ed205fe008bd983f1c8da46d6568619af09415 GIT binary patch literal 7988 zcmY*;Ra6{I6XoDOxVyUscXxLW7F-91;O@@gZoz`PJA~j6JXmnI2^N-b_kYA=50Oh}3@azBM|DFGTlhe|X1OT8AKUAR)Xj8<|`l)HLbA4#i zA6)zcy6hb?8J14wt{+zE0zSaN$3@iYE{}%vY>1dDXj<)?`ZUq1k zy?(@Te1MlH%}&tvLj(YbSw1-F2WXI=kpyj>JbXShyi0=m!O1^B0i_Rx;B4;nIu=nCUZ2niV^RSf!)Y-MY1W@cgb#d-i4dcjzWfP{=g z)YTf=?ICNGa5b2lIvNI0tcTd+lXtPC=e!|KAhSyymzlfif7QDIYR_0*cfd=p6b8}H z7#FZmLyMXo&%DAGQ^KOcT+iPDh z^~FW!a@9OsV{B>@)`TwGB8SjA+p+)-&%h!ZSJ%KYAB|V3f0S3~ylGq%fdn+dNuLMO zeJlXmbR5JwI8VK~bnf?UmXE_E3ExbkeDArLk?XYS7nY5BFLY+R*zR`;%S+E`CdQg< zy9F*~fN~xhZUdJ{Q%Eo;HBv~hC*A(^exsLesu4C3VNBJc5@1dJL?ytS>P{uVo{B=% z$&ji<)ya~|Ox4Mh>Oj@WmP$<3$(U+nUtnWYwt;!#CDSF6;{3Tx2;&4O(?y+fsb409 zd7>)Q^(p1jxU5_KPRKa6_A}!<)I;mUbHc=P-NbYL#B*;Bq>{b~B4Kq^IvlCtVojvfWSlB18&JZP;M9%lJAiJO- zdn-TS=lS`IZ#VOn<&`tU3sSbY&fbPTLNs*WKm?&*5UlWk2N3e|0-^nFVHtGn4NEf~v( z5zH)8AYpGIXO?i$u%&X~=z()SM(BHZ9~EXQWf@6xsCM1_7efZ!oZU`c5$mWr{ZjQh z7LBNX(T(*)=CAr!okK0or*?6df@22KZ*)B>_{htw@nm^cTxRU0m~YrE(cBlh-3D;C zRC-}c@Kjk!@vMuQn9**iF=oiCH=*=*Qe;Z#d}?g4a3c{5UaS3hDbI3>`fcz(acijh1nZrl-FnS{R0>k#clLZO*J20e@y zM}udI>tQzj9xz2^9hJC4_u3Y-g|9_g6b+jTXrQ02m|YPzasvDpydnew3`QFXnLFUe{OLAXh8 z+Yealbo6pY$4k-qYQ%DUCM$0DwQM+``AS&#i{oPqz4d&&s_^YZxV6dmTt$nk?T*^N zC({Z9Guweiz;mpmtF7D}T_q-Z3z-K8{Og5ckC?e;V}z5iEv*+phGVhW6@LVnkplVs2xi zS}7KI6`ddfooD~-m!PA65pXQP4Fn)L0r|Lv7)4a>xPkgl4ljA0#FSEk;YiCayKK*Xq)Saa4fNAwZ>~ZLA$u`EhsZEmj;vC$0gY1prau!>@9-+ zQY!0a`V#|>npgtX+49M!Xx=uDPS4PP_sc)^XmvDqO&me!PlASHgBwc>az$Z}y{sgO z>Y~_q7}#j8?goHJdpt7@C2m0d&a?Pvh&neDBAGb>W*IWtE=e<1eCxF-w(}6Nn<&y2 zooEUC7JoQIu{x@I&Ugo7hDoQV4z^ZtBfZRK;UwFaB{AWOFsgsNb> zB`>q!dIe=PhNa%;_2|6@&Qw9_eKxLJkkuT97>7oNOXV>+Lqp|<#!^cK3Zj|6BAL1~ zKbyFFadv=#CE}D|bgL~j;e|BJx2DnG)d+s?!S;xN$2Pp3TC0e z02+*+VbJ6dI}Vs*4uuSnhPI|ZTn*pu{ex-UcYeacO9_oeG=g9Xc?np6#lW3<-WC!> ztQMsluX_el{((gQq7{+bArv{X$P|22pOC&H29r_EQ%{C2>WAg^$+T9H*inA?*^()k|#}=zL>|JFAqIJ@I7T`0g@ez zS8ghE9xn-BO;Mp0$X3>1`W)x_Lv=0zuhQbPq?bjhAoXRUs*=U}Y92cz?Gz!Mk%Va4 z{J;p)2Kz(z*=(M(lVR(sMtvPR{QVcmI6i&GsRgwa*}s4RU!ettUp~e7)6wqFE!dpD zwbU*c2|mT80RX2Ob|AMghI55wX8Bg?-d)pZ7RP<|<5|G|x)uJ?Je%&I=um+E=m)dr=Ne5Z=6ZLF7J+Jy>W_IY)2(hFxbox>2%|?BR!5q9l>q zW_o+vV-!fcDo^OwwEg{e+?zD!Ox9eSS%Mc-Q$Hb3$LSj$r=Tpcm?}wmYvuc}mJ!xHrl7U=n+S~JI z$>|PnzvogZZG@1l%hfe~L7bTIg~r+oX)185(poBRl9B7YJJR=OMAc^R=S)h5tyqZ# zFf~U_A<&i287Hu3c|54>>Fat@hYOC^=1733=@_&=)1GY1g6ABY>Q}Sk5;IC9{d`S= ze_#H79}2?xNBXyN)@#S6_Z@yj8S3`+1q5f7Xe|(Pp;MVa;M?p`eIK{&xn|1{R}CW1t{1tyI>=%at0} z%o=@jv(}NA&&vh5u-HQxVaCi8_fK!t*qnl%_xL{4zt!`J`5-9+o|mf1@>^6&aSi&`N;z!x$Qbq|V4C=l@|49&ic^ivj1K zS}{cA8wU(9GTC7Uj4Pri)Cb$39>=$7vW-(ndU5346x5hTZMl$xHUO`TTkKjhY6&kb z0Q7f`;4%$LgrUdx7=6o#o){A9E1EKq)4|*g-UI952PiK)q;if55HTB--khsWoi=Ny z^$^wxQ*ya=_c9KoMd>G&OB=Dn#>+qRHwn_mUppE^Q{h!JJi}ArrJLXFs+}Xa%w-Pe z_bgU+x^kLqmzvl*5O<`E*m{43R@Ya@&Y}`*CRcsF%atfBsg8VRJVnWl9K&^L{Xe$r2;~MolFF~h{n7vWj70f@ehB*oNh5ib=AB9+wrp>4iuJ>Yj}aw` zOJKAPB&nXzts)RNXl1aZ1{?rEIUbX~x16^!x1_g)2RhTd5u6G!2GryA(ZX6V+&|is zWAwlWGDvlZKx@0mYRSm;hCa=dxO?P!>DvAJQK2J5_bM!Lggi(XhZ#Jl2UuWv&- z8v*ge-2=?%JBYS8K20oe5)Zewv_RtBbo*#1GXNP}91NdP>9Q=|Vx0;FG|X~1E6j=P zRB8>FW5v0nj04_(**RQE#k6|8oE}^`)s2s59R@XwuSUBc`HmudppW7;ZS~{FxR>$_ zEUxe4O5?Nhu$XS3KU)D}IC^`9wPP4N!jQG=Q}>f58>ySuOyAS3*Hd+u=C&t!9mU;#XO~W<_^eK2toC^}1O2`0uT7 z2SG*~Pw*P~SUmO|$2Kxb<1m*&$edD^Z9;Ml6!lyb=^uvpb*_+ixZj@+zxz)0a|5B5 z=p{-8s1g0hLM-|Zs4?jZLqy^?`d5h<;guKm%4Fcvw-m(LsMn&|2p4m`!QyuQh;eC~ zs}iwroNXcrA@+qNKd;9G!&Rea*XnlB0R_FKZoOvDQeO{ZmR~L6GuPGBP|^535u?;c z968uf^4*0x;H^H?Q5Gbk$n7qF&;3}kikV7^CX5@zwz<4}YIMGy<2t9ZDgJmjId3!v z2VaTblzIm}OuufEZ*3_$6SOw#+;{nkR>#m&MZJ4OplVg+qYoxgOF~5vgjbo-!w@k$ zZbBW@Ufkf{z|%fgPd8iL<0r3wFHK_Pub$+oFpKX}MnY6dLfuRBq1T*?HaZ&`u#f!; zFBWO2OjJ~;32{R4!(MfPcR|$A#w^9Y20ilau2umAKp^&KpN07&MEE(=j#W>XV+nZ2 z=2<*G^j6ixp+Lus`9%EVXv7n`<$)Gx%IV>wS>$*_I-Xl=N#tKshq^Bvk?4C9imlv7 zRNf7Db-aQA+@IYr4augfylOANYs>3)WcGO`u#)n#@cy8@b?qhOMVY>nODiTP$KH0M z+_>;}Nc(KzK)2DK1a*0Y8j=S%TYd_9rv`Cx`o+N7dlqB5i3hy{(ih74m0l2}e923L zw&xa4%(zxqSelPgBO1{jMrq#E`|hm*{2ttZ=;vqRruPel&)fT7?s2C0oNKvAUW8!J3V3t z2X4x`+Uj{q@QUlu26aUTn8nn*(Z!bik0U4}3PwUdk?lR(Q9Qi*F1?&dP2(p+dS~Du z;)d61N6{Tpk#PJU-O8cAR%H#m(45P6m8PHJ1@%}eKHLDb-W&lGQ4Uw4GOc74msuYSz#&qN|J zo;+)pHSYU-FQJx0L*!CQVzs8j%*L`OI#EX>XJ*BVWb3~R{EfY}Dz6Vs;Swg~wX~zb zcgrV*X$<<;z98yO1jh*elDNT0C>Hph?a-g@Ba_=j2xRdJc$jZhJnMKiq3+J$V+jY& zsDLb&K~a|!p6AD}jalP&Esge`@o@J*vh{B)C4x5{Fc)zw0}a)(S+P=6Xmj&oci50V zRJ@Zugj z@yrzOTr6^p%frpN?R=;Sa%`&N_Af3IYjrGB3uRvn2v3FIfNSV@Pi47hW3YKIq{tiy0bN`8D+H0=CHN$9 zFEJetaEpRrwfgWp`LWI;Bpud*5k*Gt zR*ji_oT?arj7dmj*IV3xLIWRW1Sc(YEibMY8QT$|>t>H1#K;UUq}D94#~af`di^zH zz$IVS;EPxe+;>Oo)0T_ z8eaqUMgm?grV}9K{jH9N2XYU#3;dAPcs{{^Gm3G!V`gb;H%*FWE4~td;6$j!41BXc zUEsTht)LMCvX=yEdX8ha(DAUd?E8fy2tu>bt!L~f*2l4~6xU1MJ-ng5=*c%*sFsxA zD+58h$6)7+|E;5v_679GcY`A7B9Q(dCXplVaiu1iV@_AJ41f3Y3t!8x#mv9fe@fK* zc&<*E|=>uQORP&ywVf8_&G`sYSu4AkFXcSbwV+SJPPj zP@RQ7qhY)8<%TL0>Bgg{vQ%$$&Q#?Y1lrJJ9+|B&(L-wUdUr2z$);wnOaiMu1;|m7 z7z%g?|I5wIskephB)Y) zffXkX<)x9qmts3i`zzuvzZ&Yf3l2*y7BjQ?mzb)s{jgNkU~ryfyWptb?{UHBF2=S) zctzhUM)kSNvBe*Vyy;k(+u@s~j813e!RS9Gbmhovo{1(0`>q~4ZtBtMf3{2)sA+MGFX z>1Pa;Lsu5YpWN>uB049(F|cX;>9b)B1jU`luXr|-3f8yvz8LS2#|J=RWyJ9xw=nOy zbCF5$?ug@dU#ztaBanlU{Lx%SgF|GbQ%4f4|JsjciARU32N~;e0|{d4XX$;j5xidwujjof(0FB-*8L+T8vP z_(I8-mh|y^()rawP}GZ~PNqinDKnl($L9|z9Md-$f8VDa{7v>TMKP<$7;H&_)b3*9 zx5ZNCndV%$T-+fz^W7?Wse9|=uD{UDVdPMcu-ugto?FYy!qbmpuIVvL|C{*$_Nw5j z)Apa7`nX&_aRv`G2T*}Hp5Gzw{rrU4t0Bff_y%qOYZVIN|NJcgP^yRTzu$w7tgOte z#Ni$RMuf1k9|NcV?msMa|NWhkzyOuyA8G7+sYSykJNHeH`b~e;p+zZWRvICgxSdeOpy5_!-u5<#-L20DxgN7R-x{py47}p248jlOl_<#L1*!=xDFbjZI z7N3R-M@4-f{0a|X_yKM9(O*Kckm|5Fj?DKvs1$ibq!?%oVCUAAW*tiGZkyvtq8??VC4d<7UD^|tUn_|CgTg+oryF1x@dxsJH*9f`ltVP;I5 z!%RMymy1D;w-aSv1mFjbxH^T}8>Rfq*opk(Jay)a(`h0eq;dK#6sMNBp6#j!iRBlM z(|{5z8zmkaJ^TorjONb7fR2a0oCMjJzZ`9}yc3v%6cK+4<1|VRKT#X3mwh8svQ<4- zcU{TP7I3j2O(PXDXx7W382LMW9%`_7Kz+%rh3r70?{J=-zu>3Jyq%bx$_=hPY{#*R zs6P3_%^48wlvd3#9IbcjBI>wZ{0c`=8~ib`^vQG5_yyYFz&OY$6Xy|9&D*xDj5_HR z=!XuW$D+nC1E|N}JwVCWjiGlUY+j;SH^#+1mJ}}>zk9}tjL0Wjz(%54DszmYx}Wa@ z@Li+hI>M=q$8e2Dd5p)=Hb+=D$4ECvMK;G_NcLgTZxEAiVAXC=XK$bdO!sh2_tCcZ zNVoT4ME9^o_fh)xi2L>t0{3wGOQcL|JMpv+5_`a19*laaLSwlVT-KuCW;@>2B$W zT7q=SCTWiWE<+I6kUH>4!y!IpFl~lY(|FN}*uhn)1xnSEXiv zVf)W!v1CfQXwQNQ;?!ljXm>R`?0;cQ0dol5f2$+ zi6RZev)Gv~PH6P!I=1s2mR08PIVQVef7VbDaOqte3f)-t2p*Pe5v*$MN)mB?cx=?5 RAMS`N38J!^{uo39{tu<81uXyo literal 0 HcmV?d00001 diff --git a/cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.woff2 b/cms/static/cms/fonts/5.2.0dev1/django-cms-iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..bd7eecf06de3f3c5cc3d6844fab1964a53f23e7f GIT binary patch literal 6584 zcmV;p8As-KPew8T0RR9102#Od3jhEB06KgC02yfj0RR9100000000000000000000 z0000SR0dW6iVO!%)3Ich{y zjSAWSe@dWZ>|7gwRwAGz6ipmUvO29cwR9r7c6jVH6^L(SAL2=$XJIU}<#ku=u1=Sz z2_Fu^D+CBcBpju0LW!fRxwCLYEX&k&^>>;2(EFz(p zCx%GPCXGrGJ81UE+=IDwGc%ZCnky-P{K1^2l>14&y=1$vae)SW3>(W9*FS-|6nfF>M=_2ytaNKv>el|h zOmJDnHqH9-e$%^X@IK{EzuVv6${-90NSu(9%S8aVkgt|e}6`R zDWeB;&*zad#2aw?78fpf9B{ju8}ag4^l}rP(+GM_et5R6v>FAY_u?PG{?niTGv-G_ z41yP&xU~0zSCygxwluiCBUoH80Gr0Mo!1|CUcqoV+XTbzc1HZ=KaE2`eLD(C`=eb4 z0)@d5%YV+J&=@QZPau-W6e^9*V6xa8E{`vu3PoaxR3=v_RceivsnZ+m?2Ry!*+RG4 z92}jTU0mJV*&ZNcg3B|2VXO1qppaNxsJJk3;o>61MT(0O7cDMET&%b_aq;33#3hPL z5|=D4MO>=5G;!(TGQ?$y%MzC@E=OFhxIA(B;tIqS_QygbUWo+~fm9$9$OQ_4QlJv3 z1sZ`?pcCj7tOhki9y@`(z$h>Y%mRyo0n{4h*aQv&M+GaOPEm)mz(wFHa1*!-JOrKs zFM+qfNB@`ebP$0rIcwO-tl2*O4%xy-y|a(3|Yw(6}UX zrueCsKa)NW93lvKh+!rlddpsonbKm(t#*6(g%9HLKV}7%ZgI_!uw2J+A#LAtJ=nll zi@MDPSblsz0@)$nRU%Z-$gQA)5s5y% zWkMK24&-#>AJ2vcQ+XjR?9^5OU%hvy`|miL8`WtqG%EPk2|uz0GC9xkSDNdveR}Fm zR=C;vYm7z~KJsN((=uGkGN)BgZ_4w=JTgkiB=M(xf7}lyf?(!?;e_f!CSW7714B4v zK!TTXMK)XX;!G9ur7z&KngGvuojP3*KPqHc#49Sv#BO@kU;F`G(bC)nm<+m%L!CPoN?I0`g1T(j) zLa-6A`{y|ZWrhZ~7dTfdOdG|#pn*wCY1j`~Xo^*YX$!frRq}WQF$7_TQ1Eu0ECJ9* zbA!2@Zg<4H6V2_Nu;^IQY?rP0--XJ6Wv;b-U?_NXFY%lWV&TyA#I>{oVv@qdkmaH#ry-s_!F!=V@qWUt5j{a6rHBO@dVDX=ChlUrzl zGXq`ek-@V`=%I7bEbdnLv21|^Z{t#37@~ugJQ9TklxM_a0=qqG$fWwmX{*DsFF0&t`(MTlXi?1^+VV(3JDV;BvUq(y4U0gz3&=x^!TV zsUAQEu~g!@f`=7(R53O?m(5f>p2>QVY6k!U46n%-t3jI<%aRTTsJX9qi3);h7cn<# z4VkFj#g}kRL@tEs3vywJF_KpLE4}c{%w($(uxUsmR>JWBQOq-tF5uq%w7Q*@f z&|)iPfdntnldTrH$iWRR<){<7H8#|*IOgT=K)ZzTx8s8KGxL@C#wQKAXJ=1owlq3A zmYyrm)jzJQ{a5x^7pfD#t}k@=H`U(y!SdUrG~3!!llvNnDonO`TXjW;itPvL-X`C; zEAMZ~F&$2EqR^9t0ovt@OJXE4F`VH7@0pLVM3{AHLhmW|WT=Ck`=2vc4Ve9lm%XHc z8Jg=ByudLLL4p4w08t2TK%x2^K#6Azp}%3v^taP;g7K29h^i_x85=X0t6YNf)h0DS z?gm;$6A-$1P8J}!nM>nFH+LO*z=t*3k{MSha1u*j>tV`4o^X0JwGE5(v?WabgGQxp;x? z0gEJYmDm9T{I^tT@?5c+{S%T*_?nv7VP>|j@C#V zV<^**H3B<7_1_~fE<_^oalB9kxCy&bnEwAU9CN@+e)bB=bdYKeTdm*2_7ea06zTDG zapOsdLxvLwQWOCc(*$3|)Cd-wQbTEkVhz=EwLb9qYe;$36S6rjV#XItsy477igVx_ zJY&JLW|S@C5*5T40y!*=>=?NepLT%HuErOX^(8e9tr;rmh~1!CEuc7Q@TA=jcNy<0 z!Ykky?_LPCX#V2r88vNU;=3JMABi9vRA;VWd)c6Xw5PV10^Bp67fU^$*U{v2MuacQ zgZ5}?HP@p!i%Dr?`w-fKvGxY4GvK2sIi9g|$v*5>Wp({IS&5gd?o7_)Hl=EfCFn$SxV;)`-_DUdlz|sTaLM@Ww+^NV_T0W6UoJ%O2 zQbdvct3cBlzO~8(7fzkWB?fQ~je3=Z;?Q6W507wfcT~2-_JSiKYY{Bld3Dw^tHXiB zkn;VW^?P4wYlSKfBT&)3Q~!Hqa)4A}ExEXjabf|?y_M{uW7m>fH}!S?vHp8 zGd=>t)0Mly$Q&W~3pR^QNBNO~{;Wd3yL^!>1h7}Ua0$C(^%UuyZ`QnoV~wfjL}-)R z{;@G+1Mq(T_BoB=q}4-hZrDTS%;Mc1GC4e)tI?Px`9=Kc9`)pgxc*o^yvnaVipMaM zaLc)(3+t4bl=&HuALQ79HE+XVr!K;XB>|aVwDb=-uZDw$Uk0$kfhUZ)C92YI@S(F- zlZ|f+=B)`0C{~Se%tJgoeu=W$rnr2t~y#tyX z6Lg1zUu8q$?S(&n)N#(P_GWcDU%Qe>liUh`>}&di58b}A@3V0Pd9CK*)$jy!10N}N!^tdYW8vItYoQ>*k>0E&-P!e=3ND?SeaVurm{9X){d5noNc3^1;JRfGW zVTaq{9meX{8uAv6`oq}s`9%~N2Ool60Be82P9zBnnD+L{iBaUCVFokamx2RqyzUDW zhyzLP5{|LEEY)NM9Hyw_|vveu09&=Jn$J^F|YzYo3f=s>58ZP8rJ! z^6yk`?qMyPYuAoyZk!;@z9_wzEe#S}LR&9`cL7%Zlw-;Lzq+}fR|0nUlwyA6>>NA+ z8|>3!{64dfKna+FwH}(L%#^XwOuRGMI@UfpVCJcJMN3qEU)|(71y;#Q=9K>B(*isp z+2*V)v(3_q+LG+E`87CRGp#&VgHHpyx8kNfIXK7w)=H2Fj1+%)1 znO0nuX|#qwmdc^Xk5uEb$b5AOlvUO#*~-65+iRxB4L zi^~*qj{G6YZ!(afPJ1ipp2 z9Gxu(pRTTcOH}i!2S@}VWD!F)j^~ZW0xP}P%)v^$V zLSRCI$jykND4v8~prs}I{FNg$+Jr0TvzOPZBsYFG$45%{bdOO=Vy$Dk_ee(`M}OX+ zl0{*>JrTPa-@8d)@U|OAaNq&KcCf6T>(@o3pc1kAV3~3W&G9R>EHv3J6tldi_`czQhFj9Tj*|Rhb?0`AvWzsB>SVDb$0w(G0 zU2$-{Yr)A430~?-m;3Be=MYrGatK-N>~A+ZUQZ&cWP(hp&;QAQ$5UDGgg1SgpscfR zXPIEzbl#KB&eI0ZaP_w_#npjV71(Wk<=+e5G6%+p-sF9zTg!w-4nYBWvYLLSa2I@& z+69NfUDTV|FyQvciNLRQ$?csO@ObhafSiZK}Wj2&Wk7vII}!Cy1^g82@u7(B2~JV>UVWwH`!f)4WYI z6Wv7irT;E|(J4+HL|sH>X7^w*e90zeExndPoyUV1o*oFDnkqJnA&ira+-ZZ!CYsut zui)iDF+SNmaN*36chKIdfRldCbr}UE%{9(TF{#@+Y?0Fz8pn7>i-1!EqaU&YMXS96uo?x`2QEWRO z7qOYGVsAO@6{CNmeG=`D-RgH!*#G7&49xf3n&<)d{40Yi8E={N6z(8y`s|&_7w{3r zlznLXivPWU@+dt!yy?BIocWe<<>DkLBQ%q-f-#$%GXOCwinA(`r(ApQprae3E&#z| zh>qt}2P#j-nOu@PWO!f)e6LRkdVvQIPDQ0hwIz>S7{wMw;#t#mJ`SJs+vgL2Vxc*skS8_O%#1>vm%&5k;h2@$e>zZq{nxj*E$t zCd@7g7ATYzGdNe*%EM^&Z>7s|CN8J9Qr*Ka`H8DDDwGNVJO}_Vp58$p&$+srHR8tz z)`_Q3aRn3fPVvsr1%P-v1PLZ0c7E5K(B6!pZgdw!%1}8$YgJebsZIoTdQWKnpA%Ii zLxC@#;G@0B+jGg0!k|gc`AS09ijzMa1WBqk8V?1=2Jp@G?LcG&t5-f*v*@kGWRu%WIO0S$aB&1Lz>hterqN19{whGw%`hQ~ zCQ}>n`i3ALsd?1e+7<2_#+L!#miz7#UYcc9&UrrM?VDN_Yzj5>NgqrpQ~F!9e#I*e zhPCkx_osg4*^&u2rvXp9rE?MDPJTYWGe0QBmW(N+v=^SxPI0T&;Rt>TN7`T|8U?O!JD3+l70ACN zAYce;nR9vO{mY@6)m3+;CwKKArLv`v*@1?=1ig2nI;<;n6uXvd-pw$fT7^Y7LTo;X zm{GmTc#r*mVPiPfN?(!=!`YS@){m@`Jr@0=o@O#qcFL3|)~H#7yHKqzWvm~_%~@Yk zvfL<_mNIU{HJsJP!h81)Q-FQfk?Z%O-e(D|TPuz$a+5)LK7yW>ehq3Pc1z9u209v) z=P&_s54E(`?4dUu&8s+6w|uDv_0UN954BE0X~eUml}h?vCT;D`fj&B~Q9QUU4dfye zo4A)lAoDrz`|)^I8u9=DMH^{$>ss=RRQ6_mpBu%*y=;f-SHL?_hCnw?Lh0IP(438# zDY}Q$Xb_K76!Os&w}CvcZcpzS{6ZvlDd`|!}Sd^sP2MX=f z`ADD+@mk^qn{qPWc^DPy+qJR0oI~aR;+Ao!qnKS~N&guP{N^7WgwYD6&m`2wG0~k4 zVm?V~5fc8N%Fu_lUHFiHQRk`3C_V5&$Y{TTXV>Rw4j55?iY7_J56nkC{_!nyg}Z6Bt@O%Xn$ z)i$V>kCzvZ+U?eIesInJ=`q8~DkHM^$b9f?p}s-AK>`GS5HQ@oAW=o{!_j!tdLSH@B;ljE^CL^vrg0h zjUMph|M?kINJZ6j!?bM2^?XIubi=f4$MyUmjN&BC@}jKjrtSJ+w;!i@S+~RSbiQ0~ z_s8?~us`drKo*^;s2ZuSV@MI|6iNxqmnn!1@rp|j;hT}z2VG>DTXZkII`T=spXuJG{Vvd-WtpO*$z5G z7u68nM)Bc2;Xg$oNTwvP7&tkUXT0Owvvkopq-g+h31uGG#^kR-M}aerB6*&s$efub z2|7_miS6aQte&?S2zoSEed2Y*N6;|Kkz$VjaTQk&RTOQLqawhVJb5 + + + + diff --git a/cms/static/cms/fonts/src/advanced-settings.svg b/cms/static/cms/fonts/src/advanced-settings.svg new file mode 100644 index 00000000..3913a36b --- /dev/null +++ b/cms/static/cms/fonts/src/advanced-settings.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/alias.svg b/cms/static/cms/fonts/src/alias.svg new file mode 100644 index 00000000..041a8b88 --- /dev/null +++ b/cms/static/cms/fonts/src/alias.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/cms/static/cms/fonts/src/apphook.svg b/cms/static/cms/fonts/src/apphook.svg new file mode 100755 index 00000000..50a402a1 --- /dev/null +++ b/cms/static/cms/fonts/src/apphook.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/archive.svg b/cms/static/cms/fonts/src/archive.svg new file mode 100644 index 00000000..5797df62 --- /dev/null +++ b/cms/static/cms/fonts/src/archive.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/arrow-right.svg b/cms/static/cms/fonts/src/arrow-right.svg new file mode 100644 index 00000000..0207bb1a --- /dev/null +++ b/cms/static/cms/fonts/src/arrow-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/arrow-wide.svg b/cms/static/cms/fonts/src/arrow-wide.svg new file mode 100644 index 00000000..5236a284 --- /dev/null +++ b/cms/static/cms/fonts/src/arrow-wide.svg @@ -0,0 +1,7 @@ + + + + + + diff --git a/cms/static/cms/fonts/src/arrow.svg b/cms/static/cms/fonts/src/arrow.svg new file mode 100644 index 00000000..f3690aa3 --- /dev/null +++ b/cms/static/cms/fonts/src/arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/bin.svg b/cms/static/cms/fonts/src/bin.svg new file mode 100644 index 00000000..5ce5a013 --- /dev/null +++ b/cms/static/cms/fonts/src/bin.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/broadcast-off.svg b/cms/static/cms/fonts/src/broadcast-off.svg new file mode 100644 index 00000000..f69a5d4b --- /dev/null +++ b/cms/static/cms/fonts/src/broadcast-off.svg @@ -0,0 +1,22 @@ + + + + + diff --git a/cms/static/cms/fonts/src/broadcast-on.svg b/cms/static/cms/fonts/src/broadcast-on.svg new file mode 100644 index 00000000..d1553945 --- /dev/null +++ b/cms/static/cms/fonts/src/broadcast-on.svg @@ -0,0 +1,22 @@ + + + + + diff --git a/cms/static/cms/fonts/src/check-circle.svg b/cms/static/cms/fonts/src/check-circle.svg new file mode 100644 index 00000000..8518710e --- /dev/null +++ b/cms/static/cms/fonts/src/check-circle.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/check-o.svg b/cms/static/cms/fonts/src/check-o.svg new file mode 100755 index 00000000..8b65cd99 --- /dev/null +++ b/cms/static/cms/fonts/src/check-o.svg @@ -0,0 +1,19 @@ + + + + + + + diff --git a/cms/static/cms/fonts/src/check-square.svg b/cms/static/cms/fonts/src/check-square.svg new file mode 100755 index 00000000..c710cc4b --- /dev/null +++ b/cms/static/cms/fonts/src/check-square.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/check.svg b/cms/static/cms/fonts/src/check.svg new file mode 100755 index 00000000..4efa93fe --- /dev/null +++ b/cms/static/cms/fonts/src/check.svg @@ -0,0 +1,15 @@ + + + + + + diff --git a/cms/static/cms/fonts/src/close.svg b/cms/static/cms/fonts/src/close.svg new file mode 100644 index 00000000..9e57f4c1 --- /dev/null +++ b/cms/static/cms/fonts/src/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/cogs.svg b/cms/static/cms/fonts/src/cogs.svg new file mode 100755 index 00000000..1bddef8c --- /dev/null +++ b/cms/static/cms/fonts/src/cogs.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/cms/static/cms/fonts/src/comment.svg b/cms/static/cms/fonts/src/comment.svg new file mode 100644 index 00000000..49ff1475 --- /dev/null +++ b/cms/static/cms/fonts/src/comment.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/compare.svg b/cms/static/cms/fonts/src/compare.svg new file mode 100644 index 00000000..273ca385 --- /dev/null +++ b/cms/static/cms/fonts/src/compare.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/copy.svg b/cms/static/cms/fonts/src/copy.svg new file mode 100644 index 00000000..7180b982 --- /dev/null +++ b/cms/static/cms/fonts/src/copy.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/cut.svg b/cms/static/cms/fonts/src/cut.svg new file mode 100644 index 00000000..e5505bf1 --- /dev/null +++ b/cms/static/cms/fonts/src/cut.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cms/static/cms/fonts/src/edit-new.svg b/cms/static/cms/fonts/src/edit-new.svg new file mode 100644 index 00000000..2bbefa8b --- /dev/null +++ b/cms/static/cms/fonts/src/edit-new.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/edit.svg b/cms/static/cms/fonts/src/edit.svg new file mode 100644 index 00000000..0a1d7443 --- /dev/null +++ b/cms/static/cms/fonts/src/edit.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/external-placeholder.svg b/cms/static/cms/fonts/src/external-placeholder.svg new file mode 100644 index 00000000..07082eb9 --- /dev/null +++ b/cms/static/cms/fonts/src/external-placeholder.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/cms/static/cms/fonts/src/eye.svg b/cms/static/cms/fonts/src/eye.svg new file mode 100755 index 00000000..86096be9 --- /dev/null +++ b/cms/static/cms/fonts/src/eye.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/forbidden.svg b/cms/static/cms/fonts/src/forbidden.svg new file mode 100755 index 00000000..ca1d9439 --- /dev/null +++ b/cms/static/cms/fonts/src/forbidden.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/cms/static/cms/fonts/src/handler.svg b/cms/static/cms/fonts/src/handler.svg new file mode 100644 index 00000000..ff1ae377 --- /dev/null +++ b/cms/static/cms/fonts/src/handler.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/cms/static/cms/fonts/src/highlight.svg b/cms/static/cms/fonts/src/highlight.svg new file mode 100644 index 00000000..57d749d4 --- /dev/null +++ b/cms/static/cms/fonts/src/highlight.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/home.svg b/cms/static/cms/fonts/src/home.svg new file mode 100644 index 00000000..d18cf4ab --- /dev/null +++ b/cms/static/cms/fonts/src/home.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/info.svg b/cms/static/cms/fonts/src/info.svg new file mode 100644 index 00000000..b8d741bf --- /dev/null +++ b/cms/static/cms/fonts/src/info.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/layers.svg b/cms/static/cms/fonts/src/layers.svg new file mode 100644 index 00000000..c34ad6af --- /dev/null +++ b/cms/static/cms/fonts/src/layers.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/list-ol.svg b/cms/static/cms/fonts/src/list-ol.svg new file mode 100644 index 00000000..d728bd74 --- /dev/null +++ b/cms/static/cms/fonts/src/list-ol.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/loader.svg b/cms/static/cms/fonts/src/loader.svg new file mode 100755 index 00000000..8e15598e --- /dev/null +++ b/cms/static/cms/fonts/src/loader.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/cms/static/cms/fonts/src/lock.svg b/cms/static/cms/fonts/src/lock.svg new file mode 100644 index 00000000..94c5994f --- /dev/null +++ b/cms/static/cms/fonts/src/lock.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/logo.svg b/cms/static/cms/fonts/src/logo.svg new file mode 100644 index 00000000..5519e408 --- /dev/null +++ b/cms/static/cms/fonts/src/logo.svg @@ -0,0 +1,2 @@ + + diff --git a/cms/static/cms/fonts/src/manage-versions.svg b/cms/static/cms/fonts/src/manage-versions.svg new file mode 100644 index 00000000..78d32db4 --- /dev/null +++ b/cms/static/cms/fonts/src/manage-versions.svg @@ -0,0 +1,26 @@ + + + + + + diff --git a/cms/static/cms/fonts/src/menu.svg b/cms/static/cms/fonts/src/menu.svg new file mode 100644 index 00000000..3887245e --- /dev/null +++ b/cms/static/cms/fonts/src/menu.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/minimize.svg b/cms/static/cms/fonts/src/minimize.svg new file mode 100644 index 00000000..840bda1f --- /dev/null +++ b/cms/static/cms/fonts/src/minimize.svg @@ -0,0 +1,2 @@ + + diff --git a/cms/static/cms/fonts/src/minus-circle.svg b/cms/static/cms/fonts/src/minus-circle.svg new file mode 100644 index 00000000..09950350 --- /dev/null +++ b/cms/static/cms/fonts/src/minus-circle.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/minus-square-o.svg b/cms/static/cms/fonts/src/minus-square-o.svg new file mode 100755 index 00000000..1e498820 --- /dev/null +++ b/cms/static/cms/fonts/src/minus-square-o.svg @@ -0,0 +1,18 @@ + + + + + + + diff --git a/cms/static/cms/fonts/src/minus-square.svg b/cms/static/cms/fonts/src/minus-square.svg new file mode 100755 index 00000000..74408847 --- /dev/null +++ b/cms/static/cms/fonts/src/minus-square.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/minus.svg b/cms/static/cms/fonts/src/minus.svg new file mode 100644 index 00000000..18742400 --- /dev/null +++ b/cms/static/cms/fonts/src/minus.svg @@ -0,0 +1,2 @@ + + diff --git a/cms/static/cms/fonts/src/moderate.svg b/cms/static/cms/fonts/src/moderate.svg new file mode 100644 index 00000000..f673db6c --- /dev/null +++ b/cms/static/cms/fonts/src/moderate.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/paste.svg b/cms/static/cms/fonts/src/paste.svg new file mode 100644 index 00000000..328b8c24 --- /dev/null +++ b/cms/static/cms/fonts/src/paste.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/pencil.svg b/cms/static/cms/fonts/src/pencil.svg new file mode 100644 index 00000000..e2d40f1f --- /dev/null +++ b/cms/static/cms/fonts/src/pencil.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/pin.svg b/cms/static/cms/fonts/src/pin.svg new file mode 100644 index 00000000..c3942ec3 --- /dev/null +++ b/cms/static/cms/fonts/src/pin.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/plugins.svg b/cms/static/cms/fonts/src/plugins.svg new file mode 100644 index 00000000..d185f3d3 --- /dev/null +++ b/cms/static/cms/fonts/src/plugins.svg @@ -0,0 +1,2 @@ + + diff --git a/cms/static/cms/fonts/src/plus-circle.svg b/cms/static/cms/fonts/src/plus-circle.svg new file mode 100644 index 00000000..4e933c5e --- /dev/null +++ b/cms/static/cms/fonts/src/plus-circle.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/plus-square-o.svg b/cms/static/cms/fonts/src/plus-square-o.svg new file mode 100755 index 00000000..5acacb76 --- /dev/null +++ b/cms/static/cms/fonts/src/plus-square-o.svg @@ -0,0 +1,20 @@ + + + + + + + diff --git a/cms/static/cms/fonts/src/plus.svg b/cms/static/cms/fonts/src/plus.svg new file mode 100644 index 00000000..59c87476 --- /dev/null +++ b/cms/static/cms/fonts/src/plus.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/publish.svg b/cms/static/cms/fonts/src/publish.svg new file mode 100644 index 00000000..026acc47 --- /dev/null +++ b/cms/static/cms/fonts/src/publish.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/puzzle.svg b/cms/static/cms/fonts/src/puzzle.svg new file mode 100755 index 00000000..bc8bbc1b --- /dev/null +++ b/cms/static/cms/fonts/src/puzzle.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/redirect.svg b/cms/static/cms/fonts/src/redirect.svg new file mode 100644 index 00000000..53f2620d --- /dev/null +++ b/cms/static/cms/fonts/src/redirect.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/redo.svg b/cms/static/cms/fonts/src/redo.svg new file mode 100644 index 00000000..cc71a755 --- /dev/null +++ b/cms/static/cms/fonts/src/redo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/rename.svg b/cms/static/cms/fonts/src/rename.svg new file mode 100644 index 00000000..df79ed42 --- /dev/null +++ b/cms/static/cms/fonts/src/rename.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/scissors.svg b/cms/static/cms/fonts/src/scissors.svg new file mode 100644 index 00000000..fdbaf9fb --- /dev/null +++ b/cms/static/cms/fonts/src/scissors.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/search.svg b/cms/static/cms/fonts/src/search.svg new file mode 100644 index 00000000..d81b4d08 --- /dev/null +++ b/cms/static/cms/fonts/src/search.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/settings.svg b/cms/static/cms/fonts/src/settings.svg new file mode 100644 index 00000000..ec9dd12e --- /dev/null +++ b/cms/static/cms/fonts/src/settings.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/sitemap.svg b/cms/static/cms/fonts/src/sitemap.svg new file mode 100755 index 00000000..c3285f26 --- /dev/null +++ b/cms/static/cms/fonts/src/sitemap.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/squares.svg b/cms/static/cms/fonts/src/squares.svg new file mode 100755 index 00000000..b2cab952 --- /dev/null +++ b/cms/static/cms/fonts/src/squares.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/theme-auto.svg b/cms/static/cms/fonts/src/theme-auto.svg new file mode 100644 index 00000000..e0001aa6 --- /dev/null +++ b/cms/static/cms/fonts/src/theme-auto.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/theme-dark.svg b/cms/static/cms/fonts/src/theme-dark.svg new file mode 100644 index 00000000..e781cf8f --- /dev/null +++ b/cms/static/cms/fonts/src/theme-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/theme-light.svg b/cms/static/cms/fonts/src/theme-light.svg new file mode 100644 index 00000000..13fc3dbe --- /dev/null +++ b/cms/static/cms/fonts/src/theme-light.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/undo.svg b/cms/static/cms/fonts/src/undo.svg new file mode 100644 index 00000000..4b36c366 --- /dev/null +++ b/cms/static/cms/fonts/src/undo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/unlock.svg b/cms/static/cms/fonts/src/unlock.svg new file mode 100644 index 00000000..41f7a428 --- /dev/null +++ b/cms/static/cms/fonts/src/unlock.svg @@ -0,0 +1,3 @@ + + + diff --git a/cms/static/cms/fonts/src/unpublish.svg b/cms/static/cms/fonts/src/unpublish.svg new file mode 100644 index 00000000..fccc1bab --- /dev/null +++ b/cms/static/cms/fonts/src/unpublish.svg @@ -0,0 +1,22 @@ + + + + + diff --git a/cms/static/cms/fonts/src/view.svg b/cms/static/cms/fonts/src/view.svg new file mode 100644 index 00000000..86096be9 --- /dev/null +++ b/cms/static/cms/fonts/src/view.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cms/static/cms/fonts/src/window.svg b/cms/static/cms/fonts/src/window.svg new file mode 100644 index 00000000..28d4e527 --- /dev/null +++ b/cms/static/cms/fonts/src/window.svg @@ -0,0 +1,2 @@ + + diff --git a/cms/static/cms/img/favicon.png b/cms/static/cms/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..dd7281f3332392bd23a40e60d5bc44c7faa58215 GIT binary patch literal 10311 zcmaKS1yo$i(k>DtxCIS_;LhOg?(V@E2A5%Q_uv*FxVr}kZb5^)21sys*Ei?hbMAX< zz5D-rt!=%ls;j%Jy1%O35vs~E=qSV}FfcIaall>WOe z=$jCQ6$IkM&&ulV?#|-Q!Qu!8v9j^;@v#EfS=rf{p%lz6o(>RG4`v4!%6}wC0$t3( z)=m&>M+fr1B$}Ezx3HDA(O8*h;;PQ7zLA#9A!_9X&kX0S%;^+!ChmMCOYxtHa00PaS0A?X+8-6pBS$cFF>5G$St$|7F+j;*Rqt>8{@?&)R9G%fz4S1EKDqqqb3y>=Jp|89c2Dz9zJ=hCTA5!#s&roe%t5w znNxyr0kF(LA=z-@m?lHFckt_)+S2E;Lz+rtyBuIN33 zg@qX-!Vj8dnsD!Y`c%62w^NPwmYF5#u!goH?N|KUTo1ojRWTzC^ukuAq>!z)d3&{P z7F1tUhlR{m*t=MyMv5n-HRMMc@{ ztrU~;CAyaR7xA0n-;$p)WfXcPV+C-=at-f3yJR@Dd%{vi!jya#o143PH@LXC2(XmNWnf{MS~$phPkN49 z#yhe%Aiz5`ndr@yn(_v12Qe!jTgVIYfqiQqgLK*3qd9_E%A>sfDX5Ty$M923VbR4! zB$-h5-omL|aSIG>S1!5W6Y{WC@nqQ5$!dl7twX1 zRWO*8q!9qSvUVP>U*)%*oXYQJS5sET=f-(3yU*cN86O`Xfjh8a<8b28j650HhX28j z?&4ybk)?VZu^Q2~r{w7g&fUE!)yS(8G(mQ}f{@1^7)USw?v-kdmjKu0VAj~v^Pbma zZ?dEfa>A6noWtvkll<21vz0VU>Zbgi>!b#}fI9|aH~9}h`fS5hbHzd|nLu_T7}fa4 zR0b@`#B9rTAN-l@%ZpzW{y2$y^hNn%; zHDhrbw_uYtyCvGL<6lY`mNJ?RpuW#}3aOndEOe85t13D7j0_B37h4g9Aef8efiXty z%8Sd(Q1EXF`<3r{-?okuD8q<^NZIx?9Jw8yfg~`}XMn~inZ;JlK(1(7i&11|-pYTyaj>^HYn6L1$|P5_48P-g9F)W282wnO z-$=nIAV9MNCz#BM(lkCcM#AHERjjlQkfFdRDFOW+_Ve?THN8Xh3-(7;k>Z!SytoJo z4sNo4tb4l_6@Pa=_yMuu-1z&E1}8lB9F+)eI`La*mi^Gu& zc}0^`Q*{OlER-@Bv=QOH)ski|f(Ier^dqbQraySSz1zZ?0&+h73=RL_265u`-Ldo1 zZ~auQYRjpb(v@@CV4c*_-aeF|kjf%_xzJKxF288qdx%ELPKcD$#aaMq_EIX-bUnmp zcQWzc`C7~8`1E`WoJ8SFX1N)GYU6X>FTWGu`}n%pevc%`{&I75|p$M`}4Nb*J~ZLZ*1wxcV8vVe7DX%Zs7#a1Y)tvNN!;ZPUnij z$G{;vySedu00h}Dkj3d5(2BZoxVVU8^y_VJJ5Ra&Q9CvPwP7VWWX&$S4g~?&6B1AN zdj%@7IlK{vlZCl%Q~CE%>w1#0`>SoBHaD>*$C9O`r9_tfGL2pKEDKtdYz$Nby6-q` zyuApvNr{QQJIslELx>{Jcy(PdBwYd*yJ`dk1esCXAWKW%hkcnBKfkT3=;%=$;|v$B z6Jl^+(In0vuiF#fDEu+=lTMHG{G^icZu;Zns2&Wxz^#uR&u&l zkLf%<(+jWEpHN-R;*;H9({*Cfz~*zO+Ndva2e{MB;D*&GQEq)KY#b4JVPawFR1$@$ zhT%>4gN4@haFDULH?u{!NEC}iVsMt&g_0 zjCHypgMskZ`>P5x$%#4DhEXztwANn>>A?JWwe~9*J16i+SK;1u0tfo+R1C>;R$>eB z@oktU=etvMUyOJ51O_&fzYOIe=)wn~U0KOBYr z34GE$e*`_jX?|uFjzy?XPW>{PEwtH-xyCU}v#9SN99-1^Yt>M^}mdP<2Aaar`s~lI5e}}SpfRD_8 z{e_Vs%`t!oZI&rOEIFm}u0UPG45zmR={A4(Tb=pf)9$6pA%jv2h49A&$Ojm4Ow6YE zc$QZ$`mMr&%o?_ao-nuLH38oTJghf9N3&&{H^(CWug`IG<7ZQYgS*!YMhBBG7}qf| z9XQy|k~XYW8q{6Nd|p|dQ!nlMLITq`NL;8Ungm3QeFa-V&v5-TciCm?T3W|@dksgu zMRrE;H<@Y4MGJ>_K4R8-OG&<7G9jl(D=!Q4>3yBZ_Q6RV=R57!hn>h6CjpMFVUVS} zZ~8;&1giNMq7LMbT2z*yC&Wp`AJbq6^*?E8_4`0v zToF_dOl`%w85k?XC1g0V2uhT*JYR#in^`-1G{nSY)37+k7V~5SXJ3BYchwlhPzJDJ zj+aYnC4|2|JsdhF9LI;BjH7MBvT>*8wbk3k6u$$=6^A2t7Sl1;Hup`tu?QGVS;@%;$VWol`U>^Z&mP5kJ;R?FR{w8n&|ozGS)sUJ3eL`B2GAn%*8tj@~zfveoXg^)P=YV@nL^3@R#b$ zz4u~#M#sjKCWhj54Kfe_lF=(oGdQ?4n1qvYbPfk!#pZ~2KeD+%mZ6Z2OWoUf({NjRB;ZHPo&l=`5Wxr&xa@Ny91*@fn1wI}gg?_n} z7#S47vd!i$=++_s#a!mNlm)ExNpQD{d(t z0+*)Cw$1y?^Cb{%VR7;6cNZPkMjSSz3B<9MmbNtOZvf5_h*rR73{w6rn@^cAXM6i% zSNf9zq+EwM*iu$+w~mhN(k6pMoE`?0)~`=ilRm*F%Qb$p8A++4Yj?uO8IJ#`QlsAz zv>ztq|FV%F68EQo$otS)hw!dVL3pwAm=+Tg^J056ZRQLU`$KGhK^o7&JBw5Anl!?? z`ua9EX48r6XN_V(g>m28)uv+Q3^dv>|2)m0Sf6JfqR7Q>KhfsnlaeG}+}z!JIevI) z%2N|*gzEoc;94e5md{GcA|)Xq@ZM&~nQ(zPO-^;SwzTB4!)p1GUnwIKqnIX?6bdnxVbR22!#bz6*}j$?4g3SJj88uW=ih1Y~*YYKMF|s zh`H<*v8b#|aR@$4zW$`q#P+?oihNgbad8<)MDO^XlytsoJ-2L%=@TF|1on3ySsi6! zeEi+oG!WqYWN`zl_zPyf5G=~#x%ptj>13xVq#rgdE$tpbDj^}^=EjXlWV58WsHIJVw0Yl}NLm3S zH?&<{U!Mj??UFq*DvIc7a%gMIpklsqb;ehK=+u#a6@!F-abeK=A$nIW5Z0rWso-vH zxsim$sQv2cD6PZm7UJwyjij|9l7JoV{`4I+u$;(BkJCI7X693aI*Sf+Xi#^zD1buJ z|7)RkN$6v6dkTa6<>jRd*u}ZFqJlBw_l6Eq8f16eSPsN(_WP2xT|5l1NFcKpJ|6_P z@Cp7Qha-Hze9mTIdF+sM5ZFKuS)Hbo6XB%~;&r|f|Cp-k73P1U0a*qEKG z%}b9bwFg;5ywucQS!4^=GXusn$vwQHVyLL7uPuJ?6QTS)-&^J^IB5U;wydS!V&G&E z5D?&_M(`wp&B9Z(;>^Zwg|DY@jv!4hovm76qlxaajWK*L4a3usmWh)S9{_(R2zC|< zco!vE3w&>)<{z0U+Re(!N(DR)^t zkOYHjd5PW0TC$W&3_Bh~>i6`~r>ksr2ys8>#@|?)VbNut;|+bDM2k~yY$jz1_4vKH zsdSlYIsbCY#hSo59-C5()MRo*O%0xQk3D$2UNClcicf%7jklp+qqg&)$X2C+w@+I0 z_O7(DUTm^;(sLuA<3n`Dp+*ryt$KFbbf5f|nmV`|ThdBa^Yj!X<9XIdDwUtQa;S!gdP=6iw8ez zo#T;Da{u|^?fEAf_&?uGe4?BuZGepxQK)Ud26)gIxtj!$yXChcq0ocHuys*(*Hmiz zgMWy^UReqz0U%FwsF`LjKeYrjdXH*kl#TqAsyb+*Igx_h+#EkXu>f+w2VIR1A>n}|Qc_v94R~IjUb+fYs!D!F z!b5-7eEmOl`H^1l6r6Q3?RDo#goDP?<%AL4kIo*)?RgxF@$m3+dvafL-R$9>s`N-3 z?_8A^#cSU+FTi`hS%cTr%E<1hgxM6$r*N^1pHqeDi6`AloY}y}dLx7dot;30S@d?~ zp96oBl5pGgxe!5CL@)vp7HCXLWZ^k|zmenCpPs)~4wnH=DI#_GJL?pTXZ60q#eVj z!({+=xh^CI%+1bne#b+B7M0Ex0zW8@mJoVQc|E+mra2li%2|d-%Fbc);#m`9hXfXABE;1q zHC2k;HjQrAR#nyX(h{=OG&P}EFy;WUWMy&D!=u^L+q>!a$bB5X2|{S-6s>X=|FaGl z4A#?YQ7ut z#u3riKS$jx5l-9ce!NuRZDO)A_y#bUr( zN}itKa6ek)^SP@X`uvPYAop3N-B)04ZY)`OVV2(7n&|QN11JBx_B=`H_p#A}aKcJm zt9>(vu1={}4be2p5m9Y7_x|&lLL|W&cJ}taV-+)gR*OJ`L2!%U$w6aI)62o$-d%tC z#9$1n{dE8})yw6}kBHMd7nz6qEIg_*&3;M8=c$>(q8)_G#tm%FjFsXZfxv~NYbh|e|HB< zLD8ZR#z!`qogcqE9h1M{Ax$#+)~yp#I%3uH+YNQf2=--)U8yG`=E)VQlU&6tEicnh zuL?R-cpWXWDe-J>^egDp3=p*=8CBF&X%n*=;^Mq`x{M1x!8UxITRiuVkq(v>)kdr@ zG`g+dy1avfHLjSuzw@|0UTJfM$0s0oyCOWywuj!s!yLRkKR6SwHt3#V%+$k&8Uv_xx2K|y{?YfdXyoSa>wSP|^%YTq9asLiB%$DJK27Ny8KG&be} z2B-4_r*T(XzuT{bF>Rn6Bxj_$KR?72$i!j3UtF*1NvfD5{uUPyIDk#X`sq%9dRtqS zQo&RLilGV$RM=Q?)?BR^*x~!b26MWc&VRLBo}4%+)+bcNx2CZ8f);B(Vz8%)(!rDl zsIusE_nVLBtT&y;m5@k=Y9lT_T(48TxCqe!;yvxEv{4(NaZy*(R#vwtr7fnSm)j3- z1^kLR=}NLd*^(IwJ7OQq@|5Ic-!oOJM=ddUzB?HYBO~EW7N+*=Bi9Z>J^~k5W%zDc zs*t?jCx;6)M0{o*t734dGBOM$8)8t=9gS9x#-tjoz$2QCW2X^Qf$& z4}TtGq^DX@1B#{=oUj=ZXrp6K$tR&}4xp71L5yE;qc$cc!F3}cQgZ-iWO!6OroZ9+ z$y|#|iI)`@)+CXwZG|@4;&@h@YUAQB-x3tN{L)fnG4t#4cVlhj$EN%Ro6b-SNOzPU zn*;FLD4PLQ8!766Vlfh)qVUaJ7Hyp zeX5PQ7#ihI`A}yZ3!mX-(;c9k6_nwt^iF(Z^?jI0X#6{@-_jtk$=KJXG&mJR8#$hgV#7ezzsDrb$DZCOtGt*N#-BuUkm`!wQ`aW872-#UU z=LD);cjegHbmKI7yYsj98*cBUHAqZf`5Mv(d?evRoppVt+g zi17!2IwFAAL4x-3{2UhEVpkzPirK&~o9DHPQD=ipqI-IJW~qWd;aak7try&(vi)JJo4e5{6}sXbp6gccGjMH=q?hiO(078aJHSVgN`6YWv72ep~F zxUK{dBYsi#YkbsA!5P@iEfzX2{7|UrczO6`*mjfnD2x%%({yo(x>)06yFaHP)FF6+ z3rL?|hecBkGdo#|*!1)vlMqrJ$l`TQWYGEaoSU25(13O$-BRd?aGh3Bpnxt7ql(k0dx-v}n|5>+}x zOtP&*chHBx<>gjob}uP+%7A+h@6)9Y-{0MSL_}%O~rVRGIrNylh(9lET^}K%^`FWFtRv8;T9tkdm(H(thYE)nO>jG!4+>(nLS6 z7o)eiJHGx7rY03=kbz@lWCdy9cnI2Ux1IW1%*@WiepRHA3Ik0vOWZKfvsgL`Ot)ua zNQ-&ti;bQz^oFC`&d>yC>RdUc^9u_HD$bWyR$9#zk1f^}EG^g6Qwgh7Rkye+1d)t+ zUN&}k`y14Ih0Yo=q>e0o{Zsa5iEWp)fxSDI{*12ZTRN#OLq+-Y^z>;GWVYVQO9XpB zvYQ_3VQ3_#nbd}z-3zXh-||ZK2F2g3*D%f|ndXM?BdT%+H*lrKK-AYXlnFzwsOj#m zZ(fJD3A&Ih$F#9roG~&m_AKcS_u5>~A{zS4e=2e|mrMoUENk`l`!BENmtl(H`#OtV&Zg_fo!i%Azg~@M6XA2XG#CiH3<)1B>Rn~=GUmG3KytR zvHLFL89O>!Qfj?n!-6eRzaFk|8P5_}Z}04T;9Pdv#F3F1?2jT4T557%sQxJA?e>Ag zayCEolGtdlJTSbBWVBbzlEGX`rywys{bqz!z$6rL40(ULUy*_9G!uhWWums0XU*Ut zp{fd9jdRH$zqxrUhG$plE5Kp46uT6(l=UE~;cpzNB&VFlWgFHb30o_vU8QdeiM&Rg znD`+Qye1+MON*~J`)y%(M~91?l!V7&t?e{!H#=jEt588!mH-5zbvu=Ia~m(y0QoIm z;6_^MzU44Sh`BvK=U%ssv&;#(gr?~FGrI_hJp0zy;{eivB$4mpo2m@_SN(tI=G4TM zgohU-Q7+APmew}s)&dwA8M(Mf75}7xqzP4pzlU?x_1n#yUh79xp$#x5mwN>SGG=u- z(bMucj-|WGcAT74kBg4}{JFf0@|2&OOUJ{*!@&`C1nFMmZ=|L~ ze+_gnTAQm_@bPU=^F@-RP*71(32BCAFCAz~_FVbDWxy;^z;PwDg?rDQTXCE4XMHED zDgo2uEIgXq)JSA!XYugycXxKCv`}jE=9L@pB2=xu@!&}G zsse?Vn&R|QSv|1=0)L(UIv>fbMNm_l@{kRYDdx2`(-V(q)bjBW*V0-|yy2P^-*Rop zK5Cq7r>PV0x9(&5GItHu{nhAUGlK1fQ$WouT_Zsjl1`gHXIWg-h>7xG*{dInyq+$L zMCoy1{Qc!@EwQQR91753;5jarO7ZvZ--yEu*yUM@v6d(&I2sww;-I9zB}4&D9}fNc zR^Ga1cN}upH@i}HQOg)6e;?py3mBlNj2oeRP!1bGEum zC9rXS)otRcK!A=WHe$!mpv#ku&@yYH+1OnQvd6WzrhXPS~N!|Y+}+KNkY!nBhaqEHk)FARzf|M zU+j{cKFeVSXF?b3u%b2$?0E!ij<`6X`K7g7X-%DyR*Kpa9rYPN;T!cLNJdj z5#-KMaTLKoVC7`B%~{^@yWPF>;Q~pgtFtqEW9lGhH`89vN8ud*qs0hl0>EKaypot` zY@?8ko{{zSVx*??<)KTxtfR59v8-~%qI<8$>@yH@wcj;g z?EYecf&!zhnHRnasV*4_mqZRdPrCy8moq3>fR~RS9MAcY8hn3!D7Uo4XI8h^BR1c+ zY-I@>9h0eER#{rQRl3>bCa}1)#7&7vJoFrE8!sjF>bhyJOz670`>y$~2>pNAy7T{S h?z!O|c|{;Qrr7FF)+Q^LN{=KM4i(8?XPda}9O&j!7x1_YBSM-2G<7 z>3dh7f7o#Gv8JK(z31;|9k{mc^3#s>C!%xfuHJrf`pm_k#Om;ZiBnJgS$*aAl8e9R zo%>xjeaoAV-#&f&_4Mu6fQfzDQV3lmHNLB3XlkDcKkXBHXm_AccN=kl8YsVrfX?gaFs+yX54ryt|wKSo{`2<NYb zUv>7rrlE7qrhvvBp+{c)UwG^PzNi0}-}zs&Ik0krU;WnL?T`LVzxIFq{r?Tyf-Bbh zHtq~Pedglod;d2)_`mZp(4wHTuYpzsS8w#&bnQ^(dcR$df!v^`onbSt|6g$P|CWdU zm)!n8|K|Uy4ZfA@eK$V%-?%-bdV~M=NB>W~`oI6_{}p%suetaC{}YC)4SrP{{hN1% z&%N>g$n*b8Z~t#ybKKE0(kC*%Z0e@a?CyInK0SN$<^TWx3)w2#=%N)wYWTM35t|6wz7aG{KM?ip$%|T4uj8*hRlYgkNu(-26AFGhB)U~i1 ztgMQzLZb3gE{0ETu(O+bO3HHcnhS;oGzEq7{Slay*x19t6=bvE(RnThQI#n@839g? z0{j*d|Ck>nA7hf>l3Nqu)X3D(7Hq(<;?Sh0Y79CSe`Y%sdrg@gP~`M*!kG!@9UB=K FtO3mL_vrut literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/icons/filetypes/html.gif b/cms/static/cms/img/icons/filetypes/html.gif new file mode 100644 index 0000000000000000000000000000000000000000..34e79d1622ee2cab22745956a0ad0af0c64539f6 GIT binary patch literal 285 zcmV+&0pk8gNk%w1VGsZi0K^{v>+$o5w%4uJ`HISSC2_`9t5rNhRNLt7qu7d@%KFIP z@j9C7Zm`VI>AX~t+b)(UsLt9%pgKN`ipS5`OQ+6w$xdgrjeVcEN~pKz_{dUWdslFg z^7i`W?e+iv|NsC0A^8LW0018VEC2ui01yBW000G=peK&x_?;dUtk=c1mxl&N2iQm5 zb-^ZkiVma@Avhok1!v{+90r93Fd(rAI9QDcAn{}d3riy+D08$PhaiK%P$~nc8BGub z7>joS@tBJU2Y7izd}SSIdjl323j|ea2^|Jo5g8Q^1Oy412?+<2P6H8f3=T$}o}d#P jLzxb!odBR4N;e%jxBwHN7aP7Bz#0a_!)PVPBq0DhWzlum literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/icons/filetypes/java.gif b/cms/static/cms/img/icons/filetypes/java.gif new file mode 100644 index 0000000000000000000000000000000000000000..6592a87a014abf6178ae2bd407da7110c2cc7ed8 GIT binary patch literal 650 zcmV;50(JdINk%w1VGsZi0Oo%Ho1?1Z>hZqb{o>^1Qe%L0mb2{b@Amomqq@;NDHQGY z{!>m#>+<=QrnR2V`|9!cm8iPq?e^yF^ILkJzrMWl_WAPl`B`p^-skVG)8%wcEh#ZW zOj&VBRB29Lc|Al`LQ7rp^Yy~V%+l7``}_N*()*Um`|a-V^Y!-T>Fk@$`^U@C*XQul z=kP^OVV}d-YM{QOX9jF-&+j=}Nz`}^?m^ODH>ps>H9vcu}@?onZWQ$Q-x*4wYp z;y_1N#LCd1&-F|M2E=5pd(8ai& zrmo}c_pjFcf$o4BR8%jEC%o20B+U~XrJr*)65=kNE-yr^DGI?&YE-QVAcmZFcG zr<9_w)!XFp_4tFctItD09W&&3V3Kda)00uo2Pi651{DZ%;=}+aBKq`kFvA3fAA{B$nA4yE1PCR9s4#Iu%ZEV|=u~(hK>~~b kUAkb%a%V$I85g1u@W7$N7Z7wKSo{`2<NYb zUv>7rrlE7qrhvvBp+{c)UwG^PzNi0}-}zs&Ik0krU;WnL?T`LVzxIFq{r?Tyf-Bbh zHtq~Pedglod;d2)_`mZp(4wHTuYpzsS8w#&bnQ^(dcR$df!v^`onbSt|6g$P|CWdU zm)!n8|K|Uy4ZfA@eK$V%-?%-bdV~M=NB>W~`oI6_{}p%suetaC{}YC)4SrP{{hN1% z&%N>g$n*b8Z~t#ybKKE0(kC*%Z0e@a?CyInK0SN$<^TWx3)w2#=%N)wYWTM35t|6wz7aG{KM?ip$%|T4uj8*hRlYgkNu(-26AFGhB)U~i1 ztgMQzLZb3gE{0ETu(O+bO3HHcnhS;oGzEq7{Slay*x19t6=bvE(RnThQI#n@839g? z0{j*d|Ck>nA7hf>l3Nqu)X3D(7Hq(<;?Sh0Y79CSe`Y%sdrg@gP~`M*!kG!@9UB=K FtO3mL_vrut literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/icons/filetypes/mp3.png b/cms/static/cms/img/icons/filetypes/mp3.png new file mode 100644 index 0000000000000000000000000000000000000000..5c34baa7b6c4d02dac4c78b4aa774ee727556f6f GIT binary patch literal 388 zcmV-~0ek+5P)B zbI%ns!NX7aTV}?cd&6ITPW`a|sTS63a`LM^ ze0+aq`1bYFX2#;<0HP>byL{OSE(|~C_e>2DA&z63GXaDBS!Sne4D8+4{PNYaGdFHs z^N02yIhO=b0B?q2{GO@N(b-NMM`SzOnVt=)*Xw-yK8dQ*+q<(llWsbD_4?)BB@N7b zFi#VTe{Dov1biuW<~ddP!E_ZS&@LN1qY(LhcvP2fEMt-(k3Y;UE_ec<5kO?0mf ziQ|~nYgW_VzLBl7H%#4P1Q!I1jlRPa*ulO z5d>&%X<_v37@1U>QmKdp0mWhw)qqm5NG8*?fMEY12z|Ty8qX<$hyX$ZTju|c$WnyH zG6e4P4lSFUVbT+09S>(>;{1(UT}SetJUhT+lMcWw@aVYneFOdPc=x-RP*RV>RQn?2K>)j02G4}gE2m?>oEIqh9;e$tLxN(^0%+IfcY3;i~+#&T}q{L5TXc1gx=n6IyyT@ zwWe`h7lp!ey|XW0kK0!+U-Rt9LI5!I^mGGJNMOVOiew@|GMVJW@srGdnbRW12E08B z;qxJasGwB}w6Xvd_Q7t%AV&5wh%6|jSX}&0c<-O;>pM*}Fj5@?f<|l2z(7AJP&80t zMWF%{guDj`8?9}|9zUSAvkO2vb&!XT#wah80q7s-CsHhp3d9&tU|X8n&MuQ9>i~=v z188P&@DBwdCRQC=P=IA=+EXoz76ZxcsTQ=hStykN$Ye7Av!Kvg^W^C>lv3d|g;Fpy z6n{LF+Q)*e?Uk+V&7*B?hZ>^W|0!yvg9d102V>I$fL`cO2(fbTOI`e5&{q k+iqI+eee3s8@C1EHxLz17;1c2=l}o!07*qoM6N<$f-g%iWdHyG literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/icons/filetypes/pdf.gif b/cms/static/cms/img/icons/filetypes/pdf.gif new file mode 100644 index 0000000000000000000000000000000000000000..576f72ba91386adb143426b8136fd462a3474b47 GIT binary patch literal 208 zcmZ?wbhEHb6krfwIKsfN*3IqjuV2;G)hAA!x~HagtF7%pa`H`a@q2UU{&#b`ZfEz| z#^zs5&F8kZ|NsAQc5{2Aum9J^2FPY04k-R)VPt0zV$cC82ieKM>bpRtFC~&ILuG=oR2d9KUzTwnNK(7r{ZVFH!o)0*vJ3O#1eh5YIYhXw Zb9>17SMNsdB$2vlE8dlcX|ga_0|0hONh<&V literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/icons/filetypes/php.gif b/cms/static/cms/img/icons/filetypes/php.gif new file mode 100644 index 0000000000000000000000000000000000000000..d99790321408a9ed5b87020b00c3bd1acfd3d3e3 GIT binary patch literal 296 zcmV+@0oVRVNk%w1VGsZi0K^{v;&#C>Arw0fPbbPzJ^YGE*2>n}L8P(di}#fwKSo{`2<NYb zUv>7rrlE7qrhvvBp+{c)UwG^PzNi0}-}zs&Ik0krU;WnL?T`LVzxIFq{r?Tyf-Bbh zHtq~Pedglod;d2)_`mZp(4wHTuYpzsS8w#&bnQ^(dcR$df!v^`onbSt|6g$P|CWdU zm)!n8|K|Uy4ZfA@eK$V%-?%-bdV~M=NB>W~`oI6_{}p%suetaC{}YC)4SrP{{hN1% z&%N>g$n*b8Z~t#ybKKE0(kC*%Z0e@a?CyInK0SN$<^TWx3)w2#=%N)wYWTM35t|6wz7aG{KM?ip$%|T4uj8*hRlYgkNu(-26AFGhB)U~i1 ztgMQzLZb3gE{0ETu(O+bO3HHcnhS;oGzEq7{Slay*x19t6=bvE(RnThQI#n@839g? z0{j*d|Ck>nA7hf>l3Nqu)X3D(7Hq(<;?Sh0Y79CSe`Y%sdrg@gP~`M*!kG!@9UB=K FtO3mL_vrut literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/icons/filetypes/swf.gif b/cms/static/cms/img/icons/filetypes/swf.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e17277b192b31096c00b23855365568818918e3 GIT binary patch literal 279 zcmV+y0qFimNk%w1VGsZi0K^{v_4fIernZi*#N_Mrbd<5P*!$Pz@$2&Vn#}uGaFNPp zdrDVr=&iMhyX@6IP1A;%Qek`Zz{J3tw?s`}`sC)|aC+ZaWShRyDKSGoMpn9go7LOo z%goW%Ej$1J|NsC0A^8LW0018VEC2ui01yBW000G)peK&x_?=!L2v@rjFyWzsF&y}D z4?~m8p3A@>Q8*k5NdeICi7tRgXG(qG01%OZLG4sLl#UWB0#v9Du%)9|W^0kKI$ zK~y-)osz#x96=PvKeIctdwY8c2c87HAjUuvQi%#exK<03CRIovmX@Zl734@85JC_v zVsU?h_F|`?jRXq|4-wKFnsCYe^7huT*uA~IUqtdP-psst@56gcUpu(rH;IkbZBpPmEIx~Ve$VvZ-% zZ%8B@(vvv~>kE!-2iC5NeaX^ENBc@~k92kxuh~Sp888z;4EK;>KOi~&3d2ePzc8i5 zkX8p!yDE~*Ob$$*n#r-do#*)EjMr~Jkj;)UVp^Rl0ZKo1I6pl=;G?yVn{WVd-6YTE zS9xmKEVMiT>VHaHmw#e6s@*M2JbnaPgCJN#l@2%iTLQ{bcLV(TZ$J|g!bgr?yK|>C z2to62sT*J_6~*he5n*DR8wbT_U>Jb3V(tz|3^>QXrUbC;B%ZPmy%_}a&_aL)5h5Cm z299ON0S;QKklt^D-ibV>YN71dM^cVU#q)c|6_wiSlct4K@d_S}G5T_m`zb&*wRsB| mV&h|Ki&kx!|4{8l7w!Ny5QJ9<7zo1v0000Tja literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/icons/filetypes/ttf.gif b/cms/static/cms/img/icons/filetypes/ttf.gif new file mode 100644 index 0000000000000000000000000000000000000000..0569425f16c26b77196b63912475492931ded6f5 GIT binary patch literal 648 zcmV;30(bpKNk%w1VGsZi0Oo%HM_h&L^7)phxTwqC@$~tasJQC!_vP*O=I!&6rMJi9 z{=nb;TY8?J&ig@RsPy;y^Y;1j_4rwCjFhIg-skVV-Tk%M{6Ax;uG8f`VW%lELrht5 zNmOZ0UU@x4RYFT${{H@{)BD2U{j%8ny4?J&)%&;F{FI}yqR{)s;{BV=`=rtP?e_k^ z-~E=#`^4e>xZ3@&(&KuMt59i-gj-2CkI{*R!sK}c78qrl?n@UqwY$>aUL-u-ly zv4g3@xZ3=dywjh=*pQ*I)!XEksJP?o_wMlWZ;r2*%>U@`^;Kzx=kNEg*ZhjT?~cLo zgR|qN(fjrI`SJAohZeV{p9QNyWRbLp}eiu`>)pfRcC~Bm$ml! z`-7{-d7ipbV}QBa{mA70jIzs&w9V}C_sh)D?eX_KVW7-v@oOaTT5phiy&mwquyJYaVz zFAFU_EKX1og98r*xB?Rs6>Kav5O9M+a$yQZ0t+WG2@^Zq z^y!15feJJq2F1}+1Bit;6DKBdL4nL5BvKxZC=p_X6%{V3Z1FIN0TBoW5Fl8SMh6!P iNA_qKBx8nzC3QM%;85lR4i6f#_z`5N>L3t-002AhWM#Gh literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/icons/filetypes/txt.gif b/cms/static/cms/img/icons/filetypes/txt.gif new file mode 100644 index 0000000000000000000000000000000000000000..c1132e472e3ace1a1afa804797a962c9cb26dc5f GIT binary patch literal 276 zcmV+v0qg!pNk%w1VGsZi0K^{vn#}uilCY=J`|R=dz@R2&2z3Q5F} z>qOreH4lW4C>9+^M&l>CFcO`pw8N-AM3yJgq3CuujH~DHoJxhgmVG_m>3!&0SsJ)n3w~b9tH~xJRGVV a7y}R)oCdNF4+sbm5gHm9VkN#LApkpIqkK{T literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/icons/filetypes/txt.png b/cms/static/cms/img/icons/filetypes/txt.png new file mode 100644 index 0000000000000000000000000000000000000000..9fcd8efcb89a31c80f2c9e82cf4605b2de5c5e9f GIT binary patch literal 654 zcmV;90&)F`P)GII%>Cs28XJ0+Y z8t?#|DvDwwOEstxR0Dz_U^Q4}Wu;23wuc|ZYFfw`y zL9iWr@!5+h|Hk!O)=whD0*-us3`mAV>_Qa*5TR5ov;29%OCMOYkIYjzI@QuH%L@%>yqitO#XckU~|U-@cAzZhzbdRA0#3y1~`U2JS~cg z2r(5ZFF2A1lp_SAJPj!oAtg06JD`X>5d@_eCNL{CGCKo8H!iR|kvJVEGBN@!@0s<2SygCRPJf67F0yfk=G#ffx0ObG^HXIbZH0?7p2L}TK1qBp&MfpWR06Uae B!1MqB literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/icons/filetypes/zip.png b/cms/static/cms/img/icons/filetypes/zip.png new file mode 100644 index 0000000000000000000000000000000000000000..1217b855f60902f3ac3336eb0f198586e1ad6034 GIT binary patch literal 548 zcmV+<0^9wGP)^0kKI$ zK~y-)osz#x96=PvKeIctdwY8c2c87HAjUuvQi%#exK<03CRIovmX@Zl734@85JC_v zVsU?h_F|`?jRXq|4-wKFnsCYe^7huT*uA~IUqtdP-psst@56gcUpu(rH;IkbZBpPmEIx~Ve$VvZ-% zZ%8B@(vvv~>kE!-2iC5NeaX^ENBc@~k92kxuh~Sp888z;4EK;>KOi~&3d2ePzc8i5 zkX8p!yDE~*Ob$$*n#r-do#*)EjMr~Jkj;)UVp^Rl0ZKo1I6pl=;G?yVn{WVd-6YTE zS9xmKEVMiT>VHaHmw#e6s@*M2JbnaPgCJN#l@2%iTLQ{bcLV(TZ$J|g!bgr?yK|>C z2to62sT*J_6~*he5n*DR8wbT_U>Jb3V(tz|3^>QXrUbC;B%ZPmy%_}a&_aL)5h5Cm z299ON0S;QKklt^D-ibV>YN71dM^cVU#q)c|6_wiSlct4K@d_S}G5T_m`zb&*wRsB| mV&h|Ki&kx!|4{8l7w!Ny5QJ9<7zo1v0000Tja literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/icons/plugins/file.png b/cms/static/cms/img/icons/plugins/file.png new file mode 100644 index 0000000000000000000000000000000000000000..205bfa2fd0c1733eb5076917138bafc5ed702bd0 GIT binary patch literal 758 zcmV`dmJUpb=@9pjP2U}~m?ruyK=nwXe(lqTL;c&rVc&)jMmS8b`3pm8PIs33R3!;B=c0_gc|@B+{XW%Ynr5^V6q z{9K}KashURfPf@PB6vLWMBeAwP;QY4g;fNMaynvY;k`8^D&V%8VzUBEJUEEt@VqDG z5L)fZ_Dxysfui{i*_PAe;a2pZDj9W8^CJ5)A*^5sp7@=tLlRt@@*7YcLg_os>{U#ozb&Axm8cDTH}vOukwWlvki zG)_;j`*rvC>gv@CKwpxJE6AQ~Zf@MTe(k|bmQ~V-_tLa~A;aOX`PZ-ByaX120pKdn oWHajkF1-KcNPs!uSke&S51Elan3WV?vH$=807*qoM6N<$g8Y?VPyhe` literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/icons/plugins/get_flash_player.gif b/cms/static/cms/img/icons/plugins/get_flash_player.gif new file mode 100644 index 0000000000000000000000000000000000000000..64c15ed1e107eccee06b6a2618fb3a0ccf27f3eb GIT binary patch literal 1720 zcmb7@`&*KS0>|H%+xxzN=A43=7t9+H`B+#pH6(8{wPwyX@??*-sI+e#41ws}F++EH16lA2VunVr+jupMceHo)U%dE>M{;e3Ao{_^=gpAQelhV08I z0K5Pb02~8BlgZTI-(Of*sD|P2@bH$F78Z*&x_9sF?CeHC!OF^th=3cX(**)SR#uk5 zV3=2_Y&M&TL{cae?a|R9Z|@>3cBrs$lg;jjVOvW}ety2$Y*wq)oe(4zi&v+nW=W)! zloVS|&X*9ufFO^Xn&!pg>FH@3i**)<)$8?nSWJ9;{OaiFyj(o%hP z_5&A}YZM9}hsyzg4Y_%yRO;shY-D8QdUv+~k6*R3dt)}2;j#MI*!AXSE|a#VmgnZ4 zw6%3bM?a#|+b9&1P7C}$c)i5|5MTqCe~te71b}QP3E>N>s?Q5Ah%VODUaG4mfe7ic z`xQyc)h{KNueVBNZF0qpo9(Sg6XNJdatC`fvvf;G1%fC8OQT^S*{XZOX0BfHI=lzSVOn;-yRtwh%h-$23 zzW0*f44uaVW+87Ty=CUD-F$Qf!VTGWzacAl8@(tEIm>!=JI%eqMM@*vQFc1^rEA-; z-wM3BioQmb^TH=gc9F2tpSGP1>TRfs9)IWO#}0#CK0_BiZtnu{WR7%TM+`45EM@V{ zH<~0HTik=Zp8i1XC}U-FzLK>A-U|U=DsIeeGWOg?n>V7ANWyl zZh2~>ZvxR3@+eut+?%MRG8nIuj4}5yI~jdkLR6;KMCImWm+(a5T=;AFT28~jwYP+U zdyCf&4c;F5XbXo~Qh@4szFP>&5MzLV=*bYE$9=i=QcUr*I;aKXlOof7mMW0O6yI0} zX8i+%S5U|V&dr_2X^hWGeZ^eN7LTD<2pnikegS$Y>va{^7lW`lVPtL3H&4Tvdy*V2g24B1N21F7m(Vs*^Q2LS4OA#cu0#|ip#>z%cc?v! z_Mwg(QEjV|dcV2RSdd zU5zh@Y;QfB(b3cYi4FtP*6Y#o>o9N{a6$oX?`1RyhM6f#`Mo5iW!T@ThQup>M9?tr zLV$qpo@SyB@ez1ol<}VD0sq0u&%kYIp$j-#Z$R86Kpw z!N%94I@lgXZ~8!P(pu7MVlfKt+t1;HP!guQ%YE{vfGwHIBUOPeE*FO%hO962I)hOI z=;-};<{0?TJ>eK%*Sy4G7@r#@$6C*=Vzq7sJN>tsVhy)uKH-;+=$!@>TtntqNKI#@?IN%%j%idjf&nl0h*m#pu z3b6cVSj;m=_&vV!4#D@BnSVrOggTu$`O@mUma!WH(U|2IMmvi+J%0Vg%1|a00?h2R zrkyE+tVj~zKi10@LXxt{+xT7N1Es&VvobdR_&Q592x<4zG~nPFAF-eOjK;A zj*rELE;ZDLD;VN9UVQ3Oqr{-_`(S+haOskBla&0KZvq{OlPrmECEj2lvRV!Rg#8b$ CAnR-Z literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/icons/plugins/image.png b/cms/static/cms/img/icons/plugins/image.png new file mode 100644 index 0000000000000000000000000000000000000000..ccc7a101dda21b9f9058ba933402dce3b8fdc167 GIT binary patch literal 969 zcmV;)12+7LP)6vuz(y!VDT4`vuXhAGlUfr@P?pfOQ1_z@dZS2c0%q6^(!WivxJHT!=7a5I_Arh4Q8q|=?7lKjk>{t^J7`o&S&x0kWfb7Kq+5F&s9N`8te zU{MQp`HUzk7Eu>RE$6Njxqh%=tpb2YTjO+Wix66HFc`ohI2cwu6hNhvG_;^9V8N=O zqKJT_O5lgeVmA*p#k;KWz{RnEvsSy#TARSil_wv6~T(&sDm4rjetmnkMCQ; zy9VPaY6Xie>9$1_#X5@G5Q`$BsDOyYs3KxfaZrVzoE1rHfQrDy^TG8&ELaSx3dTSz zg#(!RELL1pOK(IBRvgp{s)7;l)Fl=G6xIV`(K2Gb!CEi~Xowhvntv*41e+gZ(TS>RecLDy#5C9TDW|6j9_x-Aw1E$aKBQw&r_zIo(NoCQs{wZQM@Y$K;JH ziH81-fMR}@!QNAhULU8w=NRYvPOUy_ZrZ`C&pyuW#c}GI5;*yQnlM7%=?~ zk{r)`!xK+F!@%GGP3>El8J;9r-^h{vpLlQoJM^9y*$7Cs4zPFMZtPMXFP5V^D3U8& zBGGgUe`%hn{34Sh1;(yUQ|bGh7`nt$ogM7mUC+Ur-_nt+CRNkI;I*S@`nOepba!{# zbh?x3>MCdk7D^Z80)Yb(!b}KlDXj!`)K$SBImk_bS6x~myDDL!97ayV++243 rHl14@tA9IODDCad3i5?91{+>@P}If;wKaXv2iwG#K3Xu^ zq>X7~B2uMk=wfJVgA{>C8AGSQ45L(-8J2-rnY+y0|GN)On<7O$$w|(6IOmh^$vH=a zVaVM~eD#mZOv`vQn=&6v$IKq739D{<&0@uwsMeh$j_tk_p4fBct_=Y3Spaj#p?f2y z{`?nKwmi_kCZ{cKkCTi@0Ll%ItJ5_GFBiCUqa4f?n@4Na#uMR*?~MIl0I}nZ@Al@* z-#*gcWo%oQ0|d#KLP-q(*9)jMJZ4HZga69&m%(Z3E_T%s-?!h~`SO1Pv`;5{UmJZa zrgLEH+MLmqi?X6CNjh#&ta_BHF2$-#rS4(-VCs@bAL^xlZ7Y?!ZEjo|JNWG3E8n{- z;Mj0}`;#x8`_1YlX|hR^AcRvF^LTzp-SN3uXfj>2nO$(`T@+ph{OHZ%`Y*0&rLQwiBC2ER8m1xX&PAv;eHymU<`rp9 zU(BOvf*=TRy^uX$>EYLiH?>DeiBuXjCuF|jVKxISL(!4eS(G;EZI4lN0>;iXm@YIR1lRNV!9z>f_xdO| zZ`H_`YIuHz!vj;_?#@}q*LFo3>i4G#$q&X#{mG~z9XE+Z6>b1=0i7)dk8JH^=xUjK z)uY<7tG8h9n{;^A(?=@pAvMf0PnyyCMyB?s`35sk?2K zp~xk5Y}aR5M~wSc=19d9zkKsLh7y3FJ731)T=qr>6@V$>*(*&j=xu?}471i0WIL6^~MMfr@w8bU5l1S;}2O+NQ z5r!d4d(w30OnQ6L?=J6*l>xM$_D7t>o!Q?l>+42Ji6+4Fd_31fYJ%-+(rjCma;50p=rewpi6l?D7ArgyWtMvYztCb6&0DinhoVze=AF|uCyPM?- zegL~Rw~>hIyfQFH)7LOfNf?6dcw{0Pt9xT;p35x*noU7xXBMYXrdjt6?%mx!a>qB# zYM|D)c>$4CT?3#0@koOUKYZQfFxJrR8xRT$kqMzfE!U>@3|KDNHL$ zbz$Mw!RKDMuX6FZiBB#WK&1KwE%%3S?|=0ViN|*TCMmR#h6XP>1IGtnsMg}%o!?ZC3k=mZcVoKz(ytGkte4BRmCHL= zw>-nZ=92UNz{te- zhu8k;2mUlt&JzTMaN)i1Hb7V#4n^OSH-J+@DNU2ozc4iBE|jX1t5z@0E$Lm9&SjI9 z5Qt)_7EDg&8{=bB#Vezev-5Msyr!!;-(dv8(**X+r$?kd4#Kf#nqt{g!$Q;MrPQui zmcB;U)jf@dovBnB(O5iUC|wELc740y*c#NLQFA^THLo`s_K55HBZSO`A0qJC2F-sSj<;~r+4@L??T|;80hpMNu}Id00000NkvXXu0mjfH;+@T literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/icons/plugins/snippet.png b/cms/static/cms/img/icons/plugins/snippet.png new file mode 100644 index 0000000000000000000000000000000000000000..1c492bab1276d92a77fa963ff27cb8d43837c33c GIT binary patch literal 1017 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXP- z4k!y@wa?A~00VhRL_t(Y$F-K*Z&Xzj#(!&_nYPl{nLtPiQmJ&fBog((2QRJvfNv@q z(ZnE9pjIQjn1Y5VzFCSjXwvu~hM>lze}ReOC29zP7lOoxN=$LuQmCaNz0I7xeAs7B zPp315n7Ai9Yww-e>s#yl*4i`hKMzT6hKIj?G^j}*KuGx$0|!>|ssjfh{BgT5duq?~ zd&chwaQVum`~%HfHkcXl1X#8=%sC7r42#Un%#a_?k4=nUKfUXj7y4EO7@Nr74uYT_ zGaL?chO@|_Ib7t}IfpZcIe(UISjXheiN!0wUp~F-+1>k+J~g>9XJ+P|;iBjh1c?Y3 zNc>Sml$%pGNT+IR)~#Rv+&9B#Uak&cK4KTqfm!6=gS^>!$b*OnK?D(@P%Mxi`Z87X4NXm(*t#vpeH%BmRMlYg+Fvso=)C~*^K+a( ze}QwqoujMgEdbtl-P<4tXnpEQemwhAeD}o1{QwjT?w@VB?Q1J$;LOa-`0~tGeEP`{ z#X^Do2iup$(b0K;caI+Cm!E%S@ZoL;LgU$aK0U$bc6xX?>ZlxUzhhF*mnxt7S_rTahB~L=h41CSemWl`#yEl@*sN z|Bk9AoF{8OvgP?(B`&IHAW^r9`ic-0Umfw@uV35S9-pZ$O;Npz3`BjjQ3fS(y)9`% zEHsJdq*7C+%6XKi{rA4=->hsl%i`h!5ANJaXJQAn#H!`EwMi+pMz&PNN z6s1lK4)#6r@I$Ypf)vh3gQzMYSRszrtSZ3l?A)5O-~aF(kO8g(t~{W6|91gbetB(U nlT3||+8rcP;2vNem<9M3f@*C60|Z2l00000NkvXXu0mjfM5Er+ literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/loader.gif b/cms/static/cms/img/loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..c477f964f34d1b93afe5a0cb3c11fd41c1a24f13 GIT binary patch literal 4992 zcmb7|dsq`^zQ<=KlVp-il3~b@kdP2U0wEv=eb8D(Hzb1%5HSfC(V~Wn78Mi_DJp7i zK%i73rg%d)AR^+W)Ka%v>n4Z@cv-ZlSm_oiTCsK)t$XV3y4@3Yx4V1xdCni_{b&Ar zpXZ&=`~7{t-}kNLMRVWGl>$=W4*=jk=Doj?(yZ7x3h3V2o*fc96l zr9>CAeBqV0vNsdVarE{K?C zT)=%qQ3+7^1Q~<~cmQq5_R4^02^G>1(MS{^o-qTn@g0$!^=9>wW@nG~p z5T1iQeuU$n53+BthAQt7!}m^AN1m!{5tfFgui%o`;Pb85|Q*a>@xX z1EVf{=T+T5&Y{Gw=~j}Yb)PC_IQrpO;A{X3%6XDh_E58>NhFUDNZYg)HdvCje`?Zt zGascD$nTQCH3nx+3}9#>8Ct0Mu4?Pv0kBOpS~p~{6;e5AKHpl`W)=Vzt!HFUjqM4h zEu&Zh4Xuf%IU%nqnrBI)Z#6068%}pw?4wcmmv~rqYn$UR6x_8s%GFQ(b&l;nXh{Bz zhDqtC!Ei}2KMme_EYf*voQdnI`MbZJi6&4kQ)wUnC979bH#Ac-*Ky$1@}H=@UaDpd zQV1~DGq-D?l9j?`Y=FOBkd;D#P?DFY1fV4=L)QoBsjyrm(-2Ha41ncf*j9wl)8z0) z@F4w+ACplmKu(&VfDSmwhz^ip2e;#*8$oyKO%yN`ri_ka-y{nWf9=rJi&QGfVB zCHnOD8X@(C>IL=37wp928^HPRLI2nS*v*I2Q??GF#^Y!EHbNrN^?~ zzE1Y1pT5U3y!r@wic&lacxEmy|8vHEm$lz|sVaN*&3n0E?Nzi|m&t?wArJZA zgPE8-3W?e&=Q9NYsYXWqkf#vK=|S*C+$jEaBLQ5w!qP&#!614dX6`K)d1D z6C-jN<4aRw7=^NHG9os9$o%cG0lFgIT{zbG2;6yiUS!o%wMkcdB$+cYy2Tf4XN6R5 z_C&VWG>X8AvM$QQ9{U@+NTekToOChqgwz|WGp>~ zm>;CroKDS97IoPF*XipN7eCQ@kNPI_lPAg=om|wQZPCq9d?7#IA=(m4_frT za<+a-`AE%b4FAQ*pw!mlsHL&xoqLC(2@~UHgl#V`JVqc{-+tUNYhzvfG>22X z7}ReaQEVrzKFKm8=Xj4b|Az%LnC>e>YH6u2vTrW7U~x<}gHTH|#x(4FwuZHQU8Ja3 zWYN$?`FJFsO65mVw!<4!3HoMDpa|Sb58}}y!D5gk!enHiLdb256f=%SVj>Y182}qJ z5Kkh3NqToTUmTgq@e(`5mrtOg{{DT}*f-cl@rfjgkuL9-N`9M!aus82uO5Bc&-+y> z9>x~_+3lP%=h>}`{?Mk**KDv{UV=~ykuj;)mI2L8$nG+JLpA6*m1>I_PHyCpB{`l_ zpY0tp*_5#MEO3TGAyEs`VJElN2VI+;au(y*DKeOsSq5Hqa_PZqbSgEeQJ|Q4q*F@C z>Xeacd)ILD-P7S1JJ;~ZQ@|`%!Fp3z&)w7OX4b`(q#^M6o$Wb>E&>jq5oZQJ08A;> z)Mj_NOZuy4h6`@Ws+ExStmEXN_w-HXH($CwJtm@p|ByxK|HiS~k0Ul{8b`t0Ier}3 z2SS{-{)2iwF`u@yVz}AAtq_3F4!qS(U?!%JdPuBhJaqsi;C43D-MP+Qz;zETG z4_ziIrq`$_CX^79+&nuj;_MbuRYH=0_G$SnE{)j87P3Pzh5`#+uiPXP!LX`>6>!V8({mWn)MC zUD7wI=I%H2^pF@Fuk`J`ys)w+iFRSql?+{#Ls*-~lg5A@%xYC`7i7JI6gbPf)}{vr zW{1++y6QbtPuSZnTW32#-!W!Tzf3)g{Qj04TVyUQ{k;Z0De10osi*)A4d`A_$b4zH zUKY@1H?@v+*#=Cro?O8=A2%{;C%0yu1>pR!#Q!kze~(owWB&%DFvSm}|I-X7<^2fz zVqLp-Apbd0pQ5;Bm>5C5JvYaFlL+-#jXIlA6k;p^piSHCOKRA~Y+Ds8guC<|;YNBf zNH?Kqg%--+Mks`L*=w zfeYg>T1lZN*G8HuY5ijYvsQKW}Yh1|^h@3cLq?wOGtavr6+? zYG_kvDaIj8x%6Ar75kYpK@+TnCJMeb@hSlYg|>c!Zp${%jpYk87RrfsOT z`Y;bks0uWA*TaWtappKcO@-hfrw*CP(?jPKfZ)^j)J0#g%W6Sq$&bb9VakbCtju#| zMLQXgUlLc~Tfx~4#=G82>4&)6H%nZfsmgIysPLa6@yA`rA9sKDbAQ|osfYbs80HcQ z+U}m|Qo&WQxy2f^ z1TxZ>6ycS^Rmoy8mQzwhuvkWZC7;Y#Mc_EG4SP$b;U5M3BH2b~b2ti(_(TVKK>U`^ zh; zX2wB2XIfxFn{&1r1gVsRNuEC?>grA@97Rs`Sd@&B5dfsRdbGBARRo#y!m@4w{_cVa zBG0lhB_jJxY>O-N2aFOlesHfR>(Bz(WXC_{!Ti}n{@w;$8FH-MJ>bf4 zY5RcrD=Or8tX4i&v9}@eT=*>Kyl+?kK^5Ynmwrgx4?xH@TePe268g?cd%2AuG&^NR zCP52f@oh}85i2O!9>QgD@dG4kMER{pkF_U>`K+U>KTIZ$%FdiiZcO#-BvPcHT}n?Y z*g@9?34SvqkOr?H{I);xB|r4m(2P10dhb4aM7ZB8Qi>RTrD>EM{@Iswb>$X_7llA3 zdI+3d;;&FJl0FiCJIvxwxx$#LAt=noqh6H<1IINM0HZhpdwen)a~B7j0i)4$A7cXrZpKH1Q7lFEfwnx7G%N=Y-J5nN^g}O%Xh#=Q1Lpf5zvs z1_wiAzHsE$t-k(itb1H2g3da}`Sd~tLI0dW|0pYSJWVEIN-T^0n&BT@xn>49$6X=^SJxFWNOClM+yYpEQ6{h7oab*X>e@Kq3le5Pa$rT5VeF=r{pQlL z`<6Ra7nK?lgWVomYmXzk78QPB(O5eOC}Bb2W0gKEOWpZ{sq8Nf?$@Q-nO#yIp(;)_Hw2x;Vnw%oD-F*b7t?O zI!5&et+fupmK|PKTJ4iWsf?COwFW14_#Z8Bf()sspjK0=Ht8{&1K*|PR)izb%g`-) zaih&m(gXHM&~(g0>@-c^-NQ#5M62bURGb^jPz1_Ozm4v3Y!XSL2P9Dvc)djiLAP&1 z^!~vc5(#rCU3}+@JM_$uScQU3=~>=u?>n*l`;6&+zRX0hxUy=Kyhy56Td5hQc{yW4 zOMo6ZG!^AE=PssiC*`km{awMf<7)?^)WrcREA^)gH8oLd*NEYSv9XzLOq=NC%n^eH z0?H8v{(9}$Z6lTPmsl)V3V2*NHKP!)-0&S_33C#pFD4&0f<{(>a@=gUsFuxk3^%Hi ztgt4w2=VZ|(>>ggYw$#RS*yRBrTcDky`|%wYKLi$ z5I(>Mes=`gy4!ksdkPK}Jb3h=zP5hk>d43U9}DsdV&h`Zo;f@HWV*hwe&qVd$3H%f z-y0vlG5+=2*VMGs%IeC&OM|c9zHaMi8^1k%R(CcdE2Ffmw7#W&6g<5#RaL!sbSG!5AHokNKVMe%ZQDR zO^8pZtgTE{q-H2Gfd7xnYL4jV5wKn)ka)N{^U&b@EmnU)cs$?;aR0vj@1F_4bDASE zZ?5TKAsQA5mLDITStMfrR6o&{=+V6K*nM@<%)4Uurypg?WsNLM~<*#5l(SI@GxXR==A6>yyG( zzrtm`ch%=bQ8$Xb4y(td`@-*Mu94pU`ShN!vE)S(dgeXk?Zaa(hKtoTaap4W{#x+K z%$N6m1n&MWa!tK_e{VR3xN6P$frhJX&u`nRk(P3p0CNB^n34xUHr(MKq>2jadp(v4 z#gU!BU_QM#`Z$fMQo*U!N45+41gkWAR1Mplr z3DA7}6)-g3q$8lA$T)^EmK5|Cl45xZ7m7G`@U+DoXEK2E6yuQ!_TXX- z&Z7TM09~*OXezT!#<_KLnBGI)6(s(nf$G?)iv1R zcooV>bI>_3zveYHKYSRourE)he10yp-r+;(o{vVFZ{>`z- zN6Me)xT$FL1$mz1(i?&R`+Mr7rOg|?o+hlZ0^O>h&Ocw)d-J&ax)fR_?1v4I@{c!RgTW3G*5fe8HZN9^BdhwFLT=2Q@?ga(JZ7BD^FZGE`iA||CG z*RaD$Po=_p1T~sV#ir+T&r}`iQgXz-@f$`7*NtXyltn{&Yjor(QxD#Mq3Jg3Hxs`5ds$gW*J zJ2ZpXTJd^l;w}nh>CH&k(*z(JsoNKn9r9OBy&SEvVv?tnwDiq3%z9_ZF<6YNiOUV1 zT%kg(;27cpah`J9+clP`*_An&7c(`RzYkKmH;OYaZ~A`ZDbo`KMlX3Ec9HN!_euF1 zUQIa+EQ!+Bi+_CTU-e)<1)!6ad{uuIU`TuY+$nZYHZ_>NW}&kHoqpw%hd1K4?UUlo zSiZ6J`p44;W=Ag^T)6tYHuJ;FsfGQ1-x|@AkNOOkt_sn-|16$vG((`vFf_wT7s=1{NOlXHg1K&=j1Bj?HN7(0H^7ZsGTp86+8oV~PX^UgGT;Az_>nlL6$!)w1L;5%2= zw}4HJ)-w){C%=VWmTN5Xt-2Z=C{qhBzJhVP#zMlbgzP&lJWCSp2w9E*di=DEES(IAVe+j`o{3U^}#XVAab>pH6cA}bV!+2e#;HNGx%FcXEIG;vW{ zJ7 zS6R)Fai)QLGp7zb8@=Fp`4GQ7>tfiH4LddkRrBk_t1w&g&6B|LTtkN%i8sG=$(xhW zT)r`DH8Br5X{-sdmcP$4ICE>hD$c@N6@N*a=@n zI$5KiHL#e$LmI@YtF0}YnfG4c41!uvm>yRRP{ZW#G~IP?&N#M=#)W9n=u*k;4g!<8 z<|S;P`mUi5jk}G2wgoXra{&q1-EP2RF)#%6WcwoK?8~;!Zick2cj$oQo|NRN*4grE zHNa~p-Pp<-!slOmCD6x`cnuERFYSG&xdjfFVm_J8ju1XKzwe&1Er`bVcdYOnxOd&x zWx(O)nkVO+KeS>nbGiWzh56w1oAS@kU+ra_{PqRtA$!Np0*3Lbg_un-E}D^x?037y z>YYYr84)F)mzY@?=q>IDvx}6YHXT)Si7(deUpS)g(E9#Crl*t3RKaKSrFEeSRRj0G zscrwi+jr?dsja*8$7R^$idDNHe{FLf?{CT3U#VW`|u2~mnutuKCF!4_B^h2}i zW!4KJ7dw_8aYGc*4~=CojMBU;AUTxbCCxVRCKNJU?UbGvmlDWyuZWo)j3Rs5R=F~g zYDDPLdVuMnmmO)T=fPZ1RcLTZtXEQBLh^twM53DP@rB(KhIUv~+z-*Nv_{?+a_&^+ zJ`l0$-$Fh1aDunDD0Lz1t#U}K#Jnj<|;!lHVv zp;k?9BxGO*YE})sXjCLVGfyb2;f1`31Rh>d^E-b!e2n^LA6j-hT>F>4iQBJPAh$rZ z(Q+4W6t&sXhHUv=tKP&|hEk>xpy}%(AuNr-pA&@Y5UBt(4B{zrjeRu$(N@gxK{tgU z0N(9J4j-}#nl!=ERZA7v?_rbrTy(%47;7{V__Wx!SgHUq<+%F8>#8H4;d=k75tIZu zn}FzzDEr1E8Xz&uDv^b8rO)%TlYgXtSh7dpbFsBv$INZW+8ZVY)mY5EPhcx(9~UhRVSfEI_`G0Xxy5Q?oL|{v^PX=?ckG>WF^-f$hjL)X7pV?XB7K&>uRx_xu0C{GSTW2i*TT zO8>ip>pc16f9LkhUa_)Z9_HR#P0qNV+mqaT$aJbAeZ*p&X8|wX=C3Wsvo!c|PddN` zZT)~?2=F5;u(St%^g75kQg{;+%e)CD1(xi?o(4v21cW`AS^Jotw0wI@OXK4n1f&+Q zAbV`vcP?JYBvux1Pl|mIgl#a8711cR?yNMqa0yd;mrc7IaZW0>t?aa~zBF~Ej%_F= z2cJ75GPINPAzA zJUfNGHxLMpKE_?iuELO2J>O%!2*$?kEICu!t2~v4H3Zc2IcJ9tjy2 z$1Zq#1(x4K3F`~@nDC_cr9nV%P|wR}XKoGMW$!M?d*~jD`re8x%q4?=jW-4=EpZbS z`{N(g_>p`WW)qQJGE%H?kCOl04Af@7d*$Sp)#<2;%gMaxnvV?JmaPMqlp)PD92bbW z@NfaJ^92J%z7#4=kH2^OG6{F+C}6pSW-(5G;5j&b1IPNiwsPhoB93>N$C~fxAY5qVXrZ&<2%C1;Ly(s?9fN&W^2P zlIDA^`SXdIY*rkg$PJZ|fqZA(1V~zVCdUSZWw<9Lq-n;p(%)9HQN_G7fnh~ny&MFy z)S-7rc1ZEvkRv|^j6SLGjEkE8fPb`mR{6uK*{57#ce%~6U5PBv%|u_SE!@}5LqP1R z8vxoAM;4SVJj1Iq)Zb_t@&j#&Y^tGB2u{l0iIJ4OH!(8Nbmz_=CU}wXsHLdNjGO4cT zjHkwl`gP3bRSsHqtwVsmEu@h8PwRmDr|vmOo0^Xhf$X*kN=ULBN4O(@O zRo4!NM1wN%9&KeT`0ak&iPE=Qr-sGowem4nyDAL!%WY=YO+RVs$I*bk9r1YDWaVOt z`D@ zadK`;VSADhIlYDHUKg)oa>UeNhP*TE3(GSGrS>zeL_TL=M6>mh?sp! zjNc>y-y-%{SxH zjKKFtqJ|q|@(6Et^l{gnwKB%#_VaDDr$ax}sRzd22-Vmz2Y0s+z|t-++LXfp6sXfO z!v`Mm@Dmb%5iJQSr~w}o&B0tx$XhvH|kDnrt}3{#}+@nv+WDr6Q8N;0$`f@1AzCjB-P~i7I zaz&PIKhKu5xyaI1_${{JUAVA1AC04@?~*;F(<2)N;H%%g@|Tz{Zh|4Q45&%>l1Vk0 zqy;PM27A*fcOe+-Y{1Fc=?(V~)?* zmaov~H8OM!OT#LXu1i2$dYOt}?pwxtB0ROnmS47TqeN5AbaSxEZ1NvPKoeoKeIjuQ zPFqi7Ox`fX^o$CKmPslshbem*bpjt=BfzRJnF=?C26}7Tt2=zE>0C`7AA3P}^%+Ai zA^LTD+mdyHw)2;+`q0VKd5*1$S|3fP7Dapoo)BuaU9E8(dlN%4>nQKqlKZD(p&n0% zT^)*zrWou(C0~asbs-Dd?&_{849D2_qwsx8_-r~n5wjatYQh3f-t}bd?7Go?rj<@^ zQ}OUd46OqA8f|u)GPT8*2%DAg)==o~Bdl8xEb1%#fa(gspY)ABgFfRP~OWo9%HVdBGoy1o_uKd z%mzmgak`lHuPurOWo)sZfOEAt{XQyfV04?W6x{rsSnIPr zVPuwm+rTuaJg)SO_cMFKXqbUk(y8 z=E{FRDn`R@vY*Lh8DHf?Y6)Or!BsktXi+KEVJ+*C5SVBqo7>KVC9KdKQgPsuv@kwT z0Got1h2)!_?_Zw-DhkCl}UD_yRB2#(XGGY>hmRyY5*dd zDvOUenEbR;J}gr|DUqg;5nHBA7M5;Xc3{*DA1Mn_nv8GCHN=0jldi$UANaL8mD&|{ zT;h&sRW7f=89Fe6$ZOM`)uT1*II2h}-_-|*QZA=xR1AsF3l*MO-b^M3XgDXTvj7Vf zsd6-c2PR#$KY?o7$H6)!j0!Mmn^~IL?zGRGgUm{q&R%b39&BRydTrZD3w87|BPCym z5y@1qdO<#0piWQB+>XWt<^$i^C#bvHI&Ae^G$$*sOHl_gfiX@TeC$9Q;b#0hK41z+ zUkRXzH7HP|QgxhnDOe7{@D9Ehz8aTux#`)xe1O7@9gq?9_e#~L+QQTwLv^M+SNuD< zHa-$GhK`eHdQ0cT%T&9ez)9HSCB=I5ZJn(RJE;>Es?bhn(6aDDr~+|L-W(A|7ErF znPusFW0xP7%t${l#GMnd`J$cfrhluj&?J+Ft~0lQBjwk%JD#3eZpMXoZsY3F(9*T~ z1`%{W*wDf{J2eb_5H0h}Bn6nQg^jI`85|PPklGSaP-doCy-?5EI^TkOeBLQ3S!D0< z6QmY0=9ng`n~W3@QpAmA!7b=xoz^X>X|>$qD`z6=D=HsWceg4DTtp`%M2&M`0$)%5FoSo|y2?I*!`4wV~R@;RXT% zJ(0&yIAGDted>27OgRtON*2gwBIpg z5w#EY;jDTyd}s5|ij|}1(+%H6T-vejX`;gu@E2<)^>Rltb4~93K0EipC+`+vCbuw1 zof6GH#^JbQ+x;gKp!|o&2V?vfs?Vj!Ed=K+FNSC`08`w|VS!Yhb7kUZFK9V&rq2@m zYLzsJ0||i|`Bz)cl$?#55QBymO_NzJ0g-bx6i7HcB{z194EgcTXZt5nM!s2(vVR!- zlTzT878zRT7pT-?O)4dtgr&=;v{-xcUs^1XWK?fRpdF|$u@9JhSS%`#Ods*GFwr~0 zf@kZCHaP?Jrut-_fM$>*y}Zmg4F9}{3Y>zWd75;@CwmZWH8?z^z)KWA$%{kzWJOit zjZ1>{C2oiSO4+D6deqPKFFAf;sJ~sUqc4?@HHRcus}F|)8z`(wq@e^~;1AR$hVqmI z9I`wYTBKZ#_TpmHbw$J+0fqXPC*ifdThZJm}s0sMk+U_O1OA${2n3p zRH6zrsV`pMkwTAk8~`ZxoP5o^Sp{C4Wwb3bfbTD1iy_r*Q;>o#9XJ8KY1sN2yn?jG zV(SN$j_3YJtKHR=v2N12X+X~6!M|P&)%2SGQY*VKgPDC@{av_=po`KJy5|DJIz-XI zm_2g|rDh|$BvXGluEnQZcWmJrmZ%lyJ(_s&*tJls^U?(qxxh{jDR8oFEr$ibi@Y6( z#6{k$b~42E)fmzMvT)GSPZHA}5uf{qZpXE?OZp@37xn`7VK2S^hiBk_@ytj5?$`Nb za?U?IM@FeQ9-R|hL}X4Xzo!n2oOOV+x{_le`PDb~{(fcW;@d;;5FfM@Yzy#%4b034 zN#f+xAJ;}~%khG<3`po)kzVStG!a?JMejavq@k#sNlR&o@(2pxMpOZ0F3F5^gjOyj z!?vxvIu36;$vQo3a54!#)>d^qKA=kPh}rF4chNR zQr`oUDk)w6`X9e5rn4Vh+~&y%WbBbY&p}1gLC1dCb>&?A9Y6b2>B+`y3jOxdI-XCC z1Djc#dw=}zr`=!t@z>KP z;2 z^iQKm4ud=L7nFWkARHI|EPZi-PQIpElomS>52NNC1VIGZ0%$iovM!7h4q8Uf;z^7m*e&7G{i1g zKgc8&YeKfVDDPrq%>NO^mnwvTXH%uSj^QR2WdQf%QUD5pyP_GU9!YUNW7stiZD)l0 zstqXj2GHlT2|M{09?%1XZHdX()}XQ0lU?fxJ7jlo?-G9kQ$l#MhUWI?+Bdz7@U|7(ln z-&`LS=4gR`pPL0WZu4!MuBvBn{#IYp0T-Cv$zT4p<#;7^=FG-{``5EVRh(P5g5|Jx zGCC{mVCc4BTd5~Ar6?zN3t27?5s_0;vl2=-``GR}B&HQr{iIqKzTdWmS(VByX$_1h zOc%2V+;geNd)L)(7bkPGiga7{2M<&gX|GB2_MZW|DpOfEH@6o?2~Uiorw-FtsdseS zw*T~^>6HjZ8<-i8NZf}&z#4I7vOg~r8CnT{nzf(2voNq%m!nyTX8T03V0FX5GQ68P7Sd(zrc zd3>97HcU!45c0v^u{ALBQ=R096{N4XG{IarCCtI$yqh-U186zQ>&{?^R;tLR7|$N! zNaYTz4P(&6@U0=Q894OE=Rc?X`SuBgZYpN@E>puk+>c8(wr$=Gnj8^r_bdI&axRb@_*f!%sZJ_+Re5$>@)MPA?xlu={a;z*!&yyD@fS+qH9R>y#`} zzP=No&7Z6iA{1`z4ij>1`d=T2w|Qi%T44&sFgh3Xw~!zB^2eXe_Ws&|FLQ=VF&M1T zgZ+;V*nJJrrhMCHtU<3@>8}8=iO6;=Rm_30B)3m<+fyuZzT-pmvLq>{g~QUp{v;mw zU4{GX_Wf@#EFpkisnzYnJ~0N-V!jf9#inJ0D2U9HJFq5Zwx_(su#Vf?ltmst01dAP zi(I9%c&v4Say1$nR8HeO+(ttRe}HA}7On?28 zwo(*38&PbEn*eYIG>xWoOC^6=&G3C9Z?i1$p{fvv`#%FpPcsk{N6u=iEejTiQ6pve zr*2g8{pb^-3>MOW@?G8x;f|q9H79RSSMM_UwR+%$L&YN>O@;z*T=Koo!aKF z5)9nC+YNNt8HY5tnXt5P8}aMAZDH(m&>)KXOA3Trbb0or1EE|ZM}&~pf7Y}X4xq$4I8MjbjyAmykk*Y5Gf34R);u@OY9QnV+^{`ES$fV8u?nvpdi-c3y zoap#0sC{!s5;r68myqt{=zp!NeD&$1VA*!7_h-jqzGHkuM7wtFmLsWg2eXnBB5c>@ z9|(`z7sI8R5HV2)3geQzN^ET_#jZ9@HjY;G(LXy zziN4j+B4*mSF#VJVZF^p_EtBhfUd@^ zWPN<}udC8Mk1mte`Pnj$yuWu9_{c%dg7LwZ_d79i{O@+Z(3kx_^84BTy|1u8X1W!E zx8fntlmQhiS}RXKclf)UmAM&Ljyx0;EhvoXSw@=G_Q#7C-O+AA zmswAfF>8#S3ubvwbZ9~hpUe1u6)Fq7dHUq0&TsNx?3p$aOZbm%#t4)9y6;i)OFi|t zAuUX{?Et!ZRux3&HU+1=+QpvB^fIJ!*l@F64Iia1t^v?j$u3CpYx^WEG&l5Aw-0k@ zKR;2#=gk-FFxeED`S+mOKo+2bm{*sgQoR{6;81|4OlXg>MOkLWn$VtNc}u!f$YyH}_=2Pn$u2-NPt_w>Gkz(nOWY z&RxC5`u@7^v|v^#s&!pTVb|UGai{)J6syCE9ce#{om+x9^*)wJUX`~y-{8Z~;_Mev z;Lfd4_6D=BP9*GDs*WZcy&5m;ZQv`BKK3wS7>7Q_;}+fB*kUJyq0vs985gDLv25~% z8eGD*7V$xZ$iFCufO`BYLl7BpVP<9c?#LtLq~gcD2QioYf`UNfudkRCIwdzMg!wac0hgo`^y+g^a|ItYm{k`+USC(N-xz6Coor zy|uQuICdtPsn@W_7iHekGT-`lMKBK5(`az7k1x?2*Lu#fW4=5)lJ_$E`ma>_(kLzG zM$I8uOty-+6-~a<_Ygke%WXY-o`-lP86*S_dq#?Csm7+n(4sfN*SqxW63 z?JOZ~pKdg=xye_F(6*YWDTzF&Gaq;lrDBUvi(CkP{|{9Rsl@6cNMf+1D_K?urY64M zAE=S?@17*Et6e2v>(=(bsnC5>+DHpR1h)Lvz|q}Xa0{Lgu7AGmlm#4|{d_B>Z0J!p znxDan?dOHGt z>%GN^E^mK*l;}haLGWyShUTF4AYXIDQXti$J@?48xb49wP*}80vouBc%&qo-UA@2f z@T%abQVbhV;ULlTsQMCaPoMlaX>yZisR^XEqo4<)Y(s_fvn_xPk@eBijXqbX?NP>c zkG@6U zL93}TyR7=dV|Jl`Np@81g#!q!U0H5QClEuE|JL%$x68VI>r^|>+B_8N7wsdTAP9>| zT|JFCN?*r6Lv*_W>e}ezn*QbA%u{1}fO7K@CNMt?V*&)pUO2O7<>&kwQk)PK{qFjArE>Nh))5S5w;`H6%gS>|ocx<%T9=_(i z(OG$;)3BnFRod?4>WKk{xl2}L73&wfrGL1|#}?#uyXU;+Zprr>9eN5arU#wb%^%Yu z&0TqV?&iE-Gp&uk+;emZ2xV}{etW|3v;MaicgyDq2zHz}u$LoJ*xSW@&8ih!XSv=z uHCN!!2dgx*^0&Wje;pQ$RGs-Vd7<>&kwQk)PK{ZJXPgV?ZIv64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3do-U3d7N_rCRLpa76kvO>UjK#Gq@-C_gs*S~{q8#;S=G$N z7j#=%LEuN#5iJV`VV0H&S^^e4`i(Z@oBk}1sk~K|&qEh4k99m1{Nz<{ zp2B9g*ZoT33#%u@U)Xy>a!Qcahu-HJLHBQIFPq^q(aPk2n6-|QhwQ7z?D7?z3jb}` YA1Zq-68$jK59kL5Pgg&ebxsLQ0KS2DX8-^I literal 0 HcmV?d00001 diff --git a/cms/static/cms/img/toolbar/render_model_placeholder.png b/cms/static/cms/img/toolbar/render_model_placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..9b3d3ef77ffff2f13ed0d677c70c37c924275586 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|wj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&kwQQGiofcu)M22S6do64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiAg*PZ!4!i_^&o60D08M0%P68)O+6Sd|zU+qSJW2Ff#dy85}S Ib4q9e07Vrl-T(jq literal 0 HcmV?d00001 diff --git a/cms/static/cms/js/admin.base.js b/cms/static/cms/js/admin.base.js new file mode 100644 index 00000000..aac55bff --- /dev/null +++ b/cms/static/cms/js/admin.base.js @@ -0,0 +1,23 @@ +import { Helpers, KEYS } from './modules/cms.base'; +import $ from 'jquery'; + +const CMS = { + $, + API: { + Helpers + }, + KEYS +}; + +// in case some data is already attached to the global CMS +// we must not override it +if (typeof window !== 'undefined') { + window.CMS = CMS.$.extend(window.CMS || {}, CMS); +} + +// make sure that jQuery is available as $ and jQuery +if (typeof window !== 'undefined' && !window.jQuery) { + window.$ = window.jQuery = CMS.$; +} + +export default CMS; diff --git a/cms/static/cms/js/admin.changeform.js b/cms/static/cms/js/admin.changeform.js new file mode 100644 index 00000000..b332254d --- /dev/null +++ b/cms/static/cms/js/admin.changeform.js @@ -0,0 +1,14 @@ +// Define the global CMS namespace, e.g. for widgets +const CMS = { + API: { + } +}; + +// expose to browser +if (typeof window !== 'undefined') { + window.CMS = window.CMS || CMS; +} + +import './modules/cms.changeform'; + +export default CMS; diff --git a/cms/static/cms/js/admin.pagetree.js b/cms/static/cms/js/admin.pagetree.js new file mode 100644 index 00000000..4bb942ff --- /dev/null +++ b/cms/static/cms/js/admin.pagetree.js @@ -0,0 +1,3 @@ +import PageTree from './modules/cms.pagetree'; + +window.CMS.PageTree = PageTree; diff --git a/cms/static/cms/js/admin/actions.js b/cms/static/cms/js/admin/actions.js new file mode 100644 index 00000000..7b65765a --- /dev/null +++ b/cms/static/cms/js/admin/actions.js @@ -0,0 +1,201 @@ +(function($) { + $(function() { + // INFO: it is not possible to put a form inside a form, so + // the actions have to create their own form on click. + // Note for any apps inheriting the burger menu, this will also capture those events. + + function closeSideFrame() { + try { + window.top.CMS.API.Sideframe.close(); + } catch (err) {} + } + $(`.js-action, + .cms-js-edit-btn, + .cms-actions-dropdown-menu-item-anchor`) + .on('click', function(e) { + let action = $(e.currentTarget); + let formMethod = action.attr('class').indexOf('cms-form-post-method') !== -1 ? 'POST' : 'GET'; + let keepSideFrame = action.attr('class').indexOf('js-keep-sideframe') !== -1; + + if (formMethod === 'GET') { + if (!keepSideFrame) { + action.attr('target', '_top'); + closeSideFrame(); + } + } else { + e.preventDefault(); + let body = window.top.document.body; + + if (keepSideFrame) { + body = window.document.body; + } + + /* Get csrftoken either from form (admin) or from the toolbar */ + let formToken = document.querySelector('form input[name="csrfmiddlewaretoken"]'); + /* Build the form through the DOM API: the href and the token must never be + interpolated into an HTML string, since jQuery hands back the *decoded* + attribute value and a quote in it would break out of the attribute. */ + let doc = body.ownerDocument; + let fakeForm = doc.createElement('form'); + let tokenInput = doc.createElement('input'); + + fakeForm.style.display = 'none'; + fakeForm.setAttribute('method', formMethod); + fakeForm.setAttribute('action', action.attr('href')); + + tokenInput.setAttribute('type', 'hidden'); + tokenInput.setAttribute('name', 'csrfmiddlewaretoken'); + tokenInput.value = (formToken ? formToken.value : formToken) || window.CMS.config.csrf; + fakeForm.appendChild(tokenInput); + + if (!keepSideFrame) { + closeSideFrame(); + } + $(fakeForm).appendTo(body).submit(); + } + }); + + $('.js-close-sideframe').on('click', function () { + try { + window.top.CMS.API.Sideframe.close(); + } catch (e) {} + }); + }); + + // Hide django messages after timeout occurs to prevent content overlap + $('document').ready(function() { + // Targeting first item returned (there's only ever one messagelist per template): + let messageList = document.getElementsByClassName('messagelist')[0]; + + if (messageList !== undefined) { + for (let item of messageList.children) { + item.style.opacity = 1; + setTimeout(() => { + let fader = setInterval(() => { + item.style.opacity -= 0.05; + if (item.style.opacity < 0) { + item.style.display = 'none'; + clearInterval(fader); + } + }, 20); + }, 5000); + } + } + }); + + // Create burger menu: + $(function() { + let createBurgerMenu = function createBurgerMenu(row) { + + let actions = $(row).children('.field-list_actions'); + + if (!actions.length) { + /* skip any rows without actions to avoid errors */ + return; + } + + /* create burger menu anchor icon */ + let anchor = document.createElement('a'); + let icon = document.createElement('span'); + + icon.setAttribute('class', 'cms-icon cms-icon-menu'); + anchor.setAttribute('class', 'btn cms-action-btn cms-burger-menu closed'); + anchor.setAttribute('title', 'Actions'); + anchor.appendChild(icon); + + /* create options container */ + let optionsContainer = document.createElement('div'); + let ul = document.createElement('ul'); + + /* 'cms-actions-dropdown-menu' class is the main selector for the menu, + 'cms-actions-dropdown-menu-arrow-right-top' keeps the menu arrow in position. */ + optionsContainer.setAttribute( + 'class', + 'cms-actions-dropdown-menu cms-actions-dropdown-menu-arrow-right-top'); + ul.setAttribute('class', 'cms-actions-dropdown-menu-inner'); + + /* get the existing actions and move them into the options container */ + $(actions[0]).children('.cms-burger-action-btn').each(function (index, item) { + let li = document.createElement('li'); + /* create an anchor from the item */ + let li_anchor = document.createElement('a'); + + li_anchor.setAttribute('class', 'cms-actions-dropdown-menu-item-anchor'); + li_anchor.setAttribute('href', $(item).attr('href')); + + if ($(item).hasClass('cms-form-get-method')) { + li_anchor.classList.add('cms-form-get-method'); // Ensure the fake-form selector is propagated to the new anchor + } + /* move the icon */ + li_anchor.appendChild($(item).children()[0]); + + /* create the button text and construct the button */ + let span = document.createElement('span'); + + span.setAttribute('class', 'label'); + span.appendChild( + document.createTextNode(item.title) + ); + + li_anchor.appendChild(span); + li.appendChild(li_anchor); + ul.appendChild(li); + + /* destroy original replaced buttons */ + actions[0].removeChild(item); + }); + + if ($(ul).children().length > 0) { + /* add the options to the drop-down */ + optionsContainer.appendChild(ul); + actions[0].appendChild(anchor); + document.body.appendChild(optionsContainer); + + /* listen for burger menu clicks */ + anchor.addEventListener('click', function (ev) { + ev.stopPropagation(); + toggleBurgerMenu(anchor, optionsContainer); + }); + + /* close burger menu if clicking outside */ + $(window).click(function () { + closeBurgerMenu(); + }); + } + }; + + let toggleBurgerMenu = function toggleBurgerMenu(burgerMenuAnchor, optionsContainer) { + let bm = $(burgerMenuAnchor); + let op = $(optionsContainer); + let closed = bm.hasClass('closed'); + + closeBurgerMenu(); + + if (closed) { + bm.removeClass('closed').addClass('open'); + op.removeClass('closed').addClass('open'); + } else { + bm.addClass('closed').removeClass('open'); + op.addClass('closed').removeClass('open'); + } + + let pos = bm.offset(); + + op.css('left', pos.left - op.width() - 5); + op.css('top', pos.top - 2); + }; + + let closeBurgerMenu = function closeBurgerMenu() { + $('.cms-actions-dropdown-menu').removeClass('open'); + $('.cms-actions-dropdown-menu').addClass('closed'); + $('.cms-action-btn').removeClass('open'); + $('.cms-action-btn').addClass('closed'); + }; + + $('#result_list').find('tr').each(function (index, item) { + createBurgerMenu(item); + }); + + }); + +})((typeof django !== 'undefined' && django.jQuery) || (typeof CMS !== 'undefined' && CMS.$) || false); diff --git a/cms/static/cms/js/admin/language-selector.js b/cms/static/cms/js/admin/language-selector.js new file mode 100644 index 00000000..d843ac8c --- /dev/null +++ b/cms/static/cms/js/admin/language-selector.js @@ -0,0 +1,39 @@ +(function ($) { + $(function() { + function replaceQueryParam(param, newval, search) { + var regex = new RegExp('([?;&])' + param + '[^&;]*[;&]?'); + var query = search.replace(regex, '$1').replace(/&$/, ''); + + return (query.length > 2 ? query + '&' : '?') + (newval ? param + '=' + newval : ''); + } + + $('.js-language-selector').change(function(event) { + event.stopPropagation(); + window.location.search = replaceQueryParam('language', $(this).val(), window.location.search); + }); + $('.changelist-form-container div.language-selector').prependTo('.changelist-form-container #toolbar'); + $('form#changelist-search').css('float', 'right'); + $('#toolbar').css('min-height', $('#toolbar div.language-selector select').height()); + $('#toolbar.actions-visible').css('float', 'unset'); + + $('.js-language-tabs').each(function (i, e) { + var element = $(e); + + element.data('dirty', element.parents('#content-main').find('.errors, .errorlist').length > 0); + element.parents('#content-main').find('form input').change(function () { + element.data('dirty', true); + }); + element.find('.language_button').click(function(e) { + if (!element.data('dirty') || confirm(element.data('message'))) { + // Preserve app_config selection + window.location.search = replaceQueryParam('language', this.dataset.url, window.location.search); + } + }); + $('#content input:not(.language_button):not([type="hidden"])').first().focus(); + /* Set the content inline language defaults */ + var selected_language = element.find('input.selected').attr('name'); + + $('.content-inline input[type="hidden"][name$="language"]').val(selected_language); + }); + }); +})(django.jQuery); diff --git a/cms/static/cms/js/admin/usersettings.js b/cms/static/cms/js/admin/usersettings.js new file mode 100644 index 00000000..d9df12e6 --- /dev/null +++ b/cms/static/cms/js/admin/usersettings.js @@ -0,0 +1,22 @@ +// Loaded by templates/admin/cms/usersettings/change_form.html, which renders +// inside the CMS sideframe iframe. After the user changes their settings (e.g. +// the admin language), the server redirects this iframe to its new URL with a +// "?reload_window" marker. This script detects that marker and tells the parent +// window's CMS instance to store the corrected sideframe URL and reload the whole +// page, so the new settings take effect in the toolbar and surrounding UI. +window.addEventListener('load', function () { + // we have to setTimeout here because the cms.sideframe load event + // fires after this one :( + setTimeout(function () { + var CMS = window.parent.CMS; + // we need to reload the parent window once "?reload_window" is defined and + // set the new url for the sideframe with the correct language specification + if (location.href.indexOf('reload_window') > -1 && CMS) { + // save url in settings + CMS.settings.sideframe.url = window.location.href.replace(/[?&]reload_window/, ''); + CMS.settings = CMS.API.Helpers.setSettings(CMS.settings); + // reload everything + CMS.API.Helpers.reloadBrowser(); + } + }, 0); +}); diff --git a/cms/static/cms/js/dist/5.2.0dev1/bundle.admin.base.min.js b/cms/static/cms/js/dist/5.2.0dev1/bundle.admin.base.min.js new file mode 100644 index 00000000..1b4c4faa --- /dev/null +++ b/cms/static/cms/js/dist/5.2.0dev1/bundle.admin.base.min.js @@ -0,0 +1 @@ +(()=>{var e={675(e,t){var n,r,i;r="undefined"!=typeof window?window:this,i=function(r,i){var o=[],a=o.slice,s=o.concat,u=o.push,l=o.indexOf,c={},d=c.toString,f=c.hasOwnProperty,p={},h="1.11.3",m=function(e,t){return new m.fn.init(e,t)},g=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,v=/^-ms-/,y=/-([\da-z])/gi,b=function(e,t){return t.toUpperCase()};function x(e){var t="length"in e&&e.length,n=m.type(e);return"function"!==n&&!m.isWindow(e)&&(!(1!==e.nodeType||!t)||"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}m.fn=m.prototype={jquery:h,constructor:m,selector:"",length:0,toArray:function(){return a.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:a.call(this)},pushStack:function(e){var t=m.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return m.each(this,e,t)},map:function(e){return this.pushStack(m.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(a.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:u,sort:o.sort,splice:o.splice},m.extend=m.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m.isFunction(a)||(a={}),s===u&&(a=this,s--);u>s;s++)if(null!=(i=arguments[s]))for(r in i)e=a[r],a!==(n=i[r])&&(l&&n&&(m.isPlainObject(n)||(t=m.isArray(n)))?(t?(t=!1,o=e&&m.isArray(e)?e:[]):o=e&&m.isPlainObject(e)?e:{},a[r]=m.extend(l,o,n)):void 0!==n&&(a[r]=n));return a},m.extend({expando:"jQuery"+(h+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===m.type(e)},isArray:Array.isArray||function(e){return"array"===m.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!m.isArray(e)&&e-parseFloat(e)+1>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==m.type(e)||e.nodeType||m.isWindow(e))return!1;try{if(e.constructor&&!f.call(e,"constructor")&&!f.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(e){return!1}if(p.ownLast)for(t in e)return f.call(e,t);for(t in e);return void 0===t||f.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[d.call(e)]||"object":typeof e},globalEval:function(e){e&&m.trim(e)&&(r.execScript||function(e){r.eval.call(r,e)})(e)},camelCase:function(e){return e.replace(v,"ms-").replace(y,b)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r=0,i=e.length,o=x(e);if(n){if(o)for(;i>r&&!1!==t.apply(e[r],n);r++);else for(r in e)if(!1===t.apply(e[r],n))break}else if(o)for(;i>r&&!1!==t.call(e[r],r,e[r]);r++);else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(g,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(x(Object(e))?m.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(l)return l.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;n>r;)e[i++]=t[r++];if(n!=n)for(;void 0!==t[r];)e[i++]=t[r++];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;o>i;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i=0,o=e.length,a=[];if(x(e))for(;o>i;i++)null!=(r=t(e[i],i,n))&&a.push(r);else for(i in e)null!=(r=t(e[i],i,n))&&a.push(r);return s.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(i=e[t],t=e,e=i),m.isFunction(e)?(n=a.call(arguments,2),r=function(){return e.apply(t||this,n.concat(a.call(arguments)))},r.guid=e.guid=e.guid||m.guid++,r):void 0},now:function(){return+new Date},support:p}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});var w=function(e){var t,n,r,i,o,a,s,u,l,c,d,f,p,h,m,g,v,y,b,x="sizzle"+1*new Date,w=e.document,T=0,C=0,S=ae(),E=ae(),N=ae(),A=function(e,t){return e===t&&(d=!0),0},k=1<<31,j={}.hasOwnProperty,D=[],L=D.pop,M=D.push,_=D.push,H=D.slice,O=function(e,t){for(var n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1},q="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",R="[\\x20\\t\\r\\n\\f]",P="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",F=P.replace("w","w#"),B="\\["+R+"*("+P+")(?:"+R+"*([*^$|!~]?=)"+R+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+F+"))|)"+R+"*\\]",I=":("+P+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+B+")*)|.*)\\)|)",W=new RegExp(R+"+","g"),$=new RegExp("^"+R+"+|((?:^|[^\\\\])(?:\\\\.)*)"+R+"+$","g"),z=new RegExp("^"+R+"*,"+R+"*"),X=new RegExp("^"+R+"*([>+~]|"+R+")"+R+"*"),U=new RegExp("="+R+"*([^\\]'\"]*?)"+R+"*\\]","g"),V=new RegExp(I),J=new RegExp("^"+F+"$"),G={ID:new RegExp("^#("+P+")"),CLASS:new RegExp("^\\.("+P+")"),TAG:new RegExp("^("+P.replace("w","w*")+")"),ATTR:new RegExp("^"+B),PSEUDO:new RegExp("^"+I),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+q+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=/'|\\/g,ne=new RegExp("\\\\([\\da-f]{1,6}"+R+"?|("+R+")|.)","ig"),re=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},ie=function(){f()};try{_.apply(D=H.call(w.childNodes),w.childNodes),D[w.childNodes.length].nodeType}catch(e){_={apply:D.length?function(e,t){M.apply(e,H.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,d,h,v,y,T,C;if((t?t.ownerDocument||t:w)!==p&&f(t),r=r||[],c=(t=t||p).nodeType,"string"!=typeof e||!e||1!==c&&9!==c&&11!==c)return r;if(!i&&m){if(11!==c&&(o=Z.exec(e)))if(l=o[1]){if(9===c){if(!(s=t.getElementById(l))||!s.parentNode)return r;if(s.id===l)return r.push(s),r}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(l))&&b(t,s)&&s.id===l)return r.push(s),r}else{if(o[2])return _.apply(r,t.getElementsByTagName(e)),r;if((l=o[3])&&n.getElementsByClassName)return _.apply(r,t.getElementsByClassName(l)),r}if(n.qsa&&(!g||!g.test(e))){if(y=v=x,T=t,C=1!==c&&e,1===c&&"object"!==t.nodeName.toLowerCase()){for(h=a(e),(v=t.getAttribute("id"))?y=v.replace(te,"\\$&"):t.setAttribute("id",y),y="[id='"+y+"'] ",d=h.length;d--;)h[d]=y+ge(h[d]);T=ee.test(e)&&he(t.parentNode)||t,C=h.join(",")}if(C)try{return _.apply(r,T.querySelectorAll(C)),r}catch(e){}finally{v||t.removeAttribute("id")}}}return u(e.replace($,"$1"),t,r,i)}function ae(){var e=[];return function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}}function se(e){return e[x]=!0,e}function ue(e){var t=p.createElement("div");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){for(var n=e.split("|"),i=e.length;i--;)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||k)-(~e.sourceIndex||k);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function fe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pe(e){return se(function(t){return t=+t,se(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function he(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},f=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==p&&9===a.nodeType&&a.documentElement?(p=a,h=a.documentElement,(i=a.defaultView)&&i!==i.top&&(i.addEventListener?i.addEventListener("unload",ie,!1):i.attachEvent&&i.attachEvent("onunload",ie)),m=!o(a),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(a.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=K.test(a.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=x,!a.getElementsByName||!a.getElementsByName(x).length}),n.getById?(r.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},r.filter.ID=function(e){var t=e.replace(ne,re);return function(e){return e.getAttribute("id")===t}}):(delete r.find.ID,r.filter.ID=function(e){var t=e.replace(ne,re);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){return m?t.getElementsByClassName(e):void 0},v=[],g=[],(n.qsa=K.test(a.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||g.push("\\["+R+"*(?:value|"+q+")"),e.querySelectorAll("[id~="+x+"-]").length||g.push("~="),e.querySelectorAll(":checked").length||g.push(":checked"),e.querySelectorAll("a#"+x+"+*").length||g.push(".#.+[+~]")}),ue(function(e){var t=a.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&g.push("name"+R+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(n.matchesSelector=K.test(y=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),v.push("!=",I)}),g=g.length&&new RegExp(g.join("|")),v=v.length&&new RegExp(v.join("|")),t=K.test(h.compareDocumentPosition),b=t||K.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},A=t?function(e,t){if(e===t)return d=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===a||e.ownerDocument===w&&b(w,e)?-1:t===a||t.ownerDocument===w&&b(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return d=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===a?-1:t===a?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?ce(s[r],u[r]):s[r]===w?-1:u[r]===w?1:0},a):p},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&f(e),t=t.replace(U,"='$1']"),!(!n.matchesSelector||!m||v&&v.test(t)||g&&g.test(t)))try{var r=y.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,p,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==p&&f(e),b(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==p&&f(e);var i=r.attrHandle[t.toLowerCase()],o=i&&j.call(r.attrHandle,t.toLowerCase())?i(e,t,!m):void 0;return void 0!==o?o:n.attributes||!m?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(d=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(A),d){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},r=oe.selectors={cacheLength:50,createPseudo:se,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(ne,re),e[3]=(e[3]||e[4]||e[5]||"").replace(ne,re),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(ne,re).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=S[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&S(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace(W," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,d,f,p,h,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!u&&!s;if(g){if(o){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(p=(l=(c=g[x]||(g[x]={}))[e]||[])[0]===T&&l[1],f=l[0]===T&&l[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(f=p=0)||h.pop();)if(1===d.nodeType&&++f&&d===t){c[e]=[T,p,f];break}}else if(y&&(l=(t[x]||(t[x]={}))[e])&&l[0]===T)f=l[1];else for(;(d=++p&&d&&d[m]||(f=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++f||(y&&((d[x]||(d[x]={}))[e]=[T,f]),d!==t)););return(f-=i)===r||f%r===0&&f/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[x]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){for(var r,o=i(e,t),a=o.length;a--;)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace($,"$1"));return r[x]?se(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(ne,re),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return J.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(ne,re).toLowerCase(),function(t){var n;do{if(n=m?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return Y.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:pe(function(){return[0]}),last:pe(function(e,t){return[t-1]}),eq:pe(function(e,t,n){return[0>n?n+t:n]}),even:pe(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:pe(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:pe(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:pe(function(e,t,n){for(var r=0>n?n+t:n;++rt;t++)r+=e[t].value;return r}function ve(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=C++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,u,l=[T,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if((s=(u=t[x]||(t[x]={}))[r])&&s[0]===T&&s[1]===o)return l[2]=s[2];if(u[r]=l,l[2]=e(t,n,a))return!0}}}function ye(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function xe(e,t,n,r,i,o){return r&&!r[x]&&(r=xe(r)),i&&!i[x]&&(i=xe(i,o)),se(function(o,a,s,u){var l,c,d,f=[],p=[],h=a.length,m=o||function(e,t,n){for(var r=0,i=t.length;i>r;r++)oe(e,t[r],n);return n}(t||"*",s.nodeType?[s]:s,[]),g=!e||!o&&t?m:be(m,f,e,s,u),v=n?i||(o?e:h||r)?[]:a:g;if(n&&n(g,v,s,u),r)for(l=be(v,p),r(l,[],s,u),c=l.length;c--;)(d=l[c])&&(v[p[c]]=!(g[p[c]]=d));if(o){if(i||e){if(i){for(l=[],c=v.length;c--;)(d=v[c])&&l.push(g[c]=d);i(null,v=[],l,u)}for(c=v.length;c--;)(d=v[c])&&(l=i?O(o,d):f[c])>-1&&(o[l]=!(a[l]=d))}}else v=be(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):_.apply(a,v)})}function we(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=ve(function(e){return e===t},s,!0),d=ve(function(e){return O(t,e)>-1},s,!0),f=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):d(e,n,r));return t=null,i}];o>u;u++)if(n=r.relative[e[u].type])f=[ve(ye(f),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[x]){for(i=++u;o>i&&!r.relative[e[i].type];i++);return xe(u>1&&ye(f),u>1&&ge(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace($,"$1"),n,i>u&&we(e.slice(u,i)),o>i&&we(e=e.slice(i)),o>i&&ge(e))}f.push(n)}return ye(f)}function Te(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var d,f,h,m=0,g="0",v=o&&[],y=[],b=l,x=o||i&&r.find.TAG("*",c),w=T+=null==b?1:Math.random()||.1,C=x.length;for(c&&(l=a!==p&&a);g!==C&&null!=(d=x[g]);g++){if(i&&d){for(f=0;h=e[f++];)if(h(d,a,s)){u.push(d);break}c&&(T=w)}n&&((d=!h&&d)&&m--,o&&v.push(d))}if(m+=g,n&&g!==m){for(f=0;h=t[f++];)h(v,y,a,s);if(o){if(m>0)for(;g--;)v[g]||y[g]||(y[g]=L.call(u));y=be(y)}_.apply(u,y),c&&!o&&y.length>0&&m+t.length>1&&oe.uniqueSort(u)}return c&&(T=w,l=b),v};return n?se(o):o}return me.prototype=r.filters=r.pseudos,r.setFilters=new me,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);for(s=e,u=[],l=r.preFilter;s;){for(a in(!n||(i=z.exec(s)))&&(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=X.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace($," ")}),s=s.slice(n.length)),r.filter)!(i=G[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):E(e,u).slice(0)},s=oe.compile=function(e,t){var n,r=[],i=[],o=N[e+" "];if(!o){for(t||(t=a(e)),n=t.length;n--;)(o=we(t[n]))[x]?r.push(o):i.push(o);(o=N(e,Te(i,r))).selector=e}return o},u=oe.select=function(e,t,i,o){var u,l,c,d,f,p="function"==typeof e&&e,h=!o&&a(e=p.selector||e);if(i=i||[],1===h.length){if((l=h[0]=h[0].slice(0)).length>2&&"ID"===(c=l[0]).type&&n.getById&&9===t.nodeType&&m&&r.relative[l[1].type]){if(!(t=(r.find.ID(c.matches[0].replace(ne,re),t)||[])[0]))return i;p&&(t=t.parentNode),e=e.slice(l.shift().value.length)}for(u=G.needsContext.test(e)?0:l.length;u--&&(c=l[u],!r.relative[d=c.type]);)if((f=r.find[d])&&(o=f(c.matches[0].replace(ne,re),ee.test(l[0].type)&&he(t.parentNode)||t))){if(l.splice(u,1),!(e=o.length&&ge(l)))return _.apply(i,o),i;break}}return(p||s(e,h))(o,t,!m,i,ee.test(e)&&he(t.parentNode)||t),i},n.sortStable=x.split("").sort(A).join("")===x,n.detectDuplicates=!!d,f(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(p.createElement("div"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(q,function(e,t,n){var r;return n?void 0:!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(r);m.find=w,m.expr=w.selectors,m.expr[":"]=m.expr.pseudos,m.unique=w.uniqueSort,m.text=w.getText,m.isXMLDoc=w.isXML,m.contains=w.contains;var T=m.expr.match.needsContext,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^.[^:#\[\.,]*$/;function E(e,t,n){if(m.isFunction(t))return m.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return m.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(S.test(t))return m.filter(t,e,n);t=m.filter(t,e)}return m.grep(e,function(e){return m.inArray(e,t)>=0!==n})}m.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?m.find.matchesSelector(r,e)?[r]:[]:m.find.matches(e,m.grep(t,function(e){return 1===e.nodeType}))},m.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(m(e).filter(function(){for(t=0;i>t;t++)if(m.contains(r[t],this))return!0}));for(t=0;i>t;t++)m.find(e,r[t],n);return(n=this.pushStack(i>1?m.unique(n):n)).selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(E(this,e||[],!1))},not:function(e){return this.pushStack(E(this,e||[],!0))},is:function(e){return!!E(this,"string"==typeof e&&T.test(e)?m(e):e||[],!1).length}});var N,A=r.document,k=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,j=m.fn.init=function(e,t){var n,r;if(!e)return this;if("string"==typeof e){if(!(n="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:k.exec(e))||!n[1]&&t)return!t||t.jquery?(t||N).find(e):this.constructor(t).find(e);if(n[1]){if(t=t instanceof m?t[0]:t,m.merge(this,m.parseHTML(n[1],t&&t.nodeType?t.ownerDocument||t:A,!0)),C.test(n[1])&&m.isPlainObject(t))for(n in t)m.isFunction(this[n])?this[n](t[n]):this.attr(n,t[n]);return this}if((r=A.getElementById(n[2]))&&r.parentNode){if(r.id!==n[2])return N.find(e);this.length=1,this[0]=r}return this.context=A,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):m.isFunction(e)?void 0!==N.ready?N.ready(e):e(m):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),m.makeArray(e,this))};j.prototype=m.fn,N=m(A);var D=/^(?:parents|prev(?:Until|All))/,L={children:!0,contents:!0,next:!0,prev:!0};function M(e,t){do{e=e[t]}while(e&&1!==e.nodeType);return e}m.extend({dir:function(e,t,n){for(var r=[],i=e[t];i&&9!==i.nodeType&&(void 0===n||1!==i.nodeType||!m(i).is(n));)1===i.nodeType&&r.push(i),i=i[t];return r},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}}),m.fn.extend({has:function(e){var t,n=m(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(m.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,r=0,i=this.length,o=[],a=T.test(e)||"string"!=typeof e?m(e,t||this.context):0;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&m.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?m.unique(o):o)},index:function(e){return e?"string"==typeof e?m.inArray(this[0],m(e)):m.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(m.unique(m.merge(this.get(),m(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),m.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return m.dir(e,"parentNode")},parentsUntil:function(e,t,n){return m.dir(e,"parentNode",n)},next:function(e){return M(e,"nextSibling")},prev:function(e){return M(e,"previousSibling")},nextAll:function(e){return m.dir(e,"nextSibling")},prevAll:function(e){return m.dir(e,"previousSibling")},nextUntil:function(e,t,n){return m.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return m.dir(e,"previousSibling",n)},siblings:function(e){return m.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return m.sibling(e.firstChild)},contents:function(e){return m.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:m.merge([],e.childNodes)}},function(e,t){m.fn[e]=function(n,r){var i=m.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=m.filter(r,i)),this.length>1&&(L[e]||(i=m.unique(i)),D.test(e)&&(i=i.reverse())),this.pushStack(i)}});var _,H=/\S+/g,O={};function q(){A.addEventListener?(A.removeEventListener("DOMContentLoaded",R,!1),r.removeEventListener("load",R,!1)):(A.detachEvent("onreadystatechange",R),r.detachEvent("onload",R))}function R(){(A.addEventListener||"load"===event.type||"complete"===A.readyState)&&(q(),m.ready())}m.Callbacks=function(e){e="string"==typeof e?O[e]||function(e){var t=O[e]={};return m.each(e.match(H)||[],function(e,n){t[n]=!0}),t}(e):m.extend({},e);var t,n,r,i,o,a,s=[],u=!e.once&&[],l=function(d){for(n=e.memory&&d,r=!0,o=a||0,a=0,i=s.length,t=!0;s&&i>o;o++)if(!1===s[o].apply(d[0],d[1])&&e.stopOnFalse){n=!1;break}t=!1,s&&(u?u.length&&l(u.shift()):n?s=[]:c.disable())},c={add:function(){if(s){var r=s.length;!function t(n){m.each(n,function(n,r){var i=m.type(r);"function"===i?e.unique&&c.has(r)||s.push(r):r&&r.length&&"string"!==i&&t(r)})}(arguments),t?i=s.length:n&&(a=r,l(n))}return this},remove:function(){return s&&m.each(arguments,function(e,n){for(var r;(r=m.inArray(n,s,r))>-1;)s.splice(r,1),t&&(i>=r&&i--,o>=r&&o--)}),this},has:function(e){return e?m.inArray(e,s)>-1:!(!s||!s.length)},empty:function(){return s=[],i=0,this},disable:function(){return s=u=n=void 0,this},disabled:function(){return!s},lock:function(){return u=void 0,n||c.disable(),this},locked:function(){return!u},fireWith:function(e,n){return!s||r&&!u||(n=[e,(n=n||[]).slice?n.slice():n],t?u.push(n):l(n)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},m.extend({Deferred:function(e){var t=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return m.Deferred(function(n){m.each(t,function(t,o){var a=m.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&m.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[o[0]+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?m.extend(e,r):r}},i={};return r.pipe=r.then,m.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=a.call(arguments),s=o.length,u=1!==s||e&&m.isFunction(e.promise)?s:0,l=1===u?e:m.Deferred(),c=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?a.call(arguments):i,r===t?l.notifyWith(n,r):--u||l.resolveWith(n,r)}};if(s>1)for(t=new Array(s),n=new Array(s),r=new Array(s);s>i;i++)o[i]&&m.isFunction(o[i].promise)?o[i].promise().done(c(i,r,o)).fail(l.reject).progress(c(i,n,t)):--u;return u||l.resolveWith(r,o),l.promise()}}),m.fn.ready=function(e){return m.ready.promise().done(e),this},m.extend({isReady:!1,readyWait:1,holdReady:function(e){e?m.readyWait++:m.ready(!0)},ready:function(e){if(!0===e?! --m.readyWait:!m.isReady){if(!A.body)return setTimeout(m.ready);m.isReady=!0,!0!==e&&--m.readyWait>0||(_.resolveWith(A,[m]),m.fn.triggerHandler&&(m(A).triggerHandler("ready"),m(A).off("ready")))}}}),m.ready.promise=function(e){if(!_)if(_=m.Deferred(),"complete"===A.readyState)setTimeout(m.ready);else if(A.addEventListener)A.addEventListener("DOMContentLoaded",R,!1),r.addEventListener("load",R,!1);else{A.attachEvent("onreadystatechange",R),r.attachEvent("onload",R);var t=!1;try{t=null==r.frameElement&&A.documentElement}catch(e){}t&&t.doScroll&&function e(){if(!m.isReady){try{t.doScroll("left")}catch(t){return setTimeout(e,50)}q(),m.ready()}}()}return _.promise(e)};var P,F="undefined";for(P in m(p))break;p.ownLast="0"!==P,p.inlineBlockNeedsLayout=!1,m(function(){var e,t,n,r;(n=A.getElementsByTagName("body")[0])&&n.style&&(t=A.createElement("div"),(r=A.createElement("div")).style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(r).appendChild(t),typeof t.style.zoom!==F&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",p.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(r))}),function(){var e=A.createElement("div");if(null==p.deleteExpando){p.deleteExpando=!0;try{delete e.test}catch(e){p.deleteExpando=!1}}e=null}(),m.acceptData=function(e){var t=m.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return(1===n||9===n)&&(!t||!0!==t&&e.getAttribute("classid")===t)};var B=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,I=/([A-Z])/g;function W(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace(I,"-$1").toLowerCase();if("string"==typeof(n=e.getAttribute(r))){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:B.test(n)?m.parseJSON(n):n)}catch(e){}m.data(e,t,n)}else n=void 0}return n}function $(e){var t;for(t in e)if(("data"!==t||!m.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function z(e,t,n,r){if(m.acceptData(e)){var i,a,s=m.expando,u=e.nodeType,l=u?m.cache:e,c=u?e[s]:e[s]&&s;if(c&&l[c]&&(r||l[c].data)||void 0!==n||"string"!=typeof t)return c||(c=u?e[s]=o.pop()||m.guid++:s),l[c]||(l[c]=u?{}:{toJSON:m.noop}),("object"==typeof t||"function"==typeof t)&&(r?l[c]=m.extend(l[c],t):l[c].data=m.extend(l[c].data,t)),a=l[c],r||(a.data||(a.data={}),a=a.data),void 0!==n&&(a[m.camelCase(t)]=n),"string"==typeof t?null==(i=a[t])&&(i=a[m.camelCase(t)]):i=a,i}}function X(e,t,n){if(m.acceptData(e)){var r,i,o=e.nodeType,a=o?m.cache:e,s=o?e[m.expando]:m.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){i=(t=m.isArray(t)?t.concat(m.map(t,m.camelCase)):t in r||(t=m.camelCase(t))in r?[t]:t.split(" ")).length;for(;i--;)delete r[t[i]];if(n?!$(r):!m.isEmptyObject(r))return}(n||(delete a[s].data,$(a[s])))&&(o?m.cleanData([e],!0):p.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return!!(e=e.nodeType?m.cache[e[m.expando]]:e[m.expando])&&!$(e)},data:function(e,t,n){return z(e,t,n)},removeData:function(e,t){return X(e,t)},_data:function(e,t,n){return z(e,t,n,!0)},_removeData:function(e,t){return X(e,t,!0)}}),m.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=m.data(o),1===o.nodeType&&!m._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&0===(r=a[n].name).indexOf("data-")&&W(o,r=m.camelCase(r.slice(5)),i[r]);m._data(o,"parsedAttrs",!0)}return i}return"object"==typeof e?this.each(function(){m.data(this,e)}):arguments.length>1?this.each(function(){m.data(this,e,t)}):o?W(o,e,m.data(o,e)):void 0},removeData:function(e){return this.each(function(){m.removeData(this,e)})}}),m.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=m._data(e,t),n&&(!r||m.isArray(n)?r=m._data(e,t,m.makeArray(n)):r.push(n)),r||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=m.queue(e,t),r=n.length,i=n.shift(),o=m._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){m.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return m._data(e,n)||m._data(e,n,{empty:m.Callbacks("once memory").add(function(){m._removeData(e,t+"queue"),m._removeData(e,n)})})}}),m.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.lengths;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},Y=/^(?:checkbox|radio)$/i;!function(){var e=A.createElement("input"),t=A.createElement("div"),n=A.createDocumentFragment();if(t.innerHTML="
a",p.leadingWhitespace=3===t.firstChild.nodeType,p.tbody=!t.getElementsByTagName("tbody").length,p.htmlSerialize=!!t.getElementsByTagName("link").length,p.html5Clone="<:nav>"!==A.createElement("nav").cloneNode(!0).outerHTML,e.type="checkbox",e.checked=!0,n.appendChild(e),p.appendChecked=e.checked,t.innerHTML="",p.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue,n.appendChild(t),t.innerHTML="",p.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,p.noCloneEvent=!0,t.attachEvent&&(t.attachEvent("onclick",function(){p.noCloneEvent=!1}),t.cloneNode(!0).click()),null==p.deleteExpando){p.deleteExpando=!0;try{delete t.test}catch(e){p.deleteExpando=!1}}}(),function(){var e,t,n=A.createElement("div");for(e in{submit:!0,change:!0,focusin:!0})t="on"+e,(p[e+"Bubbles"]=t in r)||(n.setAttribute(t,"t"),p[e+"Bubbles"]=!1===n.attributes[t].expando);n=null}();var Q=/^(?:input|select|textarea)$/i,K=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,ee=/^(?:focusinfocus|focusoutblur)$/,te=/^([^.]*)(?:\.(.+)|)$/;function ne(){return!0}function re(){return!1}function ie(){try{return A.activeElement}catch(e){}}function oe(e){var t=ae.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}m.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,d,f,p,h,g,v=m._data(e);if(v){for(n.handler&&(n=(u=n).handler,i=u.selector),n.guid||(n.guid=m.guid++),(a=v.events)||(a=v.events={}),(c=v.handle)||(c=v.handle=function(e){return typeof m===F||e&&m.event.triggered===e.type?void 0:m.event.dispatch.apply(c.elem,arguments)},c.elem=e),s=(t=(t||"").match(H)||[""]).length;s--;)p=g=(o=te.exec(t[s])||[])[1],h=(o[2]||"").split(".").sort(),p&&(l=m.event.special[p]||{},p=(i?l.delegateType:l.bindType)||p,l=m.event.special[p]||{},d=m.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&m.expr.match.needsContext.test(i),namespace:h.join(".")},u),(f=a[p])||((f=a[p]=[]).delegateCount=0,l.setup&&!1!==l.setup.call(e,r,h,c)||(e.addEventListener?e.addEventListener(p,c,!1):e.attachEvent&&e.attachEvent("on"+p,c))),l.add&&(l.add.call(e,d),d.handler.guid||(d.handler.guid=n.guid)),i?f.splice(f.delegateCount++,0,d):f.push(d),m.event.global[p]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,d,f,p,h,g,v=m.hasData(e)&&m._data(e);if(v&&(c=v.events)){for(l=(t=(t||"").match(H)||[""]).length;l--;)if(p=g=(s=te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),p){for(d=m.event.special[p]||{},f=c[p=(r?d.delegateType:d.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;o--;)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,d.remove&&d.remove.call(e,a));u&&!f.length&&(d.teardown&&!1!==d.teardown.call(e,h,v.handle)||m.removeEvent(e,p,v.handle),delete c[p])}else for(p in c)m.event.remove(e,p+t[l],n,r,!0);m.isEmptyObject(c)&&(delete v.handle,m._removeData(e,"events"))}},trigger:function(e,t,n,i){var o,a,s,u,l,c,d,p=[n||A],h=f.call(e,"type")?e.type:e,g=f.call(e,"namespace")?e.namespace.split("."):[];if(s=c=n=n||A,3!==n.nodeType&&8!==n.nodeType&&!ee.test(h+m.event.triggered)&&(h.indexOf(".")>=0&&(g=h.split("."),h=g.shift(),g.sort()),a=h.indexOf(":")<0&&"on"+h,(e=e[m.expando]?e:new m.Event(h,"object"==typeof e&&e)).isTrigger=i?2:3,e.namespace=g.join("."),e.namespace_re=e.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:m.makeArray(t,[e]),l=m.event.special[h]||{},i||!l.trigger||!1!==l.trigger.apply(n,t))){if(!i&&!l.noBubble&&!m.isWindow(n)){for(u=l.delegateType||h,ee.test(u+h)||(s=s.parentNode);s;s=s.parentNode)p.push(s),c=s;c===(n.ownerDocument||A)&&p.push(c.defaultView||c.parentWindow||r)}for(d=0;(s=p[d++])&&!e.isPropagationStopped();)e.type=d>1?u:l.bindType||h,(o=(m._data(s,"events")||{})[e.type]&&m._data(s,"handle"))&&o.apply(s,t),(o=a&&s[a])&&o.apply&&m.acceptData(s)&&(e.result=o.apply(s,t),!1===e.result&&e.preventDefault());if(e.type=h,!i&&!e.isDefaultPrevented()&&(!l._default||!1===l._default.apply(p.pop(),t))&&m.acceptData(n)&&a&&n[h]&&!m.isWindow(n)){(c=n[a])&&(n[a]=null),m.event.triggered=h;try{n[h]()}catch(e){}m.event.triggered=void 0,c&&(n[a]=c)}return e.result}},dispatch:function(e){e=m.event.fix(e);var t,n,r,i,o,s=[],u=a.call(arguments),l=(m._data(this,"events")||{})[e.type]||[],c=m.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,e)){for(s=m.event.handlers.call(this,e,l),t=0;(i=s[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,o=0;(r=i.handlers[o++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(r.namespace))&&(e.handleObj=r,e.data=r.data,void 0!==(n=((m.event.special[r.origType]||{}).handle||r.handler).apply(i.elem,u))&&!1===(e.result=n)&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,a=[],s=t.delegateCount,u=e.target;if(s&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(!0!==u.disabled||"click"!==e.type)){for(i=[],o=0;s>o;o++)void 0===i[n=(r=t[o]).selector+" "]&&(i[n]=r.needsContext?m(n,this).index(u)>=0:m.find(n,this,null,[u]).length),i[n]&&i.push(r);i.length&&a.push({elem:u,handlers:i})}return s]","i"),le=/^\s+/,ce=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,de=/<([\w:]+)/,fe=/\s*$/g,be={option:[1,""],legend:[1,"

","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:p.htmlSerialize?[0,"",""]:[1,"X
","
"]},xe=oe(A).appendChild(A.createElement("div"));function we(e,t){var n,r,i=0,o=typeof e.getElementsByTagName!==F?e.getElementsByTagName(t||"*"):typeof e.querySelectorAll!==F?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||m.nodeName(r,t)?o.push(r):m.merge(o,we(r,t));return void 0===t||t&&m.nodeName(e,t)?m.merge([e],o):o}function Te(e){Y.test(e.type)&&(e.defaultChecked=e.checked)}function Ce(e,t){return m.nodeName(e,"table")&&m.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Se(e){return e.type=(null!==m.find.attr(e,"type"))+"/"+e.type,e}function Ee(e){var t=ve.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ne(e,t){for(var n,r=0;null!=(n=e[r]);r++)m._data(n,"globalEval",!t||m._data(t[r],"globalEval"))}function Ae(e,t){if(1===t.nodeType&&m.hasData(e)){var n,r,i,o=m._data(e),a=m._data(t,o),s=o.events;if(s)for(n in delete a.handle,a.events={},s)for(r=0,i=s[n].length;i>r;r++)m.event.add(t,n,s[n][r]);a.data&&(a.data=m.extend({},a.data))}}function ke(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!p.noCloneEvent&&t[m.expando]){for(r in(i=m._data(t)).events)m.removeEvent(t,r,i.handle);t.removeAttribute(m.expando)}"script"===n&&t.text!==e.text?(Se(t).text=e.text,Ee(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),p.html5Clone&&e.innerHTML&&!m.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Y.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,m.extend({clone:function(e,t,n){var r,i,o,a,s,u=m.contains(e.ownerDocument,e);if(p.html5Clone||m.isXMLDoc(e)||!ue.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(xe.innerHTML=e.outerHTML,xe.removeChild(o=xe.firstChild)),!(p.noCloneEvent&&p.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||m.isXMLDoc(e)))for(r=we(o),s=we(e),a=0;null!=(i=s[a]);++a)r[a]&&ke(i,r[a]);if(t)if(n)for(s=s||we(e),r=r||we(o),a=0;null!=(i=s[a]);a++)Ae(i,r[a]);else Ae(e,o);return(r=we(o,"script")).length>0&&Ne(r,!u&&we(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){for(var i,o,a,s,u,l,c,d=e.length,f=oe(t),h=[],g=0;d>g;g++)if((o=e[g])||0===o)if("object"===m.type(o))m.merge(h,o.nodeType?[o]:o);else if(pe.test(o)){for(s=s||f.appendChild(t.createElement("div")),u=(de.exec(o)||["",""])[1].toLowerCase(),c=be[u]||be._default,s.innerHTML=c[1]+o.replace(ce,"<$1>")+c[2],i=c[0];i--;)s=s.lastChild;if(!p.leadingWhitespace&&le.test(o)&&h.push(t.createTextNode(le.exec(o)[0])),!p.tbody)for(i=(o="table"!==u||fe.test(o)?""!==c[1]||fe.test(o)?0:s:s.firstChild)&&o.childNodes.length;i--;)m.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l);for(m.merge(h,s.childNodes),s.textContent="";s.firstChild;)s.removeChild(s.firstChild);s=f.lastChild}else h.push(t.createTextNode(o));for(s&&f.removeChild(s),p.appendChecked||m.grep(we(h,"input"),Te),g=0;o=h[g++];)if((!r||-1===m.inArray(o,r))&&(a=m.contains(o.ownerDocument,o),s=we(f.appendChild(o),"script"),a&&Ne(s),n))for(i=0;o=s[i++];)ge.test(o.type||"")&&n.push(o);return s=null,f},cleanData:function(e,t){for(var n,r,i,a,s=0,u=m.expando,l=m.cache,c=p.deleteExpando,d=m.event.special;null!=(n=e[s]);s++)if((t||m.acceptData(n))&&(a=(i=n[u])&&l[i])){if(a.events)for(r in a.events)d[r]?m.event.remove(n,r):m.removeEvent(n,r,a.handle);l[i]&&(delete l[i],c?delete n[u]:typeof n.removeAttribute!==F?n.removeAttribute(u):n[u]=null,o.push(i))}}}),m.fn.extend({text:function(e){return G(this,function(e){return void 0===e?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||A).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ce(this,e).appendChild(e)})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ce(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){for(var n,r=e?m.filter(e,this):this,i=0;null!=(n=r[i]);i++)t||1!==n.nodeType||m.cleanData(we(n)),n.parentNode&&(t&&m.contains(n.ownerDocument,n)&&Ne(we(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&m.cleanData(we(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&m.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return m.clone(this,e,t)})},html:function(e){return G(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(se,""):void 0;if(!("string"!=typeof e||he.test(e)||!p.htmlSerialize&&ue.test(e)||!p.leadingWhitespace&&le.test(e)||be[(de.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(ce,"<$1>");try{for(;r>n;n++)1===(t=this[n]||{}).nodeType&&(m.cleanData(we(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=arguments[0];return this.domManip(arguments,function(t){e=this.parentNode,m.cleanData(we(this)),e&&e.replaceChild(t,this)}),e&&(e.length||e.nodeType)?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t){e=s.apply([],e);var n,r,i,o,a,u,l=0,c=this.length,d=this,f=c-1,h=e[0],g=m.isFunction(h);if(g||c>1&&"string"==typeof h&&!p.checkClone&&me.test(h))return this.each(function(n){var r=d.eq(n);g&&(e[0]=h.call(this,n,r.html())),r.domManip(e,t)});if(c&&(n=(u=m.buildFragment(e,this[0].ownerDocument,!1,this)).firstChild,1===u.childNodes.length&&(u=n),n)){for(i=(o=m.map(we(u,"script"),Se)).length;c>l;l++)r=u,l!==f&&(r=m.clone(r,!0,!0),i&&m.merge(o,we(r,"script"))),t.call(this[l],r,l);if(i)for(a=o[o.length-1].ownerDocument,m.map(o,Ee),l=0;i>l;l++)r=o[l],ge.test(r.type||"")&&!m._data(r,"globalEval")&&m.contains(a,r)&&(r.src?m._evalUrl&&m._evalUrl(r.src):m.globalEval((r.text||r.textContent||r.innerHTML||"").replace(ye,"")));u=n=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){m.fn[e]=function(e){for(var n,r=0,i=[],o=m(e),a=o.length-1;a>=r;r++)n=r===a?this:this.clone(!0),m(o[r])[t](n),u.apply(i,n.get());return this.pushStack(i)}});var je,De={};function Le(e,t){var n,i=m(t.createElement(e)).appendTo(t.body),o=r.getDefaultComputedStyle&&(n=r.getDefaultComputedStyle(i[0]))?n.display:m.css(i[0],"display");return i.detach(),o}function Me(e){var t=A,n=De[e];return n||("none"!==(n=Le(e,t))&&n||((t=((je=(je||m("