forked from ungleich-public/dynamicweb
clone cms blog
This commit is contained in:
parent
687acea19a
commit
5c439fd8a6
113 changed files with 17832 additions and 0 deletions
1
djangocms-blog
Submodule
1
djangocms-blog
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit e692aef0bbcf8d0538175168667d6b409c59f718
|
||||
3
djangocms_blog/__init__.py
Normal file
3
djangocms_blog/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
__author__ = "Iacopo Spalletti"
|
||||
__email__ = "i.spalletti@nephila.it"
|
||||
__version__ = "2.0.11.dev1"
|
||||
31
djangocms_blog/addon.json
Normal file
31
djangocms_blog/addon.json
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"package-name": "djangocms-blog",
|
||||
"installed-apps": [
|
||||
"filer",
|
||||
"easy_thumbnails",
|
||||
"aldryn_apphooks_config",
|
||||
"parler",
|
||||
"taggit",
|
||||
"taggit_autosuggest",
|
||||
"meta",
|
||||
"djangocms_blog",
|
||||
"sortedm2m"
|
||||
],
|
||||
"settings": {
|
||||
"META_SITE_PROTOCOL": "https",
|
||||
"META_USE_SITES": true,
|
||||
"META_USE_OG_PROPERTIES": true,
|
||||
"META_USE_TWITTER_PROPERTIES": true,
|
||||
"META_USE_SCHEMAORG_PROPERTIES": true,
|
||||
"THUMBNAIL_PROCESSORS": [
|
||||
"easy_thumbnails.processors.colorspace",
|
||||
"easy_thumbnails.processors.autocrop",
|
||||
"filer.thumbnail_processors.scale_and_crop_with_subject_location",
|
||||
"easy_thumbnails.processors.filters"
|
||||
]
|
||||
},
|
||||
"urls": [
|
||||
["", "djangocms_blog.taggit_urls"]
|
||||
],
|
||||
"message": "Installation completed, check documentation https://djangocms-blog.readthedocs.io/en/latest/installation.html#modify-templates for further information"
|
||||
}
|
||||
560
djangocms_blog/admin.py
Normal file
560
djangocms_blog/admin.py
Normal file
|
|
@ -0,0 +1,560 @@
|
|||
from copy import deepcopy
|
||||
|
||||
from aldryn_apphooks_config.admin import BaseAppHookConfig, ModelAppHookConfig
|
||||
from cms.admin.placeholderadmin import FrontendEditableAdminMixin, PlaceholderAdminMixin
|
||||
from cms.models import CMSPlugin, ValidationError
|
||||
from django.apps import apps
|
||||
from django.conf import settings
|
||||
from django.contrib import admin, messages
|
||||
from django.contrib.admin.options import InlineModelAdmin
|
||||
from django.contrib.sites.models import Site
|
||||
from django.db import models
|
||||
from django.db.models import signals
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.urls import path, reverse
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import get_language_from_request, gettext_lazy as _, ngettext as __
|
||||
from parler.admin import TranslatableAdmin
|
||||
|
||||
from .cms_appconfig import BlogConfig
|
||||
from .forms import CategoryAdminForm, PostAdminForm
|
||||
from .models import BlogCategory, Post
|
||||
from .settings import get_setting
|
||||
|
||||
signal_dict = {}
|
||||
|
||||
|
||||
def register_extension(klass):
|
||||
if issubclass(klass, InlineModelAdmin):
|
||||
PostAdmin.inlines = type(PostAdmin.inlines)([klass]) + PostAdmin.inlines
|
||||
return
|
||||
if issubclass(klass, models.Model):
|
||||
if klass in signal_dict:
|
||||
raise Exception("Can not register {} twice.".format(klass))
|
||||
signal_dict[klass] = create_post_post_save(klass)
|
||||
signals.post_save.connect(signal_dict[klass], sender=Post, weak=False)
|
||||
return
|
||||
raise Exception("Can not register {} type. You can only register a Model or a TabularInline.".format(klass))
|
||||
|
||||
|
||||
def unregister_extension(klass):
|
||||
if issubclass(klass, InlineModelAdmin):
|
||||
PostAdmin.inlines.remove(klass)
|
||||
return
|
||||
if issubclass(klass, models.Model):
|
||||
if klass not in signal_dict:
|
||||
raise Exception("Can not unregister {}. No signal found for this class.".format(klass))
|
||||
signals.post_save.disconnect(signal_dict[klass], sender=Post)
|
||||
del signal_dict[klass]
|
||||
return
|
||||
raise Exception("Can not unregister {} type. You can only unregister a Model or a TabularInline.".format(klass))
|
||||
|
||||
|
||||
def create_post_post_save(model):
|
||||
"""A wrapper for creating create_instance function for a specific model."""
|
||||
|
||||
def create_instance(sender, instance, created, **kwargs):
|
||||
"""Create Model instance for every new Post."""
|
||||
if created:
|
||||
model.objects.create(post=instance)
|
||||
|
||||
return create_instance
|
||||
|
||||
|
||||
class SiteListFilter(admin.SimpleListFilter):
|
||||
title = _("site")
|
||||
parameter_name = "sites"
|
||||
|
||||
def lookups(self, request, model_admin):
|
||||
restricted_sites = model_admin.get_restricted_sites(request).values_list("id", flat=True)
|
||||
|
||||
qs = Site.objects.all()
|
||||
if restricted_sites:
|
||||
qs = qs.filter(id__in=restricted_sites)
|
||||
|
||||
return [(site.id, str(site.name)) for site in qs]
|
||||
|
||||
def queryset(self, request, queryset):
|
||||
try:
|
||||
if "sites" in self.used_parameters:
|
||||
return queryset.on_site(Site.objects.get(pk=self.used_parameters["sites"]))
|
||||
return queryset
|
||||
except Site.DoesNotExist as e: # pragma: no cover
|
||||
raise admin.options.IncorrectLookupParameters(e)
|
||||
except ValidationError as e: # pragma: no cover
|
||||
raise admin.options.IncorrectLookupParameters(e)
|
||||
|
||||
|
||||
@admin.register(BlogCategory)
|
||||
class BlogCategoryAdmin(ModelAppHookConfig, TranslatableAdmin):
|
||||
form = CategoryAdminForm
|
||||
search_fields = ["translations__name"]
|
||||
list_display = [
|
||||
"name",
|
||||
"parent",
|
||||
"app_config",
|
||||
"all_languages_column",
|
||||
]
|
||||
|
||||
def get_prepopulated_fields(self, request, obj=None):
|
||||
app_config_default = self._app_config_select(request, obj)
|
||||
if app_config_default is None and request.method == "GET":
|
||||
return {}
|
||||
return {"slug": ("name",)}
|
||||
|
||||
class Media:
|
||||
css = {"all": ("{}djangocms_blog/css/{}".format(settings.STATIC_URL, "djangocms_blog_admin.css"),)}
|
||||
|
||||
|
||||
@admin.register(Post)
|
||||
class PostAdmin(PlaceholderAdminMixin, FrontendEditableAdminMixin, ModelAppHookConfig, TranslatableAdmin):
|
||||
form = PostAdminForm
|
||||
list_display = ["title", "author", "date_published", "app_config", "all_languages_column", "date_published_end"]
|
||||
search_fields = ("translations__title",)
|
||||
autocomplete_fields = ["categories", "sites"]
|
||||
date_hierarchy = "date_published"
|
||||
raw_id_fields = ["author"]
|
||||
frontend_editable_fields = ("title", "abstract", "post_text")
|
||||
enhance_exclude = ("main_image", "tags")
|
||||
actions = [
|
||||
"make_published",
|
||||
"make_unpublished",
|
||||
"enable_comments",
|
||||
"disable_comments",
|
||||
]
|
||||
inlines = []
|
||||
if apps.is_installed("djangocms_blog.liveblog"):
|
||||
actions += ["enable_liveblog", "disable_liveblog"]
|
||||
_fieldsets = [
|
||||
(None, {"fields": ["title", "subtitle", "slug", "publish", "include_in_rss", ["categories", "app_config"]]}),
|
||||
# left empty for sites, author and related fields
|
||||
(None, {"fields": [[]]}),
|
||||
(
|
||||
_("Info"),
|
||||
{
|
||||
"fields": ["tags", ["date_published", "date_published_end", "date_featured"], ["enable_comments"]],
|
||||
"classes": ("collapse",),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Images"),
|
||||
{"fields": [["main_image", "main_image_thumbnail", "main_image_full"]], "classes": ("collapse",)},
|
||||
),
|
||||
(_("SEO"), {"fields": [["meta_description", "meta_title", "meta_keywords"]], "classes": ("collapse",)}),
|
||||
]
|
||||
"""
|
||||
Default fieldsets structure.
|
||||
|
||||
Follow the normal Django fieldsets syntax.
|
||||
|
||||
When customizing the structure, check the :py:attr:`_fieldset_extra_fields_position` to ensure extra fields
|
||||
position matches.
|
||||
"""
|
||||
_fieldset_extra_fields_position = {
|
||||
"abstract": (0, 1),
|
||||
"post_text": (0, 1),
|
||||
"sites": (1, 1, 0),
|
||||
"author": (1, 1, 0),
|
||||
"enable_liveblog": (2, 1, 2),
|
||||
"related": (1, 1, 0),
|
||||
}
|
||||
"""
|
||||
Indexes where to append extra fields.
|
||||
|
||||
Key: Supported extra / optional field name
|
||||
Value: None / 2 / 3 item tuple. If you want to hide the field in any case set ``None`` as dictionary value,
|
||||
otherwise use a tuple containing the index of the the "fields" attribute of the selected fieldset row and
|
||||
an optional third value if the target "fields" has subgroups.
|
||||
"""
|
||||
|
||||
app_config_values = {"default_published": "publish"}
|
||||
_sites = None
|
||||
|
||||
# Bulk actions for post admin
|
||||
@admin.action(description=_("Publish selection"))
|
||||
def make_published(self, request, queryset):
|
||||
"""
|
||||
Bulk action to mark selected posts as published.
|
||||
If the date_published field is empty the current time is saved as date_published.
|
||||
queryset must not be empty (ensured by django CMS).
|
||||
"""
|
||||
cnt1 = queryset.filter(
|
||||
date_published__isnull=True,
|
||||
publish=False,
|
||||
).update(date_published=timezone.now(), publish=True)
|
||||
cnt2 = queryset.filter(
|
||||
date_published__isnull=False,
|
||||
publish=False,
|
||||
).update(publish=True)
|
||||
messages.add_message(
|
||||
request,
|
||||
messages.INFO,
|
||||
__("%(updates)d entry published.", "%(updates)d entries published.", cnt1 + cnt2)
|
||||
% {"updates": cnt1 + cnt2},
|
||||
)
|
||||
|
||||
@admin.action(description=_("Unpublish selection"))
|
||||
def make_unpublished(self, request, queryset):
|
||||
"""
|
||||
Bulk action to mark selected posts as unpublished.
|
||||
queryset must not be empty (ensured by django CMS).
|
||||
"""
|
||||
updates = queryset.filter(publish=True).update(publish=False)
|
||||
messages.add_message(
|
||||
request,
|
||||
messages.INFO,
|
||||
__("%(updates)d entry unpublished.", "%(updates)d entries unpublished.", updates) % {"updates": updates},
|
||||
)
|
||||
|
||||
@admin.action(description=_("Enable comments for selection"))
|
||||
def enable_comments(self, request, queryset):
|
||||
"""
|
||||
Bulk action to enable comments for selected posts.
|
||||
queryset must not be empty (ensured by django CMS).
|
||||
"""
|
||||
updates = queryset.filter(enable_comments=False).update(enable_comments=True)
|
||||
messages.add_message(
|
||||
request,
|
||||
messages.INFO,
|
||||
__("Comments for %(updates)d entry enabled.", "Comments for %(updates)d entries enabled", updates)
|
||||
% {"updates": updates},
|
||||
)
|
||||
|
||||
@admin.action(description=_("Disable comments for selection "))
|
||||
def disable_comments(self, request, queryset):
|
||||
"""
|
||||
Bulk action to disable comments for selected posts.
|
||||
queryset must not be empty (ensured by django CMS).
|
||||
"""
|
||||
updates = queryset.filter(enable_comments=True).update(enable_comments=False)
|
||||
messages.add_message(
|
||||
request,
|
||||
messages.INFO,
|
||||
__("Comments for %(updates)d entry disabled.", "Comments for %(updates)d entries disabled.", updates)
|
||||
% {"updates": updates},
|
||||
)
|
||||
|
||||
@admin.action(description=_("Enable liveblog for selection"))
|
||||
def enable_liveblog(self, request, queryset):
|
||||
"""
|
||||
Bulk action to enable comments for selected posts.
|
||||
queryset must not be empty (ensured by django CMS).
|
||||
"""
|
||||
updates = queryset.filter(enable_liveblog=False).update(enable_liveblog=True)
|
||||
messages.add_message(
|
||||
request,
|
||||
messages.INFO,
|
||||
__("Liveblog for %(updates)d entry enabled.", "Liveblog for %(updates)d entries enabled.", updates)
|
||||
% {"updates": updates},
|
||||
)
|
||||
|
||||
@admin.action(description=_("Disable liveblog for selection "))
|
||||
def disable_liveblog(self, request, queryset):
|
||||
"""
|
||||
Bulk action to disable comments for selected posts.
|
||||
queryset must not be empty (ensured by django CMS).
|
||||
"""
|
||||
updates = queryset.filter(enable_liveblog=True).update(enable_liveblog=False)
|
||||
messages.add_message(
|
||||
request,
|
||||
messages.INFO,
|
||||
__("Liveblog for %(updates)d entry enabled.", "Liveblog for %(updates)d entries enabled.")
|
||||
% {"updates": updates},
|
||||
)
|
||||
|
||||
# Make bulk action menu entries localizable
|
||||
|
||||
def get_list_filter(self, request):
|
||||
filters = ["app_config", "publish", "date_published"]
|
||||
if get_setting("MULTISITE"):
|
||||
filters.append(SiteListFilter)
|
||||
try:
|
||||
from taggit_helpers.admin import TaggitListFilter
|
||||
|
||||
filters.append(TaggitListFilter)
|
||||
except ImportError: # pragma: no cover
|
||||
try:
|
||||
from taggit_helpers import TaggitListFilter
|
||||
|
||||
filters.append(TaggitListFilter)
|
||||
except ImportError:
|
||||
pass
|
||||
return filters
|
||||
|
||||
def get_urls(self):
|
||||
"""
|
||||
Customize the modeladmin urls
|
||||
"""
|
||||
urls = [
|
||||
path(
|
||||
"publish/<int:pk>/",
|
||||
self.admin_site.admin_view(self.publish_post),
|
||||
name="djangocms_blog_publish_article",
|
||||
),
|
||||
]
|
||||
urls.extend(super().get_urls())
|
||||
return urls
|
||||
|
||||
def post_add_plugin(self, request, obj1, obj2=None):
|
||||
if isinstance(obj1, CMSPlugin):
|
||||
plugin = obj1
|
||||
elif isinstance(obj2, CMSPlugin):
|
||||
plugin = obj2
|
||||
if plugin.plugin_type in get_setting("LIVEBLOG_PLUGINS"):
|
||||
plugin = plugin.move(plugin.get_siblings().first(), "first-sibling")
|
||||
if isinstance(obj1, CMSPlugin):
|
||||
return super().post_add_plugin(request, plugin)
|
||||
elif isinstance(obj2, CMSPlugin):
|
||||
return super().post_add_plugin(request, obj1, plugin)
|
||||
|
||||
def publish_post(self, request, pk):
|
||||
"""
|
||||
Admin view to publish a single post
|
||||
|
||||
:param request: request
|
||||
:param pk: primary key of the post to publish
|
||||
:return: Redirect to the post itself (if found) or fallback urls
|
||||
"""
|
||||
language = get_language_from_request(request, check_path=True)
|
||||
try:
|
||||
post = Post.objects.get(pk=int(pk))
|
||||
post.publish = True
|
||||
post.save()
|
||||
return HttpResponseRedirect(post.get_absolute_url(language))
|
||||
except Exception:
|
||||
try:
|
||||
return HttpResponseRedirect(request.headers["referer"])
|
||||
except KeyError:
|
||||
return HttpResponseRedirect(reverse("djangocms_blog:posts-latest"))
|
||||
|
||||
def has_restricted_sites(self, request):
|
||||
"""
|
||||
Whether the current user has permission on one site only
|
||||
|
||||
:param request: current request
|
||||
:return: boolean: user has permission on only one site
|
||||
"""
|
||||
sites = self.get_restricted_sites(request)
|
||||
return sites and sites.count() == 1
|
||||
|
||||
def get_restricted_sites(self, request):
|
||||
"""
|
||||
The sites on which the user has permission on.
|
||||
|
||||
To return the permissions, the method check for the ``get_sites``
|
||||
method on the user instance (e.g.: ``return request.user.get_sites()``)
|
||||
which must return the queryset of enabled sites.
|
||||
If the attribute does not exists, the user is considered enabled
|
||||
for all the websites.
|
||||
|
||||
:param request: current request
|
||||
:return: boolean or a queryset of available sites
|
||||
"""
|
||||
try:
|
||||
return request.user.get_sites()
|
||||
except AttributeError: # pragma: no cover
|
||||
return Site.objects.none()
|
||||
|
||||
def _set_config_defaults(self, request, form, obj=None):
|
||||
form = super()._set_config_defaults(request, form, obj)
|
||||
sites = self.get_restricted_sites(request)
|
||||
if "sites" in form.base_fields and sites.exists():
|
||||
form.base_fields["sites"].queryset = self.get_restricted_sites(request).all()
|
||||
return form
|
||||
|
||||
def _get_available_posts(self, config):
|
||||
if config:
|
||||
return self.model.objects.namespace(config.namespace).active_translations().exists()
|
||||
return []
|
||||
|
||||
def get_fieldsets(self, request, obj=None):
|
||||
"""
|
||||
Customize the fieldsets according to the app settings
|
||||
|
||||
:param request: request
|
||||
:param obj: post
|
||||
:return: fieldsets configuration
|
||||
"""
|
||||
app_config_default = self._app_config_select(request, obj)
|
||||
if app_config_default is None and request.method == "GET":
|
||||
return super().get_fieldsets(request, obj)
|
||||
if not obj:
|
||||
config = app_config_default
|
||||
else:
|
||||
config = obj.app_config
|
||||
|
||||
fsets = deepcopy(self._fieldsets)
|
||||
related_posts = []
|
||||
if config:
|
||||
abstract = bool(config.use_abstract)
|
||||
placeholder = bool(config.use_placeholder)
|
||||
related = bool(config.use_related)
|
||||
else:
|
||||
abstract = get_setting("USE_ABSTRACT")
|
||||
placeholder = get_setting("USE_PLACEHOLDER")
|
||||
related = get_setting("USE_RELATED")
|
||||
if related:
|
||||
related_posts = self._get_available_posts(config)
|
||||
if abstract:
|
||||
self._patch_fieldsets(fsets, "abstract")
|
||||
if not placeholder:
|
||||
self._patch_fieldsets(fsets, "post_text")
|
||||
if get_setting("MULTISITE") and not self.has_restricted_sites(request):
|
||||
self._patch_fieldsets(fsets, "sites")
|
||||
if request.user.is_superuser:
|
||||
self._patch_fieldsets(fsets, "author")
|
||||
if apps.is_installed("djangocms_blog.liveblog"):
|
||||
self._patch_fieldsets(fsets, "enable_liveblog")
|
||||
filter_function = get_setting("ADMIN_POST_FIELDSET_FILTER")
|
||||
if related_posts:
|
||||
self._patch_fieldsets(fsets, "related")
|
||||
if callable(filter_function):
|
||||
fsets = filter_function(fsets, request, obj=obj)
|
||||
return fsets
|
||||
|
||||
def _patch_fieldsets(self, fsets, field):
|
||||
"""Patch the fieldsets list with additional fields, based on :py:attr:`_fieldset_extra_fields_position`."""
|
||||
positions = self._get_extra_field_position(field)
|
||||
if not positions or len(positions) not in (2, 3) or not all(True for i in positions[:2] if i is not None):
|
||||
return fsets
|
||||
if len(positions) == 2 or positions[2] is None:
|
||||
fsets[positions[0]][positions[1]]["fields"].append(field)
|
||||
elif len(positions) == 3:
|
||||
fsets[positions[0]][positions[1]]["fields"][positions[2]].append(field)
|
||||
return fsets
|
||||
|
||||
def _get_extra_field_position(self, field):
|
||||
"""Return the position in the fieldset where to add the given field."""
|
||||
return self._fieldset_extra_fields_position.get(field, (None, None, None))
|
||||
|
||||
def get_prepopulated_fields(self, request, obj=None):
|
||||
return {"slug": ("title",)}
|
||||
|
||||
def save_model(self, request, obj, form, change):
|
||||
obj._set_default_author(request.user)
|
||||
super().save_model(request, obj, form, change)
|
||||
|
||||
def get_queryset(self, request):
|
||||
qs = super().get_queryset(request)
|
||||
sites = self.get_restricted_sites(request)
|
||||
if sites.exists():
|
||||
pks = list(sites.all().values_list("pk", flat=True))
|
||||
qs = qs.filter(sites__in=pks)
|
||||
# can't use distinct here because it prevents deleting records, but we need a unique list of posts because
|
||||
# filters can cause duplicates
|
||||
return super().get_queryset(request).filter(pk__in=qs.values_list("pk", flat=True))
|
||||
|
||||
def save_related(self, request, form, formsets, change):
|
||||
if self.get_restricted_sites(request).exists():
|
||||
if "sites" in form.cleaned_data:
|
||||
form_sites = form.cleaned_data.get("sites", [])
|
||||
removed = set(self.get_restricted_sites(request).all()).difference(form_sites)
|
||||
diff_original = set(form.instance.sites.all()).difference(removed).union(form_sites)
|
||||
form.cleaned_data["sites"] = diff_original
|
||||
else:
|
||||
form.instance.sites.add(*self.get_restricted_sites(request).all().values_list("pk", flat=True))
|
||||
super().save_related(request, form, formsets, change)
|
||||
|
||||
class Media:
|
||||
css = {"all": ("{}djangocms_blog/css/{}".format(settings.STATIC_URL, "djangocms_blog_admin.css"),)}
|
||||
|
||||
|
||||
@admin.register(BlogConfig)
|
||||
class BlogConfigAdmin(BaseAppHookConfig, TranslatableAdmin):
|
||||
@property
|
||||
def declared_fieldsets(self):
|
||||
return self.get_fieldsets(None)
|
||||
|
||||
def get_fieldsets(self, request, obj=None):
|
||||
"""
|
||||
Fieldsets configuration
|
||||
"""
|
||||
return [
|
||||
(None, {"fields": ("type", "namespace", "app_title", "object_name")}),
|
||||
(
|
||||
_("Generic"),
|
||||
{
|
||||
"fields": (
|
||||
"config.default_published",
|
||||
"config.use_placeholder",
|
||||
"config.use_abstract",
|
||||
"config.set_author",
|
||||
"config.use_related",
|
||||
)
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Layout"),
|
||||
{
|
||||
"fields": (
|
||||
"config.paginate_by",
|
||||
"config.url_patterns",
|
||||
"config.template_prefix",
|
||||
"config.menu_structure",
|
||||
"config.menu_empty_categories",
|
||||
("config.default_image_full", "config.default_image_thumbnail"),
|
||||
),
|
||||
"classes": ("collapse",),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Notifications"),
|
||||
{"fields": ("config.send_knock_create", "config.send_knock_update"), "classes": ("collapse",)},
|
||||
),
|
||||
(
|
||||
_("Sitemap"),
|
||||
{
|
||||
"fields": (
|
||||
"config.sitemap_changefreq",
|
||||
"config.sitemap_priority",
|
||||
),
|
||||
"classes": ("collapse",),
|
||||
},
|
||||
),
|
||||
(_("Meta"), {"fields": ("config.object_type",)}),
|
||||
(
|
||||
"Open Graph",
|
||||
{
|
||||
"fields": (
|
||||
"config.og_type",
|
||||
"config.og_app_id",
|
||||
"config.og_profile_id",
|
||||
"config.og_publisher",
|
||||
"config.og_author_url",
|
||||
"config.og_author",
|
||||
),
|
||||
"description": _("You can provide plain strings, Post model attribute or method names"),
|
||||
},
|
||||
),
|
||||
(
|
||||
"Twitter",
|
||||
{
|
||||
"fields": (
|
||||
"config.twitter_type",
|
||||
"config.twitter_site",
|
||||
"config.twitter_author",
|
||||
),
|
||||
"description": _("You can provide plain strings, Post model attribute or method names"),
|
||||
},
|
||||
),
|
||||
(
|
||||
"Schema.org",
|
||||
{
|
||||
"fields": (
|
||||
"config.gplus_type",
|
||||
"config.gplus_author",
|
||||
),
|
||||
"description": _("You can provide plain strings, Post model attribute or method names"),
|
||||
},
|
||||
),
|
||||
]
|
||||
|
||||
def save_model(self, request, obj, form, change):
|
||||
"""
|
||||
Clear menu cache when changing menu structure
|
||||
"""
|
||||
if "config.menu_structure" in form.changed_data:
|
||||
from menus.menu_pool import menu_pool
|
||||
|
||||
menu_pool.clear(all=True)
|
||||
return super().save_model(request, obj, form, change)
|
||||
8
djangocms_blog/apps.py
Normal file
8
djangocms_blog/apps.py
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
from django.apps import AppConfig
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class BlogAppConfig(AppConfig):
|
||||
name = "djangocms_blog"
|
||||
verbose_name = _("django CMS Blog")
|
||||
default_auto_field = "django.db.models.BigAutoField"
|
||||
211
djangocms_blog/cms_appconfig.py
Normal file
211
djangocms_blog/cms_appconfig.py
Normal file
|
|
@ -0,0 +1,211 @@
|
|||
from aldryn_apphooks_config.models import AppHookConfig
|
||||
from aldryn_apphooks_config.utils import setup_config
|
||||
from app_data import AppDataForm
|
||||
from django import forms
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from filer.models import ThumbnailOption
|
||||
from parler.models import TranslatableModel, TranslatedFields
|
||||
|
||||
from .settings import MENU_TYPE_COMPLETE, get_setting
|
||||
|
||||
|
||||
class BlogConfig(TranslatableModel, AppHookConfig):
|
||||
"""
|
||||
Adds translatable, per-app-instance fields.
|
||||
"""
|
||||
|
||||
translations = TranslatedFields(
|
||||
app_title=models.CharField(_("application title"), max_length=234),
|
||||
object_name=models.CharField(_("object name"), max_length=234, default=get_setting("DEFAULT_OBJECT_NAME")),
|
||||
)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("blog config")
|
||||
verbose_name_plural = _("blog configs")
|
||||
|
||||
def get_app_title(self):
|
||||
return getattr(self, "app_title", _("untitled"))
|
||||
|
||||
@property
|
||||
def schemaorg_type(self):
|
||||
"""Compatibility shim to fetch data from legacy gplus_type field."""
|
||||
return self.gplus_type
|
||||
|
||||
|
||||
class BlogConfigForm(AppDataForm):
|
||||
"""
|
||||
Settings that can be changed per-apphook.
|
||||
|
||||
Their default value is the same as the corresponding Django settings,
|
||||
but it can be customized per each apphook and changed at runtime.
|
||||
"""
|
||||
|
||||
app_title = get_setting("AUTO_APP_TITLE")
|
||||
"""
|
||||
Free text title that can be used as title in templates
|
||||
"""
|
||||
object_name = get_setting("DEFAULT_OBJECT_NAME")
|
||||
"""
|
||||
Free text label for Blog items in django CMS Wizard
|
||||
"""
|
||||
#: Post published by default (default: :ref:`DEFAULT_PUBLISHED <DEFAULT_PUBLISHED>`)
|
||||
default_published = forms.BooleanField(
|
||||
label=_("Post published by default"), required=False, initial=get_setting("DEFAULT_PUBLISHED")
|
||||
)
|
||||
#: Default size of full images
|
||||
default_image_full = forms.ModelChoiceField(
|
||||
label=_("Default size of full images"),
|
||||
queryset=ThumbnailOption.objects.all(),
|
||||
required=False,
|
||||
help_text=_("If left empty the image size will have to be set for every newly created post."),
|
||||
)
|
||||
#: Default size of thumbnail images
|
||||
default_image_thumbnail = forms.ModelChoiceField(
|
||||
label=_("Default size of thumbnail images"),
|
||||
queryset=ThumbnailOption.objects.all(),
|
||||
required=False,
|
||||
help_text=_("If left empty the thumbnail image size will have to be set for every newly created post."),
|
||||
)
|
||||
#: Structure of permalinks (get_absolute_url); see :ref:`AVAILABLE_PERMALINK_STYLES <AVAILABLE_PERMALINK_STYLES>`
|
||||
url_patterns = forms.ChoiceField(
|
||||
label=_("Permalink structure"),
|
||||
required=False,
|
||||
initial=get_setting("AVAILABLE_PERMALINK_STYLES")[0][0],
|
||||
choices=get_setting("AVAILABLE_PERMALINK_STYLES"),
|
||||
)
|
||||
#: Use placeholder and plugins for article body (default: :ref:`USE_PLACEHOLDER <USE_PLACEHOLDER>`)
|
||||
use_placeholder = forms.BooleanField(
|
||||
label=_("Use placeholder and plugins for article body"), required=False, initial=get_setting("USE_PLACEHOLDER")
|
||||
)
|
||||
#: Use abstract field (default: :ref:`USE_ABSTRACT <USE_ABSTRACT>`)
|
||||
use_abstract = forms.BooleanField(
|
||||
label=_("Use abstract field"), required=False, initial=get_setting("USE_ABSTRACT")
|
||||
)
|
||||
#: Enable related posts (default: :ref:`USE_RELATED <USE_RELATED>`)
|
||||
use_related = forms.BooleanField(
|
||||
label=_("Enable related posts"), required=False, initial=get_setting("USE_RELATED")
|
||||
)
|
||||
#: Set author by default (default: :ref:`AUTHOR_DEFAULT <AUTHOR_DEFAULT>`)
|
||||
set_author = forms.BooleanField(
|
||||
label=_("Set author"),
|
||||
required=False,
|
||||
help_text=_("Set author by default"),
|
||||
initial=get_setting("AUTHOR_DEFAULT"),
|
||||
)
|
||||
#: When paginating list views, how many articles per page? (default: :ref:`PAGINATION <PAGINATION>`)
|
||||
paginate_by = forms.IntegerField(
|
||||
label=_("Paginate size"),
|
||||
required=False,
|
||||
initial=get_setting("PAGINATION"),
|
||||
help_text=_("When paginating list views, how many articles per page?"),
|
||||
)
|
||||
#: Alternative directory to load the blog templates from (default: "")
|
||||
template_prefix = forms.CharField(
|
||||
label=_("Template prefix"),
|
||||
required=False,
|
||||
initial="",
|
||||
help_text=_("Alternative directory to load the blog templates from"),
|
||||
)
|
||||
#: Menu structure (default: ``MENU_TYPE_COMPLETE``, see :ref:`MENU_TYPES <MENU_TYPES>`)
|
||||
menu_structure = forms.ChoiceField(
|
||||
label=_("Menu structure"),
|
||||
required=True,
|
||||
choices=get_setting("MENU_TYPES"),
|
||||
initial=MENU_TYPE_COMPLETE,
|
||||
help_text=_("Structure of the django CMS menu"),
|
||||
)
|
||||
#: Show empty categories in menu (default: :ref:`MENU_EMPTY_CATEGORIES <MENU_EMPTY_CATEGORIES>`)
|
||||
menu_empty_categories = forms.BooleanField(
|
||||
label=_("Show empty categories in menu"),
|
||||
initial=get_setting("MENU_EMPTY_CATEGORIES"),
|
||||
required=False,
|
||||
help_text=_("Show categories with no post attached in the menu"),
|
||||
)
|
||||
#: Sitemap changefreq (default: :ref:`SITEMAP_CHANGEFREQ_DEFAULT <SITEMAP_CHANGEFREQ_DEFAULT>`,
|
||||
#: see: :ref:`SITEMAP_CHANGEFREQ <SITEMAP_CHANGEFREQ>`)
|
||||
sitemap_changefreq = forms.ChoiceField(
|
||||
label=_("Sitemap changefreq"),
|
||||
required=True,
|
||||
choices=get_setting("SITEMAP_CHANGEFREQ"),
|
||||
initial=get_setting("SITEMAP_CHANGEFREQ_DEFAULT"),
|
||||
help_text=_("Changefreq attribute for sitemap items"),
|
||||
)
|
||||
#: Sitemap priority (default: :ref:`SITEMAP_PRIORITY_DEFAULT <SITEMAP_PRIORITY_DEFAULT>`)
|
||||
sitemap_priority = forms.CharField(
|
||||
label=_("Sitemap priority"),
|
||||
required=True,
|
||||
initial=get_setting("SITEMAP_PRIORITY_DEFAULT"),
|
||||
help_text=_("Priority attribute for sitemap items"),
|
||||
)
|
||||
#: Object type (default: :ref:`TYPE <TYPE>`, see :ref:`TYPES <TYPES>`)
|
||||
object_type = forms.ChoiceField(
|
||||
label=_("Object type"), required=False, choices=get_setting("TYPES"), initial=get_setting("TYPE")
|
||||
)
|
||||
#: Facebook type (default: :ref:`FB_TYPE <FB_TYPE>`, see :ref:`FB_TYPES <FB_TYPES>`)
|
||||
og_type = forms.ChoiceField(
|
||||
label=_("Facebook type"), required=False, choices=get_setting("FB_TYPES"), initial=get_setting("FB_TYPE")
|
||||
)
|
||||
#: Facebook application ID (default: :ref:`FB_PROFILE_ID <FB_PROFILE_ID>`)
|
||||
og_app_id = forms.CharField(
|
||||
max_length=200, label=_("Facebook application ID"), required=False, initial=get_setting("FB_PROFILE_ID")
|
||||
)
|
||||
#: Facebook profile ID (default: :ref:`FB_PROFILE_ID <FB_PROFILE_ID>`)
|
||||
og_profile_id = forms.CharField(
|
||||
max_length=200, label=_("Facebook profile ID"), required=False, initial=get_setting("FB_PROFILE_ID")
|
||||
)
|
||||
#: Facebook page URL (default: :ref:`FB_PUBLISHER <FB_PUBLISHER>`)
|
||||
og_publisher = forms.CharField(
|
||||
max_length=200, label=_("Facebook page URL"), required=False, initial=get_setting("FB_PUBLISHER")
|
||||
)
|
||||
#: Facebook author URL (default: :ref:`FB_AUTHOR_URL <FB_AUTHOR_URL>`)
|
||||
og_author_url = forms.CharField(
|
||||
max_length=200, label=_("Facebook author URL"), required=False, initial=get_setting("FB_AUTHOR_URL")
|
||||
)
|
||||
#: Facebook author (default: :ref:`FB_AUTHOR <FB_AUTHOR>`)
|
||||
og_author = forms.CharField(
|
||||
max_length=200, label=_("Facebook author"), required=False, initial=get_setting("FB_AUTHOR")
|
||||
)
|
||||
#: Twitter type field (default: :ref:`TWITTER_TYPE <TWITTER_TYPE>`)
|
||||
twitter_type = forms.ChoiceField(
|
||||
label=_("Twitter type"),
|
||||
required=False,
|
||||
choices=get_setting("TWITTER_TYPES"),
|
||||
initial=get_setting("TWITTER_TYPE"),
|
||||
)
|
||||
#: Twitter site handle (default: :ref:`TWITTER_SITE <TWITTER_SITE>`)
|
||||
twitter_site = forms.CharField(
|
||||
max_length=200, label=_("Twitter site handle"), required=False, initial=get_setting("TWITTER_SITE")
|
||||
)
|
||||
#: Twitter author handle (default: :ref:`TWITTER_AUTHOR <TWITTER_AUTHOR>`)
|
||||
twitter_author = forms.CharField(
|
||||
max_length=200, label=_("Twitter author handle"), required=False, initial=get_setting("TWITTER_AUTHOR")
|
||||
)
|
||||
#: Schema.org object type (default: :ref:`SCHEMAORG_TYPE <SCHEMAORG_TYPE>`)
|
||||
gplus_type = forms.ChoiceField(
|
||||
label=_("Schema.org type"),
|
||||
required=False,
|
||||
choices=get_setting("SCHEMAORG_TYPES"),
|
||||
initial=get_setting("SCHEMAORG_TYPE"),
|
||||
)
|
||||
#: Schema.org author name abstract field (default: :ref:`SCHEMAORG_AUTHOR <SCHEMAORG_AUTHOR>`)
|
||||
gplus_author = forms.CharField(
|
||||
max_length=200, label=_("Schema.org author name"), required=False, initial=get_setting("SCHEMAORG_AUTHOR")
|
||||
)
|
||||
#: Send notifications on post update. Require channels integration
|
||||
send_knock_create = forms.BooleanField(
|
||||
label=_("Send notifications on post publish"),
|
||||
required=False,
|
||||
initial=False,
|
||||
help_text=_("Emits a desktop notification -if enabled- when publishing a new post"),
|
||||
)
|
||||
#: Send notifications on post update. Require channels integration
|
||||
send_knock_update = forms.BooleanField(
|
||||
label=_("Send notifications on post update"),
|
||||
required=False,
|
||||
initial=False,
|
||||
help_text=_("Emits a desktop notification -if enabled- when editing a published post"),
|
||||
)
|
||||
|
||||
|
||||
setup_config(BlogConfigForm, BlogConfig)
|
||||
42
djangocms_blog/cms_apps.py
Normal file
42
djangocms_blog/cms_apps.py
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
from aldryn_apphooks_config.app_base import CMSConfigApp
|
||||
from cms.apphook_pool import apphook_pool
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from djangocms_apphook_setup.base import AutoCMSAppMixin
|
||||
|
||||
from .cms_appconfig import BlogConfig
|
||||
from .cms_menus import BlogCategoryMenu
|
||||
from .settings import get_setting
|
||||
|
||||
|
||||
@apphook_pool.register
|
||||
class BlogApp(AutoCMSAppMixin, CMSConfigApp):
|
||||
name = _("Blog")
|
||||
_urls = [get_setting("URLCONF")]
|
||||
app_name = "djangocms_blog"
|
||||
app_config = BlogConfig
|
||||
_menus = [BlogCategoryMenu]
|
||||
auto_setup = {
|
||||
"enabled": get_setting("AUTO_SETUP"),
|
||||
"home title": get_setting("AUTO_HOME_TITLE"),
|
||||
"page title": get_setting("AUTO_BLOG_TITLE"),
|
||||
"namespace": get_setting("AUTO_NAMESPACE"),
|
||||
"config_fields": {},
|
||||
"config_translated_fields": {
|
||||
"app_title": get_setting("AUTO_APP_TITLE"),
|
||||
"object_name": get_setting("DEFAULT_OBJECT_NAME"),
|
||||
},
|
||||
}
|
||||
|
||||
def get_urls(self, page=None, language=None, **kwargs):
|
||||
return [get_setting("URLCONF")]
|
||||
|
||||
@property
|
||||
def urls(self):
|
||||
return self.get_urls()
|
||||
|
||||
@property
|
||||
def menus(self):
|
||||
return self._menus
|
||||
|
||||
|
||||
BlogApp.setup()
|
||||
192
djangocms_blog/cms_menus.py
Normal file
192
djangocms_blog/cms_menus.py
Normal file
|
|
@ -0,0 +1,192 @@
|
|||
import logging
|
||||
|
||||
from cms.apphook_pool import apphook_pool
|
||||
from cms.menu_bases import CMSAttachMenu
|
||||
from django.contrib.sites.shortcuts import get_current_site
|
||||
from django.db.models.signals import post_delete, post_save
|
||||
from django.urls import Resolver404, resolve
|
||||
from django.utils.translation import get_language_from_request, gettext_lazy as _
|
||||
from menus.base import Modifier, NavigationNode
|
||||
from menus.menu_pool import menu_pool
|
||||
|
||||
from .cms_appconfig import BlogConfig
|
||||
from .models import BlogCategory, Post
|
||||
from .settings import MENU_TYPE_CATEGORIES, MENU_TYPE_COMPLETE, MENU_TYPE_NONE, MENU_TYPE_POSTS, get_setting
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class BlogCategoryMenu(CMSAttachMenu):
|
||||
"""
|
||||
Main menu class
|
||||
|
||||
Handles all types of blog menu
|
||||
"""
|
||||
|
||||
name = _("Blog menu")
|
||||
_config = {}
|
||||
|
||||
def get_nodes(self, request):
|
||||
"""
|
||||
Generates the nodelist
|
||||
|
||||
:param request:
|
||||
:return: list of nodes
|
||||
"""
|
||||
nodes = []
|
||||
|
||||
language = get_language_from_request(request, check_path=True)
|
||||
current_site = get_current_site(request)
|
||||
|
||||
page_site = self.instance.node.site
|
||||
if self.instance and page_site != current_site:
|
||||
return []
|
||||
|
||||
categories_menu = False
|
||||
posts_menu = False
|
||||
config = False
|
||||
if self.instance:
|
||||
if not self._config.get(self.instance.application_namespace, False):
|
||||
try:
|
||||
self._config[self.instance.application_namespace] = BlogConfig.objects.get(
|
||||
namespace=self.instance.application_namespace
|
||||
)
|
||||
except BlogConfig.DoesNotExist as e:
|
||||
logger.exception(e)
|
||||
return []
|
||||
config = self._config[self.instance.application_namespace]
|
||||
if not getattr(request, "toolbar", False) or not request.toolbar.edit_mode_active:
|
||||
if self.instance == self.instance.get_draft_object():
|
||||
return []
|
||||
else:
|
||||
if self.instance == self.instance.get_public_object():
|
||||
return []
|
||||
if config and config.menu_structure in (MENU_TYPE_COMPLETE, MENU_TYPE_CATEGORIES):
|
||||
categories_menu = True
|
||||
if config and config.menu_structure in (MENU_TYPE_COMPLETE, MENU_TYPE_POSTS):
|
||||
posts_menu = True
|
||||
if config and config.menu_structure in (MENU_TYPE_NONE,):
|
||||
return nodes
|
||||
|
||||
used_categories = []
|
||||
if posts_menu:
|
||||
posts = Post.objects
|
||||
if hasattr(self, "instance") and self.instance:
|
||||
posts = posts.namespace(self.instance.application_namespace).on_site()
|
||||
posts = (
|
||||
posts.active_translations(language)
|
||||
.distinct()
|
||||
.select_related("app_config")
|
||||
.prefetch_related("translations", "categories")
|
||||
)
|
||||
for post in posts:
|
||||
post_id = None
|
||||
parent = None
|
||||
used_categories.extend(post.categories.values_list("pk", flat=True))
|
||||
if categories_menu:
|
||||
category = post.categories.first()
|
||||
if category:
|
||||
parent = "{}-{}".format(category.__class__.__name__, category.pk)
|
||||
post_id = ("{}-{}".format(post.__class__.__name__, post.pk),)
|
||||
else:
|
||||
post_id = ("{}-{}".format(post.__class__.__name__, post.pk),)
|
||||
if post_id:
|
||||
node = NavigationNode(post.get_title(), post.get_absolute_url(language), post_id, parent)
|
||||
nodes.append(node)
|
||||
|
||||
if categories_menu:
|
||||
categories = BlogCategory.objects
|
||||
if config:
|
||||
categories = categories.namespace(self.instance.application_namespace)
|
||||
if config and not config.menu_empty_categories:
|
||||
categories = categories.active_translations(language).filter(pk__in=used_categories).distinct()
|
||||
else:
|
||||
categories = categories.active_translations(language).distinct()
|
||||
categories = (
|
||||
categories.order_by("parent__id", "translations__name")
|
||||
.select_related("app_config")
|
||||
.prefetch_related("translations")
|
||||
)
|
||||
added_categories = []
|
||||
for category in categories:
|
||||
if category.pk not in added_categories:
|
||||
node = NavigationNode(
|
||||
category.name,
|
||||
category.get_absolute_url(),
|
||||
"{}-{}".format(category.__class__.__name__, category.pk),
|
||||
("{}-{}".format(category.__class__.__name__, category.parent.id) if category.parent else None),
|
||||
)
|
||||
nodes.append(node)
|
||||
added_categories.append(category.pk)
|
||||
|
||||
return nodes
|
||||
|
||||
|
||||
class BlogNavModifier(Modifier):
|
||||
"""
|
||||
This navigation modifier makes sure that when
|
||||
a particular blog post is viewed,
|
||||
a corresponding category is selected in menu
|
||||
"""
|
||||
|
||||
_config = {}
|
||||
|
||||
def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
|
||||
"""
|
||||
Actual modifier function
|
||||
:param request: request
|
||||
:param nodes: complete list of nodes
|
||||
:param namespace: Menu namespace
|
||||
:param root_id: eventual root_id
|
||||
:param post_cut: flag for modifier stage
|
||||
:param breadcrumb: flag for modifier stage
|
||||
:return: nodeslist
|
||||
"""
|
||||
app = None
|
||||
config = None
|
||||
if getattr(request, "current_page", None) and request.current_page.application_urls:
|
||||
app = apphook_pool.get_apphook(request.current_page.application_urls)
|
||||
|
||||
if app and app.app_config:
|
||||
try:
|
||||
namespace = resolve(request.path).namespace
|
||||
except Resolver404: # pragma: no cover
|
||||
return nodes
|
||||
if not self._config.get(namespace, False):
|
||||
self._config[namespace] = app.get_config(namespace)
|
||||
config = self._config[namespace]
|
||||
try:
|
||||
if config and (not isinstance(config, BlogConfig) or config.menu_structure != MENU_TYPE_CATEGORIES):
|
||||
return nodes
|
||||
except AttributeError: # pragma: no cover
|
||||
# in case `menu_structure` is not present in config
|
||||
return nodes
|
||||
if post_cut:
|
||||
return nodes
|
||||
current_post = getattr(request, get_setting("CURRENT_POST_IDENTIFIER"), None)
|
||||
category = None
|
||||
if current_post and current_post.__class__ == Post:
|
||||
category = current_post.categories.first()
|
||||
if not category:
|
||||
return nodes
|
||||
|
||||
for node in nodes:
|
||||
if "{}-{}".format(category.__class__.__name__, category.pk) == node.id:
|
||||
node.selected = True
|
||||
return nodes
|
||||
|
||||
|
||||
menu_pool.register_modifier(BlogNavModifier)
|
||||
menu_pool.register_menu(BlogCategoryMenu)
|
||||
|
||||
|
||||
def clear_menu_cache(**kwargs):
|
||||
"""
|
||||
Empty menu cache when saving categories
|
||||
"""
|
||||
menu_pool.clear(all=True)
|
||||
|
||||
|
||||
post_save.connect(clear_menu_cache, sender=BlogCategory)
|
||||
post_delete.connect(clear_menu_cache, sender=BlogCategory)
|
||||
post_delete.connect(clear_menu_cache, sender=BlogConfig)
|
||||
243
djangocms_blog/cms_plugins.py
Normal file
243
djangocms_blog/cms_plugins.py
Normal file
|
|
@ -0,0 +1,243 @@
|
|||
import os.path
|
||||
|
||||
from cms.plugin_base import CMSPluginBase
|
||||
from cms.plugin_pool import plugin_pool
|
||||
from django.contrib.sites.shortcuts import get_current_site
|
||||
from django.db import models
|
||||
from django.template.loader import select_template
|
||||
|
||||
from .forms import AuthorPostsForm, BlogPluginForm, LatestEntriesForm
|
||||
from .models import AuthorEntriesPlugin, BlogCategory, FeaturedPostsPlugin, GenericBlogPlugin, LatestPostsPlugin, Post
|
||||
from .settings import get_setting
|
||||
|
||||
|
||||
class BlogPlugin(CMSPluginBase):
|
||||
module = get_setting("PLUGIN_MODULE_NAME")
|
||||
form = BlogPluginForm
|
||||
|
||||
def get_render_template(self, context, instance, placeholder):
|
||||
"""
|
||||
Select the template used to render the plugin.
|
||||
|
||||
Check the default folder as well as the folders provided to the apphook config.
|
||||
"""
|
||||
templates = [os.path.join("djangocms_blog", instance.template_folder, self.base_render_template)]
|
||||
if instance.app_config and instance.app_config.template_prefix:
|
||||
templates.insert(
|
||||
0,
|
||||
os.path.join(instance.app_config.template_prefix, instance.template_folder, self.base_render_template),
|
||||
)
|
||||
|
||||
selected = select_template(templates)
|
||||
return selected.template.name
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class BlogLatestEntriesPlugin(BlogPlugin):
|
||||
"""
|
||||
Return the latest published posts which bypasses cache, taking into account the user / toolbar state.
|
||||
"""
|
||||
|
||||
name = get_setting("LATEST_ENTRIES_PLUGIN_NAME")
|
||||
model = LatestPostsPlugin
|
||||
form = LatestEntriesForm
|
||||
filter_horizontal = ("categories",)
|
||||
cache = False
|
||||
base_render_template = "latest_entries.html"
|
||||
|
||||
def get_fields(self, request, obj=None):
|
||||
"""
|
||||
Return the fields available when editing the plugin.
|
||||
|
||||
'template_folder' field is added if ``BLOG_PLUGIN_TEMPLATE_FOLDERS`` contains multiple folders.
|
||||
|
||||
"""
|
||||
fields = ["app_config", "latest_posts", "tags", "categories"]
|
||||
if len(get_setting("PLUGIN_TEMPLATE_FOLDERS")) > 1:
|
||||
fields.append("template_folder")
|
||||
return fields
|
||||
|
||||
def render(self, context, instance, placeholder):
|
||||
"""Render the plugin."""
|
||||
context = super().render(context, instance, placeholder)
|
||||
context["posts_list"] = instance.get_posts(context["request"], published_only=False)
|
||||
context["TRUNCWORDS_COUNT"] = get_setting("POSTS_LIST_TRUNCWORDS_COUNT")
|
||||
return context
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class BlogLatestEntriesPluginCached(BlogLatestEntriesPlugin):
|
||||
"""
|
||||
Return the latest published posts caching the result.
|
||||
"""
|
||||
|
||||
name = get_setting("LATEST_ENTRIES_PLUGIN_NAME_CACHED")
|
||||
cache = True
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class BlogFeaturedPostsPlugin(BlogPlugin):
|
||||
"""
|
||||
Return the selected posts which bypasses cache.
|
||||
"""
|
||||
|
||||
name = get_setting("FEATURED_POSTS_PLUGIN_NAME")
|
||||
model = FeaturedPostsPlugin
|
||||
form = BlogPluginForm
|
||||
cache = False
|
||||
base_render_template = "featured_posts.html"
|
||||
|
||||
def get_fields(self, request, obj=None):
|
||||
"""
|
||||
Return the fields available when editing the plugin.
|
||||
|
||||
'template_folder' field is added if ``BLOG_PLUGIN_TEMPLATE_FOLDERS`` contains multiple folders.
|
||||
|
||||
"""
|
||||
fields = ["app_config", "posts"]
|
||||
if len(get_setting("PLUGIN_TEMPLATE_FOLDERS")) > 1:
|
||||
fields.append("template_folder")
|
||||
return fields
|
||||
|
||||
def render(self, context, instance, placeholder):
|
||||
"""Render the plugin."""
|
||||
context = super().render(context, instance, placeholder)
|
||||
context["posts_list"] = instance.get_posts(context["request"], published_only=False)
|
||||
context["TRUNCWORDS_COUNT"] = get_setting("POSTS_LIST_TRUNCWORDS_COUNT")
|
||||
return context
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class BlogFeaturedPostsPluginCached(BlogFeaturedPostsPlugin):
|
||||
"""
|
||||
Return the selected posts caching the result.
|
||||
"""
|
||||
|
||||
name = get_setting("FEATURED_POSTS_PLUGIN_NAME_CACHED")
|
||||
cache = True
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class BlogAuthorPostsPlugin(BlogPlugin):
|
||||
"""Render the list of authors."""
|
||||
|
||||
module = get_setting("PLUGIN_MODULE_NAME")
|
||||
name = get_setting("AUTHOR_POSTS_PLUGIN_NAME")
|
||||
model = AuthorEntriesPlugin
|
||||
form = AuthorPostsForm
|
||||
base_render_template = "authors.html"
|
||||
filter_horizontal = ["authors"]
|
||||
|
||||
def get_fields(self, request, obj=None):
|
||||
"""
|
||||
Return the fields available when editing the plugin.
|
||||
|
||||
'template_folder' field is added if ``BLOG_PLUGIN_TEMPLATE_FOLDERS`` contains multiple folders.
|
||||
|
||||
"""
|
||||
fields = ["app_config", "current_site", "authors"]
|
||||
if len(get_setting("PLUGIN_TEMPLATE_FOLDERS")) > 1:
|
||||
fields.append("template_folder")
|
||||
return fields
|
||||
|
||||
def render(self, context, instance, placeholder):
|
||||
"""Render the plugin."""
|
||||
context = super().render(context, instance, placeholder)
|
||||
context["authors_list"] = instance.get_authors(context["request"])
|
||||
return context
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class BlogAuthorPostsListPlugin(BlogAuthorPostsPlugin):
|
||||
"""Render the list of posts for each selected author."""
|
||||
|
||||
name = get_setting("AUTHOR_POSTS_LIST_PLUGIN_NAME")
|
||||
base_render_template = "authors_posts.html"
|
||||
fields = (
|
||||
["app_config", "current_site", "authors", "latest_posts"] + ["template_folder"]
|
||||
if len(get_setting("PLUGIN_TEMPLATE_FOLDERS")) > 1
|
||||
else []
|
||||
)
|
||||
|
||||
def get_fields(self, request, obj=None):
|
||||
"""
|
||||
Return the fields available when editing the plugin.
|
||||
|
||||
'template_folder' field is added if ``BLOG_PLUGIN_TEMPLATE_FOLDERS`` contains multiple folders.
|
||||
|
||||
"""
|
||||
fields = ["app_config", "current_site", "authors", "latest_posts"]
|
||||
if len(get_setting("PLUGIN_TEMPLATE_FOLDERS")) > 1:
|
||||
fields.append("template_folder")
|
||||
return fields
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class BlogTagsPlugin(BlogPlugin):
|
||||
"""Render the list of post tags."""
|
||||
|
||||
module = get_setting("PLUGIN_MODULE_NAME")
|
||||
name = get_setting("TAGS_PLUGIN_NAME")
|
||||
model = GenericBlogPlugin
|
||||
base_render_template = "tags.html"
|
||||
|
||||
def get_exclude(self, request, obj=None):
|
||||
"""Exclude 'template_folder' field if ``BLOG_PLUGIN_TEMPLATE_FOLDERS`` contains one folder."""
|
||||
return [] if len(get_setting("PLUGIN_TEMPLATE_FOLDERS")) > 1 else ["template_folder"]
|
||||
|
||||
def render(self, context, instance, placeholder):
|
||||
"""Render the plugin."""
|
||||
context = super().render(context, instance, placeholder)
|
||||
qs = instance.post_queryset(context["request"])
|
||||
context["tags"] = Post.objects.tag_cloud(queryset=qs.published())
|
||||
return context
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class BlogCategoryPlugin(BlogPlugin):
|
||||
"""Render the list of post categories."""
|
||||
|
||||
module = get_setting("PLUGIN_MODULE_NAME")
|
||||
name = get_setting("CATEGORY_PLUGIN_NAME")
|
||||
model = GenericBlogPlugin
|
||||
base_render_template = "categories.html"
|
||||
|
||||
def get_exclude(self, request, obj=None):
|
||||
"""Exclude 'template_folder' field if ``BLOG_PLUGIN_TEMPLATE_FOLDERS`` contains one folder."""
|
||||
return [] if len(get_setting("PLUGIN_TEMPLATE_FOLDERS")) > 1 else ["template_folder"]
|
||||
|
||||
def render(self, context, instance, placeholder):
|
||||
"""Render the plugin."""
|
||||
context = super().render(context, instance, placeholder)
|
||||
qs = BlogCategory.objects.active_translations()
|
||||
if instance.app_config:
|
||||
qs = qs.namespace(instance.app_config.namespace)
|
||||
if instance.current_site:
|
||||
site = get_current_site(context["request"])
|
||||
qs = qs.filter(models.Q(blog_posts__sites__isnull=True) | models.Q(blog_posts__sites=site.pk))
|
||||
categories = qs.distinct()
|
||||
if instance.app_config and not instance.app_config.menu_empty_categories:
|
||||
categories = qs.filter(blog_posts__isnull=False).distinct()
|
||||
context["categories"] = categories
|
||||
return context
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class BlogArchivePlugin(BlogPlugin):
|
||||
"""Render the list of months with available posts."""
|
||||
|
||||
module = get_setting("PLUGIN_MODULE_NAME")
|
||||
name = get_setting("ARCHIVE_PLUGIN_NAME")
|
||||
model = GenericBlogPlugin
|
||||
base_render_template = "archive.html"
|
||||
|
||||
def get_exclude(self, request, obj=None):
|
||||
"""Exclude 'template_folder' field if ``BLOG_PLUGIN_TEMPLATE_FOLDERS`` contains one folder."""
|
||||
return [] if len(get_setting("PLUGIN_TEMPLATE_FOLDERS")) > 1 else ["template_folder"]
|
||||
|
||||
def render(self, context, instance, placeholder):
|
||||
"""Render the plugin."""
|
||||
context = super().render(context, instance, placeholder)
|
||||
qs = instance.post_queryset(context["request"])
|
||||
context["dates"] = Post.objects.get_months(queryset=qs.published())
|
||||
return context
|
||||
80
djangocms_blog/cms_toolbars.py
Normal file
80
djangocms_blog/cms_toolbars.py
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
from cms.toolbar_base import CMSToolbar
|
||||
from cms.toolbar_pool import toolbar_pool
|
||||
from cms.utils.urlutils import admin_reverse
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import gettext_lazy as _, override
|
||||
|
||||
from .settings import get_setting
|
||||
|
||||
|
||||
@toolbar_pool.register
|
||||
class BlogToolbar(CMSToolbar):
|
||||
def populate(self):
|
||||
if (
|
||||
not self.is_current_app and not get_setting("ENABLE_THROUGH_TOOLBAR_MENU")
|
||||
) or not self.request.user.has_perm("djangocms_blog.add_post"):
|
||||
return # pragma: no cover
|
||||
admin_menu = self.toolbar.get_or_create_menu("djangocms_blog", _("Blog"))
|
||||
with override(self.current_lang):
|
||||
url = reverse("admin:djangocms_blog_post_changelist")
|
||||
admin_menu.add_modal_item(_("Post list"), url=url)
|
||||
|
||||
url = reverse("admin:djangocms_blog_blogcategory_changelist")
|
||||
admin_menu.add_modal_item(_("Category list"), url=url)
|
||||
|
||||
url = reverse("admin:taggit_tag_changelist")
|
||||
admin_menu.add_modal_item(_("Tag list"), url=url)
|
||||
|
||||
url = reverse("admin:djangocms_blog_post_add")
|
||||
admin_menu.add_modal_item(_("Add post"), url=url)
|
||||
current_config = getattr(self.request, get_setting("CURRENT_NAMESPACE"), None)
|
||||
if current_config:
|
||||
url = reverse("admin:djangocms_blog_blogconfig_change", args=(current_config.pk,))
|
||||
admin_menu.add_modal_item(_("Edit configuration"), url=url)
|
||||
|
||||
current_post = getattr(self.request, get_setting("CURRENT_POST_IDENTIFIER"), None)
|
||||
if current_post and self.request.user.has_perm("djangocms_blog.change_post"): # pragma: no cover # NOQA
|
||||
admin_menu.add_modal_item(
|
||||
_("Edit Post"), reverse("admin:djangocms_blog_post_change", args=(current_post.pk,)), active=True
|
||||
)
|
||||
|
||||
def add_publish_button(self):
|
||||
"""
|
||||
Adds the publish button to the toolbar if the current post is unpublished
|
||||
"""
|
||||
current_post = getattr(self.request, get_setting("CURRENT_POST_IDENTIFIER"), None)
|
||||
if (
|
||||
self.toolbar.edit_mode_active
|
||||
and current_post
|
||||
and not current_post.publish
|
||||
and self.request.user.has_perm("djangocms_blog.change_post")
|
||||
): # pragma: no cover # NOQA
|
||||
classes = ["cms-btn-action", "blog-publish"]
|
||||
title = _("Publish {0} now").format(current_post.app_config.object_name)
|
||||
|
||||
url = admin_reverse("djangocms_blog_publish_article", args=(current_post.pk,))
|
||||
|
||||
self.toolbar.add_button(title, url=url, extra_classes=classes, side=self.toolbar.RIGHT)
|
||||
|
||||
def post_template_populate(self):
|
||||
current_post = getattr(self.request, get_setting("CURRENT_POST_IDENTIFIER"), None)
|
||||
if current_post and self.request.user.has_perm("djangocms_blog.change_post"): # pragma: no cover # NOQA
|
||||
# removing page meta menu, if present, to avoid confusion
|
||||
try: # pragma: no cover
|
||||
import djangocms_page_meta # NOQA
|
||||
|
||||
menu = self.request.toolbar.get_or_create_menu("page")
|
||||
pagemeta = menu.get_or_create_menu("pagemeta", "meta")
|
||||
menu.remove_item(pagemeta)
|
||||
except ImportError:
|
||||
pass
|
||||
# removing page tags menu, if present, to avoid confusion
|
||||
try: # pragma: no cover
|
||||
import djangocms_page_tags # NOQA
|
||||
|
||||
menu = self.request.toolbar.get_or_create_menu("page")
|
||||
pagetags = menu.get_or_create_menu("pagetags", "tags")
|
||||
menu.remove_item(pagetags)
|
||||
except ImportError:
|
||||
pass
|
||||
self.add_publish_button()
|
||||
122
djangocms_blog/cms_wizards.py
Normal file
122
djangocms_blog/cms_wizards.py
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
import warnings
|
||||
|
||||
from cms.api import add_plugin
|
||||
from cms.utils.permissions import get_current_user
|
||||
from cms.wizards.wizard_base import Wizard
|
||||
from cms.wizards.wizard_pool import AlreadyRegisteredException, wizard_pool
|
||||
from django import forms
|
||||
from django.conf import settings
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from .cms_appconfig import BlogConfig
|
||||
from .fields import slugify
|
||||
from .forms import PostAdminFormBase
|
||||
from .models import Post
|
||||
from .settings import get_setting
|
||||
|
||||
|
||||
class PostWizardForm(PostAdminFormBase):
|
||||
default_appconfig = None
|
||||
|
||||
slug = forms.SlugField(
|
||||
label=_("Slug"),
|
||||
max_length=752,
|
||||
required=False,
|
||||
help_text=_("Leave empty for automatic slug, or override as required."),
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
if "initial" not in kwargs or not kwargs.get("initial", False):
|
||||
kwargs["initial"] = {}
|
||||
kwargs["initial"]["app_config"] = self.default_appconfig
|
||||
if "data" in kwargs and kwargs["data"] is not None:
|
||||
data = kwargs["data"].copy()
|
||||
data["1-app_config"] = self.default_appconfig
|
||||
kwargs["data"] = data
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields["app_config"].widget = forms.Select(
|
||||
attrs=self.fields["app_config"].widget.attrs,
|
||||
choices=self.fields["app_config"].widget.choices,
|
||||
)
|
||||
self.fields["app_config"].widget.attrs["disabled"] = True
|
||||
if "categories" in self.fields:
|
||||
self.fields["categories"].queryset = self.available_categories
|
||||
|
||||
class Meta:
|
||||
model = Post
|
||||
fields = ["app_config", "title", "slug", "abstract", "categories"]
|
||||
|
||||
class Media:
|
||||
js = (
|
||||
"admin/js/vendor/jquery/jquery.js",
|
||||
"admin/js/jquery.init.js",
|
||||
)
|
||||
|
||||
def save(self, commit=True):
|
||||
self.instance._set_default_author(get_current_user())
|
||||
instance = super().save(commit)
|
||||
self.add_plugin()
|
||||
return instance
|
||||
|
||||
def clean_slug(self):
|
||||
"""
|
||||
Generate a valid slug, in case the given one is taken
|
||||
"""
|
||||
source = self.cleaned_data.get("slug", "")
|
||||
lang_choice = self.language_code
|
||||
if not source:
|
||||
source = slugify(self.cleaned_data.get("title", ""))
|
||||
qs = Post._default_manager.active_translations(lang_choice).language(lang_choice)
|
||||
used = list(qs.values_list("translations__slug", flat=True))
|
||||
slug = source
|
||||
i = 1
|
||||
while slug in used:
|
||||
slug = "{}-{}".format(source, i)
|
||||
i += 1
|
||||
return slug
|
||||
|
||||
def add_plugin(self):
|
||||
"""
|
||||
Add text field content as text plugin to the blog post.
|
||||
"""
|
||||
text = self.cleaned_data.get("post_text", "")
|
||||
app_config = self.cleaned_data.get("app_config", None)
|
||||
plugin_type = get_setting("WIZARD_CONTENT_PLUGIN")
|
||||
plugin_body = get_setting("WIZARD_CONTENT_PLUGIN_BODY")
|
||||
if text and app_config.use_placeholder:
|
||||
opts = {
|
||||
"placeholder": self.instance.content,
|
||||
"plugin_type": plugin_type,
|
||||
"language": self.language_code,
|
||||
plugin_body: text,
|
||||
}
|
||||
add_plugin(**opts)
|
||||
|
||||
|
||||
class PostWizard(Wizard):
|
||||
pass
|
||||
|
||||
|
||||
for config in BlogConfig.objects.all().order_by("namespace"):
|
||||
seed = slugify("{}.{}".format(config.app_title, config.namespace))
|
||||
new_wizard = type(str(seed), (PostWizard,), {})
|
||||
new_form = type("{}Form".format(seed), (PostWizardForm,), {"default_appconfig": config.pk})
|
||||
post_wizard = new_wizard(
|
||||
title=_("New {0}").format(config.object_name),
|
||||
weight=200,
|
||||
form=new_form,
|
||||
model=Post,
|
||||
description=_("Create a new {0} in {1}").format(config.object_name, config.app_title),
|
||||
)
|
||||
try:
|
||||
wizard_pool.register(post_wizard)
|
||||
except AlreadyRegisteredException: # pragma: no cover
|
||||
if settings.DEBUG:
|
||||
raise
|
||||
else:
|
||||
warnings.warn(
|
||||
f"Wizard {seed} cannot be registered. Please make sure that "
|
||||
f"BlogConfig.namespace {config.namespace} and BlogConfig.app_title {config.app_title} are"
|
||||
"unique together",
|
||||
stacklevel=2,
|
||||
)
|
||||
179
djangocms_blog/feeds.py
Normal file
179
djangocms_blog/feeds.py
Normal file
|
|
@ -0,0 +1,179 @@
|
|||
from html import unescape
|
||||
from io import BytesIO
|
||||
|
||||
from aldryn_apphooks_config.utils import get_app_instance
|
||||
from django.contrib.sites.models import Site
|
||||
from django.contrib.syndication.views import Feed
|
||||
from django.core.cache import cache
|
||||
from django.urls import reverse
|
||||
from django.utils.encoding import force_str
|
||||
from django.utils.feedgenerator import Rss201rev2Feed
|
||||
from django.utils.html import strip_tags
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.text import normalize_newlines
|
||||
from django.utils.translation import get_language_from_request, gettext as _
|
||||
from lxml import etree
|
||||
|
||||
from djangocms_blog.settings import get_setting
|
||||
from djangocms_blog.views import PostDetailView
|
||||
|
||||
from .models import Post
|
||||
|
||||
|
||||
class LatestEntriesFeed(Feed):
|
||||
feed_type = Rss201rev2Feed
|
||||
feed_items_number = get_setting("FEED_LATEST_ITEMS")
|
||||
|
||||
def __call__(self, request, *args, **kwargs):
|
||||
self.request = request
|
||||
self.namespace, self.config = get_app_instance(request)
|
||||
return super().__call__(request, *args, **kwargs)
|
||||
|
||||
def link(self):
|
||||
return reverse("%s:posts-latest" % self.namespace, current_app=self.namespace)
|
||||
|
||||
def title(self):
|
||||
return Site.objects.get_current().name
|
||||
|
||||
def description(self):
|
||||
return _("Blog articles on %(site_name)s") % {"site_name": Site.objects.get_current().name}
|
||||
|
||||
def items(self, obj=None):
|
||||
return (
|
||||
Post.objects.namespace(self.namespace)
|
||||
.published_on_rss()
|
||||
.order_by("-date_published")[: self.feed_items_number]
|
||||
)
|
||||
|
||||
def item_title(self, item):
|
||||
return mark_safe(item.safe_translation_getter("title"))
|
||||
|
||||
def item_description(self, item):
|
||||
if item.app_config.use_abstract:
|
||||
return mark_safe(item.safe_translation_getter("abstract"))
|
||||
return mark_safe(item.safe_translation_getter("post_text"))
|
||||
|
||||
def item_updateddate(self, item):
|
||||
return item.date_modified
|
||||
|
||||
def item_pubdate(self, item):
|
||||
return item.date_published
|
||||
|
||||
def item_guid(self, item):
|
||||
return item.guid
|
||||
|
||||
def item_author_name(self, item):
|
||||
return item.get_author_name()
|
||||
|
||||
def item_author_url(self, item):
|
||||
return item.get_author_url()
|
||||
|
||||
|
||||
class TagFeed(LatestEntriesFeed):
|
||||
feed_items_number = get_setting("FEED_TAGS_ITEMS")
|
||||
|
||||
def get_object(self, request, tag):
|
||||
return tag # pragma: no cover
|
||||
|
||||
def items(self, obj=None):
|
||||
return Post.objects.published().filter(tags__slug=obj)[: self.feed_items_number]
|
||||
|
||||
|
||||
class FBInstantFeed(Rss201rev2Feed):
|
||||
date_format = "%Y-%m-%dT%H:%M:%S%z"
|
||||
|
||||
def rss_attributes(self):
|
||||
return {"version": self._version, "xmlns:content": "http://purl.org/rss/1.0/modules/content/"}
|
||||
|
||||
def add_root_elements(self, handler):
|
||||
handler.addQuickElement("title", self.feed["title"])
|
||||
handler.addQuickElement("link", self.feed["link"])
|
||||
handler.addQuickElement("description", self.feed["description"])
|
||||
if self.feed["language"] is not None:
|
||||
handler.addQuickElement("language", self.feed["language"])
|
||||
for cat in self.feed["categories"]:
|
||||
handler.addQuickElement("category", cat)
|
||||
if self.feed["feed_copyright"] is not None:
|
||||
handler.addQuickElement("copyright", self.feed["feed_copyright"])
|
||||
handler.addQuickElement("lastBuildDate", self.latest_post_date().strftime(self.date_format))
|
||||
if self.feed["ttl"] is not None:
|
||||
handler.addQuickElement("ttl", self.feed["ttl"])
|
||||
|
||||
def add_item_elements(self, handler, item):
|
||||
super().add_item_elements(handler, item)
|
||||
if item["author"]:
|
||||
handler.addQuickElement("author", item["author"])
|
||||
if item["date_pub"] is not None:
|
||||
handler.addQuickElement("pubDate", item["date_pub"].strftime(self.date_format))
|
||||
if item["date_mod"] is not None:
|
||||
handler.addQuickElement("modDate", item["date_mod"].strftime(self.date_format))
|
||||
|
||||
handler.startElement("description", {})
|
||||
handler._write(
|
||||
"<![CDATA[{}]]>".format(unescape(normalize_newlines(force_str(item["abstract"])).replace("\n", " ")))
|
||||
)
|
||||
handler.endElement("description")
|
||||
handler.startElement("content:encoded", {})
|
||||
handler._write("<![CDATA[")
|
||||
handler._write("<!doctype html>")
|
||||
handler._write(unescape(force_str(item["content"])))
|
||||
handler._write("]]>")
|
||||
handler.endElement("content:encoded")
|
||||
|
||||
|
||||
class FBInstantArticles(LatestEntriesFeed):
|
||||
feed_type = FBInstantFeed
|
||||
feed_items_number = get_setting("FEED_INSTANT_ITEMS")
|
||||
|
||||
def items(self, obj=None):
|
||||
return Post.objects.namespace(self.namespace).published().order_by("-date_modified")[: self.feed_items_number]
|
||||
|
||||
def _clean_html(self, content):
|
||||
body = BytesIO(content)
|
||||
document = etree.iterparse(body, html=True)
|
||||
for _a, element in document:
|
||||
if not (element.text and element.text.strip()) and len(element) == 0 and element.tag == "p":
|
||||
element.getparent().remove(element)
|
||||
if element.tag in ("h3", "h4", "h5", "h6") and "op-kicker" not in element.attrib.get("class", ""):
|
||||
element.tag = "h2"
|
||||
return etree.tostring(document.root)
|
||||
|
||||
def item_extra_kwargs(self, item):
|
||||
if not item:
|
||||
return {}
|
||||
language = get_language_from_request(self.request, check_path=True)
|
||||
key = item.get_cache_key(language, "feed")
|
||||
content = cache.get(key)
|
||||
if not content:
|
||||
view = PostDetailView.as_view(instant_article=True)
|
||||
response = view(self.request, slug=item.safe_translation_getter("slug"))
|
||||
response.render()
|
||||
content = self._clean_html(response.content)
|
||||
cache.set(key, content, timeout=get_setting("FEED_CACHE_TIMEOUT"))
|
||||
if item.app_config.use_abstract:
|
||||
abstract = strip_tags(item.safe_translation_getter("abstract"))
|
||||
else:
|
||||
abstract = strip_tags(item.safe_translation_getter("post_text"))
|
||||
return {
|
||||
"author": item.get_author_name(),
|
||||
"content": content,
|
||||
"date": item.date_modified,
|
||||
"date_pub": item.date_modified,
|
||||
"date_mod": item.date_modified,
|
||||
"abstract": abstract,
|
||||
}
|
||||
|
||||
def item_categories(self, item):
|
||||
return [category.safe_translation_getter("name") for category in item.categories.all()]
|
||||
|
||||
def item_author_name(self, item):
|
||||
return ""
|
||||
|
||||
def item_author_url(self, item):
|
||||
return ""
|
||||
|
||||
def item_description(self, item):
|
||||
return None
|
||||
|
||||
def item_pubdate(self, item):
|
||||
return None
|
||||
9
djangocms_blog/fields.py
Normal file
9
djangocms_blog/fields.py
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
from django.utils.text import slugify as django_slugify
|
||||
|
||||
from .settings import get_setting
|
||||
|
||||
__all__ = ["slugify"]
|
||||
|
||||
|
||||
def slugify(base):
|
||||
return django_slugify(base, allow_unicode=get_setting("UNICODE_SLUGS"))
|
||||
146
djangocms_blog/forms.py
Normal file
146
djangocms_blog/forms.py
Normal file
|
|
@ -0,0 +1,146 @@
|
|||
from django import forms
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.core.validators import MaxLengthValidator
|
||||
from django.utils.functional import cached_property
|
||||
from parler.forms import TranslatableModelForm
|
||||
from taggit_autosuggest.widgets import TagAutoSuggest
|
||||
|
||||
from .models import BlogCategory, BlogConfig, Post
|
||||
from .settings import PERMALINK_TYPE_CATEGORY, get_setting
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
class ConfigFormBase:
|
||||
"""Base form class for all models depends on app_config."""
|
||||
|
||||
@cached_property
|
||||
def app_config(self):
|
||||
"""
|
||||
Return the currently selected app_config, whether it's an instance attribute or passed in the request
|
||||
"""
|
||||
if getattr(self.instance, "app_config_id", None):
|
||||
return self.instance.app_config
|
||||
elif "app_config" in self.initial:
|
||||
return BlogConfig.objects.get(pk=self.initial["app_config"])
|
||||
elif self.data.get("app_config", None):
|
||||
return BlogConfig.objects.get(pk=self.data["app_config"])
|
||||
return None
|
||||
|
||||
|
||||
class CategoryAdminForm(ConfigFormBase, TranslatableModelForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.base_fields["meta_description"].validators = [MaxLengthValidator(get_setting("META_DESCRIPTION_LENGTH"))]
|
||||
original_attrs = self.base_fields["meta_description"].widget.attrs
|
||||
if "cols" in original_attrs:
|
||||
del original_attrs["cols"]
|
||||
if "rows" in original_attrs:
|
||||
del original_attrs["rows"]
|
||||
original_attrs["maxlength"] = get_setting("META_DESCRIPTION_LENGTH")
|
||||
self.base_fields["meta_description"].widget = forms.TextInput(original_attrs)
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
if "parent" in self.fields:
|
||||
qs = self.fields["parent"].queryset
|
||||
if self.instance.pk:
|
||||
qs = qs.exclude(pk__in=[self.instance.pk] + [child.pk for child in self.instance.descendants()])
|
||||
config = None
|
||||
if getattr(self.instance, "app_config_id", None):
|
||||
qs = qs.namespace(self.instance.app_config.namespace)
|
||||
elif "app_config" in self.initial:
|
||||
config = BlogConfig.objects.get(pk=self.initial["app_config"])
|
||||
elif self.data.get("app_config", None):
|
||||
config = BlogConfig.objects.get(pk=self.data["app_config"])
|
||||
if config:
|
||||
qs = qs.namespace(config.namespace)
|
||||
self.fields["parent"].queryset = qs
|
||||
|
||||
class Meta:
|
||||
model = BlogCategory
|
||||
fields = "__all__"
|
||||
|
||||
|
||||
class BlogPluginForm(forms.ModelForm):
|
||||
"""Base plugin form to inject the list of configured template folders from BLOG_PLUGIN_TEMPLATE_FOLDERS."""
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
if "template_folder" in self.fields:
|
||||
self.fields["template_folder"].choices = get_setting("PLUGIN_TEMPLATE_FOLDERS")
|
||||
|
||||
|
||||
class LatestEntriesForm(BlogPluginForm):
|
||||
"""Custom forms for BlogLatestEntriesPlugin to properly load taggit-autosuggest."""
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields["tags"].widget = TagAutoSuggest("taggit.Tag")
|
||||
|
||||
class Media:
|
||||
css = {"all": ("{}djangocms_blog/css/{}".format(settings.STATIC_URL, "djangocms_blog_admin.css"),)}
|
||||
|
||||
|
||||
class AuthorPostsForm(BlogPluginForm):
|
||||
"""Custom form for BlogAuthorPostsPlugin to apply distinct to the list of authors in plugin changeform."""
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
# apply distinct due to django issue #11707
|
||||
self.fields["authors"].queryset = User.objects.filter(djangocms_blog_post_author__publish=True).distinct()
|
||||
|
||||
|
||||
class PostAdminFormBase(ConfigFormBase, TranslatableModelForm):
|
||||
"""
|
||||
Common methods between the admin and wizard form
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
model = Post
|
||||
fields = "__all__"
|
||||
|
||||
@cached_property
|
||||
def available_categories(self):
|
||||
qs = BlogCategory.objects
|
||||
if self.app_config:
|
||||
return qs.namespace(self.app_config.namespace).active_translations()
|
||||
return qs
|
||||
|
||||
def _post_clean_translation(self, translation):
|
||||
# This is a quickfix for https://github.com/django-parler/django-parler/issues/236
|
||||
# which needs to be fixed in parler
|
||||
# operating at form level ensure that if the model is validated outside the form
|
||||
# the uniqueness check is not disabled
|
||||
super()._post_clean_translation(translation)
|
||||
self._validate_unique = False
|
||||
|
||||
|
||||
class PostAdminForm(PostAdminFormBase):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.base_fields["meta_description"].validators = [MaxLengthValidator(get_setting("META_DESCRIPTION_LENGTH"))]
|
||||
original_attrs = self.base_fields["meta_description"].widget.attrs
|
||||
if "cols" in original_attrs:
|
||||
del original_attrs["cols"]
|
||||
if "rows" in original_attrs:
|
||||
del original_attrs["rows"]
|
||||
original_attrs["maxlength"] = get_setting("META_DESCRIPTION_LENGTH")
|
||||
self.base_fields["meta_description"].widget = forms.TextInput(original_attrs)
|
||||
self.base_fields["meta_title"].validators = [MaxLengthValidator(get_setting("META_TITLE_LENGTH"))]
|
||||
super().__init__(*args, **kwargs)
|
||||
if "categories" in self.fields:
|
||||
if self.app_config and self.app_config.url_patterns == PERMALINK_TYPE_CATEGORY:
|
||||
self.fields["categories"].required = True
|
||||
self.fields["categories"].queryset = self.available_categories
|
||||
|
||||
if "app_config" in self.fields:
|
||||
# Don't allow app_configs to be added here. The correct way to add an
|
||||
# apphook-config is to create an apphook on a cms Page.
|
||||
self.fields["app_config"].widget.can_add_related = False
|
||||
|
||||
if self.app_config:
|
||||
if not self.initial.get("main_image_full", ""):
|
||||
self.initial["main_image_full"] = self.app_config.app_data["config"].get("default_image_full")
|
||||
if not self.initial.get("main_image_thumbnail", ""):
|
||||
self.initial["main_image_thumbnail"] = self.app_config.app_data["config"].get(
|
||||
"default_image_thumbnail"
|
||||
)
|
||||
0
djangocms_blog/liveblog/__init__.py
Normal file
0
djangocms_blog/liveblog/__init__.py
Normal file
7
djangocms_blog/liveblog/apps.py
Normal file
7
djangocms_blog/liveblog/apps.py
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
from django.apps import AppConfig
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class LiveBlogAppConfig(AppConfig):
|
||||
name = "djangocms_blog.liveblog"
|
||||
verbose_name = _("Liveblog")
|
||||
27
djangocms_blog/liveblog/cms_plugins.py
Normal file
27
djangocms_blog/liveblog/cms_plugins.py
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
from cms.plugin_pool import plugin_pool
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from djangocms_text_ckeditor.cms_plugins import TextPlugin
|
||||
|
||||
from djangocms_blog.settings import get_setting
|
||||
|
||||
from .models import Liveblog
|
||||
|
||||
|
||||
@plugin_pool.register_plugin
|
||||
class LiveblogPlugin(TextPlugin):
|
||||
module = get_setting("PLUGIN_MODULE_NAME")
|
||||
name = _("Liveblog item")
|
||||
model = Liveblog
|
||||
fields = ("title", "publish", "body", "post_date")
|
||||
render_template = "liveblog/plugins/liveblog.html"
|
||||
|
||||
def save_model(self, request, obj, form, change):
|
||||
super().save_model(request, obj, form, change)
|
||||
if obj.publish:
|
||||
obj.send(request)
|
||||
|
||||
def render(self, context, instance, placeholder):
|
||||
context = super().render(context, instance, placeholder)
|
||||
instance.content = context["body"]
|
||||
context["instance"] = instance
|
||||
return context
|
||||
31
djangocms_blog/liveblog/consumers.py
Normal file
31
djangocms_blog/liveblog/consumers.py
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
from channels.generic.websocket import JsonWebsocketConsumer
|
||||
|
||||
from ..models import Post
|
||||
|
||||
|
||||
class LiveblogConsumer(JsonWebsocketConsumer):
|
||||
def _get_post(self, kwargs):
|
||||
apphook = kwargs.get("apphook")
|
||||
lang = kwargs.get("lang")
|
||||
slug = kwargs.get("post")
|
||||
try:
|
||||
return Post.objects.namespace(apphook).language(lang).active_translations(slug=slug).get()
|
||||
except Post.DoesNotExist:
|
||||
return
|
||||
|
||||
def websocket_connect(self, message):
|
||||
self.groups = self.get_groups()
|
||||
return super().websocket_connect(message)
|
||||
|
||||
def get_groups(self):
|
||||
"""
|
||||
Connect users to the group of the post according to the URL parameters
|
||||
"""
|
||||
post = self._get_post(self.scope["url_route"]["kwargs"])
|
||||
if post:
|
||||
return [post.liveblog_group]
|
||||
else:
|
||||
return []
|
||||
|
||||
def send_json(self, content, close=False):
|
||||
return super().send_json(content, close)
|
||||
58
djangocms_blog/liveblog/migrations/0001_initial.py
Normal file
58
djangocms_blog/liveblog/migrations/0001_initial.py
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
import django.db.models.deletion
|
||||
import filer.fields.image
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("cms", "0013_urlconfrevision"),
|
||||
("filer", "0003_thumbnailoption"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="Liveblog",
|
||||
fields=[
|
||||
(
|
||||
"cmsplugin_ptr",
|
||||
models.OneToOneField(
|
||||
parent_link=True,
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="cms.CMSPlugin",
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
),
|
||||
),
|
||||
("body", models.TextField(verbose_name="body")),
|
||||
("publish", models.BooleanField(default=False, verbose_name="publish liveblog entry")),
|
||||
(
|
||||
"image",
|
||||
filer.fields.image.FilerImageField(
|
||||
related_name="djangocms_blog_liveblog_image",
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
verbose_name="image",
|
||||
blank=True,
|
||||
to="filer.Image",
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"thumbnail",
|
||||
models.ForeignKey(
|
||||
related_name="djangocms_blog_liveblog_thumbnail",
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
verbose_name="thumbnail size",
|
||||
blank=True,
|
||||
to="filer.ThumbnailOption",
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "liveblog entry",
|
||||
"verbose_name_plural": "liveblog entries",
|
||||
},
|
||||
bases=("cms.cmsplugin",),
|
||||
),
|
||||
]
|
||||
16
djangocms_blog/liveblog/migrations/0002_liveblog_title.py
Normal file
16
djangocms_blog/liveblog/migrations/0002_liveblog_title.py
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("liveblog", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="liveblog",
|
||||
name="title",
|
||||
field=models.CharField(default="", max_length=255, verbose_name="title"),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
# Generated by Django 1.9.9 on 2016-09-16 23:23
|
||||
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("liveblog", "0002_liveblog_title"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="liveblog",
|
||||
name="post_date",
|
||||
field=models.DateTimeField(blank=True, default=django.utils.timezone.now, verbose_name="post date"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="liveblog",
|
||||
name="cmsplugin_ptr",
|
||||
field=models.OneToOneField(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
related_name="liveblog_liveblog",
|
||||
serialize=False,
|
||||
to="cms.CMSPlugin",
|
||||
),
|
||||
),
|
||||
]
|
||||
0
djangocms_blog/liveblog/migrations/__init__.py
Normal file
0
djangocms_blog/liveblog/migrations/__init__.py
Normal file
119
djangocms_blog/liveblog/models.py
Normal file
119
djangocms_blog/liveblog/models.py
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
from operator import itemgetter
|
||||
|
||||
from asgiref.sync import async_to_sync
|
||||
from channels.layers import get_channel_layer
|
||||
from cms.models import CMSPlugin
|
||||
from cms.utils.plugins import reorder_plugins
|
||||
from django.db import models
|
||||
from django.template import Context
|
||||
from django.utils.timezone import now
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from djangocms_text_ckeditor.models import AbstractText
|
||||
from filer.fields.image import FilerImageField
|
||||
|
||||
from djangocms_blog.models import Post, thumbnail_model
|
||||
from djangocms_blog.settings import DATE_FORMAT
|
||||
|
||||
|
||||
class LiveblogInterface(models.Model):
|
||||
"""
|
||||
Abstract Liveblog plugin model, reusable to customize the liveblogging
|
||||
plugins.
|
||||
|
||||
When implementing this, you **must** call ``self._post_save()`` in the
|
||||
concrete plugin model ``save`` method.
|
||||
"""
|
||||
|
||||
publish = models.BooleanField(_("publish liveblog entry"), default=False)
|
||||
post_date = models.DateTimeField(_("post date"), blank=True, default=now)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("liveblog entry")
|
||||
verbose_name_plural = _("liveblog entries")
|
||||
abstract = True
|
||||
|
||||
def __str__(self):
|
||||
return str(self.pk)
|
||||
|
||||
def _post_save(self):
|
||||
"""
|
||||
Reorder plugins according to the post_date value. All (and only)
|
||||
subclasses of LiveblogInterface are taken into consideration and
|
||||
reordered together
|
||||
"""
|
||||
items = []
|
||||
for model in LiveblogInterface.__subclasses__():
|
||||
items.extend(model.objects.filter(placeholder=self.placeholder).values("pk", "post_date"))
|
||||
order = reversed([item["pk"] for item in sorted(items, key=itemgetter("post_date"))])
|
||||
reorder_plugins(self.placeholder, None, self.language, order)
|
||||
|
||||
@property
|
||||
def liveblog_group(self):
|
||||
post = Post.objects.language(self.language).filter(liveblog=self.placeholder).first()
|
||||
if post:
|
||||
return post.liveblog_group
|
||||
|
||||
def render(self, request):
|
||||
context = Context({"request": request})
|
||||
from cms.plugin_rendering import ContentRenderer
|
||||
|
||||
renderer = ContentRenderer(request)
|
||||
return renderer.render_plugin(
|
||||
instance=self,
|
||||
context=context,
|
||||
placeholder=self.placeholder,
|
||||
)
|
||||
|
||||
def send(self, request):
|
||||
"""
|
||||
Render the content and send to the related group
|
||||
"""
|
||||
if self.liveblog_group:
|
||||
content = self.render(request)
|
||||
notification = {
|
||||
"id": self.pk,
|
||||
"content": content,
|
||||
"creation_date": self.post_date.strftime(DATE_FORMAT),
|
||||
"changed_date": self.changed_date.strftime(DATE_FORMAT),
|
||||
"type": "send.json",
|
||||
}
|
||||
channel_layer = get_channel_layer()
|
||||
group = self.liveblog_group
|
||||
async_to_sync(channel_layer.group_send)(group, notification)
|
||||
|
||||
|
||||
class Liveblog(LiveblogInterface, AbstractText):
|
||||
"""
|
||||
Basic liveblog plugin model
|
||||
"""
|
||||
|
||||
cmsplugin_ptr = models.OneToOneField(
|
||||
CMSPlugin, related_name="%(app_label)s_%(class)s", primary_key=True, parent_link=True, on_delete=models.CASCADE
|
||||
)
|
||||
title = models.CharField(_("title"), max_length=255)
|
||||
image = FilerImageField(
|
||||
verbose_name=_("image"),
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name="djangocms_blog_liveblog_image",
|
||||
)
|
||||
thumbnail = models.ForeignKey(
|
||||
thumbnail_model,
|
||||
verbose_name=_("thumbnail size"),
|
||||
on_delete=models.SET_NULL,
|
||||
blank=True,
|
||||
null=True,
|
||||
related_name="djangocms_blog_liveblog_thumbnail",
|
||||
)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("liveblog entry")
|
||||
verbose_name_plural = _("liveblog entries")
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
super().save(*args, **kwargs)
|
||||
self._post_save()
|
||||
|
||||
def __str__(self):
|
||||
return AbstractText.__str__(self)
|
||||
6
djangocms_blog/liveblog/routing.py
Normal file
6
djangocms_blog/liveblog/routing.py
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
from channels.routing import URLRouter
|
||||
from django.urls import path
|
||||
|
||||
from .consumers import LiveblogConsumer
|
||||
|
||||
channel_routing = URLRouter([path("<str:apphook>/<str:lang>/<str:post>/", LiveblogConsumer.as_asgi())])
|
||||
24
djangocms_blog/liveblog/static/liveblog/js/liveblog.js
Normal file
24
djangocms_blog/liveblog/static/liveblog/js/liveblog.js
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
document.addEventListener("DOMContentLoaded", function() {
|
||||
// Correctly decide between ws:// and wss://
|
||||
const ws_scheme = window.location.protocol === "https:" ? "wss" : "ws";
|
||||
const ws_path = ws_scheme + '://' + window.location.host + "/liveblog/liveblog/" + liveblog_apphook + "/" + liveblog_language + "/" + liveblog_post + "/";
|
||||
const socket = new ReconnectingWebSocket(ws_path);
|
||||
// Handle incoming messages
|
||||
socket.onmessage = function (message) {
|
||||
// Decode the JSON
|
||||
const data = JSON.parse(message.data);
|
||||
// See if there's a div to replace it in, or if we should add a new one
|
||||
const existing = document.querySelectorAll("div[data-post-id*='" + data.id + "']");
|
||||
const postContainer = document.getElementById("liveblog-posts")
|
||||
const item = document.createElement('div');
|
||||
item.innerHTML = data.content.replace(/\"/g, "'")
|
||||
if (existing.length) {
|
||||
existing[0].parentNode.replaceChild(item.children[0], existing[0]);
|
||||
} else {
|
||||
postContainer.insertBefore(
|
||||
item.children[0], postContainer.children[0]
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
}, false);
|
||||
1
djangocms_blog/liveblog/static/liveblog/js/reconnecting-websocket.min.js
vendored
Normal file
1
djangocms_blog/liveblog/static/liveblog/js/reconnecting-websocket.min.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
!function(a,b){"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports?module.exports=b():a.ReconnectingWebSocket=b()}(this,function(){function a(b,c,d){function l(a,b){var c=document.createEvent("CustomEvent");return c.initCustomEvent(a,!1,!1,b),c}var e={debug:!1,automaticOpen:!0,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1.5,timeoutInterval:2e3};d||(d={});for(var f in e)this[f]="undefined"!=typeof d[f]?d[f]:e[f];this.url=b,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var h,g=this,i=!1,j=!1,k=document.createElement("div");k.addEventListener("open",function(a){g.onopen(a)}),k.addEventListener("close",function(a){g.onclose(a)}),k.addEventListener("connecting",function(a){g.onconnecting(a)}),k.addEventListener("message",function(a){g.onmessage(a)}),k.addEventListener("error",function(a){g.onerror(a)}),this.addEventListener=k.addEventListener.bind(k),this.removeEventListener=k.removeEventListener.bind(k),this.dispatchEvent=k.dispatchEvent.bind(k),this.open=function(b){h=new WebSocket(g.url,c||[]),b||k.dispatchEvent(l("connecting")),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",g.url);var d=h,e=setTimeout(function(){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",g.url),j=!0,d.close(),j=!1},g.timeoutInterval);h.onopen=function(){clearTimeout(e),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onopen",g.url),g.protocol=h.protocol,g.readyState=WebSocket.OPEN,g.reconnectAttempts=0;var d=l("open");d.isReconnect=b,b=!1,k.dispatchEvent(d)},h.onclose=function(c){if(clearTimeout(e),h=null,i)g.readyState=WebSocket.CLOSED,k.dispatchEvent(l("close"));else{g.readyState=WebSocket.CONNECTING;var d=l("connecting");d.code=c.code,d.reason=c.reason,d.wasClean=c.wasClean,k.dispatchEvent(d),b||j||((g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onclose",g.url),k.dispatchEvent(l("close")));var e=g.reconnectInterval*Math.pow(g.reconnectDecay,g.reconnectAttempts);setTimeout(function(){g.reconnectAttempts++,g.open(!0)},e>g.maxReconnectInterval?g.maxReconnectInterval:e)}},h.onmessage=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b.data);var c=l("message");c.data=b.data,k.dispatchEvent(c)},h.onerror=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b),k.dispatchEvent(l("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(b){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b),h.send(b);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a,b){"undefined"==typeof a&&(a=1e3),i=!0,h&&h.close(a,b)},this.refresh=function(){h&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=!1,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a});
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{% load cms_tags sekizai_tags %}
|
||||
{% add_data "js-script" "liveblog/js/reconnecting-websocket.min.js" %}
|
||||
{% add_data "js-script" "liveblog/js/liveblog.js" %}
|
||||
<script>
|
||||
var liveblog_apphook = '{{ post.app_config.namespace }}';
|
||||
var liveblog_language = '{{ post.get_current_language }}';
|
||||
var liveblog_post = '{{ post.slug }}';
|
||||
</script>
|
||||
<div class="blog-content--live" id="liveblog-posts">
|
||||
{% render_placeholder post.liveblog %}
|
||||
</div>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
{% spaceless %}{% if instance.publish %}
|
||||
<div class="post" data-post-id="{{ instance.id }}">
|
||||
<h3>{{ instance.title }}</h3>
|
||||
<h4>{{ instance.post_date|date:"D d M Y H:i" }}</h4>
|
||||
{{ instance.content|safe }}
|
||||
</div>
|
||||
{% endif %}{% endspaceless %}
|
||||
767
djangocms_blog/locale/ar/LC_MESSAGES/django.po
Normal file
767
djangocms_blog/locale/ar/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,767 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Bashar Al-Abdulhadi, 2016
|
||||
# Bashar Al-Abdulhadi, 2014
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: djangocms-blog\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-30 11:04+0200\n"
|
||||
"PO-Revision-Date: 2014-03-29 15:29+0000\n"
|
||||
"Last-Translator: Bashar Al-Abdulhadi, 2016\n"
|
||||
"Language-Team: Arabic (http://app.transifex.com/nephila/djangocms-blog/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"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: admin.py:65
|
||||
msgid "site"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:131
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:138
|
||||
msgid "Images"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:141
|
||||
msgid "SEO"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:172
|
||||
msgid "Publish selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:194
|
||||
msgid "Unpublish selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:207
|
||||
msgid "Enable comments for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:221
|
||||
msgid "Disable comments for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:235
|
||||
msgid "Enable liveblog for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:249
|
||||
msgid "Disable liveblog for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:473
|
||||
msgid "Generic"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:485
|
||||
msgid "Layout"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:499
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:503
|
||||
msgid "Sitemap"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:512
|
||||
msgid "Meta"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:524 admin.py:535 admin.py:545
|
||||
msgid "You can provide plain strings, Post model attribute or method names"
|
||||
msgstr ""
|
||||
|
||||
#: apps.py:7
|
||||
msgid "django CMS Blog"
|
||||
msgstr "مدونة نظام ادارة المحتوى لجانغو"
|
||||
|
||||
#: cms_appconfig.py:19
|
||||
msgid "application title"
|
||||
msgstr "عنوان التطبيق"
|
||||
|
||||
#: cms_appconfig.py:20
|
||||
msgid "object name"
|
||||
msgstr "اسم الكائن"
|
||||
|
||||
#: cms_appconfig.py:24
|
||||
msgid "blog config"
|
||||
msgstr "إعدادات المدونة"
|
||||
|
||||
#: cms_appconfig.py:25
|
||||
msgid "blog configs"
|
||||
msgstr "إعدادات المدونة"
|
||||
|
||||
#: cms_appconfig.py:28
|
||||
msgid "untitled"
|
||||
msgstr "غير معنون"
|
||||
|
||||
#: cms_appconfig.py:54
|
||||
msgid "Post published by default"
|
||||
msgstr "نشر التدوينة تلقائيا"
|
||||
|
||||
#: cms_appconfig.py:58
|
||||
msgid "Default size of full images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:61
|
||||
msgid ""
|
||||
"If left empty the image size will have to be set for every newly created "
|
||||
"post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:65
|
||||
msgid "Default size of thumbnail images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:68
|
||||
msgid ""
|
||||
"If left empty the thumbnail image size will have to be set for every newly "
|
||||
"created post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:72
|
||||
msgid "Permalink structure"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:79
|
||||
msgid "Use placeholder and plugins for article body"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:83
|
||||
msgid "Use abstract field"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:87
|
||||
msgid "Enable related posts"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:91
|
||||
msgid "Set author"
|
||||
msgstr "ضبط الكاتب"
|
||||
|
||||
#: cms_appconfig.py:93
|
||||
msgid "Set author by default"
|
||||
msgstr "ضبطها من قبل الكاتب"
|
||||
|
||||
#: cms_appconfig.py:98
|
||||
msgid "Paginate size"
|
||||
msgstr "عدد تعدد الصفحات"
|
||||
|
||||
#: cms_appconfig.py:101
|
||||
msgid "When paginating list views, how many articles per page?"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:105
|
||||
msgid "Template prefix"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:108
|
||||
msgid "Alternative directory to load the blog templates from"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:112
|
||||
msgid "Menu structure"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:116
|
||||
msgid "Structure of the django CMS menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:120
|
||||
msgid "Show empty categories in menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:123
|
||||
msgid "Show categories with no post attached in the menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:128
|
||||
msgid "Sitemap changefreq"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:132
|
||||
msgid "Changefreq attribute for sitemap items"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:136
|
||||
msgid "Sitemap priority"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:139
|
||||
msgid "Priority attribute for sitemap items"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:143
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:147
|
||||
msgid "Facebook type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:151
|
||||
msgid "Facebook application ID"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:155
|
||||
msgid "Facebook profile ID"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:159
|
||||
msgid "Facebook page URL"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:163
|
||||
msgid "Facebook author URL"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:167
|
||||
msgid "Facebook author"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:171
|
||||
msgid "Twitter type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:178
|
||||
msgid "Twitter site handle"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:182
|
||||
msgid "Twitter author handle"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:186
|
||||
msgid "Schema.org type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:193
|
||||
msgid "Schema.org author name"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:197
|
||||
msgid "Send notifications on post publish"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:200
|
||||
msgid "Emits a desktop notification -if enabled- when publishing a new post"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:204
|
||||
msgid "Send notifications on post update"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:207
|
||||
msgid ""
|
||||
"Emits a desktop notification -if enabled- when editing a published post"
|
||||
msgstr ""
|
||||
|
||||
#: cms_apps.py:13 cms_toolbars.py:17 settings.py:485
|
||||
msgid "Blog"
|
||||
msgstr "المدونة"
|
||||
|
||||
#: cms_menus.py:26
|
||||
msgid "Blog menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:20
|
||||
msgid "Post list"
|
||||
msgstr "قائمة المواضيع"
|
||||
|
||||
#: cms_toolbars.py:23
|
||||
msgid "Category list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:26
|
||||
msgid "Tag list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:29
|
||||
msgid "Add post"
|
||||
msgstr "إضافة موضوع"
|
||||
|
||||
#: cms_toolbars.py:33
|
||||
msgid "Edit configuration"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:38
|
||||
msgid "Edit Post"
|
||||
msgstr "التعديل على موضوع"
|
||||
|
||||
#: cms_toolbars.py:53
|
||||
#, python-brace-format
|
||||
msgid "Publish {0} now"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:22
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:25
|
||||
msgid "Leave empty for automatic slug, or override as required."
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:105
|
||||
#, python-brace-format
|
||||
msgid "New {0}"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:109
|
||||
#, python-brace-format
|
||||
msgid "Create a new {0} in {1}"
|
||||
msgstr ""
|
||||
|
||||
#: feeds.py:39
|
||||
#, python-format
|
||||
msgid "Blog articles on %(site_name)s"
|
||||
msgstr "مواضيع المدونة على %(site_name)s"
|
||||
|
||||
#: liveblog/apps.py:7
|
||||
msgid "Liveblog"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/cms_plugins.py:13
|
||||
msgid "Liveblog item"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:27
|
||||
msgid "publish liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:28
|
||||
msgid "post date"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:31 liveblog/models.py:111
|
||||
msgid "liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:32 liveblog/models.py:112
|
||||
msgid "liveblog entries"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:93 models.py:252
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:95
|
||||
msgid "image"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:103
|
||||
msgid "thumbnail size"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:95
|
||||
msgid "parent"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:97
|
||||
msgid "created at"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:98
|
||||
msgid "modified at"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:99 models.py:249 models.py:491
|
||||
msgid "app. config"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:102
|
||||
msgid "name"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:103 models.py:254
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:104
|
||||
msgid "category meta description"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:132
|
||||
msgid "blog category"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:133
|
||||
msgid "blog categories"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:169
|
||||
msgid "BlogCategory (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:196
|
||||
msgid "author"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:203
|
||||
msgid "created"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:204
|
||||
msgid "last modified"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:205
|
||||
msgid "published since"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:206
|
||||
msgid "published until"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:207
|
||||
msgid "featured date"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:208
|
||||
msgid "publish"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:209
|
||||
msgid "include in RSS feed"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:211
|
||||
msgid "category"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:214
|
||||
msgid "main image"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:222
|
||||
msgid "main image thumbnail"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:230
|
||||
msgid "main image full"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:237
|
||||
msgid "enable comments on post"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:241
|
||||
msgid "Site(s)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:244
|
||||
msgid ""
|
||||
"Select sites in which to show the post. If none is set it will be visible in"
|
||||
" all the configured sites."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:256
|
||||
msgid "subtitle"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:257
|
||||
msgid "abstract"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:258
|
||||
msgid "post meta description"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:259
|
||||
msgid "post meta keywords"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:261
|
||||
msgid "post meta title"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:262
|
||||
msgid "used in title tag and social sharing"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:267
|
||||
msgid "text"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:273
|
||||
msgid "enable liveblog on post"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:279
|
||||
msgid ""
|
||||
"Type a tag and hit tab, or start typing and select from autocomplete list."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:282
|
||||
msgid "Related Posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:314
|
||||
msgid "blog article"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:315
|
||||
msgid "blog articles"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:320
|
||||
msgid "Post (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "current site"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "Select items from the current site only"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:497
|
||||
msgid "Plugin template"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:498
|
||||
msgid "Select plugin template to load for this instance"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:536 models.py:578
|
||||
msgid "articles"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:538
|
||||
msgid "The number of latests articles to be displayed."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:541
|
||||
msgid "filter by tag"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:543
|
||||
msgid "Show only the blog articles tagged with chosen tags."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:549
|
||||
msgid "filter by category"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:550
|
||||
msgid "Show only the blog articles tagged with chosen categories."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:554
|
||||
#, python-format
|
||||
msgid "%s latest articles by tag"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:574
|
||||
msgid "authors"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:580
|
||||
msgid "The number of author articles to be displayed."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:584
|
||||
#, python-format
|
||||
msgid "%s latest articles by author"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:605 models.py:608
|
||||
msgid "Featured posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:623
|
||||
msgid "generic blog plugin"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:26
|
||||
msgid "Full date"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:27
|
||||
msgid "Year / Month"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:28 templates/djangocms_blog/post_list.html:14
|
||||
msgid "Category"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:29
|
||||
msgid "Just slug"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:59
|
||||
msgid "Categories and posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:60
|
||||
msgid "Categories only"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:61
|
||||
msgid "Posts only"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:62
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:71
|
||||
msgid "always"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:72
|
||||
msgid "hourly"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:73
|
||||
msgid "daily"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:74
|
||||
msgid "weekly"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:75
|
||||
msgid "monthly"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:76
|
||||
msgid "yearly"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:77
|
||||
msgid "never"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:492
|
||||
msgid "Latest Blog Articles"
|
||||
msgstr "آخر مواضيع المدونة"
|
||||
|
||||
#: settings.py:499
|
||||
msgid "Latest Blog Articles - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:506
|
||||
msgid "Author Blog Articles"
|
||||
msgstr "ناشر مواضيع المدونة"
|
||||
|
||||
#: settings.py:513
|
||||
msgid "Author Blog Articles List"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:520 templates/djangocms_blog/plugins/tags.html:5
|
||||
msgid "Tags"
|
||||
msgstr "علامات"
|
||||
|
||||
#: settings.py:527 templates/djangocms_blog/plugins/categories.html:3
|
||||
msgid "Categories"
|
||||
msgstr "الأقسام"
|
||||
|
||||
#: settings.py:534 templates/djangocms_blog/plugins/archive.html:3
|
||||
#: templates/djangocms_blog/post_list.html:12
|
||||
msgid "Archive"
|
||||
msgstr "الأرشيف"
|
||||
|
||||
#: settings.py:541
|
||||
msgid "Featured Posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:548
|
||||
msgid "Featured Posts - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:590
|
||||
msgid "Default template"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:17
|
||||
#: templates/djangocms_blog/plugins/authors.html:10
|
||||
#: templates/djangocms_blog/plugins/categories.html:10
|
||||
#: templates/djangocms_blog/plugins/tags.html:12
|
||||
#, python-format
|
||||
msgid "1 article"
|
||||
msgid_plural "%(articles)s articles"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
msgstr[4] ""
|
||||
msgstr[5] ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:18
|
||||
#: templates/djangocms_blog/plugins/authors.html:11
|
||||
#: templates/djangocms_blog/plugins/categories.html:11
|
||||
#: templates/djangocms_blog/plugins/tags.html:13
|
||||
msgid "0 articles"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:26
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:12
|
||||
#: templates/djangocms_blog/plugins/latest_entries.html:7
|
||||
#: templates/djangocms_blog/plugins/tags.html:17
|
||||
#: templates/djangocms_blog/post_list.html:21
|
||||
msgid "No article found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:3
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:3
|
||||
msgid "Authors"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:15
|
||||
msgid "No author found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:7
|
||||
#: templates/djangocms_blog/post_list.html:11
|
||||
msgid "Articles by"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/categories.html:15
|
||||
msgid "No categories found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:13
|
||||
msgid "Tag"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:24
|
||||
msgid "Back"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:29
|
||||
msgid "previous"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "Page"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "of"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:35
|
||||
msgid "next"
|
||||
msgstr ""
|
||||
764
djangocms_blog/locale/de/LC_MESSAGES/django.po
Normal file
764
djangocms_blog/locale/de/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,764 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Christoph Reimers <christoph@superservice-international.com>, 2014
|
||||
# Fabian Braun <fsbraun@gmx.de>, 2016
|
||||
# Fabian Braun <fsbraun@gmx.de>, 2016-2019,2022
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: djangocms-blog\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-30 11:04+0200\n"
|
||||
"PO-Revision-Date: 2014-03-29 15:29+0000\n"
|
||||
"Last-Translator: Fabian Braun <fsbraun@gmx.de>, 2016-2019,2022\n"
|
||||
"Language-Team: German (http://app.transifex.com/nephila/djangocms-blog/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"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: admin.py:65
|
||||
msgid "site"
|
||||
msgstr "Web-Site"
|
||||
|
||||
#: admin.py:131
|
||||
msgid "Info"
|
||||
msgstr "Informationen"
|
||||
|
||||
#: admin.py:138
|
||||
msgid "Images"
|
||||
msgstr "Beitragsbild"
|
||||
|
||||
#: admin.py:141
|
||||
msgid "SEO"
|
||||
msgstr "SEO"
|
||||
|
||||
#: admin.py:172
|
||||
msgid "Publish selection"
|
||||
msgstr "Auswahl veröffentlichen"
|
||||
|
||||
#: admin.py:194
|
||||
msgid "Unpublish selection"
|
||||
msgstr "Veröffentlichung für Auswahl aufheben"
|
||||
|
||||
#: admin.py:207
|
||||
msgid "Enable comments for selection"
|
||||
msgstr "Kommentare für Auswahl aktivieren"
|
||||
|
||||
#: admin.py:221
|
||||
msgid "Disable comments for selection "
|
||||
msgstr "Kommentare für Auswahl deaktivieren"
|
||||
|
||||
#: admin.py:235
|
||||
msgid "Enable liveblog for selection"
|
||||
msgstr "Liveblog für Auswahl aktivieren"
|
||||
|
||||
#: admin.py:249
|
||||
msgid "Disable liveblog for selection "
|
||||
msgstr "Liveblog für Auswahl deaktivieren"
|
||||
|
||||
#: admin.py:473
|
||||
msgid "Generic"
|
||||
msgstr "Generisch"
|
||||
|
||||
#: admin.py:485
|
||||
msgid "Layout"
|
||||
msgstr "Layout"
|
||||
|
||||
#: admin.py:499
|
||||
msgid "Notifications"
|
||||
msgstr "Benachrichtigungen"
|
||||
|
||||
#: admin.py:503
|
||||
msgid "Sitemap"
|
||||
msgstr "Sitemap"
|
||||
|
||||
#: admin.py:512
|
||||
msgid "Meta"
|
||||
msgstr "Meta-Informationen"
|
||||
|
||||
#: admin.py:524 admin.py:535 admin.py:545
|
||||
msgid "You can provide plain strings, Post model attribute or method names"
|
||||
msgstr "Strings und Post-Attribute oder -Methoden erlaubt"
|
||||
|
||||
#: apps.py:7
|
||||
msgid "django CMS Blog"
|
||||
msgstr "django CMS Blog"
|
||||
|
||||
#: cms_appconfig.py:19
|
||||
msgid "application title"
|
||||
msgstr "Name der Anwendung"
|
||||
|
||||
#: cms_appconfig.py:20
|
||||
msgid "object name"
|
||||
msgstr "Objektbezeichnung"
|
||||
|
||||
#: cms_appconfig.py:24
|
||||
msgid "blog config"
|
||||
msgstr "Einstellung"
|
||||
|
||||
#: cms_appconfig.py:25
|
||||
msgid "blog configs"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
#: cms_appconfig.py:28
|
||||
msgid "untitled"
|
||||
msgstr "unbenannt"
|
||||
|
||||
#: cms_appconfig.py:54
|
||||
msgid "Post published by default"
|
||||
msgstr "Beitrag standardmäßig veröffentlichen"
|
||||
|
||||
#: cms_appconfig.py:58
|
||||
msgid "Default size of full images"
|
||||
msgstr "Standardgröße für Beitragsbilder"
|
||||
|
||||
#: cms_appconfig.py:61
|
||||
msgid ""
|
||||
"If left empty the image size will have to be set for every newly created "
|
||||
"post."
|
||||
msgstr "Wenn das Feld leer bleibt, muß die Größe für jedes Beitragsbild neu gesetzt werden."
|
||||
|
||||
#: cms_appconfig.py:65
|
||||
msgid "Default size of thumbnail images"
|
||||
msgstr "Standardgröße für Vorschaubilder"
|
||||
|
||||
#: cms_appconfig.py:68
|
||||
msgid ""
|
||||
"If left empty the thumbnail image size will have to be set for every newly "
|
||||
"created post."
|
||||
msgstr "Wenn das Feld leer bleibt, muß die Größe für jedes Vorschaubild neu gesetzt werden."
|
||||
|
||||
#: cms_appconfig.py:72
|
||||
msgid "Permalink structure"
|
||||
msgstr "Permalink-Struktur"
|
||||
|
||||
#: cms_appconfig.py:79
|
||||
msgid "Use placeholder and plugins for article body"
|
||||
msgstr "Placeholder und Plugins für Beitrag verwenden"
|
||||
|
||||
#: cms_appconfig.py:83
|
||||
msgid "Use abstract field"
|
||||
msgstr "Feld Zusammenfassung nutzen"
|
||||
|
||||
#: cms_appconfig.py:87
|
||||
msgid "Enable related posts"
|
||||
msgstr "\"Verwandte Beiträge\" aktivieren"
|
||||
|
||||
#: cms_appconfig.py:91
|
||||
msgid "Set author"
|
||||
msgstr "Autor eintragen"
|
||||
|
||||
#: cms_appconfig.py:93
|
||||
msgid "Set author by default"
|
||||
msgstr "Autor standardmäßig eintragen"
|
||||
|
||||
#: cms_appconfig.py:98
|
||||
msgid "Paginate size"
|
||||
msgstr "Beiträge pro Seite"
|
||||
|
||||
#: cms_appconfig.py:101
|
||||
msgid "When paginating list views, how many articles per page?"
|
||||
msgstr "Anzahl der Beiträge, ab der die Beitragsübersicht in Seiten geteilt wird."
|
||||
|
||||
#: cms_appconfig.py:105
|
||||
msgid "Template prefix"
|
||||
msgstr "Vorlagen-Ordner"
|
||||
|
||||
#: cms_appconfig.py:108
|
||||
msgid "Alternative directory to load the blog templates from"
|
||||
msgstr "Alternativer Ordner, aus dem die Vorlagen für diesen Blog geladen werden"
|
||||
|
||||
#: cms_appconfig.py:112
|
||||
msgid "Menu structure"
|
||||
msgstr "Menüstruktur"
|
||||
|
||||
#: cms_appconfig.py:116
|
||||
msgid "Structure of the django CMS menu"
|
||||
msgstr "Aufbau des Django CMS-Menü"
|
||||
|
||||
#: cms_appconfig.py:120
|
||||
msgid "Show empty categories in menu"
|
||||
msgstr "Leere Kategorien im Menü anzeigen"
|
||||
|
||||
#: cms_appconfig.py:123
|
||||
msgid "Show categories with no post attached in the menu"
|
||||
msgstr "Auch Kategorien im Menü anzeigen, zu denen es keine Beiträge gibt"
|
||||
|
||||
#: cms_appconfig.py:128
|
||||
msgid "Sitemap changefreq"
|
||||
msgstr "Sitemap-Anpassungen"
|
||||
|
||||
#: cms_appconfig.py:132
|
||||
msgid "Changefreq attribute for sitemap items"
|
||||
msgstr "Anpassungsfrequenz-Einstellung für Sitemap-Einträge"
|
||||
|
||||
#: cms_appconfig.py:136
|
||||
msgid "Sitemap priority"
|
||||
msgstr "Sitemap-Priorität"
|
||||
|
||||
#: cms_appconfig.py:139
|
||||
msgid "Priority attribute for sitemap items"
|
||||
msgstr "Prioritäts-Einstellung für Sitemap-Einträge"
|
||||
|
||||
#: cms_appconfig.py:143
|
||||
msgid "Object type"
|
||||
msgstr "Objekt-Typ"
|
||||
|
||||
#: cms_appconfig.py:147
|
||||
msgid "Facebook type"
|
||||
msgstr "Facebook-Typ"
|
||||
|
||||
#: cms_appconfig.py:151
|
||||
msgid "Facebook application ID"
|
||||
msgstr "Facebook Application ID"
|
||||
|
||||
#: cms_appconfig.py:155
|
||||
msgid "Facebook profile ID"
|
||||
msgstr "Facebook Profil-ID"
|
||||
|
||||
#: cms_appconfig.py:159
|
||||
msgid "Facebook page URL"
|
||||
msgstr "Facebook Seiten-URL"
|
||||
|
||||
#: cms_appconfig.py:163
|
||||
msgid "Facebook author URL"
|
||||
msgstr "Facebook Autoren-URL"
|
||||
|
||||
#: cms_appconfig.py:167
|
||||
msgid "Facebook author"
|
||||
msgstr "Facebook Autor"
|
||||
|
||||
#: cms_appconfig.py:171
|
||||
msgid "Twitter type"
|
||||
msgstr "Twitter-Typ"
|
||||
|
||||
#: cms_appconfig.py:178
|
||||
msgid "Twitter site handle"
|
||||
msgstr "Twitter Site-Kennung"
|
||||
|
||||
#: cms_appconfig.py:182
|
||||
msgid "Twitter author handle"
|
||||
msgstr "Twitter Autoren-Kennung"
|
||||
|
||||
#: cms_appconfig.py:186
|
||||
msgid "Schema.org type"
|
||||
msgstr "Schema.org-Typ"
|
||||
|
||||
#: cms_appconfig.py:193
|
||||
msgid "Schema.org author name"
|
||||
msgstr "Schema.org Autorenname"
|
||||
|
||||
#: cms_appconfig.py:197
|
||||
msgid "Send notifications on post publish"
|
||||
msgstr "Mitteilung bei Beitrags-Veröffentlichungen senden"
|
||||
|
||||
#: cms_appconfig.py:200
|
||||
msgid "Emits a desktop notification -if enabled- when publishing a new post"
|
||||
msgstr "Wenn aktiviert: Desktop-Mitteilung senden, wenn Beiträge veröffentlicht werden"
|
||||
|
||||
#: cms_appconfig.py:204
|
||||
msgid "Send notifications on post update"
|
||||
msgstr "Mitteilung bei Aktualisierungen senden"
|
||||
|
||||
#: cms_appconfig.py:207
|
||||
msgid ""
|
||||
"Emits a desktop notification -if enabled- when editing a published post"
|
||||
msgstr "Wenn aktiviert: Desktop-Mitteilung senden, wenn Beiträge aktualisiert werden"
|
||||
|
||||
#: cms_apps.py:13 cms_toolbars.py:17 settings.py:485
|
||||
msgid "Blog"
|
||||
msgstr "Blog"
|
||||
|
||||
#: cms_menus.py:26
|
||||
msgid "Blog menu"
|
||||
msgstr "Blog-Menü"
|
||||
|
||||
#: cms_toolbars.py:20
|
||||
msgid "Post list"
|
||||
msgstr "Betragsübersicht anzeigen"
|
||||
|
||||
#: cms_toolbars.py:23
|
||||
msgid "Category list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:26
|
||||
msgid "Tag list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:29
|
||||
msgid "Add post"
|
||||
msgstr "Beitrag hinzufügen"
|
||||
|
||||
#: cms_toolbars.py:33
|
||||
msgid "Edit configuration"
|
||||
msgstr "Einstellungen bearbeiten"
|
||||
|
||||
#: cms_toolbars.py:38
|
||||
msgid "Edit Post"
|
||||
msgstr "Beitrag bearbeiten"
|
||||
|
||||
#: cms_toolbars.py:53
|
||||
#, python-brace-format
|
||||
msgid "Publish {0} now"
|
||||
msgstr "{0} jetzt veröffentlichen"
|
||||
|
||||
#: cms_wizards.py:22
|
||||
msgid "Slug"
|
||||
msgstr "Slug"
|
||||
|
||||
#: cms_wizards.py:25
|
||||
msgid "Leave empty for automatic slug, or override as required."
|
||||
msgstr "Leer lassen für automatisch generierte Slug oder händisch eintragen"
|
||||
|
||||
#: cms_wizards.py:105
|
||||
#, python-brace-format
|
||||
msgid "New {0}"
|
||||
msgstr "Neue(r) {0}"
|
||||
|
||||
#: cms_wizards.py:109
|
||||
#, python-brace-format
|
||||
msgid "Create a new {0} in {1}"
|
||||
msgstr "Neue(n) {0} in {1} erstellen"
|
||||
|
||||
#: feeds.py:39
|
||||
#, python-format
|
||||
msgid "Blog articles on %(site_name)s"
|
||||
msgstr "Blog-Beträge auf %(site_name)s"
|
||||
|
||||
#: liveblog/apps.py:7
|
||||
msgid "Liveblog"
|
||||
msgstr "Liveblog"
|
||||
|
||||
#: liveblog/cms_plugins.py:13
|
||||
msgid "Liveblog item"
|
||||
msgstr "Liveblog-Meldung"
|
||||
|
||||
#: liveblog/models.py:27
|
||||
msgid "publish liveblog entry"
|
||||
msgstr "Liveblog-Meldung veröffentlichen"
|
||||
|
||||
#: liveblog/models.py:28
|
||||
msgid "post date"
|
||||
msgstr "Veröffentlichungsdatum"
|
||||
|
||||
#: liveblog/models.py:31 liveblog/models.py:111
|
||||
msgid "liveblog entry"
|
||||
msgstr "Liveblog-Meldung"
|
||||
|
||||
#: liveblog/models.py:32 liveblog/models.py:112
|
||||
msgid "liveblog entries"
|
||||
msgstr "Liveblog-Meldungen"
|
||||
|
||||
#: liveblog/models.py:93 models.py:252
|
||||
msgid "title"
|
||||
msgstr "Titel"
|
||||
|
||||
#: liveblog/models.py:95
|
||||
msgid "image"
|
||||
msgstr "Beitragsbild"
|
||||
|
||||
#: liveblog/models.py:103
|
||||
msgid "thumbnail size"
|
||||
msgstr "Vorschau-Größe"
|
||||
|
||||
#: models.py:95
|
||||
msgid "parent"
|
||||
msgstr "übergeordnetes Element"
|
||||
|
||||
#: models.py:97
|
||||
msgid "created at"
|
||||
msgstr "erstellt am"
|
||||
|
||||
#: models.py:98
|
||||
msgid "modified at"
|
||||
msgstr "bearbeitet am"
|
||||
|
||||
#: models.py:99 models.py:249 models.py:491
|
||||
msgid "app. config"
|
||||
msgstr "App-Einstellung"
|
||||
|
||||
#: models.py:102
|
||||
msgid "name"
|
||||
msgstr "Name"
|
||||
|
||||
#: models.py:103 models.py:254
|
||||
msgid "slug"
|
||||
msgstr "slug"
|
||||
|
||||
#: models.py:104
|
||||
msgid "category meta description"
|
||||
msgstr "Meta-Beschreibung Kategorie"
|
||||
|
||||
#: models.py:132
|
||||
msgid "blog category"
|
||||
msgstr "Blog-Kategorie"
|
||||
|
||||
#: models.py:133
|
||||
msgid "blog categories"
|
||||
msgstr "Blog-Kategorien"
|
||||
|
||||
#: models.py:169
|
||||
msgid "BlogCategory (no translation)"
|
||||
msgstr "Blog-Kategorie (ohne Übersetzung)"
|
||||
|
||||
#: models.py:196
|
||||
msgid "author"
|
||||
msgstr "Autor"
|
||||
|
||||
#: models.py:203
|
||||
msgid "created"
|
||||
msgstr "erstellt"
|
||||
|
||||
#: models.py:204
|
||||
msgid "last modified"
|
||||
msgstr "zuletzt geändert"
|
||||
|
||||
#: models.py:205
|
||||
msgid "published since"
|
||||
msgstr "öffentlich seit"
|
||||
|
||||
#: models.py:206
|
||||
msgid "published until"
|
||||
msgstr "öffentlich bis"
|
||||
|
||||
#: models.py:207
|
||||
msgid "featured date"
|
||||
msgstr "Vorstellungs-Datum"
|
||||
|
||||
#: models.py:208
|
||||
msgid "publish"
|
||||
msgstr "veröffentlicht"
|
||||
|
||||
#: models.py:209
|
||||
msgid "include in RSS feed"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:211
|
||||
msgid "category"
|
||||
msgstr "Kategorie"
|
||||
|
||||
#: models.py:214
|
||||
msgid "main image"
|
||||
msgstr "Beitragsbild"
|
||||
|
||||
#: models.py:222
|
||||
msgid "main image thumbnail"
|
||||
msgstr "Beitragsbild (Vorschau)"
|
||||
|
||||
#: models.py:230
|
||||
msgid "main image full"
|
||||
msgstr "Beitragsbild (volle Größe)"
|
||||
|
||||
#: models.py:237
|
||||
msgid "enable comments on post"
|
||||
msgstr "Kommentare zu diesem Beitrag erlauben"
|
||||
|
||||
#: models.py:241
|
||||
msgid "Site(s)"
|
||||
msgstr "Web-Site(s)"
|
||||
|
||||
#: models.py:244
|
||||
msgid ""
|
||||
"Select sites in which to show the post. If none is set it will be visible in"
|
||||
" all the configured sites."
|
||||
msgstr "Wähle Web-Sites aus, auf welchen der Post angezeigt wird. Ohne Auswahl sichtbar auf allen konfigurierten Seiten."
|
||||
|
||||
#: models.py:256
|
||||
msgid "subtitle"
|
||||
msgstr "Untertitel"
|
||||
|
||||
#: models.py:257
|
||||
msgid "abstract"
|
||||
msgstr "Zusammenfassung"
|
||||
|
||||
#: models.py:258
|
||||
msgid "post meta description"
|
||||
msgstr "Meta-Beschreibung Beitrag"
|
||||
|
||||
#: models.py:259
|
||||
msgid "post meta keywords"
|
||||
msgstr "Meta-Stichwörter Beitrag"
|
||||
|
||||
#: models.py:261
|
||||
msgid "post meta title"
|
||||
msgstr "Meta-Titel Beitrag"
|
||||
|
||||
#: models.py:262
|
||||
msgid "used in title tag and social sharing"
|
||||
msgstr "Wird als Titel-Schlagwort und für das Teilen auf sozialen Netzwerken genutzt"
|
||||
|
||||
#: models.py:267
|
||||
msgid "text"
|
||||
msgstr "Text"
|
||||
|
||||
#: models.py:273
|
||||
msgid "enable liveblog on post"
|
||||
msgstr "Liveblog für Beitrag aktivieren"
|
||||
|
||||
#: models.py:279
|
||||
msgid ""
|
||||
"Type a tag and hit tab, or start typing and select from autocomplete list."
|
||||
msgstr "Schlagwort eintippen und Tabulator drücken oder Anfang eintippen und aus der Vorschlagsliste auswählen."
|
||||
|
||||
#: models.py:282
|
||||
msgid "Related Posts"
|
||||
msgstr "Verwandte Beiträge"
|
||||
|
||||
#: models.py:314
|
||||
msgid "blog article"
|
||||
msgstr "Blog-Beitrag"
|
||||
|
||||
#: models.py:315
|
||||
msgid "blog articles"
|
||||
msgstr "Blog-Beiträge"
|
||||
|
||||
#: models.py:320
|
||||
msgid "Post (no translation)"
|
||||
msgstr "Beitrag (ohne Übersetzung)"
|
||||
|
||||
#: models.py:493
|
||||
msgid "current site"
|
||||
msgstr "Aktuelle Web-Site"
|
||||
|
||||
#: models.py:493
|
||||
msgid "Select items from the current site only"
|
||||
msgstr "Nur Einträge der aktuelle Web-Site zulassen"
|
||||
|
||||
#: models.py:497
|
||||
msgid "Plugin template"
|
||||
msgstr "Plugin-Vorlage"
|
||||
|
||||
#: models.py:498
|
||||
msgid "Select plugin template to load for this instance"
|
||||
msgstr "Wählen Sie die Vorlage für diese Instanz des Plugins"
|
||||
|
||||
#: models.py:536 models.py:578
|
||||
msgid "articles"
|
||||
msgstr "Beiträge"
|
||||
|
||||
#: models.py:538
|
||||
msgid "The number of latests articles to be displayed."
|
||||
msgstr "Anzahl der anzuzeigenden letzten Beiträge"
|
||||
|
||||
#: models.py:541
|
||||
msgid "filter by tag"
|
||||
msgstr "Nach Schlagwort filtern"
|
||||
|
||||
#: models.py:543
|
||||
msgid "Show only the blog articles tagged with chosen tags."
|
||||
msgstr "Nur Blog-Beiträge mit dem ausgewählten Schlagwort anzeigen"
|
||||
|
||||
#: models.py:549
|
||||
msgid "filter by category"
|
||||
msgstr "Nach Kategorie filtern"
|
||||
|
||||
#: models.py:550
|
||||
msgid "Show only the blog articles tagged with chosen categories."
|
||||
msgstr "Nur die Blog-Beiträge der ausgewählten Kategorie anzeigen"
|
||||
|
||||
#: models.py:554
|
||||
#, python-format
|
||||
msgid "%s latest articles by tag"
|
||||
msgstr "%s neueste Beiträge nach Schlagwort"
|
||||
|
||||
#: models.py:574
|
||||
msgid "authors"
|
||||
msgstr "Autoren"
|
||||
|
||||
#: models.py:580
|
||||
msgid "The number of author articles to be displayed."
|
||||
msgstr "Die Anzahl der anzuzeigenden Autoren-Beiträge"
|
||||
|
||||
#: models.py:584
|
||||
#, python-format
|
||||
msgid "%s latest articles by author"
|
||||
msgstr "%s neueste Beiträge nach Autor"
|
||||
|
||||
#: models.py:605 models.py:608
|
||||
msgid "Featured posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:623
|
||||
msgid "generic blog plugin"
|
||||
msgstr "Generisches Blog-Plugin"
|
||||
|
||||
#: settings.py:26
|
||||
msgid "Full date"
|
||||
msgstr "Jahr / Monat / Tag"
|
||||
|
||||
#: settings.py:27
|
||||
msgid "Year / Month"
|
||||
msgstr "Jahr / Monat"
|
||||
|
||||
#: settings.py:28 templates/djangocms_blog/post_list.html:14
|
||||
msgid "Category"
|
||||
msgstr "Kategorie"
|
||||
|
||||
#: settings.py:29
|
||||
msgid "Just slug"
|
||||
msgstr "Nur Slug"
|
||||
|
||||
#: settings.py:59
|
||||
msgid "Categories and posts"
|
||||
msgstr "Kategorien und Beiträge"
|
||||
|
||||
#: settings.py:60
|
||||
msgid "Categories only"
|
||||
msgstr "Nur Kategorien"
|
||||
|
||||
#: settings.py:61
|
||||
msgid "Posts only"
|
||||
msgstr "Nur Beiträge"
|
||||
|
||||
#: settings.py:62
|
||||
msgid "None"
|
||||
msgstr "Kein Menü"
|
||||
|
||||
#: settings.py:71
|
||||
msgid "always"
|
||||
msgstr "Fortlaufend"
|
||||
|
||||
#: settings.py:72
|
||||
msgid "hourly"
|
||||
msgstr "Stündlich"
|
||||
|
||||
#: settings.py:73
|
||||
msgid "daily"
|
||||
msgstr "Täglich"
|
||||
|
||||
#: settings.py:74
|
||||
msgid "weekly"
|
||||
msgstr "Wöchentlich"
|
||||
|
||||
#: settings.py:75
|
||||
msgid "monthly"
|
||||
msgstr "Monatlich"
|
||||
|
||||
#: settings.py:76
|
||||
msgid "yearly"
|
||||
msgstr "Jährlich"
|
||||
|
||||
#: settings.py:77
|
||||
msgid "never"
|
||||
msgstr "Nie"
|
||||
|
||||
#: settings.py:492
|
||||
msgid "Latest Blog Articles"
|
||||
msgstr "Letzte Blog-Beiträge"
|
||||
|
||||
#: settings.py:499
|
||||
msgid "Latest Blog Articles - Cache"
|
||||
msgstr "Letzte Blog-Einträge - Cache"
|
||||
|
||||
#: settings.py:506
|
||||
msgid "Author Blog Articles"
|
||||
msgstr "Blog-Beiträge nach Autor"
|
||||
|
||||
#: settings.py:513
|
||||
msgid "Author Blog Articles List"
|
||||
msgstr "Blog-Beitrags-Liste nach Autor"
|
||||
|
||||
#: settings.py:520 templates/djangocms_blog/plugins/tags.html:5
|
||||
msgid "Tags"
|
||||
msgstr "Schlagworte"
|
||||
|
||||
#: settings.py:527 templates/djangocms_blog/plugins/categories.html:3
|
||||
msgid "Categories"
|
||||
msgstr "Kategorien"
|
||||
|
||||
#: settings.py:534 templates/djangocms_blog/plugins/archive.html:3
|
||||
#: templates/djangocms_blog/post_list.html:12
|
||||
msgid "Archive"
|
||||
msgstr "Archiv"
|
||||
|
||||
#: settings.py:541
|
||||
msgid "Featured Posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:548
|
||||
msgid "Featured Posts - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:590
|
||||
msgid "Default template"
|
||||
msgstr "Standard-Vorlage"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr "weiterlesen"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr "von"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:17
|
||||
#: templates/djangocms_blog/plugins/authors.html:10
|
||||
#: templates/djangocms_blog/plugins/categories.html:10
|
||||
#: templates/djangocms_blog/plugins/tags.html:12
|
||||
#, python-format
|
||||
msgid "1 article"
|
||||
msgid_plural "%(articles)s articles"
|
||||
msgstr[0] "Ein Artikel"
|
||||
msgstr[1] "%(articles)s Beiträge"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:18
|
||||
#: templates/djangocms_blog/plugins/authors.html:11
|
||||
#: templates/djangocms_blog/plugins/categories.html:11
|
||||
#: templates/djangocms_blog/plugins/tags.html:13
|
||||
msgid "0 articles"
|
||||
msgstr "0 Beiträge"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:26
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:12
|
||||
#: templates/djangocms_blog/plugins/latest_entries.html:7
|
||||
#: templates/djangocms_blog/plugins/tags.html:17
|
||||
#: templates/djangocms_blog/post_list.html:21
|
||||
msgid "No article found."
|
||||
msgstr "Keinen Beitrag gefunden."
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:3
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:3
|
||||
msgid "Authors"
|
||||
msgstr "Autoren"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:15
|
||||
msgid "No author found."
|
||||
msgstr "Kein Autor gefunden."
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:7
|
||||
#: templates/djangocms_blog/post_list.html:11
|
||||
msgid "Articles by"
|
||||
msgstr "Artikel von"
|
||||
|
||||
#: templates/djangocms_blog/plugins/categories.html:15
|
||||
msgid "No categories found."
|
||||
msgstr "Keine Kategorien gefunden."
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:13
|
||||
msgid "Tag"
|
||||
msgstr "Schlagwort"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:24
|
||||
msgid "Back"
|
||||
msgstr "Zurück"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:29
|
||||
msgid "previous"
|
||||
msgstr "vorheriger"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "Page"
|
||||
msgstr "Seite"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "of"
|
||||
msgstr "von"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:35
|
||||
msgid "next"
|
||||
msgstr "nächste"
|
||||
761
djangocms_blog/locale/en/LC_MESSAGES/django.po
Normal file
761
djangocms_blog/locale/en/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,761 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-30 11:04+0200\n"
|
||||
"PO-Revision-Date: 2014-03-05 18:09+0100\n"
|
||||
"Last-Translator: Iacopo Spalletti\n"
|
||||
"Language-Team: Italian <i.spalletti@nephila.it>\n"
|
||||
"Language: it\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"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: admin.py:65
|
||||
msgid "site"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:131
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:138
|
||||
msgid "Images"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:141
|
||||
msgid "SEO"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:172
|
||||
msgid "Publish selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:194
|
||||
msgid "Unpublish selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:207
|
||||
msgid "Enable comments for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:221
|
||||
msgid "Disable comments for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:235
|
||||
msgid "Enable liveblog for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:249
|
||||
msgid "Disable liveblog for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:473
|
||||
msgid "Generic"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:485
|
||||
msgid "Layout"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:499
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:503
|
||||
msgid "Sitemap"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:512
|
||||
msgid "Meta"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:524 admin.py:535 admin.py:545
|
||||
msgid "You can provide plain strings, Post model attribute or method names"
|
||||
msgstr ""
|
||||
|
||||
#: apps.py:7
|
||||
msgid "django CMS Blog"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:19
|
||||
msgid "application title"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:20
|
||||
msgid "object name"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:24
|
||||
msgid "blog config"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:25
|
||||
msgid "blog configs"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:28
|
||||
msgid "untitled"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:54
|
||||
msgid "Post published by default"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:58
|
||||
msgid "Default size of full images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:61
|
||||
msgid ""
|
||||
"If left empty the image size will have to be set for every newly created "
|
||||
"post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:65
|
||||
msgid "Default size of thumbnail images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:68
|
||||
msgid ""
|
||||
"If left empty the thumbnail image size will have to be set for every newly "
|
||||
"created post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:72
|
||||
msgid "Permalink structure"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:79
|
||||
msgid "Use placeholder and plugins for article body"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:83
|
||||
msgid "Use abstract field"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:87
|
||||
msgid "Enable related posts"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:91
|
||||
msgid "Set author"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:93
|
||||
msgid "Set author by default"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:98
|
||||
msgid "Paginate size"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:101
|
||||
msgid "When paginating list views, how many articles per page?"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:105
|
||||
msgid "Template prefix"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:108
|
||||
msgid "Alternative directory to load the blog templates from"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:112
|
||||
msgid "Menu structure"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:116
|
||||
msgid "Structure of the django CMS menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:120
|
||||
msgid "Show empty categories in menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:123
|
||||
msgid "Show categories with no post attached in the menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:128
|
||||
msgid "Sitemap changefreq"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:132
|
||||
msgid "Changefreq attribute for sitemap items"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:136
|
||||
msgid "Sitemap priority"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:139
|
||||
msgid "Priority attribute for sitemap items"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:143
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:147
|
||||
msgid "Facebook type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:151
|
||||
msgid "Facebook application ID"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:155
|
||||
msgid "Facebook profile ID"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:159
|
||||
msgid "Facebook page URL"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:163
|
||||
msgid "Facebook author URL"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:167
|
||||
msgid "Facebook author"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:171
|
||||
msgid "Twitter type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:178
|
||||
msgid "Twitter site handle"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:182
|
||||
msgid "Twitter author handle"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:186
|
||||
msgid "Schema.org type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:193
|
||||
msgid "Schema.org author name"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:197
|
||||
msgid "Send notifications on post publish"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:200
|
||||
msgid "Emits a desktop notification -if enabled- when publishing a new post"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:204
|
||||
msgid "Send notifications on post update"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:207
|
||||
msgid "Emits a desktop notification -if enabled- when editing a published post"
|
||||
msgstr ""
|
||||
|
||||
#: cms_apps.py:13 cms_toolbars.py:17 settings.py:485
|
||||
msgid "Blog"
|
||||
msgstr ""
|
||||
|
||||
#: cms_menus.py:26
|
||||
msgid "Blog menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:20
|
||||
msgid "Post list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:23
|
||||
msgid "Category list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:26
|
||||
msgid "Tag list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:29
|
||||
msgid "Add post"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:33
|
||||
msgid "Edit configuration"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:38
|
||||
msgid "Edit Post"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:53
|
||||
#, python-brace-format
|
||||
msgid "Publish {0} now"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:22
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:25
|
||||
msgid "Leave empty for automatic slug, or override as required."
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:105
|
||||
#, python-brace-format
|
||||
msgid "New {0}"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:109
|
||||
#, python-brace-format
|
||||
msgid "Create a new {0} in {1}"
|
||||
msgstr ""
|
||||
|
||||
#: feeds.py:39
|
||||
#, python-format
|
||||
msgid "Blog articles on %(site_name)s"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/apps.py:7
|
||||
msgid "Liveblog"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/cms_plugins.py:13
|
||||
msgid "Liveblog item"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:27
|
||||
msgid "publish liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:28
|
||||
msgid "post date"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:31 liveblog/models.py:111
|
||||
msgid "liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:32 liveblog/models.py:112
|
||||
msgid "liveblog entries"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:93 models.py:252
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:95
|
||||
msgid "image"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:103
|
||||
msgid "thumbnail size"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:95
|
||||
msgid "parent"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:97
|
||||
msgid "created at"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:98
|
||||
msgid "modified at"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:99 models.py:249 models.py:491
|
||||
msgid "app. config"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:102
|
||||
msgid "name"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:103 models.py:254
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:104
|
||||
msgid "category meta description"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:132
|
||||
msgid "blog category"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:133
|
||||
msgid "blog categories"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:169
|
||||
msgid "BlogCategory (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:196
|
||||
msgid "author"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:203
|
||||
msgid "created"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:204
|
||||
msgid "last modified"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:205
|
||||
msgid "published since"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:206
|
||||
msgid "published until"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:207
|
||||
msgid "featured date"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:208
|
||||
msgid "publish"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:209
|
||||
msgid "include in RSS feed"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:211
|
||||
msgid "category"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:214
|
||||
msgid "main image"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:222
|
||||
msgid "main image thumbnail"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:230
|
||||
msgid "main image full"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:237
|
||||
msgid "enable comments on post"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:241
|
||||
msgid "Site(s)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:244
|
||||
msgid ""
|
||||
"Select sites in which to show the post. If none is set it will be visible in "
|
||||
"all the configured sites."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:256
|
||||
msgid "subtitle"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:257
|
||||
msgid "abstract"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:258
|
||||
msgid "post meta description"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:259
|
||||
msgid "post meta keywords"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:261
|
||||
msgid "post meta title"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:262
|
||||
msgid "used in title tag and social sharing"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:267
|
||||
msgid "text"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:273
|
||||
msgid "enable liveblog on post"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:279
|
||||
msgid ""
|
||||
"Type a tag and hit tab, or start typing and select from autocomplete list."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:282
|
||||
msgid "Related Posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:314
|
||||
msgid "blog article"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:315
|
||||
msgid "blog articles"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:320
|
||||
msgid "Post (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "current site"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "Select items from the current site only"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:497
|
||||
msgid "Plugin template"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:498
|
||||
msgid "Select plugin template to load for this instance"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:536 models.py:578
|
||||
msgid "articles"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:538
|
||||
msgid "The number of latests articles to be displayed."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:541
|
||||
msgid "filter by tag"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:543
|
||||
msgid "Show only the blog articles tagged with chosen tags."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:549
|
||||
msgid "filter by category"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:550
|
||||
msgid "Show only the blog articles tagged with chosen categories."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:554
|
||||
#, python-format
|
||||
msgid "%s latest articles by tag"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:574
|
||||
msgid "authors"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:580
|
||||
msgid "The number of author articles to be displayed."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:584
|
||||
#, python-format
|
||||
msgid "%s latest articles by author"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:605 models.py:608
|
||||
msgid "Featured posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:623
|
||||
msgid "generic blog plugin"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:26
|
||||
msgid "Full date"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:27
|
||||
msgid "Year / Month"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:28 templates/djangocms_blog/post_list.html:14
|
||||
msgid "Category"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:29
|
||||
msgid "Just slug"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:59
|
||||
msgid "Categories and posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:60
|
||||
msgid "Categories only"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:61
|
||||
msgid "Posts only"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:62
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:71
|
||||
msgid "always"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:72
|
||||
msgid "hourly"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:73
|
||||
msgid "daily"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:74
|
||||
msgid "weekly"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:75
|
||||
msgid "monthly"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:76
|
||||
msgid "yearly"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:77
|
||||
msgid "never"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:492
|
||||
msgid "Latest Blog Articles"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:499
|
||||
msgid "Latest Blog Articles - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:506
|
||||
msgid "Author Blog Articles"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:513
|
||||
msgid "Author Blog Articles List"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:520 templates/djangocms_blog/plugins/tags.html:5
|
||||
msgid "Tags"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:527 templates/djangocms_blog/plugins/categories.html:3
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:534 templates/djangocms_blog/plugins/archive.html:3
|
||||
#: templates/djangocms_blog/post_list.html:12
|
||||
msgid "Archive"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:541
|
||||
msgid "Featured Posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:548
|
||||
msgid "Featured Posts - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:590
|
||||
msgid "Default template"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:17
|
||||
#: templates/djangocms_blog/plugins/authors.html:10
|
||||
#: templates/djangocms_blog/plugins/categories.html:10
|
||||
#: templates/djangocms_blog/plugins/tags.html:12
|
||||
#, python-format
|
||||
msgid "1 article"
|
||||
msgid_plural "%(articles)s articles"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:18
|
||||
#: templates/djangocms_blog/plugins/authors.html:11
|
||||
#: templates/djangocms_blog/plugins/categories.html:11
|
||||
#: templates/djangocms_blog/plugins/tags.html:13
|
||||
msgid "0 articles"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:26
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:12
|
||||
#: templates/djangocms_blog/plugins/latest_entries.html:7
|
||||
#: templates/djangocms_blog/plugins/tags.html:17
|
||||
#: templates/djangocms_blog/post_list.html:21
|
||||
msgid "No article found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:3
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:3
|
||||
msgid "Authors"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:15
|
||||
msgid "No author found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:7
|
||||
#: templates/djangocms_blog/post_list.html:11
|
||||
msgid "Articles by"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/categories.html:15
|
||||
msgid "No categories found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:13
|
||||
msgid "Tag"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:24
|
||||
msgid "Back"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:29
|
||||
msgid "previous"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "Page"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "of"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:35
|
||||
msgid "next"
|
||||
msgstr ""
|
||||
763
djangocms_blog/locale/es/LC_MESSAGES/django.po
Normal file
763
djangocms_blog/locale/es/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,763 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# David <d.diazp@gmail.com>, 2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: djangocms-blog\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-30 11:04+0200\n"
|
||||
"PO-Revision-Date: 2014-03-29 15:29+0000\n"
|
||||
"Last-Translator: David <d.diazp@gmail.com>, 2015\n"
|
||||
"Language-Team: Spanish (http://app.transifex.com/nephila/djangocms-blog/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"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: admin.py:65
|
||||
msgid "site"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:131
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:138
|
||||
msgid "Images"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:141
|
||||
msgid "SEO"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:172
|
||||
msgid "Publish selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:194
|
||||
msgid "Unpublish selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:207
|
||||
msgid "Enable comments for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:221
|
||||
msgid "Disable comments for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:235
|
||||
msgid "Enable liveblog for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:249
|
||||
msgid "Disable liveblog for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:473
|
||||
msgid "Generic"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:485
|
||||
msgid "Layout"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:499
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:503
|
||||
msgid "Sitemap"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:512
|
||||
msgid "Meta"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:524 admin.py:535 admin.py:545
|
||||
msgid "You can provide plain strings, Post model attribute or method names"
|
||||
msgstr ""
|
||||
|
||||
#: apps.py:7
|
||||
msgid "django CMS Blog"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:19
|
||||
msgid "application title"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:20
|
||||
msgid "object name"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:24
|
||||
msgid "blog config"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:25
|
||||
msgid "blog configs"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:28
|
||||
msgid "untitled"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:54
|
||||
msgid "Post published by default"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:58
|
||||
msgid "Default size of full images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:61
|
||||
msgid ""
|
||||
"If left empty the image size will have to be set for every newly created "
|
||||
"post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:65
|
||||
msgid "Default size of thumbnail images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:68
|
||||
msgid ""
|
||||
"If left empty the thumbnail image size will have to be set for every newly "
|
||||
"created post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:72
|
||||
msgid "Permalink structure"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:79
|
||||
msgid "Use placeholder and plugins for article body"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:83
|
||||
msgid "Use abstract field"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:87
|
||||
msgid "Enable related posts"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:91
|
||||
msgid "Set author"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:93
|
||||
msgid "Set author by default"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:98
|
||||
msgid "Paginate size"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:101
|
||||
msgid "When paginating list views, how many articles per page?"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:105
|
||||
msgid "Template prefix"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:108
|
||||
msgid "Alternative directory to load the blog templates from"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:112
|
||||
msgid "Menu structure"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:116
|
||||
msgid "Structure of the django CMS menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:120
|
||||
msgid "Show empty categories in menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:123
|
||||
msgid "Show categories with no post attached in the menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:128
|
||||
msgid "Sitemap changefreq"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:132
|
||||
msgid "Changefreq attribute for sitemap items"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:136
|
||||
msgid "Sitemap priority"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:139
|
||||
msgid "Priority attribute for sitemap items"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:143
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:147
|
||||
msgid "Facebook type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:151
|
||||
msgid "Facebook application ID"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:155
|
||||
msgid "Facebook profile ID"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:159
|
||||
msgid "Facebook page URL"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:163
|
||||
msgid "Facebook author URL"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:167
|
||||
msgid "Facebook author"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:171
|
||||
msgid "Twitter type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:178
|
||||
msgid "Twitter site handle"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:182
|
||||
msgid "Twitter author handle"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:186
|
||||
msgid "Schema.org type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:193
|
||||
msgid "Schema.org author name"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:197
|
||||
msgid "Send notifications on post publish"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:200
|
||||
msgid "Emits a desktop notification -if enabled- when publishing a new post"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:204
|
||||
msgid "Send notifications on post update"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:207
|
||||
msgid ""
|
||||
"Emits a desktop notification -if enabled- when editing a published post"
|
||||
msgstr ""
|
||||
|
||||
#: cms_apps.py:13 cms_toolbars.py:17 settings.py:485
|
||||
msgid "Blog"
|
||||
msgstr "Blog"
|
||||
|
||||
#: cms_menus.py:26
|
||||
msgid "Blog menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:20
|
||||
msgid "Post list"
|
||||
msgstr "Lista de entradas"
|
||||
|
||||
#: cms_toolbars.py:23
|
||||
msgid "Category list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:26
|
||||
msgid "Tag list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:29
|
||||
msgid "Add post"
|
||||
msgstr "Añadir entradas"
|
||||
|
||||
#: cms_toolbars.py:33
|
||||
msgid "Edit configuration"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:38
|
||||
msgid "Edit Post"
|
||||
msgstr "Editar entrada"
|
||||
|
||||
#: cms_toolbars.py:53
|
||||
#, python-brace-format
|
||||
msgid "Publish {0} now"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:22
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:25
|
||||
msgid "Leave empty for automatic slug, or override as required."
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:105
|
||||
#, python-brace-format
|
||||
msgid "New {0}"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:109
|
||||
#, python-brace-format
|
||||
msgid "Create a new {0} in {1}"
|
||||
msgstr ""
|
||||
|
||||
#: feeds.py:39
|
||||
#, python-format
|
||||
msgid "Blog articles on %(site_name)s"
|
||||
msgstr "Artículos del blog en %(site_name)s"
|
||||
|
||||
#: liveblog/apps.py:7
|
||||
msgid "Liveblog"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/cms_plugins.py:13
|
||||
msgid "Liveblog item"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:27
|
||||
msgid "publish liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:28
|
||||
msgid "post date"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:31 liveblog/models.py:111
|
||||
msgid "liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:32 liveblog/models.py:112
|
||||
msgid "liveblog entries"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:93 models.py:252
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:95
|
||||
msgid "image"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:103
|
||||
msgid "thumbnail size"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:95
|
||||
msgid "parent"
|
||||
msgstr "padre"
|
||||
|
||||
#: models.py:97
|
||||
msgid "created at"
|
||||
msgstr "Creado en"
|
||||
|
||||
#: models.py:98
|
||||
msgid "modified at"
|
||||
msgstr "Actualizado en"
|
||||
|
||||
#: models.py:99 models.py:249 models.py:491
|
||||
msgid "app. config"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:102
|
||||
msgid "name"
|
||||
msgstr "nombre"
|
||||
|
||||
#: models.py:103 models.py:254
|
||||
msgid "slug"
|
||||
msgstr "slug"
|
||||
|
||||
#: models.py:104
|
||||
msgid "category meta description"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:132
|
||||
msgid "blog category"
|
||||
msgstr "categoría del blog"
|
||||
|
||||
#: models.py:133
|
||||
msgid "blog categories"
|
||||
msgstr "categorías del blog"
|
||||
|
||||
#: models.py:169
|
||||
msgid "BlogCategory (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:196
|
||||
msgid "author"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:203
|
||||
msgid "created"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:204
|
||||
msgid "last modified"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:205
|
||||
msgid "published since"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:206
|
||||
msgid "published until"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:207
|
||||
msgid "featured date"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:208
|
||||
msgid "publish"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:209
|
||||
msgid "include in RSS feed"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:211
|
||||
msgid "category"
|
||||
msgstr "categoría"
|
||||
|
||||
#: models.py:214
|
||||
msgid "main image"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:222
|
||||
msgid "main image thumbnail"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:230
|
||||
msgid "main image full"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:237
|
||||
msgid "enable comments on post"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:241
|
||||
msgid "Site(s)"
|
||||
msgstr "Sitio(s)"
|
||||
|
||||
#: models.py:244
|
||||
msgid ""
|
||||
"Select sites in which to show the post. If none is set it will be visible in"
|
||||
" all the configured sites."
|
||||
msgstr "Selecciona los sitios en los que mostrar la entrada. Si no se selecciona ninguno, será visible en todos los sitios configurados."
|
||||
|
||||
#: models.py:256
|
||||
msgid "subtitle"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:257
|
||||
msgid "abstract"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:258
|
||||
msgid "post meta description"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:259
|
||||
msgid "post meta keywords"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:261
|
||||
msgid "post meta title"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:262
|
||||
msgid "used in title tag and social sharing"
|
||||
msgstr "usado en la etiqueta de título y al compartir en las redes sociales"
|
||||
|
||||
#: models.py:267
|
||||
msgid "text"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:273
|
||||
msgid "enable liveblog on post"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:279
|
||||
msgid ""
|
||||
"Type a tag and hit tab, or start typing and select from autocomplete list."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:282
|
||||
msgid "Related Posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:314
|
||||
msgid "blog article"
|
||||
msgstr "artículo del blog"
|
||||
|
||||
#: models.py:315
|
||||
msgid "blog articles"
|
||||
msgstr "artículos del blog"
|
||||
|
||||
#: models.py:320
|
||||
msgid "Post (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "current site"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "Select items from the current site only"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:497
|
||||
msgid "Plugin template"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:498
|
||||
msgid "Select plugin template to load for this instance"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:536 models.py:578
|
||||
msgid "articles"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:538
|
||||
msgid "The number of latests articles to be displayed."
|
||||
msgstr "El número de últimos artículos a mostrar."
|
||||
|
||||
#: models.py:541
|
||||
msgid "filter by tag"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:543
|
||||
msgid "Show only the blog articles tagged with chosen tags."
|
||||
msgstr "Mostrar solo los artículos del blog etiquetados con las etiquetas elegidas."
|
||||
|
||||
#: models.py:549
|
||||
msgid "filter by category"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:550
|
||||
msgid "Show only the blog articles tagged with chosen categories."
|
||||
msgstr "Mostrar solo los artículos del blog etiquetados con las categorías elegidas."
|
||||
|
||||
#: models.py:554
|
||||
#, python-format
|
||||
msgid "%s latest articles by tag"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:574
|
||||
msgid "authors"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:580
|
||||
msgid "The number of author articles to be displayed."
|
||||
msgstr "El número de autores de artículo a mostrar."
|
||||
|
||||
#: models.py:584
|
||||
#, python-format
|
||||
msgid "%s latest articles by author"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:605 models.py:608
|
||||
msgid "Featured posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:623
|
||||
msgid "generic blog plugin"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:26
|
||||
msgid "Full date"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:27
|
||||
msgid "Year / Month"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:28 templates/djangocms_blog/post_list.html:14
|
||||
msgid "Category"
|
||||
msgstr "Categoría"
|
||||
|
||||
#: settings.py:29
|
||||
msgid "Just slug"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:59
|
||||
msgid "Categories and posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:60
|
||||
msgid "Categories only"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:61
|
||||
msgid "Posts only"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:62
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:71
|
||||
msgid "always"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:72
|
||||
msgid "hourly"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:73
|
||||
msgid "daily"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:74
|
||||
msgid "weekly"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:75
|
||||
msgid "monthly"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:76
|
||||
msgid "yearly"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:77
|
||||
msgid "never"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:492
|
||||
msgid "Latest Blog Articles"
|
||||
msgstr "Últimos artículos del blog"
|
||||
|
||||
#: settings.py:499
|
||||
msgid "Latest Blog Articles - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:506
|
||||
msgid "Author Blog Articles"
|
||||
msgstr "Artículos del blog por author"
|
||||
|
||||
#: settings.py:513
|
||||
msgid "Author Blog Articles List"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:520 templates/djangocms_blog/plugins/tags.html:5
|
||||
msgid "Tags"
|
||||
msgstr "Etiquetas"
|
||||
|
||||
#: settings.py:527 templates/djangocms_blog/plugins/categories.html:3
|
||||
msgid "Categories"
|
||||
msgstr "Categorías"
|
||||
|
||||
#: settings.py:534 templates/djangocms_blog/plugins/archive.html:3
|
||||
#: templates/djangocms_blog/post_list.html:12
|
||||
msgid "Archive"
|
||||
msgstr "Archivo"
|
||||
|
||||
#: settings.py:541
|
||||
msgid "Featured Posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:548
|
||||
msgid "Featured Posts - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:590
|
||||
msgid "Default template"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr "leer más"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr "por"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:17
|
||||
#: templates/djangocms_blog/plugins/authors.html:10
|
||||
#: templates/djangocms_blog/plugins/categories.html:10
|
||||
#: templates/djangocms_blog/plugins/tags.html:12
|
||||
#, python-format
|
||||
msgid "1 article"
|
||||
msgid_plural "%(articles)s articles"
|
||||
msgstr[0] "1 artículo"
|
||||
msgstr[1] "%(articles)s artículos"
|
||||
msgstr[2] "%(articles)s artículos"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:18
|
||||
#: templates/djangocms_blog/plugins/authors.html:11
|
||||
#: templates/djangocms_blog/plugins/categories.html:11
|
||||
#: templates/djangocms_blog/plugins/tags.html:13
|
||||
msgid "0 articles"
|
||||
msgstr "0 artículos"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:26
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:12
|
||||
#: templates/djangocms_blog/plugins/latest_entries.html:7
|
||||
#: templates/djangocms_blog/plugins/tags.html:17
|
||||
#: templates/djangocms_blog/post_list.html:21
|
||||
msgid "No article found."
|
||||
msgstr "Ningún artículo encontrado."
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:3
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:3
|
||||
msgid "Authors"
|
||||
msgstr "Autores"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:15
|
||||
msgid "No author found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:7
|
||||
#: templates/djangocms_blog/post_list.html:11
|
||||
msgid "Articles by"
|
||||
msgstr "Artículos por"
|
||||
|
||||
#: templates/djangocms_blog/plugins/categories.html:15
|
||||
msgid "No categories found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:13
|
||||
msgid "Tag"
|
||||
msgstr "Etiqueta"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:24
|
||||
msgid "Back"
|
||||
msgstr "Atrás"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:29
|
||||
msgid "previous"
|
||||
msgstr "Anterior"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "Page"
|
||||
msgstr "Página"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "of"
|
||||
msgstr "de"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:35
|
||||
msgid "next"
|
||||
msgstr "siguiente"
|
||||
762
djangocms_blog/locale/et/LC_MESSAGES/django.po
Normal file
762
djangocms_blog/locale/et/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,762 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Rivo Zängov <eraser@eraser.ee>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: djangocms-blog\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-30 11:04+0200\n"
|
||||
"PO-Revision-Date: 2014-03-29 15:29+0000\n"
|
||||
"Last-Translator: Rivo Zängov <eraser@eraser.ee>, 2018\n"
|
||||
"Language-Team: Estonian (http://app.transifex.com/nephila/djangocms-blog/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"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: admin.py:65
|
||||
msgid "site"
|
||||
msgstr "sait"
|
||||
|
||||
#: admin.py:131
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
#: admin.py:138
|
||||
msgid "Images"
|
||||
msgstr "Pildid"
|
||||
|
||||
#: admin.py:141
|
||||
msgid "SEO"
|
||||
msgstr "SEO"
|
||||
|
||||
#: admin.py:172
|
||||
msgid "Publish selection"
|
||||
msgstr "Avalda valik"
|
||||
|
||||
#: admin.py:194
|
||||
msgid "Unpublish selection"
|
||||
msgstr "Peida valik"
|
||||
|
||||
#: admin.py:207
|
||||
msgid "Enable comments for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:221
|
||||
msgid "Disable comments for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:235
|
||||
msgid "Enable liveblog for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:249
|
||||
msgid "Disable liveblog for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:473
|
||||
msgid "Generic"
|
||||
msgstr "Üldine"
|
||||
|
||||
#: admin.py:485
|
||||
msgid "Layout"
|
||||
msgstr "Paigutus"
|
||||
|
||||
#: admin.py:499
|
||||
msgid "Notifications"
|
||||
msgstr "Teavitused"
|
||||
|
||||
#: admin.py:503
|
||||
msgid "Sitemap"
|
||||
msgstr "Sisukaart"
|
||||
|
||||
#: admin.py:512
|
||||
msgid "Meta"
|
||||
msgstr "META"
|
||||
|
||||
#: admin.py:524 admin.py:535 admin.py:545
|
||||
msgid "You can provide plain strings, Post model attribute or method names"
|
||||
msgstr ""
|
||||
|
||||
#: apps.py:7
|
||||
msgid "django CMS Blog"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:19
|
||||
msgid "application title"
|
||||
msgstr "rakenduse nimi"
|
||||
|
||||
#: cms_appconfig.py:20
|
||||
msgid "object name"
|
||||
msgstr "objekti nimi"
|
||||
|
||||
#: cms_appconfig.py:24
|
||||
msgid "blog config"
|
||||
msgstr "blogi seaded"
|
||||
|
||||
#: cms_appconfig.py:25
|
||||
msgid "blog configs"
|
||||
msgstr "blogi seaded"
|
||||
|
||||
#: cms_appconfig.py:28
|
||||
msgid "untitled"
|
||||
msgstr "pealkirjata"
|
||||
|
||||
#: cms_appconfig.py:54
|
||||
msgid "Post published by default"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:58
|
||||
msgid "Default size of full images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:61
|
||||
msgid ""
|
||||
"If left empty the image size will have to be set for every newly created "
|
||||
"post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:65
|
||||
msgid "Default size of thumbnail images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:68
|
||||
msgid ""
|
||||
"If left empty the thumbnail image size will have to be set for every newly "
|
||||
"created post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:72
|
||||
msgid "Permalink structure"
|
||||
msgstr "Püsilingi struktuur"
|
||||
|
||||
#: cms_appconfig.py:79
|
||||
msgid "Use placeholder and plugins for article body"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:83
|
||||
msgid "Use abstract field"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:87
|
||||
msgid "Enable related posts"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:91
|
||||
msgid "Set author"
|
||||
msgstr "Määra autor"
|
||||
|
||||
#: cms_appconfig.py:93
|
||||
msgid "Set author by default"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:98
|
||||
msgid "Paginate size"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:101
|
||||
msgid "When paginating list views, how many articles per page?"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:105
|
||||
msgid "Template prefix"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:108
|
||||
msgid "Alternative directory to load the blog templates from"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:112
|
||||
msgid "Menu structure"
|
||||
msgstr "Menüü struktuur"
|
||||
|
||||
#: cms_appconfig.py:116
|
||||
msgid "Structure of the django CMS menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:120
|
||||
msgid "Show empty categories in menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:123
|
||||
msgid "Show categories with no post attached in the menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:128
|
||||
msgid "Sitemap changefreq"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:132
|
||||
msgid "Changefreq attribute for sitemap items"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:136
|
||||
msgid "Sitemap priority"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:139
|
||||
msgid "Priority attribute for sitemap items"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:143
|
||||
msgid "Object type"
|
||||
msgstr "Objekti liik"
|
||||
|
||||
#: cms_appconfig.py:147
|
||||
msgid "Facebook type"
|
||||
msgstr "Facebooki liik"
|
||||
|
||||
#: cms_appconfig.py:151
|
||||
msgid "Facebook application ID"
|
||||
msgstr "Facebooki rakenduse ID"
|
||||
|
||||
#: cms_appconfig.py:155
|
||||
msgid "Facebook profile ID"
|
||||
msgstr "Facebooki profiili ID"
|
||||
|
||||
#: cms_appconfig.py:159
|
||||
msgid "Facebook page URL"
|
||||
msgstr "Facebook lehekülje URL"
|
||||
|
||||
#: cms_appconfig.py:163
|
||||
msgid "Facebook author URL"
|
||||
msgstr "Facebooki autori URL"
|
||||
|
||||
#: cms_appconfig.py:167
|
||||
msgid "Facebook author"
|
||||
msgstr "Facebooki autor"
|
||||
|
||||
#: cms_appconfig.py:171
|
||||
msgid "Twitter type"
|
||||
msgstr "Twitteri liik"
|
||||
|
||||
#: cms_appconfig.py:178
|
||||
msgid "Twitter site handle"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:182
|
||||
msgid "Twitter author handle"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:186
|
||||
msgid "Schema.org type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:193
|
||||
msgid "Schema.org author name"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:197
|
||||
msgid "Send notifications on post publish"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:200
|
||||
msgid "Emits a desktop notification -if enabled- when publishing a new post"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:204
|
||||
msgid "Send notifications on post update"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:207
|
||||
msgid ""
|
||||
"Emits a desktop notification -if enabled- when editing a published post"
|
||||
msgstr ""
|
||||
|
||||
#: cms_apps.py:13 cms_toolbars.py:17 settings.py:485
|
||||
msgid "Blog"
|
||||
msgstr ""
|
||||
|
||||
#: cms_menus.py:26
|
||||
msgid "Blog menu"
|
||||
msgstr "Blogi menüü"
|
||||
|
||||
#: cms_toolbars.py:20
|
||||
msgid "Post list"
|
||||
msgstr "Postituste nimekiri"
|
||||
|
||||
#: cms_toolbars.py:23
|
||||
msgid "Category list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:26
|
||||
msgid "Tag list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:29
|
||||
msgid "Add post"
|
||||
msgstr "Lisa postitus"
|
||||
|
||||
#: cms_toolbars.py:33
|
||||
msgid "Edit configuration"
|
||||
msgstr "Muuda seadistust"
|
||||
|
||||
#: cms_toolbars.py:38
|
||||
msgid "Edit Post"
|
||||
msgstr "Muuda postitust"
|
||||
|
||||
#: cms_toolbars.py:53
|
||||
#, python-brace-format
|
||||
msgid "Publish {0} now"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:22
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:25
|
||||
msgid "Leave empty for automatic slug, or override as required."
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:105
|
||||
#, python-brace-format
|
||||
msgid "New {0}"
|
||||
msgstr "Uus {0}"
|
||||
|
||||
#: cms_wizards.py:109
|
||||
#, python-brace-format
|
||||
msgid "Create a new {0} in {1}"
|
||||
msgstr ""
|
||||
|
||||
#: feeds.py:39
|
||||
#, python-format
|
||||
msgid "Blog articles on %(site_name)s"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/apps.py:7
|
||||
msgid "Liveblog"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/cms_plugins.py:13
|
||||
msgid "Liveblog item"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:27
|
||||
msgid "publish liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:28
|
||||
msgid "post date"
|
||||
msgstr "postituse kuupäev"
|
||||
|
||||
#: liveblog/models.py:31 liveblog/models.py:111
|
||||
msgid "liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:32 liveblog/models.py:112
|
||||
msgid "liveblog entries"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:93 models.py:252
|
||||
msgid "title"
|
||||
msgstr "pealkiri"
|
||||
|
||||
#: liveblog/models.py:95
|
||||
msgid "image"
|
||||
msgstr "pilt"
|
||||
|
||||
#: liveblog/models.py:103
|
||||
msgid "thumbnail size"
|
||||
msgstr "pispildi suurus"
|
||||
|
||||
#: models.py:95
|
||||
msgid "parent"
|
||||
msgstr "peamine"
|
||||
|
||||
#: models.py:97
|
||||
msgid "created at"
|
||||
msgstr "loodud"
|
||||
|
||||
#: models.py:98
|
||||
msgid "modified at"
|
||||
msgstr "muudetud"
|
||||
|
||||
#: models.py:99 models.py:249 models.py:491
|
||||
msgid "app. config"
|
||||
msgstr "rakenduse seaded"
|
||||
|
||||
#: models.py:102
|
||||
msgid "name"
|
||||
msgstr "nimi"
|
||||
|
||||
#: models.py:103 models.py:254
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:104
|
||||
msgid "category meta description"
|
||||
msgstr "kategooria META kirjeldus"
|
||||
|
||||
#: models.py:132
|
||||
msgid "blog category"
|
||||
msgstr "blogi kategooria"
|
||||
|
||||
#: models.py:133
|
||||
msgid "blog categories"
|
||||
msgstr "blogi kategooriad"
|
||||
|
||||
#: models.py:169
|
||||
msgid "BlogCategory (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:196
|
||||
msgid "author"
|
||||
msgstr "tor"
|
||||
|
||||
#: models.py:203
|
||||
msgid "created"
|
||||
msgstr "loodud"
|
||||
|
||||
#: models.py:204
|
||||
msgid "last modified"
|
||||
msgstr "viimati muudetud"
|
||||
|
||||
#: models.py:205
|
||||
msgid "published since"
|
||||
msgstr "avaldatud alates"
|
||||
|
||||
#: models.py:206
|
||||
msgid "published until"
|
||||
msgstr "avaldatud kuni"
|
||||
|
||||
#: models.py:207
|
||||
msgid "featured date"
|
||||
msgstr "esiletõstmise kuupäev"
|
||||
|
||||
#: models.py:208
|
||||
msgid "publish"
|
||||
msgstr "avalda"
|
||||
|
||||
#: models.py:209
|
||||
msgid "include in RSS feed"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:211
|
||||
msgid "category"
|
||||
msgstr "kategooria"
|
||||
|
||||
#: models.py:214
|
||||
msgid "main image"
|
||||
msgstr "peamine pilt"
|
||||
|
||||
#: models.py:222
|
||||
msgid "main image thumbnail"
|
||||
msgstr "peamise pildi pisipilt"
|
||||
|
||||
#: models.py:230
|
||||
msgid "main image full"
|
||||
msgstr "peamine pilt täissuuruses"
|
||||
|
||||
#: models.py:237
|
||||
msgid "enable comments on post"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:241
|
||||
msgid "Site(s)"
|
||||
msgstr "Sait (Saidid)"
|
||||
|
||||
#: models.py:244
|
||||
msgid ""
|
||||
"Select sites in which to show the post. If none is set it will be visible in"
|
||||
" all the configured sites."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:256
|
||||
msgid "subtitle"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:257
|
||||
msgid "abstract"
|
||||
msgstr "abstraktne"
|
||||
|
||||
#: models.py:258
|
||||
msgid "post meta description"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:259
|
||||
msgid "post meta keywords"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:261
|
||||
msgid "post meta title"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:262
|
||||
msgid "used in title tag and social sharing"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:267
|
||||
msgid "text"
|
||||
msgstr "tekst"
|
||||
|
||||
#: models.py:273
|
||||
msgid "enable liveblog on post"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:279
|
||||
msgid ""
|
||||
"Type a tag and hit tab, or start typing and select from autocomplete list."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:282
|
||||
msgid "Related Posts"
|
||||
msgstr "Seotud postitused"
|
||||
|
||||
#: models.py:314
|
||||
msgid "blog article"
|
||||
msgstr "blogi artikkel"
|
||||
|
||||
#: models.py:315
|
||||
msgid "blog articles"
|
||||
msgstr "blogi artiklid"
|
||||
|
||||
#: models.py:320
|
||||
msgid "Post (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "current site"
|
||||
msgstr "praegune sait"
|
||||
|
||||
#: models.py:493
|
||||
msgid "Select items from the current site only"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:497
|
||||
msgid "Plugin template"
|
||||
msgstr "Plugina mall"
|
||||
|
||||
#: models.py:498
|
||||
msgid "Select plugin template to load for this instance"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:536 models.py:578
|
||||
msgid "articles"
|
||||
msgstr "artiklit"
|
||||
|
||||
#: models.py:538
|
||||
msgid "The number of latests articles to be displayed."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:541
|
||||
msgid "filter by tag"
|
||||
msgstr "filtreeri sildi järgi"
|
||||
|
||||
#: models.py:543
|
||||
msgid "Show only the blog articles tagged with chosen tags."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:549
|
||||
msgid "filter by category"
|
||||
msgstr "filtreeri kategooria järgi"
|
||||
|
||||
#: models.py:550
|
||||
msgid "Show only the blog articles tagged with chosen categories."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:554
|
||||
#, python-format
|
||||
msgid "%s latest articles by tag"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:574
|
||||
msgid "authors"
|
||||
msgstr "autorid"
|
||||
|
||||
#: models.py:580
|
||||
msgid "The number of author articles to be displayed."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:584
|
||||
#, python-format
|
||||
msgid "%s latest articles by author"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:605 models.py:608
|
||||
msgid "Featured posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:623
|
||||
msgid "generic blog plugin"
|
||||
msgstr "üldine blogi plugin"
|
||||
|
||||
#: settings.py:26
|
||||
msgid "Full date"
|
||||
msgstr "Täispikk kuupäev"
|
||||
|
||||
#: settings.py:27
|
||||
msgid "Year / Month"
|
||||
msgstr "Aasta / Kuu"
|
||||
|
||||
#: settings.py:28 templates/djangocms_blog/post_list.html:14
|
||||
msgid "Category"
|
||||
msgstr "Kategooria"
|
||||
|
||||
#: settings.py:29
|
||||
msgid "Just slug"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:59
|
||||
msgid "Categories and posts"
|
||||
msgstr "Kategooriad ja postitused"
|
||||
|
||||
#: settings.py:60
|
||||
msgid "Categories only"
|
||||
msgstr "Ainult kategooriad"
|
||||
|
||||
#: settings.py:61
|
||||
msgid "Posts only"
|
||||
msgstr "Ainult postitused"
|
||||
|
||||
#: settings.py:62
|
||||
msgid "None"
|
||||
msgstr "Mitte midagi"
|
||||
|
||||
#: settings.py:71
|
||||
msgid "always"
|
||||
msgstr "alati"
|
||||
|
||||
#: settings.py:72
|
||||
msgid "hourly"
|
||||
msgstr "iga tund"
|
||||
|
||||
#: settings.py:73
|
||||
msgid "daily"
|
||||
msgstr "iga päev"
|
||||
|
||||
#: settings.py:74
|
||||
msgid "weekly"
|
||||
msgstr "iga nädal"
|
||||
|
||||
#: settings.py:75
|
||||
msgid "monthly"
|
||||
msgstr "iga kuu"
|
||||
|
||||
#: settings.py:76
|
||||
msgid "yearly"
|
||||
msgstr "iga aasta"
|
||||
|
||||
#: settings.py:77
|
||||
msgid "never"
|
||||
msgstr "mitte kunagi"
|
||||
|
||||
#: settings.py:492
|
||||
msgid "Latest Blog Articles"
|
||||
msgstr "Viimased blogi artiklid"
|
||||
|
||||
#: settings.py:499
|
||||
msgid "Latest Blog Articles - Cache"
|
||||
msgstr "Viimased blogi artiklid - Vahemälust"
|
||||
|
||||
#: settings.py:506
|
||||
msgid "Author Blog Articles"
|
||||
msgstr "Autori blogi artiklid"
|
||||
|
||||
#: settings.py:513
|
||||
msgid "Author Blog Articles List"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:520 templates/djangocms_blog/plugins/tags.html:5
|
||||
msgid "Tags"
|
||||
msgstr "Sildid"
|
||||
|
||||
#: settings.py:527 templates/djangocms_blog/plugins/categories.html:3
|
||||
msgid "Categories"
|
||||
msgstr "Kategooriad"
|
||||
|
||||
#: settings.py:534 templates/djangocms_blog/plugins/archive.html:3
|
||||
#: templates/djangocms_blog/post_list.html:12
|
||||
msgid "Archive"
|
||||
msgstr "Arhiiv"
|
||||
|
||||
#: settings.py:541
|
||||
msgid "Featured Posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:548
|
||||
msgid "Featured Posts - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:590
|
||||
msgid "Default template"
|
||||
msgstr "Vaikimisi kujundus"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr "loe lisa"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr "autor"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:17
|
||||
#: templates/djangocms_blog/plugins/authors.html:10
|
||||
#: templates/djangocms_blog/plugins/categories.html:10
|
||||
#: templates/djangocms_blog/plugins/tags.html:12
|
||||
#, python-format
|
||||
msgid "1 article"
|
||||
msgid_plural "%(articles)s articles"
|
||||
msgstr[0] "1 artikkel"
|
||||
msgstr[1] "%(articles)s artiklit"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:18
|
||||
#: templates/djangocms_blog/plugins/authors.html:11
|
||||
#: templates/djangocms_blog/plugins/categories.html:11
|
||||
#: templates/djangocms_blog/plugins/tags.html:13
|
||||
msgid "0 articles"
|
||||
msgstr "0 artiklit"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:26
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:12
|
||||
#: templates/djangocms_blog/plugins/latest_entries.html:7
|
||||
#: templates/djangocms_blog/plugins/tags.html:17
|
||||
#: templates/djangocms_blog/post_list.html:21
|
||||
msgid "No article found."
|
||||
msgstr "Ühtegi artiklit ei leitud"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:3
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:3
|
||||
msgid "Authors"
|
||||
msgstr "Autorid"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:15
|
||||
msgid "No author found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:7
|
||||
#: templates/djangocms_blog/post_list.html:11
|
||||
msgid "Articles by"
|
||||
msgstr "Artiklid autorilt"
|
||||
|
||||
#: templates/djangocms_blog/plugins/categories.html:15
|
||||
msgid "No categories found."
|
||||
msgstr "Ühtegi kategooriat ei leitud"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:13
|
||||
msgid "Tag"
|
||||
msgstr "Silt"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:24
|
||||
msgid "Back"
|
||||
msgstr "Tagasi"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:29
|
||||
msgid "previous"
|
||||
msgstr "eelmine"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "Page"
|
||||
msgstr "Lehekülg"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "of"
|
||||
msgstr "/"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:35
|
||||
msgid "next"
|
||||
msgstr "järgmine"
|
||||
767
djangocms_blog/locale/fr/LC_MESSAGES/django.po
Normal file
767
djangocms_blog/locale/fr/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,767 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Alban Tiberghien <alban.tiberghien@gmail.com>, 2017
|
||||
# Corentin Bettiol, 2023
|
||||
# Iacopo Spalletti, 2014
|
||||
# yakky <i.spalletti@nephila.it>, 2016
|
||||
# Robin Durner, 2022
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: djangocms-blog\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-30 11:04+0200\n"
|
||||
"PO-Revision-Date: 2014-03-29 15:29+0000\n"
|
||||
"Last-Translator: Corentin Bettiol, 2023\n"
|
||||
"Language-Team: French (http://app.transifex.com/nephila/djangocms-blog/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"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: admin.py:65
|
||||
msgid "site"
|
||||
msgstr "site"
|
||||
|
||||
#: admin.py:131
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
#: admin.py:138
|
||||
msgid "Images"
|
||||
msgstr "Images"
|
||||
|
||||
#: admin.py:141
|
||||
msgid "SEO"
|
||||
msgstr "SEO"
|
||||
|
||||
#: admin.py:172
|
||||
msgid "Publish selection"
|
||||
msgstr "Publier les articles sélectionnés"
|
||||
|
||||
#: admin.py:194
|
||||
msgid "Unpublish selection"
|
||||
msgstr "Dépublier les articles sélectionnés"
|
||||
|
||||
#: admin.py:207
|
||||
msgid "Enable comments for selection"
|
||||
msgstr "Activer les commentaires sur les articles sélectionnés"
|
||||
|
||||
#: admin.py:221
|
||||
msgid "Disable comments for selection "
|
||||
msgstr "Désactiver les commentaires sur les articles sélectionnés"
|
||||
|
||||
#: admin.py:235
|
||||
msgid "Enable liveblog for selection"
|
||||
msgstr "Activer le liveblog sur les articles sélectionnés"
|
||||
|
||||
#: admin.py:249
|
||||
msgid "Disable liveblog for selection "
|
||||
msgstr "Désactiver le liveblog sur les articles sélectionnés"
|
||||
|
||||
#: admin.py:473
|
||||
msgid "Generic"
|
||||
msgstr "Générique"
|
||||
|
||||
#: admin.py:485
|
||||
msgid "Layout"
|
||||
msgstr "Mise en page"
|
||||
|
||||
#: admin.py:499
|
||||
msgid "Notifications"
|
||||
msgstr "Notifications"
|
||||
|
||||
#: admin.py:503
|
||||
msgid "Sitemap"
|
||||
msgstr "Sitemap"
|
||||
|
||||
#: admin.py:512
|
||||
msgid "Meta"
|
||||
msgstr "Meta"
|
||||
|
||||
#: admin.py:524 admin.py:535 admin.py:545
|
||||
msgid "You can provide plain strings, Post model attribute or method names"
|
||||
msgstr "Vous pouvez préciser des chaines de caractères, des attributs ou des methodes du modèle Post"
|
||||
|
||||
#: apps.py:7
|
||||
msgid "django CMS Blog"
|
||||
msgstr "django CMS Blog"
|
||||
|
||||
#: cms_appconfig.py:19
|
||||
msgid "application title"
|
||||
msgstr "Titre de l’application"
|
||||
|
||||
#: cms_appconfig.py:20
|
||||
msgid "object name"
|
||||
msgstr "Nom de l’objet"
|
||||
|
||||
#: cms_appconfig.py:24
|
||||
msgid "blog config"
|
||||
msgstr "Configuration du blog"
|
||||
|
||||
#: cms_appconfig.py:25
|
||||
msgid "blog configs"
|
||||
msgstr "Configurations du blog"
|
||||
|
||||
#: cms_appconfig.py:28
|
||||
msgid "untitled"
|
||||
msgstr "sans titre"
|
||||
|
||||
#: cms_appconfig.py:54
|
||||
msgid "Post published by default"
|
||||
msgstr "Post publié par défaut"
|
||||
|
||||
#: cms_appconfig.py:58
|
||||
msgid "Default size of full images"
|
||||
msgstr "Taille par défaut des images principales"
|
||||
|
||||
#: cms_appconfig.py:61
|
||||
msgid ""
|
||||
"If left empty the image size will have to be set for every newly created "
|
||||
"post."
|
||||
msgstr "Si laissé vide, la taille de l'image doit être précisée pour chaque nouvel article."
|
||||
|
||||
#: cms_appconfig.py:65
|
||||
msgid "Default size of thumbnail images"
|
||||
msgstr "Taille par défaut des images miniatures"
|
||||
|
||||
#: cms_appconfig.py:68
|
||||
msgid ""
|
||||
"If left empty the thumbnail image size will have to be set for every newly "
|
||||
"created post."
|
||||
msgstr "Si laissé vide, la taille de l'image miniature doit être précisée pour chaque nouvel article."
|
||||
|
||||
#: cms_appconfig.py:72
|
||||
msgid "Permalink structure"
|
||||
msgstr "Structure permalien"
|
||||
|
||||
#: cms_appconfig.py:79
|
||||
msgid "Use placeholder and plugins for article body"
|
||||
msgstr "Utiliser une balise et des plugins pour le corps de l’article"
|
||||
|
||||
#: cms_appconfig.py:83
|
||||
msgid "Use abstract field"
|
||||
msgstr "Utiliser un champ abrégé"
|
||||
|
||||
#: cms_appconfig.py:87
|
||||
msgid "Enable related posts"
|
||||
msgstr "Activer articles similaires"
|
||||
|
||||
#: cms_appconfig.py:91
|
||||
msgid "Set author"
|
||||
msgstr "Auteur"
|
||||
|
||||
#: cms_appconfig.py:93
|
||||
msgid "Set author by default"
|
||||
msgstr "Spécifier l’auteur par défaut"
|
||||
|
||||
#: cms_appconfig.py:98
|
||||
msgid "Paginate size"
|
||||
msgstr "Nombre d’articles par page"
|
||||
|
||||
#: cms_appconfig.py:101
|
||||
msgid "When paginating list views, how many articles per page?"
|
||||
msgstr "Lors de la pagination des listes, combien d’articles souhaitez vous afficher par page ?"
|
||||
|
||||
#: cms_appconfig.py:105
|
||||
msgid "Template prefix"
|
||||
msgstr "Prefixe dans le template"
|
||||
|
||||
#: cms_appconfig.py:108
|
||||
msgid "Alternative directory to load the blog templates from"
|
||||
msgstr "Répertoire alternatif à partir duquel charger les templates du blog"
|
||||
|
||||
#: cms_appconfig.py:112
|
||||
msgid "Menu structure"
|
||||
msgstr "Structure du menu"
|
||||
|
||||
#: cms_appconfig.py:116
|
||||
msgid "Structure of the django CMS menu"
|
||||
msgstr "Structure du menu django CMS"
|
||||
|
||||
#: cms_appconfig.py:120
|
||||
msgid "Show empty categories in menu"
|
||||
msgstr "Afficher des catégories vides dans le menu"
|
||||
|
||||
#: cms_appconfig.py:123
|
||||
msgid "Show categories with no post attached in the menu"
|
||||
msgstr "Afficher les catégories sans articles liés dans le menu"
|
||||
|
||||
#: cms_appconfig.py:128
|
||||
msgid "Sitemap changefreq"
|
||||
msgstr "Fréquence de mise à jour de la Sitemap"
|
||||
|
||||
#: cms_appconfig.py:132
|
||||
msgid "Changefreq attribute for sitemap items"
|
||||
msgstr "Attribut ‘Changfreq ‘ pour chaque entrée de la sitemap."
|
||||
|
||||
#: cms_appconfig.py:136
|
||||
msgid "Sitemap priority"
|
||||
msgstr "Priorité de la sitemap"
|
||||
|
||||
#: cms_appconfig.py:139
|
||||
msgid "Priority attribute for sitemap items"
|
||||
msgstr "Priorité de chaque entrée de la sitemap"
|
||||
|
||||
#: cms_appconfig.py:143
|
||||
msgid "Object type"
|
||||
msgstr "Type de l’objet"
|
||||
|
||||
#: cms_appconfig.py:147
|
||||
msgid "Facebook type"
|
||||
msgstr "Facebook type"
|
||||
|
||||
#: cms_appconfig.py:151
|
||||
msgid "Facebook application ID"
|
||||
msgstr "Facebook application ID"
|
||||
|
||||
#: cms_appconfig.py:155
|
||||
msgid "Facebook profile ID"
|
||||
msgstr "Facebook profile ID"
|
||||
|
||||
#: cms_appconfig.py:159
|
||||
msgid "Facebook page URL"
|
||||
msgstr "Facebook page URL"
|
||||
|
||||
#: cms_appconfig.py:163
|
||||
msgid "Facebook author URL"
|
||||
msgstr "Facebook author URL"
|
||||
|
||||
#: cms_appconfig.py:167
|
||||
msgid "Facebook author"
|
||||
msgstr "Facebook author"
|
||||
|
||||
#: cms_appconfig.py:171
|
||||
msgid "Twitter type"
|
||||
msgstr "Twitter type"
|
||||
|
||||
#: cms_appconfig.py:178
|
||||
msgid "Twitter site handle"
|
||||
msgstr "Twitter site handle"
|
||||
|
||||
#: cms_appconfig.py:182
|
||||
msgid "Twitter author handle"
|
||||
msgstr "Twitter author handle"
|
||||
|
||||
#: cms_appconfig.py:186
|
||||
msgid "Schema.org type"
|
||||
msgstr "Schema.org type"
|
||||
|
||||
#: cms_appconfig.py:193
|
||||
msgid "Schema.org author name"
|
||||
msgstr "Schema.org nom d'auteur"
|
||||
|
||||
#: cms_appconfig.py:197
|
||||
msgid "Send notifications on post publish"
|
||||
msgstr "Envoyer des notifications lors de la publication d'un article"
|
||||
|
||||
#: cms_appconfig.py:200
|
||||
msgid "Emits a desktop notification -if enabled- when publishing a new post"
|
||||
msgstr "Emets une notification sur le bureau, si activée, lors de la publication d'un nouvel article"
|
||||
|
||||
#: cms_appconfig.py:204
|
||||
msgid "Send notifications on post update"
|
||||
msgstr "Envoyer des notifications lors de la mise à jour d'un article"
|
||||
|
||||
#: cms_appconfig.py:207
|
||||
msgid ""
|
||||
"Emits a desktop notification -if enabled- when editing a published post"
|
||||
msgstr "Emets une notification sur le bureau, si activée, lors de la édition d'un article publié"
|
||||
|
||||
#: cms_apps.py:13 cms_toolbars.py:17 settings.py:485
|
||||
msgid "Blog"
|
||||
msgstr "Blog"
|
||||
|
||||
#: cms_menus.py:26
|
||||
msgid "Blog menu"
|
||||
msgstr "Menu du blog"
|
||||
|
||||
#: cms_toolbars.py:20
|
||||
msgid "Post list"
|
||||
msgstr "Liste des articles"
|
||||
|
||||
#: cms_toolbars.py:23
|
||||
msgid "Category list"
|
||||
msgstr "Liste des catégories"
|
||||
|
||||
#: cms_toolbars.py:26
|
||||
msgid "Tag list"
|
||||
msgstr "Liste des tags"
|
||||
|
||||
#: cms_toolbars.py:29
|
||||
msgid "Add post"
|
||||
msgstr "Ajouter un article"
|
||||
|
||||
#: cms_toolbars.py:33
|
||||
msgid "Edit configuration"
|
||||
msgstr "Modifier la configuration"
|
||||
|
||||
#: cms_toolbars.py:38
|
||||
msgid "Edit Post"
|
||||
msgstr "Editer un article"
|
||||
|
||||
#: cms_toolbars.py:53
|
||||
#, python-brace-format
|
||||
msgid "Publish {0} now"
|
||||
msgstr "Publier {0} maintenant"
|
||||
|
||||
#: cms_wizards.py:22
|
||||
msgid "Slug"
|
||||
msgstr "Slug (pour l'URL)"
|
||||
|
||||
#: cms_wizards.py:25
|
||||
msgid "Leave empty for automatic slug, or override as required."
|
||||
msgstr "Laissez vide pour générer un slug automatiquement, ou remplacez-le si nécessaire."
|
||||
|
||||
#: cms_wizards.py:105
|
||||
#, python-brace-format
|
||||
msgid "New {0}"
|
||||
msgstr "Nouveau {0}"
|
||||
|
||||
#: cms_wizards.py:109
|
||||
#, python-brace-format
|
||||
msgid "Create a new {0} in {1}"
|
||||
msgstr "Ajouter un nouveau {0} dans {1}"
|
||||
|
||||
#: feeds.py:39
|
||||
#, python-format
|
||||
msgid "Blog articles on %(site_name)s"
|
||||
msgstr "Articles de blog sur le site %(site_name)s"
|
||||
|
||||
#: liveblog/apps.py:7
|
||||
msgid "Liveblog"
|
||||
msgstr "Liveblog"
|
||||
|
||||
#: liveblog/cms_plugins.py:13
|
||||
msgid "Liveblog item"
|
||||
msgstr "Élément liveblog"
|
||||
|
||||
#: liveblog/models.py:27
|
||||
msgid "publish liveblog entry"
|
||||
msgstr "Publier l'éntrée liveblog"
|
||||
|
||||
#: liveblog/models.py:28
|
||||
msgid "post date"
|
||||
msgstr "Date de publication"
|
||||
|
||||
#: liveblog/models.py:31 liveblog/models.py:111
|
||||
msgid "liveblog entry"
|
||||
msgstr "Entrée liveblog"
|
||||
|
||||
#: liveblog/models.py:32 liveblog/models.py:112
|
||||
msgid "liveblog entries"
|
||||
msgstr "Entrées liveblog"
|
||||
|
||||
#: liveblog/models.py:93 models.py:252
|
||||
msgid "title"
|
||||
msgstr "Titre"
|
||||
|
||||
#: liveblog/models.py:95
|
||||
msgid "image"
|
||||
msgstr "image"
|
||||
|
||||
#: liveblog/models.py:103
|
||||
msgid "thumbnail size"
|
||||
msgstr "taille de l'image miniature"
|
||||
|
||||
#: models.py:95
|
||||
msgid "parent"
|
||||
msgstr "père"
|
||||
|
||||
#: models.py:97
|
||||
msgid "created at"
|
||||
msgstr "crée le"
|
||||
|
||||
#: models.py:98
|
||||
msgid "modified at"
|
||||
msgstr "modifié le"
|
||||
|
||||
#: models.py:99 models.py:249 models.py:491
|
||||
msgid "app. config"
|
||||
msgstr "configuration de l'application"
|
||||
|
||||
#: models.py:102
|
||||
msgid "name"
|
||||
msgstr "nom"
|
||||
|
||||
#: models.py:103 models.py:254
|
||||
msgid "slug"
|
||||
msgstr "slug"
|
||||
|
||||
#: models.py:104
|
||||
msgid "category meta description"
|
||||
msgstr "déscription de la catégorie"
|
||||
|
||||
#: models.py:132
|
||||
msgid "blog category"
|
||||
msgstr "catégorie du blog"
|
||||
|
||||
#: models.py:133
|
||||
msgid "blog categories"
|
||||
msgstr "catégories du blog"
|
||||
|
||||
#: models.py:169
|
||||
msgid "BlogCategory (no translation)"
|
||||
msgstr "Catégorie du blog (sans traduction)"
|
||||
|
||||
#: models.py:196
|
||||
msgid "author"
|
||||
msgstr "auteur"
|
||||
|
||||
#: models.py:203
|
||||
msgid "created"
|
||||
msgstr "crée le"
|
||||
|
||||
#: models.py:204
|
||||
msgid "last modified"
|
||||
msgstr "modifié le"
|
||||
|
||||
#: models.py:205
|
||||
msgid "published since"
|
||||
msgstr "publié depuis"
|
||||
|
||||
#: models.py:206
|
||||
msgid "published until"
|
||||
msgstr "publié jusqu’à"
|
||||
|
||||
#: models.py:207
|
||||
msgid "featured date"
|
||||
msgstr "date présentée"
|
||||
|
||||
#: models.py:208
|
||||
msgid "publish"
|
||||
msgstr "publier"
|
||||
|
||||
#: models.py:209
|
||||
msgid "include in RSS feed"
|
||||
msgstr "inclus dans le flux RSS"
|
||||
|
||||
#: models.py:211
|
||||
msgid "category"
|
||||
msgstr "catégorie"
|
||||
|
||||
#: models.py:214
|
||||
msgid "main image"
|
||||
msgstr "image principale"
|
||||
|
||||
#: models.py:222
|
||||
msgid "main image thumbnail"
|
||||
msgstr "miniature image principale"
|
||||
|
||||
#: models.py:230
|
||||
msgid "main image full"
|
||||
msgstr "image principale taille réelle"
|
||||
|
||||
#: models.py:237
|
||||
msgid "enable comments on post"
|
||||
msgstr "activer les commentaires sur l’article"
|
||||
|
||||
#: models.py:241
|
||||
msgid "Site(s)"
|
||||
msgstr "Site(s)"
|
||||
|
||||
#: models.py:244
|
||||
msgid ""
|
||||
"Select sites in which to show the post. If none is set it will be visible in"
|
||||
" all the configured sites."
|
||||
msgstr "Sélectionnez les sites dans lesquels afficher l’article. Si aucun site n’est sélectionné, l’article sera visible dans tous les sites."
|
||||
|
||||
#: models.py:256
|
||||
msgid "subtitle"
|
||||
msgstr "sous-titre"
|
||||
|
||||
#: models.py:257
|
||||
msgid "abstract"
|
||||
msgstr "résumé"
|
||||
|
||||
#: models.py:258
|
||||
msgid "post meta description"
|
||||
msgstr "description ‘meta’ de l’article"
|
||||
|
||||
#: models.py:259
|
||||
msgid "post meta keywords"
|
||||
msgstr "mots clés ‘meta’ de l’article"
|
||||
|
||||
#: models.py:261
|
||||
msgid "post meta title"
|
||||
msgstr "titre ‘meta’ de l’article"
|
||||
|
||||
#: models.py:262
|
||||
msgid "used in title tag and social sharing"
|
||||
msgstr "visible dans le titre et dans le partage sur les réseaux sociaux"
|
||||
|
||||
#: models.py:267
|
||||
msgid "text"
|
||||
msgstr "texte"
|
||||
|
||||
#: models.py:273
|
||||
msgid "enable liveblog on post"
|
||||
msgstr "activer le liveblog sur l'article"
|
||||
|
||||
#: models.py:279
|
||||
msgid ""
|
||||
"Type a tag and hit tab, or start typing and select from autocomplete list."
|
||||
msgstr "Tapez un tag et appuyez sur la touche Tab, ou commencez à taper et sélectionnez de la liste d'auto-complétion."
|
||||
|
||||
#: models.py:282
|
||||
msgid "Related Posts"
|
||||
msgstr "Articles similaires"
|
||||
|
||||
#: models.py:314
|
||||
msgid "blog article"
|
||||
msgstr "article du blog"
|
||||
|
||||
#: models.py:315
|
||||
msgid "blog articles"
|
||||
msgstr "articles du blog"
|
||||
|
||||
#: models.py:320
|
||||
msgid "Post (no translation)"
|
||||
msgstr "Article (sans traduction)"
|
||||
|
||||
#: models.py:493
|
||||
msgid "current site"
|
||||
msgstr "Site actuel"
|
||||
|
||||
#: models.py:493
|
||||
msgid "Select items from the current site only"
|
||||
msgstr "Sélectionner les éléments à partir du site actuel seulement"
|
||||
|
||||
#: models.py:497
|
||||
msgid "Plugin template"
|
||||
msgstr "Template de plugin"
|
||||
|
||||
#: models.py:498
|
||||
msgid "Select plugin template to load for this instance"
|
||||
msgstr "Sélectionner un template de plugin pour cette instance"
|
||||
|
||||
#: models.py:536 models.py:578
|
||||
msgid "articles"
|
||||
msgstr "articles"
|
||||
|
||||
#: models.py:538
|
||||
msgid "The number of latests articles to be displayed."
|
||||
msgstr "Nombre d’articles récents à afficher."
|
||||
|
||||
#: models.py:541
|
||||
msgid "filter by tag"
|
||||
msgstr "filtrer par tag"
|
||||
|
||||
#: models.py:543
|
||||
msgid "Show only the blog articles tagged with chosen tags."
|
||||
msgstr "Afficher seulement les articles qui ont les tags séléctionnés."
|
||||
|
||||
#: models.py:549
|
||||
msgid "filter by category"
|
||||
msgstr "filtrer par catégorie"
|
||||
|
||||
#: models.py:550
|
||||
msgid "Show only the blog articles tagged with chosen categories."
|
||||
msgstr "Afficher seulement les articles des catégories séléctionnées"
|
||||
|
||||
#: models.py:554
|
||||
#, python-format
|
||||
msgid "%s latest articles by tag"
|
||||
msgstr "%s derniers articles par tag"
|
||||
|
||||
#: models.py:574
|
||||
msgid "authors"
|
||||
msgstr "Auteurs"
|
||||
|
||||
#: models.py:580
|
||||
msgid "The number of author articles to be displayed."
|
||||
msgstr "Le nombre d’articles de l’auteur à afficher"
|
||||
|
||||
#: models.py:584
|
||||
#, python-format
|
||||
msgid "%s latest articles by author"
|
||||
msgstr "%s derniers articles par auteur"
|
||||
|
||||
#: models.py:605 models.py:608
|
||||
msgid "Featured posts"
|
||||
msgstr "Posts mis en avant"
|
||||
|
||||
#: models.py:623
|
||||
msgid "generic blog plugin"
|
||||
msgstr "plugin générique pour le blog"
|
||||
|
||||
#: settings.py:26
|
||||
msgid "Full date"
|
||||
msgstr "Date complète"
|
||||
|
||||
#: settings.py:27
|
||||
msgid "Year / Month"
|
||||
msgstr "Année / Mois"
|
||||
|
||||
#: settings.py:28 templates/djangocms_blog/post_list.html:14
|
||||
msgid "Category"
|
||||
msgstr "Catégorie"
|
||||
|
||||
#: settings.py:29
|
||||
msgid "Just slug"
|
||||
msgstr "Uniquement le slug"
|
||||
|
||||
#: settings.py:59
|
||||
msgid "Categories and posts"
|
||||
msgstr "Catégories et articles"
|
||||
|
||||
#: settings.py:60
|
||||
msgid "Categories only"
|
||||
msgstr "Catégories seulement"
|
||||
|
||||
#: settings.py:61
|
||||
msgid "Posts only"
|
||||
msgstr "Articles seulement"
|
||||
|
||||
#: settings.py:62
|
||||
msgid "None"
|
||||
msgstr "Aucun"
|
||||
|
||||
#: settings.py:71
|
||||
msgid "always"
|
||||
msgstr "toujours"
|
||||
|
||||
#: settings.py:72
|
||||
msgid "hourly"
|
||||
msgstr "toutes les heures"
|
||||
|
||||
#: settings.py:73
|
||||
msgid "daily"
|
||||
msgstr "quotidien"
|
||||
|
||||
#: settings.py:74
|
||||
msgid "weekly"
|
||||
msgstr "hebdomadaire"
|
||||
|
||||
#: settings.py:75
|
||||
msgid "monthly"
|
||||
msgstr "mensuel"
|
||||
|
||||
#: settings.py:76
|
||||
msgid "yearly"
|
||||
msgstr "annuel"
|
||||
|
||||
#: settings.py:77
|
||||
msgid "never"
|
||||
msgstr "jamais"
|
||||
|
||||
#: settings.py:492
|
||||
msgid "Latest Blog Articles"
|
||||
msgstr "Articles récents du blog"
|
||||
|
||||
#: settings.py:499
|
||||
msgid "Latest Blog Articles - Cache"
|
||||
msgstr "Articles récents du blog - Cache"
|
||||
|
||||
#: settings.py:506
|
||||
msgid "Author Blog Articles"
|
||||
msgstr "Articles de l’auteur"
|
||||
|
||||
#: settings.py:513
|
||||
msgid "Author Blog Articles List"
|
||||
msgstr "Liste d'articles de l’auteur"
|
||||
|
||||
#: settings.py:520 templates/djangocms_blog/plugins/tags.html:5
|
||||
msgid "Tags"
|
||||
msgstr "Tags"
|
||||
|
||||
#: settings.py:527 templates/djangocms_blog/plugins/categories.html:3
|
||||
msgid "Categories"
|
||||
msgstr "Catégories"
|
||||
|
||||
#: settings.py:534 templates/djangocms_blog/plugins/archive.html:3
|
||||
#: templates/djangocms_blog/post_list.html:12
|
||||
msgid "Archive"
|
||||
msgstr "Archive"
|
||||
|
||||
#: settings.py:541
|
||||
msgid "Featured Posts"
|
||||
msgstr "Articles mis en avant"
|
||||
|
||||
#: settings.py:548
|
||||
msgid "Featured Posts - Cache"
|
||||
msgstr " Articles mis en avant - Cache"
|
||||
|
||||
#: settings.py:590
|
||||
msgid "Default template"
|
||||
msgstr "Template par défaut"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr "lire la suite"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr "par"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:17
|
||||
#: templates/djangocms_blog/plugins/authors.html:10
|
||||
#: templates/djangocms_blog/plugins/categories.html:10
|
||||
#: templates/djangocms_blog/plugins/tags.html:12
|
||||
#, python-format
|
||||
msgid "1 article"
|
||||
msgid_plural "%(articles)s articles"
|
||||
msgstr[0] "1 article"
|
||||
msgstr[1] "%(articles)s articles"
|
||||
msgstr[2] "%(articles)s articles"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:18
|
||||
#: templates/djangocms_blog/plugins/authors.html:11
|
||||
#: templates/djangocms_blog/plugins/categories.html:11
|
||||
#: templates/djangocms_blog/plugins/tags.html:13
|
||||
msgid "0 articles"
|
||||
msgstr "0 articles"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:26
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:12
|
||||
#: templates/djangocms_blog/plugins/latest_entries.html:7
|
||||
#: templates/djangocms_blog/plugins/tags.html:17
|
||||
#: templates/djangocms_blog/post_list.html:21
|
||||
msgid "No article found."
|
||||
msgstr "Aucun article trouvé"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:3
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:3
|
||||
msgid "Authors"
|
||||
msgstr "Auteurs"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:15
|
||||
msgid "No author found."
|
||||
msgstr "Aucun auteur trouvé."
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:7
|
||||
#: templates/djangocms_blog/post_list.html:11
|
||||
msgid "Articles by"
|
||||
msgstr "Articles écrits par"
|
||||
|
||||
#: templates/djangocms_blog/plugins/categories.html:15
|
||||
msgid "No categories found."
|
||||
msgstr "Aucune catégorie trouvée"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:13
|
||||
msgid "Tag"
|
||||
msgstr "Tag"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:24
|
||||
msgid "Back"
|
||||
msgstr "Retour"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:29
|
||||
msgid "previous"
|
||||
msgstr "précédent"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "Page"
|
||||
msgstr "Page"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "of"
|
||||
msgstr "sur"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:35
|
||||
msgid "next"
|
||||
msgstr "suivant"
|
||||
765
djangocms_blog/locale/it/LC_MESSAGES/django.po
Normal file
765
djangocms_blog/locale/it/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,765 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Iacopo Spalletti, 2014
|
||||
# yakky <i.spalletti@nephila.it>, 2014-2020
|
||||
# Leonardo Cavallucci, 2023
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: djangocms-blog\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-30 11:04+0200\n"
|
||||
"PO-Revision-Date: 2014-03-29 15:29+0000\n"
|
||||
"Last-Translator: Leonardo Cavallucci, 2023\n"
|
||||
"Language-Team: Italian (http://app.transifex.com/nephila/djangocms-blog/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"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: admin.py:65
|
||||
msgid "site"
|
||||
msgstr "Sito"
|
||||
|
||||
#: admin.py:131
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
#: admin.py:138
|
||||
msgid "Images"
|
||||
msgstr "Immagini"
|
||||
|
||||
#: admin.py:141
|
||||
msgid "SEO"
|
||||
msgstr "SEO"
|
||||
|
||||
#: admin.py:172
|
||||
msgid "Publish selection"
|
||||
msgstr "Pubblica gli articoli selezionati"
|
||||
|
||||
#: admin.py:194
|
||||
msgid "Unpublish selection"
|
||||
msgstr "Spubblica gli articoli selezionati"
|
||||
|
||||
#: admin.py:207
|
||||
msgid "Enable comments for selection"
|
||||
msgstr "Abilita i commenti per gli articoli selezionati"
|
||||
|
||||
#: admin.py:221
|
||||
msgid "Disable comments for selection "
|
||||
msgstr "Disabilita i commenti per gli articoli selezionati"
|
||||
|
||||
#: admin.py:235
|
||||
msgid "Enable liveblog for selection"
|
||||
msgstr "Abilita il liveblog per gli articoli selezionati"
|
||||
|
||||
#: admin.py:249
|
||||
msgid "Disable liveblog for selection "
|
||||
msgstr "Disabilita il liveblog per gli articoli selezionati"
|
||||
|
||||
#: admin.py:473
|
||||
msgid "Generic"
|
||||
msgstr "Generale"
|
||||
|
||||
#: admin.py:485
|
||||
msgid "Layout"
|
||||
msgstr "Layout"
|
||||
|
||||
#: admin.py:499
|
||||
msgid "Notifications"
|
||||
msgstr "Notifiche"
|
||||
|
||||
#: admin.py:503
|
||||
msgid "Sitemap"
|
||||
msgstr "Sitemap"
|
||||
|
||||
#: admin.py:512
|
||||
msgid "Meta"
|
||||
msgstr "Meta"
|
||||
|
||||
#: admin.py:524 admin.py:535 admin.py:545
|
||||
msgid "You can provide plain strings, Post model attribute or method names"
|
||||
msgstr "Puoi inserire stringhe, attributi o metodi del model Post"
|
||||
|
||||
#: apps.py:7
|
||||
msgid "django CMS Blog"
|
||||
msgstr "django CMS Blog"
|
||||
|
||||
#: cms_appconfig.py:19
|
||||
msgid "application title"
|
||||
msgstr "Titolo applicazione"
|
||||
|
||||
#: cms_appconfig.py:20
|
||||
msgid "object name"
|
||||
msgstr "Nome oggetto"
|
||||
|
||||
#: cms_appconfig.py:24
|
||||
msgid "blog config"
|
||||
msgstr "Configurazione del blog"
|
||||
|
||||
#: cms_appconfig.py:25
|
||||
msgid "blog configs"
|
||||
msgstr "Configurazioni del blog"
|
||||
|
||||
#: cms_appconfig.py:28
|
||||
msgid "untitled"
|
||||
msgstr "Senza titolo"
|
||||
|
||||
#: cms_appconfig.py:54
|
||||
msgid "Post published by default"
|
||||
msgstr "Articoli pubblicati di default"
|
||||
|
||||
#: cms_appconfig.py:58
|
||||
msgid "Default size of full images"
|
||||
msgstr "Dimensione standard immagine principale"
|
||||
|
||||
#: cms_appconfig.py:61
|
||||
msgid ""
|
||||
"If left empty the image size will have to be set for every newly created "
|
||||
"post."
|
||||
msgstr "Se vuoto, la dimensione dell'immagine principale dovrà essere impostata per ogni nuovo articolo."
|
||||
|
||||
#: cms_appconfig.py:65
|
||||
msgid "Default size of thumbnail images"
|
||||
msgstr "Dimensione standard immagine ridotta"
|
||||
|
||||
#: cms_appconfig.py:68
|
||||
msgid ""
|
||||
"If left empty the thumbnail image size will have to be set for every newly "
|
||||
"created post."
|
||||
msgstr "Se vuoto, la dimensione dell'immagine ridotta dovrà essere impostata per ogni nuovo articolo."
|
||||
|
||||
#: cms_appconfig.py:72
|
||||
msgid "Permalink structure"
|
||||
msgstr "Struttura permalink"
|
||||
|
||||
#: cms_appconfig.py:79
|
||||
msgid "Use placeholder and plugins for article body"
|
||||
msgstr "Usa placeholder e plugin per il contenuto"
|
||||
|
||||
#: cms_appconfig.py:83
|
||||
msgid "Use abstract field"
|
||||
msgstr "Usa campo abstract"
|
||||
|
||||
#: cms_appconfig.py:87
|
||||
msgid "Enable related posts"
|
||||
msgstr "Abilita articoli collegati"
|
||||
|
||||
#: cms_appconfig.py:91
|
||||
msgid "Set author"
|
||||
msgstr "Imposta autore"
|
||||
|
||||
#: cms_appconfig.py:93
|
||||
msgid "Set author by default"
|
||||
msgstr "Imposta autore di default"
|
||||
|
||||
#: cms_appconfig.py:98
|
||||
msgid "Paginate size"
|
||||
msgstr "Dimensione paginazione"
|
||||
|
||||
#: cms_appconfig.py:101
|
||||
msgid "When paginating list views, how many articles per page?"
|
||||
msgstr "Se la lista è paginata, quanti articoli visualizzati per pagina?"
|
||||
|
||||
#: cms_appconfig.py:105
|
||||
msgid "Template prefix"
|
||||
msgstr "Prefisso template"
|
||||
|
||||
#: cms_appconfig.py:108
|
||||
msgid "Alternative directory to load the blog templates from"
|
||||
msgstr "Directory alternativa da cui caricare i template"
|
||||
|
||||
#: cms_appconfig.py:112
|
||||
msgid "Menu structure"
|
||||
msgstr "Struttura del menu"
|
||||
|
||||
#: cms_appconfig.py:116
|
||||
msgid "Structure of the django CMS menu"
|
||||
msgstr "Struttura del menu django CMS"
|
||||
|
||||
#: cms_appconfig.py:120
|
||||
msgid "Show empty categories in menu"
|
||||
msgstr "Mostra categorie vuote nel menù"
|
||||
|
||||
#: cms_appconfig.py:123
|
||||
msgid "Show categories with no post attached in the menu"
|
||||
msgstr "Mostra categorie senza post nel menù"
|
||||
|
||||
#: cms_appconfig.py:128
|
||||
msgid "Sitemap changefreq"
|
||||
msgstr "Frequenza aggiornamento Sitemap"
|
||||
|
||||
#: cms_appconfig.py:132
|
||||
msgid "Changefreq attribute for sitemap items"
|
||||
msgstr "Attributo Changefreq per gli oggetti della sitemap"
|
||||
|
||||
#: cms_appconfig.py:136
|
||||
msgid "Sitemap priority"
|
||||
msgstr "Priorità sitemap"
|
||||
|
||||
#: cms_appconfig.py:139
|
||||
msgid "Priority attribute for sitemap items"
|
||||
msgstr "Attributo priorità per gli oggetti nella sitemap"
|
||||
|
||||
#: cms_appconfig.py:143
|
||||
msgid "Object type"
|
||||
msgstr "Tipo oggetto"
|
||||
|
||||
#: cms_appconfig.py:147
|
||||
msgid "Facebook type"
|
||||
msgstr "Tipo oggetto Facebook"
|
||||
|
||||
#: cms_appconfig.py:151
|
||||
msgid "Facebook application ID"
|
||||
msgstr "ID Applicazione Facebook"
|
||||
|
||||
#: cms_appconfig.py:155
|
||||
msgid "Facebook profile ID"
|
||||
msgstr "ID Profilo Facebook"
|
||||
|
||||
#: cms_appconfig.py:159
|
||||
msgid "Facebook page URL"
|
||||
msgstr "URL Pagina Facebook"
|
||||
|
||||
#: cms_appconfig.py:163
|
||||
msgid "Facebook author URL"
|
||||
msgstr "URL Autore Facebook"
|
||||
|
||||
#: cms_appconfig.py:167
|
||||
msgid "Facebook author"
|
||||
msgstr "Autore Facebook"
|
||||
|
||||
#: cms_appconfig.py:171
|
||||
msgid "Twitter type"
|
||||
msgstr "Tipo oggetto Twitter"
|
||||
|
||||
#: cms_appconfig.py:178
|
||||
msgid "Twitter site handle"
|
||||
msgstr "Nome Twitter del sito"
|
||||
|
||||
#: cms_appconfig.py:182
|
||||
msgid "Twitter author handle"
|
||||
msgstr "Nome Twitter autore"
|
||||
|
||||
#: cms_appconfig.py:186
|
||||
msgid "Schema.org type"
|
||||
msgstr "Tipo Schema.org"
|
||||
|
||||
#: cms_appconfig.py:193
|
||||
msgid "Schema.org author name"
|
||||
msgstr "Nome autore Schema.org"
|
||||
|
||||
#: cms_appconfig.py:197
|
||||
msgid "Send notifications on post publish"
|
||||
msgstr "Invia notifiche alla pubblicazione dell'articolo"
|
||||
|
||||
#: cms_appconfig.py:200
|
||||
msgid "Emits a desktop notification -if enabled- when publishing a new post"
|
||||
msgstr "Invia notifiche desktop -se abilitate- quando viene pubblicato un articolo"
|
||||
|
||||
#: cms_appconfig.py:204
|
||||
msgid "Send notifications on post update"
|
||||
msgstr "Invia notifiche all'aggiornamento dell'articolo"
|
||||
|
||||
#: cms_appconfig.py:207
|
||||
msgid ""
|
||||
"Emits a desktop notification -if enabled- when editing a published post"
|
||||
msgstr "Invia notifiche desktop -se abilitate- quando viene aggiornato un articolo"
|
||||
|
||||
#: cms_apps.py:13 cms_toolbars.py:17 settings.py:485
|
||||
msgid "Blog"
|
||||
msgstr "Blog"
|
||||
|
||||
#: cms_menus.py:26
|
||||
msgid "Blog menu"
|
||||
msgstr "Menu del blog"
|
||||
|
||||
#: cms_toolbars.py:20
|
||||
msgid "Post list"
|
||||
msgstr "Lista degli articoli"
|
||||
|
||||
#: cms_toolbars.py:23
|
||||
msgid "Category list"
|
||||
msgstr "Lista categorie"
|
||||
|
||||
#: cms_toolbars.py:26
|
||||
msgid "Tag list"
|
||||
msgstr "Lista tag"
|
||||
|
||||
#: cms_toolbars.py:29
|
||||
msgid "Add post"
|
||||
msgstr "Aggiungi articolo"
|
||||
|
||||
#: cms_toolbars.py:33
|
||||
msgid "Edit configuration"
|
||||
msgstr "Modifica configurazione"
|
||||
|
||||
#: cms_toolbars.py:38
|
||||
msgid "Edit Post"
|
||||
msgstr "Modifica articolo"
|
||||
|
||||
#: cms_toolbars.py:53
|
||||
#, python-brace-format
|
||||
msgid "Publish {0} now"
|
||||
msgstr "Pubblica {0}"
|
||||
|
||||
#: cms_wizards.py:22
|
||||
msgid "Slug"
|
||||
msgstr "Slug"
|
||||
|
||||
#: cms_wizards.py:25
|
||||
msgid "Leave empty for automatic slug, or override as required."
|
||||
msgstr "Lascia vuoto per generare lo slug automaticamente"
|
||||
|
||||
#: cms_wizards.py:105
|
||||
#, python-brace-format
|
||||
msgid "New {0}"
|
||||
msgstr "Nuovo {0}"
|
||||
|
||||
#: cms_wizards.py:109
|
||||
#, python-brace-format
|
||||
msgid "Create a new {0} in {1}"
|
||||
msgstr "Crea un nuovo {0} in {1}"
|
||||
|
||||
#: feeds.py:39
|
||||
#, python-format
|
||||
msgid "Blog articles on %(site_name)s"
|
||||
msgstr "Articoli del blog su %(site_name)s"
|
||||
|
||||
#: liveblog/apps.py:7
|
||||
msgid "Liveblog"
|
||||
msgstr "Liveblog"
|
||||
|
||||
#: liveblog/cms_plugins.py:13
|
||||
msgid "Liveblog item"
|
||||
msgstr "Elemento liveblog"
|
||||
|
||||
#: liveblog/models.py:27
|
||||
msgid "publish liveblog entry"
|
||||
msgstr "Pubblica elemento liveblog"
|
||||
|
||||
#: liveblog/models.py:28
|
||||
msgid "post date"
|
||||
msgstr "Data del post"
|
||||
|
||||
#: liveblog/models.py:31 liveblog/models.py:111
|
||||
msgid "liveblog entry"
|
||||
msgstr "Elemento liveblog"
|
||||
|
||||
#: liveblog/models.py:32 liveblog/models.py:112
|
||||
msgid "liveblog entries"
|
||||
msgstr "Elementi liveblog"
|
||||
|
||||
#: liveblog/models.py:93 models.py:252
|
||||
msgid "title"
|
||||
msgstr "titolo"
|
||||
|
||||
#: liveblog/models.py:95
|
||||
msgid "image"
|
||||
msgstr "Immagine"
|
||||
|
||||
#: liveblog/models.py:103
|
||||
msgid "thumbnail size"
|
||||
msgstr "Dimensione miniatura"
|
||||
|
||||
#: models.py:95
|
||||
msgid "parent"
|
||||
msgstr "superiore"
|
||||
|
||||
#: models.py:97
|
||||
msgid "created at"
|
||||
msgstr "creato il"
|
||||
|
||||
#: models.py:98
|
||||
msgid "modified at"
|
||||
msgstr "modificato il"
|
||||
|
||||
#: models.py:99 models.py:249 models.py:491
|
||||
msgid "app. config"
|
||||
msgstr "config. app."
|
||||
|
||||
#: models.py:102
|
||||
msgid "name"
|
||||
msgstr "nome"
|
||||
|
||||
#: models.py:103 models.py:254
|
||||
msgid "slug"
|
||||
msgstr "slug"
|
||||
|
||||
#: models.py:104
|
||||
msgid "category meta description"
|
||||
msgstr "metatag descrizione"
|
||||
|
||||
#: models.py:132
|
||||
msgid "blog category"
|
||||
msgstr "categoria del blog"
|
||||
|
||||
#: models.py:133
|
||||
msgid "blog categories"
|
||||
msgstr "categorie del blog"
|
||||
|
||||
#: models.py:169
|
||||
msgid "BlogCategory (no translation)"
|
||||
msgstr "Categoria (nessuna traduzione)"
|
||||
|
||||
#: models.py:196
|
||||
msgid "author"
|
||||
msgstr "autore"
|
||||
|
||||
#: models.py:203
|
||||
msgid "created"
|
||||
msgstr "creato"
|
||||
|
||||
#: models.py:204
|
||||
msgid "last modified"
|
||||
msgstr "ultima modifica"
|
||||
|
||||
#: models.py:205
|
||||
msgid "published since"
|
||||
msgstr "Pubblicato il"
|
||||
|
||||
#: models.py:206
|
||||
msgid "published until"
|
||||
msgstr "fino al"
|
||||
|
||||
#: models.py:207
|
||||
msgid "featured date"
|
||||
msgstr "Data visualizzata"
|
||||
|
||||
#: models.py:208
|
||||
msgid "publish"
|
||||
msgstr "pubblica"
|
||||
|
||||
#: models.py:209
|
||||
msgid "include in RSS feed"
|
||||
msgstr "includi nel feed RSS"
|
||||
|
||||
#: models.py:211
|
||||
msgid "category"
|
||||
msgstr "categoria"
|
||||
|
||||
#: models.py:214
|
||||
msgid "main image"
|
||||
msgstr "immagine principale"
|
||||
|
||||
#: models.py:222
|
||||
msgid "main image thumbnail"
|
||||
msgstr "dimensioni miniatura immagine"
|
||||
|
||||
#: models.py:230
|
||||
msgid "main image full"
|
||||
msgstr "dimensioni immagine"
|
||||
|
||||
#: models.py:237
|
||||
msgid "enable comments on post"
|
||||
msgstr "abilita commenti sull'articolo"
|
||||
|
||||
#: models.py:241
|
||||
msgid "Site(s)"
|
||||
msgstr "Sito/i"
|
||||
|
||||
#: models.py:244
|
||||
msgid ""
|
||||
"Select sites in which to show the post. If none is set it will be visible in"
|
||||
" all the configured sites."
|
||||
msgstr "Seleziona i siti in cui deve apparire l'articolo. Se non è selezionato nessun sito, l'articolo comparirà in tutti i siti configurati."
|
||||
|
||||
#: models.py:256
|
||||
msgid "subtitle"
|
||||
msgstr "sottotitolo"
|
||||
|
||||
#: models.py:257
|
||||
msgid "abstract"
|
||||
msgstr "abstract"
|
||||
|
||||
#: models.py:258
|
||||
msgid "post meta description"
|
||||
msgstr "metatag descrizione"
|
||||
|
||||
#: models.py:259
|
||||
msgid "post meta keywords"
|
||||
msgstr "metatag keyword"
|
||||
|
||||
#: models.py:261
|
||||
msgid "post meta title"
|
||||
msgstr "metatag titolo"
|
||||
|
||||
#: models.py:262
|
||||
msgid "used in title tag and social sharing"
|
||||
msgstr "Usato nel tag title e nei titoli per le condivisioni sui social network"
|
||||
|
||||
#: models.py:267
|
||||
msgid "text"
|
||||
msgstr "testo"
|
||||
|
||||
#: models.py:273
|
||||
msgid "enable liveblog on post"
|
||||
msgstr "Attiva liveblog sul post"
|
||||
|
||||
#: models.py:279
|
||||
msgid ""
|
||||
"Type a tag and hit tab, or start typing and select from autocomplete list."
|
||||
msgstr "Scrivi un tag e premi il task tab, o comincia a scrivere e seleziona il tag dalla lista che comparirà"
|
||||
|
||||
#: models.py:282
|
||||
msgid "Related Posts"
|
||||
msgstr "Articoli collegati"
|
||||
|
||||
#: models.py:314
|
||||
msgid "blog article"
|
||||
msgstr "articolo del blog"
|
||||
|
||||
#: models.py:315
|
||||
msgid "blog articles"
|
||||
msgstr "articoli del blog"
|
||||
|
||||
#: models.py:320
|
||||
msgid "Post (no translation)"
|
||||
msgstr "Articolo (nessuna translation)"
|
||||
|
||||
#: models.py:493
|
||||
msgid "current site"
|
||||
msgstr "Sito corrente"
|
||||
|
||||
#: models.py:493
|
||||
msgid "Select items from the current site only"
|
||||
msgstr "Seleziona gli elementi per il solo sito corrente"
|
||||
|
||||
#: models.py:497
|
||||
msgid "Plugin template"
|
||||
msgstr "Template del plugin"
|
||||
|
||||
#: models.py:498
|
||||
msgid "Select plugin template to load for this instance"
|
||||
msgstr "Seleziona il template da usare per questa istanza"
|
||||
|
||||
#: models.py:536 models.py:578
|
||||
msgid "articles"
|
||||
msgstr "articoli"
|
||||
|
||||
#: models.py:538
|
||||
msgid "The number of latests articles to be displayed."
|
||||
msgstr "Il numero di articoli da mostrare."
|
||||
|
||||
#: models.py:541
|
||||
msgid "filter by tag"
|
||||
msgstr "filtra per tag"
|
||||
|
||||
#: models.py:543
|
||||
msgid "Show only the blog articles tagged with chosen tags."
|
||||
msgstr "Mostra solo gli articoli marcati con i tag selezionati."
|
||||
|
||||
#: models.py:549
|
||||
msgid "filter by category"
|
||||
msgstr "filtra per categoria"
|
||||
|
||||
#: models.py:550
|
||||
msgid "Show only the blog articles tagged with chosen categories."
|
||||
msgstr "Mostra solo gli articoli marcati con i categorie selezionati."
|
||||
|
||||
#: models.py:554
|
||||
#, python-format
|
||||
msgid "%s latest articles by tag"
|
||||
msgstr "ultimi %s articoli per tag"
|
||||
|
||||
#: models.py:574
|
||||
msgid "authors"
|
||||
msgstr "autori"
|
||||
|
||||
#: models.py:580
|
||||
msgid "The number of author articles to be displayed."
|
||||
msgstr "Numero di elementi per autore da mostrare."
|
||||
|
||||
#: models.py:584
|
||||
#, python-format
|
||||
msgid "%s latest articles by author"
|
||||
msgstr "ultimi %s articoli per autore"
|
||||
|
||||
#: models.py:605 models.py:608
|
||||
msgid "Featured posts"
|
||||
msgstr "Articoli in evidenza"
|
||||
|
||||
#: models.py:623
|
||||
msgid "generic blog plugin"
|
||||
msgstr "plugin blog"
|
||||
|
||||
#: settings.py:26
|
||||
msgid "Full date"
|
||||
msgstr "Data completa"
|
||||
|
||||
#: settings.py:27
|
||||
msgid "Year / Month"
|
||||
msgstr "Anno / Mese"
|
||||
|
||||
#: settings.py:28 templates/djangocms_blog/post_list.html:14
|
||||
msgid "Category"
|
||||
msgstr "Categoria"
|
||||
|
||||
#: settings.py:29
|
||||
msgid "Just slug"
|
||||
msgstr "Solo slug"
|
||||
|
||||
#: settings.py:59
|
||||
msgid "Categories and posts"
|
||||
msgstr "Categorie e articoli"
|
||||
|
||||
#: settings.py:60
|
||||
msgid "Categories only"
|
||||
msgstr "Solo categorie"
|
||||
|
||||
#: settings.py:61
|
||||
msgid "Posts only"
|
||||
msgstr "Solo articoli"
|
||||
|
||||
#: settings.py:62
|
||||
msgid "None"
|
||||
msgstr "Niente"
|
||||
|
||||
#: settings.py:71
|
||||
msgid "always"
|
||||
msgstr "sempre"
|
||||
|
||||
#: settings.py:72
|
||||
msgid "hourly"
|
||||
msgstr "ogni ora"
|
||||
|
||||
#: settings.py:73
|
||||
msgid "daily"
|
||||
msgstr "ogni giorno"
|
||||
|
||||
#: settings.py:74
|
||||
msgid "weekly"
|
||||
msgstr "ogni settimana"
|
||||
|
||||
#: settings.py:75
|
||||
msgid "monthly"
|
||||
msgstr "ogni mese"
|
||||
|
||||
#: settings.py:76
|
||||
msgid "yearly"
|
||||
msgstr "ogni anno"
|
||||
|
||||
#: settings.py:77
|
||||
msgid "never"
|
||||
msgstr "mai"
|
||||
|
||||
#: settings.py:492
|
||||
msgid "Latest Blog Articles"
|
||||
msgstr "Ultimi articoli"
|
||||
|
||||
#: settings.py:499
|
||||
msgid "Latest Blog Articles - Cache"
|
||||
msgstr "Ultimi articoli del blog - in cache"
|
||||
|
||||
#: settings.py:506
|
||||
msgid "Author Blog Articles"
|
||||
msgstr "Articoli per autore"
|
||||
|
||||
#: settings.py:513
|
||||
msgid "Author Blog Articles List"
|
||||
msgstr "Lista autori articoli"
|
||||
|
||||
#: settings.py:520 templates/djangocms_blog/plugins/tags.html:5
|
||||
msgid "Tags"
|
||||
msgstr "Tag"
|
||||
|
||||
#: settings.py:527 templates/djangocms_blog/plugins/categories.html:3
|
||||
msgid "Categories"
|
||||
msgstr "Categorie"
|
||||
|
||||
#: settings.py:534 templates/djangocms_blog/plugins/archive.html:3
|
||||
#: templates/djangocms_blog/post_list.html:12
|
||||
msgid "Archive"
|
||||
msgstr "Archivio"
|
||||
|
||||
#: settings.py:541
|
||||
msgid "Featured Posts"
|
||||
msgstr "Articoli in evidenza"
|
||||
|
||||
#: settings.py:548
|
||||
msgid "Featured Posts - Cache"
|
||||
msgstr "Articoli in evidenza - Cache"
|
||||
|
||||
#: settings.py:590
|
||||
msgid "Default template"
|
||||
msgstr "Template standard"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr "leggi"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr "di"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:17
|
||||
#: templates/djangocms_blog/plugins/authors.html:10
|
||||
#: templates/djangocms_blog/plugins/categories.html:10
|
||||
#: templates/djangocms_blog/plugins/tags.html:12
|
||||
#, python-format
|
||||
msgid "1 article"
|
||||
msgid_plural "%(articles)s articles"
|
||||
msgstr[0] "1 articolo"
|
||||
msgstr[1] "%(articles)s articoli"
|
||||
msgstr[2] "%(articles)s articoli"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:18
|
||||
#: templates/djangocms_blog/plugins/authors.html:11
|
||||
#: templates/djangocms_blog/plugins/categories.html:11
|
||||
#: templates/djangocms_blog/plugins/tags.html:13
|
||||
msgid "0 articles"
|
||||
msgstr "0 articoli"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:26
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:12
|
||||
#: templates/djangocms_blog/plugins/latest_entries.html:7
|
||||
#: templates/djangocms_blog/plugins/tags.html:17
|
||||
#: templates/djangocms_blog/post_list.html:21
|
||||
msgid "No article found."
|
||||
msgstr "Nessun articolo trovato."
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:3
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:3
|
||||
msgid "Authors"
|
||||
msgstr "Autori"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:15
|
||||
msgid "No author found."
|
||||
msgstr "Nessun autore trovato"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:7
|
||||
#: templates/djangocms_blog/post_list.html:11
|
||||
msgid "Articles by"
|
||||
msgstr "Articoli di"
|
||||
|
||||
#: templates/djangocms_blog/plugins/categories.html:15
|
||||
msgid "No categories found."
|
||||
msgstr "Nessuna categoria trovata."
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:13
|
||||
msgid "Tag"
|
||||
msgstr "Tag"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:24
|
||||
msgid "Back"
|
||||
msgstr "Indietro"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:29
|
||||
msgid "previous"
|
||||
msgstr "precedente"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "Page"
|
||||
msgstr "Pagina"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "of"
|
||||
msgstr "di"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:35
|
||||
msgid "next"
|
||||
msgstr "successivo"
|
||||
764
djangocms_blog/locale/lt/LC_MESSAGES/django.po
Normal file
764
djangocms_blog/locale/lt/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,764 @@
|
|||
# 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 <matas@dailyda.com>, 2015-2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: djangocms-blog\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-30 11:04+0200\n"
|
||||
"PO-Revision-Date: 2014-03-29 15:29+0000\n"
|
||||
"Last-Translator: Matas Dailyda <matas@dailyda.com>, 2015-2018\n"
|
||||
"Language-Team: Lithuanian (http://app.transifex.com/nephila/djangocms-blog/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"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: admin.py:65
|
||||
msgid "site"
|
||||
msgstr "tinklalapis"
|
||||
|
||||
#: admin.py:131
|
||||
msgid "Info"
|
||||
msgstr "Informacija"
|
||||
|
||||
#: admin.py:138
|
||||
msgid "Images"
|
||||
msgstr "Paveikslėliai"
|
||||
|
||||
#: admin.py:141
|
||||
msgid "SEO"
|
||||
msgstr "SEO"
|
||||
|
||||
#: admin.py:172
|
||||
msgid "Publish selection"
|
||||
msgstr "Publikuoti pasirinktą dalį"
|
||||
|
||||
#: admin.py:194
|
||||
msgid "Unpublish selection"
|
||||
msgstr "Nebepublikuoti pasirinktos dalies"
|
||||
|
||||
#: admin.py:207
|
||||
msgid "Enable comments for selection"
|
||||
msgstr "Įgalinti komentarus pasirinktai daliai"
|
||||
|
||||
#: admin.py:221
|
||||
msgid "Disable comments for selection "
|
||||
msgstr "Išjungti komentarus pasirinktai daliai"
|
||||
|
||||
#: admin.py:235
|
||||
msgid "Enable liveblog for selection"
|
||||
msgstr "Įgalinti gyvą tinklaraštį pasirinktai daliai"
|
||||
|
||||
#: admin.py:249
|
||||
msgid "Disable liveblog for selection "
|
||||
msgstr "Išjungti gyvą tinklaraštį pasirinktai daliai"
|
||||
|
||||
#: admin.py:473
|
||||
msgid "Generic"
|
||||
msgstr "Bendras"
|
||||
|
||||
#: admin.py:485
|
||||
msgid "Layout"
|
||||
msgstr "Išdėstymas"
|
||||
|
||||
#: admin.py:499
|
||||
msgid "Notifications"
|
||||
msgstr "Pranešimai"
|
||||
|
||||
#: admin.py:503
|
||||
msgid "Sitemap"
|
||||
msgstr "Tinklalapio žemėlapis"
|
||||
|
||||
#: admin.py:512
|
||||
msgid "Meta"
|
||||
msgstr "Meta"
|
||||
|
||||
#: admin.py:524 admin.py:535 admin.py:545
|
||||
msgid "You can provide plain strings, Post model attribute or method names"
|
||||
msgstr "Galite pateikti paprasto teksto eilutes, įrašo modelio atributą arba metodo pavadinimus "
|
||||
|
||||
#: apps.py:7
|
||||
msgid "django CMS Blog"
|
||||
msgstr "django CMS Tinklaraštis"
|
||||
|
||||
#: cms_appconfig.py:19
|
||||
msgid "application title"
|
||||
msgstr "aplikacijos pavadinimas"
|
||||
|
||||
#: cms_appconfig.py:20
|
||||
msgid "object name"
|
||||
msgstr "objekto pavadinimas"
|
||||
|
||||
#: cms_appconfig.py:24
|
||||
msgid "blog config"
|
||||
msgstr "tinklaraščio konfiguracija"
|
||||
|
||||
#: cms_appconfig.py:25
|
||||
msgid "blog configs"
|
||||
msgstr "tinklaraščio konfiguracijos"
|
||||
|
||||
#: cms_appconfig.py:28
|
||||
msgid "untitled"
|
||||
msgstr "be pavadinimo"
|
||||
|
||||
#: cms_appconfig.py:54
|
||||
msgid "Post published by default"
|
||||
msgstr "Pagal numatymą įrašas publikuojamas"
|
||||
|
||||
#: cms_appconfig.py:58
|
||||
msgid "Default size of full images"
|
||||
msgstr "Numatytas pilnų paveikslėlių dydis"
|
||||
|
||||
#: cms_appconfig.py:61
|
||||
msgid ""
|
||||
"If left empty the image size will have to be set for every newly created "
|
||||
"post."
|
||||
msgstr "Jei palikta tuščia, paveiksliuko dydis turės būt pasirinktas kiekvienam naujai kuriamam straipsniui."
|
||||
|
||||
#: cms_appconfig.py:65
|
||||
msgid "Default size of thumbnail images"
|
||||
msgstr "Numatytas piktogramų dydis"
|
||||
|
||||
#: cms_appconfig.py:68
|
||||
msgid ""
|
||||
"If left empty the thumbnail image size will have to be set for every newly "
|
||||
"created post."
|
||||
msgstr "Jei palikta tuščia, piktogramos dydis turės būt pasirinktas kiekvienam naujai kuriamam straipsniui."
|
||||
|
||||
#: cms_appconfig.py:72
|
||||
msgid "Permalink structure"
|
||||
msgstr "Nuolatinės nuorodos struktūra"
|
||||
|
||||
#: cms_appconfig.py:79
|
||||
msgid "Use placeholder and plugins for article body"
|
||||
msgstr "Straipsnio tekstui naudokite rezervuotą vietą ir įskiepiuis"
|
||||
|
||||
#: cms_appconfig.py:83
|
||||
msgid "Use abstract field"
|
||||
msgstr "Naudoti santraukos lauką"
|
||||
|
||||
#: cms_appconfig.py:87
|
||||
msgid "Enable related posts"
|
||||
msgstr "Įgalinti susijusius straipsnius"
|
||||
|
||||
#: cms_appconfig.py:91
|
||||
msgid "Set author"
|
||||
msgstr "Nustatyti autorių"
|
||||
|
||||
#: cms_appconfig.py:93
|
||||
msgid "Set author by default"
|
||||
msgstr "Pagal numatymą nustatyti autorių"
|
||||
|
||||
#: cms_appconfig.py:98
|
||||
msgid "Paginate size"
|
||||
msgstr "Puslapiavimo dydis"
|
||||
|
||||
#: cms_appconfig.py:101
|
||||
msgid "When paginating list views, how many articles per page?"
|
||||
msgstr "Kai puslapiuojamas sąrašas, kiek straipsnių atvaizduoti puslapyje?"
|
||||
|
||||
#: cms_appconfig.py:105
|
||||
msgid "Template prefix"
|
||||
msgstr "Šablono priešdėlis"
|
||||
|
||||
#: cms_appconfig.py:108
|
||||
msgid "Alternative directory to load the blog templates from"
|
||||
msgstr "Alternatyvus katalogas iš kurio būtų užkraunami šablonai"
|
||||
|
||||
#: cms_appconfig.py:112
|
||||
msgid "Menu structure"
|
||||
msgstr "Meniu struktūra"
|
||||
|
||||
#: cms_appconfig.py:116
|
||||
msgid "Structure of the django CMS menu"
|
||||
msgstr "Django CMS meniu struktūra"
|
||||
|
||||
#: cms_appconfig.py:120
|
||||
msgid "Show empty categories in menu"
|
||||
msgstr "Rodyti tuščias kategorijas meniu"
|
||||
|
||||
#: cms_appconfig.py:123
|
||||
msgid "Show categories with no post attached in the menu"
|
||||
msgstr "Rodyti kategorijas be susietų straipsnių meniu"
|
||||
|
||||
#: cms_appconfig.py:128
|
||||
msgid "Sitemap changefreq"
|
||||
msgstr "Tinklalapio medžio keitimo dažnumas"
|
||||
|
||||
#: cms_appconfig.py:132
|
||||
msgid "Changefreq attribute for sitemap items"
|
||||
msgstr "Keitimo dažnumo atributas tinklalapio medžio objektams"
|
||||
|
||||
#: cms_appconfig.py:136
|
||||
msgid "Sitemap priority"
|
||||
msgstr "Tinklalapio medžio prioritetas"
|
||||
|
||||
#: cms_appconfig.py:139
|
||||
msgid "Priority attribute for sitemap items"
|
||||
msgstr "Prioriteto atributas tinklalapio medžio objektams"
|
||||
|
||||
#: cms_appconfig.py:143
|
||||
msgid "Object type"
|
||||
msgstr "Objekto tipas"
|
||||
|
||||
#: cms_appconfig.py:147
|
||||
msgid "Facebook type"
|
||||
msgstr "Facebook tipas"
|
||||
|
||||
#: cms_appconfig.py:151
|
||||
msgid "Facebook application ID"
|
||||
msgstr "Facebook aplikacijos ID"
|
||||
|
||||
#: cms_appconfig.py:155
|
||||
msgid "Facebook profile ID"
|
||||
msgstr "Facebook profilio ID"
|
||||
|
||||
#: cms_appconfig.py:159
|
||||
msgid "Facebook page URL"
|
||||
msgstr "Facebook puslapio URL"
|
||||
|
||||
#: cms_appconfig.py:163
|
||||
msgid "Facebook author URL"
|
||||
msgstr "Facebook autoriaus URL"
|
||||
|
||||
#: cms_appconfig.py:167
|
||||
msgid "Facebook author"
|
||||
msgstr "Facebook autorius"
|
||||
|
||||
#: cms_appconfig.py:171
|
||||
msgid "Twitter type"
|
||||
msgstr "Twitter tipas"
|
||||
|
||||
#: cms_appconfig.py:178
|
||||
msgid "Twitter site handle"
|
||||
msgstr "Twitter tinklalapio vardas"
|
||||
|
||||
#: cms_appconfig.py:182
|
||||
msgid "Twitter author handle"
|
||||
msgstr "Twitter autoriaus vardas"
|
||||
|
||||
#: cms_appconfig.py:186
|
||||
msgid "Schema.org type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:193
|
||||
msgid "Schema.org author name"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:197
|
||||
msgid "Send notifications on post publish"
|
||||
msgstr "Publikavus straipsnį siųsti pranešimus"
|
||||
|
||||
#: cms_appconfig.py:200
|
||||
msgid "Emits a desktop notification -if enabled- when publishing a new post"
|
||||
msgstr "Išsiunčia darbalaukio pranešima -jei įgalinta- kai publikuojamas naujas straipsnis"
|
||||
|
||||
#: cms_appconfig.py:204
|
||||
msgid "Send notifications on post update"
|
||||
msgstr "Atnaujinus straipsnį siųsti pranešimus"
|
||||
|
||||
#: cms_appconfig.py:207
|
||||
msgid ""
|
||||
"Emits a desktop notification -if enabled- when editing a published post"
|
||||
msgstr "Išsiunčia darbalaukio pranešima -jei įgalinta- kai redaguojamas publikuotas straipsnis"
|
||||
|
||||
#: cms_apps.py:13 cms_toolbars.py:17 settings.py:485
|
||||
msgid "Blog"
|
||||
msgstr "Tinklaraštis"
|
||||
|
||||
#: cms_menus.py:26
|
||||
msgid "Blog menu"
|
||||
msgstr "Tinklaraščio meniu"
|
||||
|
||||
#: cms_toolbars.py:20
|
||||
msgid "Post list"
|
||||
msgstr "Straipsnių sąrašas"
|
||||
|
||||
#: cms_toolbars.py:23
|
||||
msgid "Category list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:26
|
||||
msgid "Tag list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:29
|
||||
msgid "Add post"
|
||||
msgstr "Pridėti straipsnį"
|
||||
|
||||
#: cms_toolbars.py:33
|
||||
msgid "Edit configuration"
|
||||
msgstr "Redaguoti nustatymus"
|
||||
|
||||
#: cms_toolbars.py:38
|
||||
msgid "Edit Post"
|
||||
msgstr "Redaguoti straipsnį"
|
||||
|
||||
#: cms_toolbars.py:53
|
||||
#, python-brace-format
|
||||
msgid "Publish {0} now"
|
||||
msgstr "Publikuoti {0} dabar"
|
||||
|
||||
#: cms_wizards.py:22
|
||||
msgid "Slug"
|
||||
msgstr "Nuoroda"
|
||||
|
||||
#: cms_wizards.py:25
|
||||
msgid "Leave empty for automatic slug, or override as required."
|
||||
msgstr "Palikti tuščią, kad būtų nuoroda būtų sugeneruota automatiškai, arba perrašyti pagal poreikius."
|
||||
|
||||
#: cms_wizards.py:105
|
||||
#, python-brace-format
|
||||
msgid "New {0}"
|
||||
msgstr "Naujas {0}"
|
||||
|
||||
#: cms_wizards.py:109
|
||||
#, python-brace-format
|
||||
msgid "Create a new {0} in {1}"
|
||||
msgstr "Kurti naują {0} viduje {1}"
|
||||
|
||||
#: feeds.py:39
|
||||
#, python-format
|
||||
msgid "Blog articles on %(site_name)s"
|
||||
msgstr "Tinklaraščio straipsniai %(site_name)s"
|
||||
|
||||
#: liveblog/apps.py:7
|
||||
msgid "Liveblog"
|
||||
msgstr "Gyvas tinklaraštis"
|
||||
|
||||
#: liveblog/cms_plugins.py:13
|
||||
msgid "Liveblog item"
|
||||
msgstr "Gyvo tinklaraščio objektas"
|
||||
|
||||
#: liveblog/models.py:27
|
||||
msgid "publish liveblog entry"
|
||||
msgstr "publikuoti gyvo tinklaraščio įrašą"
|
||||
|
||||
#: liveblog/models.py:28
|
||||
msgid "post date"
|
||||
msgstr "publikavimo data"
|
||||
|
||||
#: liveblog/models.py:31 liveblog/models.py:111
|
||||
msgid "liveblog entry"
|
||||
msgstr "gyvo tinklaraščio įrašas"
|
||||
|
||||
#: liveblog/models.py:32 liveblog/models.py:112
|
||||
msgid "liveblog entries"
|
||||
msgstr "gyvo tinklaraščio įrašai"
|
||||
|
||||
#: liveblog/models.py:93 models.py:252
|
||||
msgid "title"
|
||||
msgstr "pavadinimas"
|
||||
|
||||
#: liveblog/models.py:95
|
||||
msgid "image"
|
||||
msgstr "paveikslėlis"
|
||||
|
||||
#: liveblog/models.py:103
|
||||
msgid "thumbnail size"
|
||||
msgstr "piktogramos dydis"
|
||||
|
||||
#: models.py:95
|
||||
msgid "parent"
|
||||
msgstr "pirminis elementas"
|
||||
|
||||
#: models.py:97
|
||||
msgid "created at"
|
||||
msgstr "sukurta"
|
||||
|
||||
#: models.py:98
|
||||
msgid "modified at"
|
||||
msgstr "redaguota"
|
||||
|
||||
#: models.py:99 models.py:249 models.py:491
|
||||
msgid "app. config"
|
||||
msgstr "aplikacijos nustatymai"
|
||||
|
||||
#: models.py:102
|
||||
msgid "name"
|
||||
msgstr "pavadinimas"
|
||||
|
||||
#: models.py:103 models.py:254
|
||||
msgid "slug"
|
||||
msgstr "nuoroda"
|
||||
|
||||
#: models.py:104
|
||||
msgid "category meta description"
|
||||
msgstr "kategorijos meta apibūdinimas"
|
||||
|
||||
#: models.py:132
|
||||
msgid "blog category"
|
||||
msgstr "tinklaraščio kategorija"
|
||||
|
||||
#: models.py:133
|
||||
msgid "blog categories"
|
||||
msgstr "tinklaraščio kategorijos"
|
||||
|
||||
#: models.py:169
|
||||
msgid "BlogCategory (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:196
|
||||
msgid "author"
|
||||
msgstr "autorius"
|
||||
|
||||
#: models.py:203
|
||||
msgid "created"
|
||||
msgstr "sukurta"
|
||||
|
||||
#: models.py:204
|
||||
msgid "last modified"
|
||||
msgstr "paskutinį kartą redaguota"
|
||||
|
||||
#: models.py:205
|
||||
msgid "published since"
|
||||
msgstr "publikuota nuo"
|
||||
|
||||
#: models.py:206
|
||||
msgid "published until"
|
||||
msgstr "publikuota iki"
|
||||
|
||||
#: models.py:207
|
||||
msgid "featured date"
|
||||
msgstr "populiarinimo data"
|
||||
|
||||
#: models.py:208
|
||||
msgid "publish"
|
||||
msgstr "publikuoti"
|
||||
|
||||
#: models.py:209
|
||||
msgid "include in RSS feed"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:211
|
||||
msgid "category"
|
||||
msgstr "kategorija"
|
||||
|
||||
#: models.py:214
|
||||
msgid "main image"
|
||||
msgstr "pagrindinis paveikslėlis"
|
||||
|
||||
#: models.py:222
|
||||
msgid "main image thumbnail"
|
||||
msgstr "pagrindinio paveikslėlio miniatiūra"
|
||||
|
||||
#: models.py:230
|
||||
msgid "main image full"
|
||||
msgstr "pagrindinis paveikslėlis pilnas"
|
||||
|
||||
#: models.py:237
|
||||
msgid "enable comments on post"
|
||||
msgstr "įgalinti straipsniui komentarus"
|
||||
|
||||
#: models.py:241
|
||||
msgid "Site(s)"
|
||||
msgstr "Tinklalapis(iai)"
|
||||
|
||||
#: models.py:244
|
||||
msgid ""
|
||||
"Select sites in which to show the post. If none is set it will be visible in"
|
||||
" all the configured sites."
|
||||
msgstr "Pasirinkite puslapius kuriuose bus rodomas straipsnis. Jei nepasirinktas nei vienas puslapis, straipsnis bus rodomas visuose puslapiuose."
|
||||
|
||||
#: models.py:256
|
||||
msgid "subtitle"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:257
|
||||
msgid "abstract"
|
||||
msgstr "santrauka"
|
||||
|
||||
#: models.py:258
|
||||
msgid "post meta description"
|
||||
msgstr "straipsnio meta apibūdinimas"
|
||||
|
||||
#: models.py:259
|
||||
msgid "post meta keywords"
|
||||
msgstr "straipsnio meta raktažodžiai"
|
||||
|
||||
#: models.py:261
|
||||
msgid "post meta title"
|
||||
msgstr "straipsnio meta pavadinimas"
|
||||
|
||||
#: models.py:262
|
||||
msgid "used in title tag and social sharing"
|
||||
msgstr "naudojama pavadinimo žymenoje ir socialiniuose tinkluose"
|
||||
|
||||
#: models.py:267
|
||||
msgid "text"
|
||||
msgstr "tekstas"
|
||||
|
||||
#: models.py:273
|
||||
msgid "enable liveblog on post"
|
||||
msgstr "įgalinti gyvą tinklaraštį šiame straipsnyje"
|
||||
|
||||
#: models.py:279
|
||||
msgid ""
|
||||
"Type a tag and hit tab, or start typing and select from autocomplete list."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:282
|
||||
msgid "Related Posts"
|
||||
msgstr "Susiję straipsniai"
|
||||
|
||||
#: models.py:314
|
||||
msgid "blog article"
|
||||
msgstr "tinklaraščio straipsnis"
|
||||
|
||||
#: models.py:315
|
||||
msgid "blog articles"
|
||||
msgstr "tinklaraščio straipsniai"
|
||||
|
||||
#: models.py:320
|
||||
msgid "Post (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "current site"
|
||||
msgstr "dabartinis tinklalapis"
|
||||
|
||||
#: models.py:493
|
||||
msgid "Select items from the current site only"
|
||||
msgstr "Pasirinkti objektus tik iš dabartinio tinklalapio"
|
||||
|
||||
#: models.py:497
|
||||
msgid "Plugin template"
|
||||
msgstr "Įskiepio šablonas"
|
||||
|
||||
#: models.py:498
|
||||
msgid "Select plugin template to load for this instance"
|
||||
msgstr "Pasirinkite įskiepio šabloną kuris bus kraunamas šiam atvejui"
|
||||
|
||||
#: models.py:536 models.py:578
|
||||
msgid "articles"
|
||||
msgstr "straipsniai"
|
||||
|
||||
#: models.py:538
|
||||
msgid "The number of latests articles to be displayed."
|
||||
msgstr "Atvaizduojamas naujausių straipsnių kiekis."
|
||||
|
||||
#: models.py:541
|
||||
msgid "filter by tag"
|
||||
msgstr "filtruoti pagal žymeną"
|
||||
|
||||
#: models.py:543
|
||||
msgid "Show only the blog articles tagged with chosen tags."
|
||||
msgstr "Atvaizduoti straipsnius su pasirinktomis žymenomis."
|
||||
|
||||
#: models.py:549
|
||||
msgid "filter by category"
|
||||
msgstr "filtruoti pagal kategoriją"
|
||||
|
||||
#: models.py:550
|
||||
msgid "Show only the blog articles tagged with chosen categories."
|
||||
msgstr "Atvaizduoti straipsnius su pasirinktomis kategorijomis."
|
||||
|
||||
#: models.py:554
|
||||
#, python-format
|
||||
msgid "%s latest articles by tag"
|
||||
msgstr "%s paskutiniai straipsniai pagal žymeną"
|
||||
|
||||
#: models.py:574
|
||||
msgid "authors"
|
||||
msgstr "autoriai"
|
||||
|
||||
#: models.py:580
|
||||
msgid "The number of author articles to be displayed."
|
||||
msgstr "Atvaizduojamas autoriaus straipsnių kiekis."
|
||||
|
||||
#: models.py:584
|
||||
#, python-format
|
||||
msgid "%s latest articles by author"
|
||||
msgstr "%s paskutiniai straipsniai pagal autorių"
|
||||
|
||||
#: models.py:605 models.py:608
|
||||
msgid "Featured posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:623
|
||||
msgid "generic blog plugin"
|
||||
msgstr "bendras tinklaraščio įskiepis"
|
||||
|
||||
#: settings.py:26
|
||||
msgid "Full date"
|
||||
msgstr "Pilna data"
|
||||
|
||||
#: settings.py:27
|
||||
msgid "Year / Month"
|
||||
msgstr "Metai / Mėnesis"
|
||||
|
||||
#: settings.py:28 templates/djangocms_blog/post_list.html:14
|
||||
msgid "Category"
|
||||
msgstr "Kategorija"
|
||||
|
||||
#: settings.py:29
|
||||
msgid "Just slug"
|
||||
msgstr "Tik nuoroda"
|
||||
|
||||
#: settings.py:59
|
||||
msgid "Categories and posts"
|
||||
msgstr "Kategorijos ir įrašai"
|
||||
|
||||
#: settings.py:60
|
||||
msgid "Categories only"
|
||||
msgstr "Tik kategorijos"
|
||||
|
||||
#: settings.py:61
|
||||
msgid "Posts only"
|
||||
msgstr "Tik įrašai"
|
||||
|
||||
#: settings.py:62
|
||||
msgid "None"
|
||||
msgstr "Niekas"
|
||||
|
||||
#: settings.py:71
|
||||
msgid "always"
|
||||
msgstr "visada"
|
||||
|
||||
#: settings.py:72
|
||||
msgid "hourly"
|
||||
msgstr "kas valandą"
|
||||
|
||||
#: settings.py:73
|
||||
msgid "daily"
|
||||
msgstr "kas dieną"
|
||||
|
||||
#: settings.py:74
|
||||
msgid "weekly"
|
||||
msgstr "kas savaitę"
|
||||
|
||||
#: settings.py:75
|
||||
msgid "monthly"
|
||||
msgstr "kas mėnesį"
|
||||
|
||||
#: settings.py:76
|
||||
msgid "yearly"
|
||||
msgstr "kas metus"
|
||||
|
||||
#: settings.py:77
|
||||
msgid "never"
|
||||
msgstr "niekada"
|
||||
|
||||
#: settings.py:492
|
||||
msgid "Latest Blog Articles"
|
||||
msgstr "Naujausi tinklaraščio straipsniai"
|
||||
|
||||
#: settings.py:499
|
||||
msgid "Latest Blog Articles - Cache"
|
||||
msgstr "Paskutiniai tinklaraščio straipsniai - kešas"
|
||||
|
||||
#: settings.py:506
|
||||
msgid "Author Blog Articles"
|
||||
msgstr "Tinklaraščio straipsnių autorius"
|
||||
|
||||
#: settings.py:513
|
||||
msgid "Author Blog Articles List"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:520 templates/djangocms_blog/plugins/tags.html:5
|
||||
msgid "Tags"
|
||||
msgstr "Žymenos"
|
||||
|
||||
#: settings.py:527 templates/djangocms_blog/plugins/categories.html:3
|
||||
msgid "Categories"
|
||||
msgstr "Kategorijos"
|
||||
|
||||
#: settings.py:534 templates/djangocms_blog/plugins/archive.html:3
|
||||
#: templates/djangocms_blog/post_list.html:12
|
||||
msgid "Archive"
|
||||
msgstr "Archyvas"
|
||||
|
||||
#: settings.py:541
|
||||
msgid "Featured Posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:548
|
||||
msgid "Featured Posts - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:590
|
||||
msgid "Default template"
|
||||
msgstr "Numatytasis šablonas"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr "skaityti daugiau"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr "pagal"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:17
|
||||
#: templates/djangocms_blog/plugins/authors.html:10
|
||||
#: templates/djangocms_blog/plugins/categories.html:10
|
||||
#: templates/djangocms_blog/plugins/tags.html:12
|
||||
#, python-format
|
||||
msgid "1 article"
|
||||
msgid_plural "%(articles)s articles"
|
||||
msgstr[0] "%(articles)s straipsnis"
|
||||
msgstr[1] "%(articles)s straipsniai"
|
||||
msgstr[2] "%(articles)s straipsnių"
|
||||
msgstr[3] "%(articles)s straipsnių"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:18
|
||||
#: templates/djangocms_blog/plugins/authors.html:11
|
||||
#: templates/djangocms_blog/plugins/categories.html:11
|
||||
#: templates/djangocms_blog/plugins/tags.html:13
|
||||
msgid "0 articles"
|
||||
msgstr "0 straipsnių"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:26
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:12
|
||||
#: templates/djangocms_blog/plugins/latest_entries.html:7
|
||||
#: templates/djangocms_blog/plugins/tags.html:17
|
||||
#: templates/djangocms_blog/post_list.html:21
|
||||
msgid "No article found."
|
||||
msgstr "Nerasta jokių straipsnių."
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:3
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:3
|
||||
msgid "Authors"
|
||||
msgstr "Autoriai"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:15
|
||||
msgid "No author found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:7
|
||||
#: templates/djangocms_blog/post_list.html:11
|
||||
msgid "Articles by"
|
||||
msgstr "Straipsniai pagal"
|
||||
|
||||
#: templates/djangocms_blog/plugins/categories.html:15
|
||||
msgid "No categories found."
|
||||
msgstr "Nerasta jokių kategorijų."
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:13
|
||||
msgid "Tag"
|
||||
msgstr "Žymena"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:24
|
||||
msgid "Back"
|
||||
msgstr "Atgal"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:29
|
||||
msgid "previous"
|
||||
msgstr "buvęs"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "Page"
|
||||
msgstr "Puslapis"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "of"
|
||||
msgstr "iš"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:35
|
||||
msgid "next"
|
||||
msgstr "kitas"
|
||||
763
djangocms_blog/locale/nb_NO/LC_MESSAGES/django.po
Normal file
763
djangocms_blog/locale/nb_NO/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,763 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# fivethreeo <oyvind.saltvik@gmail.com>, 2016
|
||||
# fivethreeo <oyvind.saltvik@gmail.com>, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: djangocms-blog\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-30 11:04+0200\n"
|
||||
"PO-Revision-Date: 2014-03-29 15:29+0000\n"
|
||||
"Last-Translator: fivethreeo <oyvind.saltvik@gmail.com>, 2016\n"
|
||||
"Language-Team: Norwegian Bokmål (Norway) (http://app.transifex.com/nephila/djangocms-blog/language/nb_NO/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: nb_NO\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: admin.py:65
|
||||
msgid "site"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:131
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:138
|
||||
msgid "Images"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:141
|
||||
msgid "SEO"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:172
|
||||
msgid "Publish selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:194
|
||||
msgid "Unpublish selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:207
|
||||
msgid "Enable comments for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:221
|
||||
msgid "Disable comments for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:235
|
||||
msgid "Enable liveblog for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:249
|
||||
msgid "Disable liveblog for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:473
|
||||
msgid "Generic"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:485
|
||||
msgid "Layout"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:499
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:503
|
||||
msgid "Sitemap"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:512
|
||||
msgid "Meta"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:524 admin.py:535 admin.py:545
|
||||
msgid "You can provide plain strings, Post model attribute or method names"
|
||||
msgstr "Du kan bruke vanlige strenger, Post modell attributt eller metodenavn"
|
||||
|
||||
#: apps.py:7
|
||||
msgid "django CMS Blog"
|
||||
msgstr "django CMS Blog"
|
||||
|
||||
#: cms_appconfig.py:19
|
||||
msgid "application title"
|
||||
msgstr "applikasjonstittel"
|
||||
|
||||
#: cms_appconfig.py:20
|
||||
msgid "object name"
|
||||
msgstr "objekt navn"
|
||||
|
||||
#: cms_appconfig.py:24
|
||||
msgid "blog config"
|
||||
msgstr "bloggkonfigurasjon"
|
||||
|
||||
#: cms_appconfig.py:25
|
||||
msgid "blog configs"
|
||||
msgstr "bloggkonfigurasjoner"
|
||||
|
||||
#: cms_appconfig.py:28
|
||||
msgid "untitled"
|
||||
msgstr "uten tittel"
|
||||
|
||||
#: cms_appconfig.py:54
|
||||
msgid "Post published by default"
|
||||
msgstr "Publiser Post automatisk"
|
||||
|
||||
#: cms_appconfig.py:58
|
||||
msgid "Default size of full images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:61
|
||||
msgid ""
|
||||
"If left empty the image size will have to be set for every newly created "
|
||||
"post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:65
|
||||
msgid "Default size of thumbnail images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:68
|
||||
msgid ""
|
||||
"If left empty the thumbnail image size will have to be set for every newly "
|
||||
"created post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:72
|
||||
msgid "Permalink structure"
|
||||
msgstr "Permanent link struktur"
|
||||
|
||||
#: cms_appconfig.py:79
|
||||
msgid "Use placeholder and plugins for article body"
|
||||
msgstr "Bruk plassholder og plugin for artikkelinnhold"
|
||||
|
||||
#: cms_appconfig.py:83
|
||||
msgid "Use abstract field"
|
||||
msgstr "Bruk abstrakt felt"
|
||||
|
||||
#: cms_appconfig.py:87
|
||||
msgid "Enable related posts"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:91
|
||||
msgid "Set author"
|
||||
msgstr "Sett forfatter"
|
||||
|
||||
#: cms_appconfig.py:93
|
||||
msgid "Set author by default"
|
||||
msgstr "Sett forfatter automatisk"
|
||||
|
||||
#: cms_appconfig.py:98
|
||||
msgid "Paginate size"
|
||||
msgstr "Sidevisningsstørrelse"
|
||||
|
||||
#: cms_appconfig.py:101
|
||||
msgid "When paginating list views, how many articles per page?"
|
||||
msgstr "Ved sidevisning av liste views, hvor mange artikler per side?"
|
||||
|
||||
#: cms_appconfig.py:105
|
||||
msgid "Template prefix"
|
||||
msgstr "Template prefix"
|
||||
|
||||
#: cms_appconfig.py:108
|
||||
msgid "Alternative directory to load the blog templates from"
|
||||
msgstr "Alternativ mappe for å laste blogg templates fra"
|
||||
|
||||
#: cms_appconfig.py:112
|
||||
msgid "Menu structure"
|
||||
msgstr "Menystruktur"
|
||||
|
||||
#: cms_appconfig.py:116
|
||||
msgid "Structure of the django CMS menu"
|
||||
msgstr "Strukturen på django CMS menyen"
|
||||
|
||||
#: cms_appconfig.py:120
|
||||
msgid "Show empty categories in menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:123
|
||||
msgid "Show categories with no post attached in the menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:128
|
||||
msgid "Sitemap changefreq"
|
||||
msgstr "Sidekart endringsfrekvens"
|
||||
|
||||
#: cms_appconfig.py:132
|
||||
msgid "Changefreq attribute for sitemap items"
|
||||
msgstr "Changefreq attributt for sidekartelementer"
|
||||
|
||||
#: cms_appconfig.py:136
|
||||
msgid "Sitemap priority"
|
||||
msgstr "Sidekartprioritet"
|
||||
|
||||
#: cms_appconfig.py:139
|
||||
msgid "Priority attribute for sitemap items"
|
||||
msgstr "Priority attributt fir sidekartelementer"
|
||||
|
||||
#: cms_appconfig.py:143
|
||||
msgid "Object type"
|
||||
msgstr "Objekttype"
|
||||
|
||||
#: cms_appconfig.py:147
|
||||
msgid "Facebook type"
|
||||
msgstr "Facebooktype"
|
||||
|
||||
#: cms_appconfig.py:151
|
||||
msgid "Facebook application ID"
|
||||
msgstr "Facebook applikasjonsid"
|
||||
|
||||
#: cms_appconfig.py:155
|
||||
msgid "Facebook profile ID"
|
||||
msgstr "Facebook profilid"
|
||||
|
||||
#: cms_appconfig.py:159
|
||||
msgid "Facebook page URL"
|
||||
msgstr "Facebook sideadresse"
|
||||
|
||||
#: cms_appconfig.py:163
|
||||
msgid "Facebook author URL"
|
||||
msgstr "Facebook forfatteradresse"
|
||||
|
||||
#: cms_appconfig.py:167
|
||||
msgid "Facebook author"
|
||||
msgstr "Facebook forfatter"
|
||||
|
||||
#: cms_appconfig.py:171
|
||||
msgid "Twitter type"
|
||||
msgstr "Twittertype"
|
||||
|
||||
#: cms_appconfig.py:178
|
||||
msgid "Twitter site handle"
|
||||
msgstr "Twitter sidenavn"
|
||||
|
||||
#: cms_appconfig.py:182
|
||||
msgid "Twitter author handle"
|
||||
msgstr "Twitter forfatternavn"
|
||||
|
||||
#: cms_appconfig.py:186
|
||||
msgid "Schema.org type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:193
|
||||
msgid "Schema.org author name"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:197
|
||||
msgid "Send notifications on post publish"
|
||||
msgstr "Send notifikasjoner når post publiseres"
|
||||
|
||||
#: cms_appconfig.py:200
|
||||
msgid "Emits a desktop notification -if enabled- when publishing a new post"
|
||||
msgstr "Gir fra seg en skrivebordsnotifikasjon -hvis slått på- når en ny post publiseres"
|
||||
|
||||
#: cms_appconfig.py:204
|
||||
msgid "Send notifications on post update"
|
||||
msgstr "Send notifikasjoner når poster oppdateres"
|
||||
|
||||
#: cms_appconfig.py:207
|
||||
msgid ""
|
||||
"Emits a desktop notification -if enabled- when editing a published post"
|
||||
msgstr "Gir fra seg en skrivebordsnotifikasjon -hvis slått på- når en publisert post redigeres"
|
||||
|
||||
#: cms_apps.py:13 cms_toolbars.py:17 settings.py:485
|
||||
msgid "Blog"
|
||||
msgstr "Blogg"
|
||||
|
||||
#: cms_menus.py:26
|
||||
msgid "Blog menu"
|
||||
msgstr "Bloggmeny"
|
||||
|
||||
#: cms_toolbars.py:20
|
||||
msgid "Post list"
|
||||
msgstr "Postliste"
|
||||
|
||||
#: cms_toolbars.py:23
|
||||
msgid "Category list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:26
|
||||
msgid "Tag list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:29
|
||||
msgid "Add post"
|
||||
msgstr "Legg til post"
|
||||
|
||||
#: cms_toolbars.py:33
|
||||
msgid "Edit configuration"
|
||||
msgstr "Rediger konfigurasjon"
|
||||
|
||||
#: cms_toolbars.py:38
|
||||
msgid "Edit Post"
|
||||
msgstr "Rediger Post"
|
||||
|
||||
#: cms_toolbars.py:53
|
||||
#, python-brace-format
|
||||
msgid "Publish {0} now"
|
||||
msgstr "Publiser {0} nå"
|
||||
|
||||
#: cms_wizards.py:22
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:25
|
||||
msgid "Leave empty for automatic slug, or override as required."
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:105
|
||||
#, python-brace-format
|
||||
msgid "New {0}"
|
||||
msgstr "Ny {0}"
|
||||
|
||||
#: cms_wizards.py:109
|
||||
#, python-brace-format
|
||||
msgid "Create a new {0} in {1}"
|
||||
msgstr "Opprett en ny {0} i {1}"
|
||||
|
||||
#: feeds.py:39
|
||||
#, python-format
|
||||
msgid "Blog articles on %(site_name)s"
|
||||
msgstr "Bloggartikler på %(site_name)s"
|
||||
|
||||
#: liveblog/apps.py:7
|
||||
msgid "Liveblog"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/cms_plugins.py:13
|
||||
msgid "Liveblog item"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:27
|
||||
msgid "publish liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:28
|
||||
msgid "post date"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:31 liveblog/models.py:111
|
||||
msgid "liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:32 liveblog/models.py:112
|
||||
msgid "liveblog entries"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:93 models.py:252
|
||||
msgid "title"
|
||||
msgstr "tittel"
|
||||
|
||||
#: liveblog/models.py:95
|
||||
msgid "image"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:103
|
||||
msgid "thumbnail size"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:95
|
||||
msgid "parent"
|
||||
msgstr "forelder"
|
||||
|
||||
#: models.py:97
|
||||
msgid "created at"
|
||||
msgstr "opprettet"
|
||||
|
||||
#: models.py:98
|
||||
msgid "modified at"
|
||||
msgstr "endret"
|
||||
|
||||
#: models.py:99 models.py:249 models.py:491
|
||||
msgid "app. config"
|
||||
msgstr "app. konfig"
|
||||
|
||||
#: models.py:102
|
||||
msgid "name"
|
||||
msgstr "navn"
|
||||
|
||||
#: models.py:103 models.py:254
|
||||
msgid "slug"
|
||||
msgstr "slug"
|
||||
|
||||
#: models.py:104
|
||||
msgid "category meta description"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:132
|
||||
msgid "blog category"
|
||||
msgstr "bloggkategori"
|
||||
|
||||
#: models.py:133
|
||||
msgid "blog categories"
|
||||
msgstr "bloggkategorier"
|
||||
|
||||
#: models.py:169
|
||||
msgid "BlogCategory (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:196
|
||||
msgid "author"
|
||||
msgstr "forfatter"
|
||||
|
||||
#: models.py:203
|
||||
msgid "created"
|
||||
msgstr "opprettet"
|
||||
|
||||
#: models.py:204
|
||||
msgid "last modified"
|
||||
msgstr "sist endret"
|
||||
|
||||
#: models.py:205
|
||||
msgid "published since"
|
||||
msgstr "publisert siden"
|
||||
|
||||
#: models.py:206
|
||||
msgid "published until"
|
||||
msgstr "publisert inntil"
|
||||
|
||||
#: models.py:207
|
||||
msgid "featured date"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:208
|
||||
msgid "publish"
|
||||
msgstr "publiser"
|
||||
|
||||
#: models.py:209
|
||||
msgid "include in RSS feed"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:211
|
||||
msgid "category"
|
||||
msgstr "kategori"
|
||||
|
||||
#: models.py:214
|
||||
msgid "main image"
|
||||
msgstr "hovedbilde"
|
||||
|
||||
#: models.py:222
|
||||
msgid "main image thumbnail"
|
||||
msgstr "hovedbilde i miniatyr"
|
||||
|
||||
#: models.py:230
|
||||
msgid "main image full"
|
||||
msgstr "hovedbilde i fullstørrelse "
|
||||
|
||||
#: models.py:237
|
||||
msgid "enable comments on post"
|
||||
msgstr "slå på kommentarer ved posting"
|
||||
|
||||
#: models.py:241
|
||||
msgid "Site(s)"
|
||||
msgstr "Nettsted"
|
||||
|
||||
#: models.py:244
|
||||
msgid ""
|
||||
"Select sites in which to show the post. If none is set it will be visible in"
|
||||
" all the configured sites."
|
||||
msgstr "Velg nettstedene du vil vise denne posten på. Hvis satt til ingen vil den vises på alle de konfigurerte nettstedene."
|
||||
|
||||
#: models.py:256
|
||||
msgid "subtitle"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:257
|
||||
msgid "abstract"
|
||||
msgstr "abstrakt"
|
||||
|
||||
#: models.py:258
|
||||
msgid "post meta description"
|
||||
msgstr "post meta beskrivelse"
|
||||
|
||||
#: models.py:259
|
||||
msgid "post meta keywords"
|
||||
msgstr "post meta nøkkelord"
|
||||
|
||||
#: models.py:261
|
||||
msgid "post meta title"
|
||||
msgstr "post meta tittel"
|
||||
|
||||
#: models.py:262
|
||||
msgid "used in title tag and social sharing"
|
||||
msgstr "brukes i title taggen og sosial deling"
|
||||
|
||||
#: models.py:267
|
||||
msgid "text"
|
||||
msgstr "tekst"
|
||||
|
||||
#: models.py:273
|
||||
msgid "enable liveblog on post"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:279
|
||||
msgid ""
|
||||
"Type a tag and hit tab, or start typing and select from autocomplete list."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:282
|
||||
msgid "Related Posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:314
|
||||
msgid "blog article"
|
||||
msgstr "bloggartikkel"
|
||||
|
||||
#: models.py:315
|
||||
msgid "blog articles"
|
||||
msgstr "bloggartikler"
|
||||
|
||||
#: models.py:320
|
||||
msgid "Post (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "current site"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "Select items from the current site only"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:497
|
||||
msgid "Plugin template"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:498
|
||||
msgid "Select plugin template to load for this instance"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:536 models.py:578
|
||||
msgid "articles"
|
||||
msgstr "artikler"
|
||||
|
||||
#: models.py:538
|
||||
msgid "The number of latests articles to be displayed."
|
||||
msgstr "Antall siste artikler som skal vises"
|
||||
|
||||
#: models.py:541
|
||||
msgid "filter by tag"
|
||||
msgstr "filtrer etter tagg"
|
||||
|
||||
#: models.py:543
|
||||
msgid "Show only the blog articles tagged with chosen tags."
|
||||
msgstr "Vis bare bloggartikler tagget med valgte tagger."
|
||||
|
||||
#: models.py:549
|
||||
msgid "filter by category"
|
||||
msgstr "filtrer etter kategori"
|
||||
|
||||
#: models.py:550
|
||||
msgid "Show only the blog articles tagged with chosen categories."
|
||||
msgstr "Vis bare bloggartikler med valgte kategorier."
|
||||
|
||||
#: models.py:554
|
||||
#, python-format
|
||||
msgid "%s latest articles by tag"
|
||||
msgstr "%s siste artikler etter tagg"
|
||||
|
||||
#: models.py:574
|
||||
msgid "authors"
|
||||
msgstr "forfattere"
|
||||
|
||||
#: models.py:580
|
||||
msgid "The number of author articles to be displayed."
|
||||
msgstr "Antall forfatterartikler som skal vises."
|
||||
|
||||
#: models.py:584
|
||||
#, python-format
|
||||
msgid "%s latest articles by author"
|
||||
msgstr "%s siste artikler av forfatter"
|
||||
|
||||
#: models.py:605 models.py:608
|
||||
msgid "Featured posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:623
|
||||
msgid "generic blog plugin"
|
||||
msgstr "generisk bloggplugin"
|
||||
|
||||
#: settings.py:26
|
||||
msgid "Full date"
|
||||
msgstr "Full dato"
|
||||
|
||||
#: settings.py:27
|
||||
msgid "Year / Month"
|
||||
msgstr "År / Måned"
|
||||
|
||||
#: settings.py:28 templates/djangocms_blog/post_list.html:14
|
||||
msgid "Category"
|
||||
msgstr "Kategori"
|
||||
|
||||
#: settings.py:29
|
||||
msgid "Just slug"
|
||||
msgstr "Bare slug"
|
||||
|
||||
#: settings.py:59
|
||||
msgid "Categories and posts"
|
||||
msgstr "Kategorier og poster"
|
||||
|
||||
#: settings.py:60
|
||||
msgid "Categories only"
|
||||
msgstr "Bare kategorier"
|
||||
|
||||
#: settings.py:61
|
||||
msgid "Posts only"
|
||||
msgstr "Bare poster"
|
||||
|
||||
#: settings.py:62
|
||||
msgid "None"
|
||||
msgstr "Ingen"
|
||||
|
||||
#: settings.py:71
|
||||
msgid "always"
|
||||
msgstr "alltid"
|
||||
|
||||
#: settings.py:72
|
||||
msgid "hourly"
|
||||
msgstr "hver time"
|
||||
|
||||
#: settings.py:73
|
||||
msgid "daily"
|
||||
msgstr "daglig"
|
||||
|
||||
#: settings.py:74
|
||||
msgid "weekly"
|
||||
msgstr "ukentlig"
|
||||
|
||||
#: settings.py:75
|
||||
msgid "monthly"
|
||||
msgstr "månedlig"
|
||||
|
||||
#: settings.py:76
|
||||
msgid "yearly"
|
||||
msgstr "årlig"
|
||||
|
||||
#: settings.py:77
|
||||
msgid "never"
|
||||
msgstr "aldri"
|
||||
|
||||
#: settings.py:492
|
||||
msgid "Latest Blog Articles"
|
||||
msgstr "Siste Bloggartikler"
|
||||
|
||||
#: settings.py:499
|
||||
msgid "Latest Blog Articles - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:506
|
||||
msgid "Author Blog Articles"
|
||||
msgstr "Forfatters Bloggartikler"
|
||||
|
||||
#: settings.py:513
|
||||
msgid "Author Blog Articles List"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:520 templates/djangocms_blog/plugins/tags.html:5
|
||||
msgid "Tags"
|
||||
msgstr "Tagger"
|
||||
|
||||
#: settings.py:527 templates/djangocms_blog/plugins/categories.html:3
|
||||
msgid "Categories"
|
||||
msgstr "Kategorier"
|
||||
|
||||
#: settings.py:534 templates/djangocms_blog/plugins/archive.html:3
|
||||
#: templates/djangocms_blog/post_list.html:12
|
||||
msgid "Archive"
|
||||
msgstr "Arkiv"
|
||||
|
||||
#: settings.py:541
|
||||
msgid "Featured Posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:548
|
||||
msgid "Featured Posts - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:590
|
||||
msgid "Default template"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr "les mer"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr "av"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:17
|
||||
#: templates/djangocms_blog/plugins/authors.html:10
|
||||
#: templates/djangocms_blog/plugins/categories.html:10
|
||||
#: templates/djangocms_blog/plugins/tags.html:12
|
||||
#, python-format
|
||||
msgid "1 article"
|
||||
msgid_plural "%(articles)s articles"
|
||||
msgstr[0] "1 artikkel"
|
||||
msgstr[1] "%(articles)s artikler"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:18
|
||||
#: templates/djangocms_blog/plugins/authors.html:11
|
||||
#: templates/djangocms_blog/plugins/categories.html:11
|
||||
#: templates/djangocms_blog/plugins/tags.html:13
|
||||
msgid "0 articles"
|
||||
msgstr "0 artikler"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:26
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:12
|
||||
#: templates/djangocms_blog/plugins/latest_entries.html:7
|
||||
#: templates/djangocms_blog/plugins/tags.html:17
|
||||
#: templates/djangocms_blog/post_list.html:21
|
||||
msgid "No article found."
|
||||
msgstr "Ingen artikler funnet."
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:3
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:3
|
||||
msgid "Authors"
|
||||
msgstr "Forfattere"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:15
|
||||
msgid "No author found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:7
|
||||
#: templates/djangocms_blog/post_list.html:11
|
||||
msgid "Articles by"
|
||||
msgstr "Artikler av"
|
||||
|
||||
#: templates/djangocms_blog/plugins/categories.html:15
|
||||
msgid "No categories found."
|
||||
msgstr "Ingen kategorier funnet."
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:13
|
||||
msgid "Tag"
|
||||
msgstr "Tagg"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:24
|
||||
msgid "Back"
|
||||
msgstr "Tilbake"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:29
|
||||
msgid "previous"
|
||||
msgstr "forrige"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "Page"
|
||||
msgstr "side"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "of"
|
||||
msgstr "av"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:35
|
||||
msgid "next"
|
||||
msgstr "neste"
|
||||
763
djangocms_blog/locale/nl/LC_MESSAGES/django.po
Normal file
763
djangocms_blog/locale/nl/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,763 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# 9b534940ba88da102a8b2023ae8b0a5c_833de33 <6eff1839cb13e50fd6e97f7bd38c9dda_152118>, 2016
|
||||
# Zingende Vogel <zingendevogel@gmail.com>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: djangocms-blog\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-30 11:04+0200\n"
|
||||
"PO-Revision-Date: 2014-03-29 15:29+0000\n"
|
||||
"Last-Translator: Zingende Vogel <zingendevogel@gmail.com>, 2018\n"
|
||||
"Language-Team: Dutch (http://app.transifex.com/nephila/djangocms-blog/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"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: admin.py:65
|
||||
msgid "site"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:131
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:138
|
||||
msgid "Images"
|
||||
msgstr "Afbeeldingen"
|
||||
|
||||
#: admin.py:141
|
||||
msgid "SEO"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:172
|
||||
msgid "Publish selection"
|
||||
msgstr "Publiceer selectie"
|
||||
|
||||
#: admin.py:194
|
||||
msgid "Unpublish selection"
|
||||
msgstr "Maak publicatie selectie ongedaan"
|
||||
|
||||
#: admin.py:207
|
||||
msgid "Enable comments for selection"
|
||||
msgstr "Sta reacties voor selectie toe"
|
||||
|
||||
#: admin.py:221
|
||||
msgid "Disable comments for selection "
|
||||
msgstr "Reacties voor selectie uitschakelen"
|
||||
|
||||
#: admin.py:235
|
||||
msgid "Enable liveblog for selection"
|
||||
msgstr "Activeer liveblog voor selectie"
|
||||
|
||||
#: admin.py:249
|
||||
msgid "Disable liveblog for selection "
|
||||
msgstr "Schakel liveblog uit voor selectie"
|
||||
|
||||
#: admin.py:473
|
||||
msgid "Generic"
|
||||
msgstr "Algemeen"
|
||||
|
||||
#: admin.py:485
|
||||
msgid "Layout"
|
||||
msgstr "Layout"
|
||||
|
||||
#: admin.py:499
|
||||
msgid "Notifications"
|
||||
msgstr "Notificaties"
|
||||
|
||||
#: admin.py:503
|
||||
msgid "Sitemap"
|
||||
msgstr "Sitemap"
|
||||
|
||||
#: admin.py:512
|
||||
msgid "Meta"
|
||||
msgstr "Meta"
|
||||
|
||||
#: admin.py:524 admin.py:535 admin.py:545
|
||||
msgid "You can provide plain strings, Post model attribute or method names"
|
||||
msgstr "Je kan gewone strings opgeven, een Bericht model attribuut of methode namen"
|
||||
|
||||
#: apps.py:7
|
||||
msgid "django CMS Blog"
|
||||
msgstr "django CMS Blog"
|
||||
|
||||
#: cms_appconfig.py:19
|
||||
msgid "application title"
|
||||
msgstr "applicatie titel"
|
||||
|
||||
#: cms_appconfig.py:20
|
||||
msgid "object name"
|
||||
msgstr "object naam"
|
||||
|
||||
#: cms_appconfig.py:24
|
||||
msgid "blog config"
|
||||
msgstr "blog configuratie"
|
||||
|
||||
#: cms_appconfig.py:25
|
||||
msgid "blog configs"
|
||||
msgstr "blog configuraties"
|
||||
|
||||
#: cms_appconfig.py:28
|
||||
msgid "untitled"
|
||||
msgstr "geen titel"
|
||||
|
||||
#: cms_appconfig.py:54
|
||||
msgid "Post published by default"
|
||||
msgstr "Berichten standaard publiceren"
|
||||
|
||||
#: cms_appconfig.py:58
|
||||
msgid "Default size of full images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:61
|
||||
msgid ""
|
||||
"If left empty the image size will have to be set for every newly created "
|
||||
"post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:65
|
||||
msgid "Default size of thumbnail images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:68
|
||||
msgid ""
|
||||
"If left empty the thumbnail image size will have to be set for every newly "
|
||||
"created post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:72
|
||||
msgid "Permalink structure"
|
||||
msgstr "Permalink opbouw"
|
||||
|
||||
#: cms_appconfig.py:79
|
||||
msgid "Use placeholder and plugins for article body"
|
||||
msgstr "Gebruik placeholder en plugins voor de inhoud van het artikel"
|
||||
|
||||
#: cms_appconfig.py:83
|
||||
msgid "Use abstract field"
|
||||
msgstr "Gebruik het excerpt veld"
|
||||
|
||||
#: cms_appconfig.py:87
|
||||
msgid "Enable related posts"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:91
|
||||
msgid "Set author"
|
||||
msgstr "Stel auteur in"
|
||||
|
||||
#: cms_appconfig.py:93
|
||||
msgid "Set author by default"
|
||||
msgstr "Standaard de auteur instellen"
|
||||
|
||||
#: cms_appconfig.py:98
|
||||
msgid "Paginate size"
|
||||
msgstr "Grootte van paginering"
|
||||
|
||||
#: cms_appconfig.py:101
|
||||
msgid "When paginating list views, how many articles per page?"
|
||||
msgstr "Wanneer overzichten worden gepagineerd, hoeveel artikelen moeten er dan per pagina getoond worden?"
|
||||
|
||||
#: cms_appconfig.py:105
|
||||
msgid "Template prefix"
|
||||
msgstr "Template prefix"
|
||||
|
||||
#: cms_appconfig.py:108
|
||||
msgid "Alternative directory to load the blog templates from"
|
||||
msgstr "Alternatieve map waaruit de blog templates geladen worden"
|
||||
|
||||
#: cms_appconfig.py:112
|
||||
msgid "Menu structure"
|
||||
msgstr "Menu opbouw"
|
||||
|
||||
#: cms_appconfig.py:116
|
||||
msgid "Structure of the django CMS menu"
|
||||
msgstr "Opbouw van het django CMS menu"
|
||||
|
||||
#: cms_appconfig.py:120
|
||||
msgid "Show empty categories in menu"
|
||||
msgstr "Toon lege categorieën in menu"
|
||||
|
||||
#: cms_appconfig.py:123
|
||||
msgid "Show categories with no post attached in the menu"
|
||||
msgstr "Toon categorieën zonder artikelen in menu"
|
||||
|
||||
#: cms_appconfig.py:128
|
||||
msgid "Sitemap changefreq"
|
||||
msgstr "Verander-frequentie van de Sitemap"
|
||||
|
||||
#: cms_appconfig.py:132
|
||||
msgid "Changefreq attribute for sitemap items"
|
||||
msgstr "Verander-frequentie attribuut voor sitemap items"
|
||||
|
||||
#: cms_appconfig.py:136
|
||||
msgid "Sitemap priority"
|
||||
msgstr "Sitemap prioriteit"
|
||||
|
||||
#: cms_appconfig.py:139
|
||||
msgid "Priority attribute for sitemap items"
|
||||
msgstr "Prioriteit attribuut voor sitemap items"
|
||||
|
||||
#: cms_appconfig.py:143
|
||||
msgid "Object type"
|
||||
msgstr "Object type"
|
||||
|
||||
#: cms_appconfig.py:147
|
||||
msgid "Facebook type"
|
||||
msgstr "Facebook type"
|
||||
|
||||
#: cms_appconfig.py:151
|
||||
msgid "Facebook application ID"
|
||||
msgstr "Facebook applicatie ID"
|
||||
|
||||
#: cms_appconfig.py:155
|
||||
msgid "Facebook profile ID"
|
||||
msgstr "Facebook profiel ID"
|
||||
|
||||
#: cms_appconfig.py:159
|
||||
msgid "Facebook page URL"
|
||||
msgstr "Facebook pagina URL"
|
||||
|
||||
#: cms_appconfig.py:163
|
||||
msgid "Facebook author URL"
|
||||
msgstr "Facebook auteur URL"
|
||||
|
||||
#: cms_appconfig.py:167
|
||||
msgid "Facebook author"
|
||||
msgstr "Facebook auteur"
|
||||
|
||||
#: cms_appconfig.py:171
|
||||
msgid "Twitter type"
|
||||
msgstr "Twitter type"
|
||||
|
||||
#: cms_appconfig.py:178
|
||||
msgid "Twitter site handle"
|
||||
msgstr "Twitter site handle"
|
||||
|
||||
#: cms_appconfig.py:182
|
||||
msgid "Twitter author handle"
|
||||
msgstr "Twitter auteur handle"
|
||||
|
||||
#: cms_appconfig.py:186
|
||||
msgid "Schema.org type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:193
|
||||
msgid "Schema.org author name"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:197
|
||||
msgid "Send notifications on post publish"
|
||||
msgstr "Stuur melding bij publicatie bericht"
|
||||
|
||||
#: cms_appconfig.py:200
|
||||
msgid "Emits a desktop notification -if enabled- when publishing a new post"
|
||||
msgstr "Verstuur desktop notificatie, mits het aan staat, als een nieuw bericht gepubliceerd wordt"
|
||||
|
||||
#: cms_appconfig.py:204
|
||||
msgid "Send notifications on post update"
|
||||
msgstr "Stuur meldingen bij update bericht"
|
||||
|
||||
#: cms_appconfig.py:207
|
||||
msgid ""
|
||||
"Emits a desktop notification -if enabled- when editing a published post"
|
||||
msgstr "Verstuur desktop notificatie, mits het aan staat, als een nieuw bericht gewijzigd wordt"
|
||||
|
||||
#: cms_apps.py:13 cms_toolbars.py:17 settings.py:485
|
||||
msgid "Blog"
|
||||
msgstr "Blog"
|
||||
|
||||
#: cms_menus.py:26
|
||||
msgid "Blog menu"
|
||||
msgstr "Blog menu"
|
||||
|
||||
#: cms_toolbars.py:20
|
||||
msgid "Post list"
|
||||
msgstr "Overzicht van Berichten"
|
||||
|
||||
#: cms_toolbars.py:23
|
||||
msgid "Category list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:26
|
||||
msgid "Tag list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:29
|
||||
msgid "Add post"
|
||||
msgstr "Bericht toevoegen"
|
||||
|
||||
#: cms_toolbars.py:33
|
||||
msgid "Edit configuration"
|
||||
msgstr "Wijzig configuratie"
|
||||
|
||||
#: cms_toolbars.py:38
|
||||
msgid "Edit Post"
|
||||
msgstr "Wijzig Bericht"
|
||||
|
||||
#: cms_toolbars.py:53
|
||||
#, python-brace-format
|
||||
msgid "Publish {0} now"
|
||||
msgstr "Publiceer {0} nu"
|
||||
|
||||
#: cms_wizards.py:22
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:25
|
||||
msgid "Leave empty for automatic slug, or override as required."
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:105
|
||||
#, python-brace-format
|
||||
msgid "New {0}"
|
||||
msgstr "Nieuwe {0}"
|
||||
|
||||
#: cms_wizards.py:109
|
||||
#, python-brace-format
|
||||
msgid "Create a new {0} in {1}"
|
||||
msgstr "Maak een nieuwe {0} in {1}"
|
||||
|
||||
#: feeds.py:39
|
||||
#, python-format
|
||||
msgid "Blog articles on %(site_name)s"
|
||||
msgstr "Blog artikelen op %(site_name)s"
|
||||
|
||||
#: liveblog/apps.py:7
|
||||
msgid "Liveblog"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/cms_plugins.py:13
|
||||
msgid "Liveblog item"
|
||||
msgstr "Liveblog artikel"
|
||||
|
||||
#: liveblog/models.py:27
|
||||
msgid "publish liveblog entry"
|
||||
msgstr "Publiceer liveblog artikel"
|
||||
|
||||
#: liveblog/models.py:28
|
||||
msgid "post date"
|
||||
msgstr "Post datum"
|
||||
|
||||
#: liveblog/models.py:31 liveblog/models.py:111
|
||||
msgid "liveblog entry"
|
||||
msgstr "liveblog artikel"
|
||||
|
||||
#: liveblog/models.py:32 liveblog/models.py:112
|
||||
msgid "liveblog entries"
|
||||
msgstr "liveblog artikelen"
|
||||
|
||||
#: liveblog/models.py:93 models.py:252
|
||||
msgid "title"
|
||||
msgstr "title"
|
||||
|
||||
#: liveblog/models.py:95
|
||||
msgid "image"
|
||||
msgstr "afbeelding"
|
||||
|
||||
#: liveblog/models.py:103
|
||||
msgid "thumbnail size"
|
||||
msgstr "thumbnail afmeting"
|
||||
|
||||
#: models.py:95
|
||||
msgid "parent"
|
||||
msgstr "bovenliggende"
|
||||
|
||||
#: models.py:97
|
||||
msgid "created at"
|
||||
msgstr "aangemaakt op"
|
||||
|
||||
#: models.py:98
|
||||
msgid "modified at"
|
||||
msgstr "gewijzigd op"
|
||||
|
||||
#: models.py:99 models.py:249 models.py:491
|
||||
msgid "app. config"
|
||||
msgstr "applicatie configuratie"
|
||||
|
||||
#: models.py:102
|
||||
msgid "name"
|
||||
msgstr "naam"
|
||||
|
||||
#: models.py:103 models.py:254
|
||||
msgid "slug"
|
||||
msgstr "slug"
|
||||
|
||||
#: models.py:104
|
||||
msgid "category meta description"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:132
|
||||
msgid "blog category"
|
||||
msgstr "blog categorie"
|
||||
|
||||
#: models.py:133
|
||||
msgid "blog categories"
|
||||
msgstr "blog categorieën"
|
||||
|
||||
#: models.py:169
|
||||
msgid "BlogCategory (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:196
|
||||
msgid "author"
|
||||
msgstr "auteur"
|
||||
|
||||
#: models.py:203
|
||||
msgid "created"
|
||||
msgstr "aangemaakt"
|
||||
|
||||
#: models.py:204
|
||||
msgid "last modified"
|
||||
msgstr "laatst gewijzigd"
|
||||
|
||||
#: models.py:205
|
||||
msgid "published since"
|
||||
msgstr "gepubliceerd sinds"
|
||||
|
||||
#: models.py:206
|
||||
msgid "published until"
|
||||
msgstr "gepubliceerd tot"
|
||||
|
||||
#: models.py:207
|
||||
msgid "featured date"
|
||||
msgstr "feature datum"
|
||||
|
||||
#: models.py:208
|
||||
msgid "publish"
|
||||
msgstr "publiceer"
|
||||
|
||||
#: models.py:209
|
||||
msgid "include in RSS feed"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:211
|
||||
msgid "category"
|
||||
msgstr "categorie"
|
||||
|
||||
#: models.py:214
|
||||
msgid "main image"
|
||||
msgstr "hoofd afbeelding"
|
||||
|
||||
#: models.py:222
|
||||
msgid "main image thumbnail"
|
||||
msgstr "hoofd afbeelding thumbnail"
|
||||
|
||||
#: models.py:230
|
||||
msgid "main image full"
|
||||
msgstr "hoofd afbeelding volledig"
|
||||
|
||||
#: models.py:237
|
||||
msgid "enable comments on post"
|
||||
msgstr "sta reacties toe op bericht"
|
||||
|
||||
#: models.py:241
|
||||
msgid "Site(s)"
|
||||
msgstr "Site(s)"
|
||||
|
||||
#: models.py:244
|
||||
msgid ""
|
||||
"Select sites in which to show the post. If none is set it will be visible in"
|
||||
" all the configured sites."
|
||||
msgstr "Selecteer sites die het bericht moeten tonen. Als geen site ingesteld wordt, dan is het zichtbaar voor alle geconfigureerde sites."
|
||||
|
||||
#: models.py:256
|
||||
msgid "subtitle"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:257
|
||||
msgid "abstract"
|
||||
msgstr "korte samenvatting"
|
||||
|
||||
#: models.py:258
|
||||
msgid "post meta description"
|
||||
msgstr "meta omschrijving van bericht"
|
||||
|
||||
#: models.py:259
|
||||
msgid "post meta keywords"
|
||||
msgstr "meta sleutelwoorden van bericht "
|
||||
|
||||
#: models.py:261
|
||||
msgid "post meta title"
|
||||
msgstr "meta titel van bericht"
|
||||
|
||||
#: models.py:262
|
||||
msgid "used in title tag and social sharing"
|
||||
msgstr "wordt gebruikt in de titel tag en bij het delen via sociale media"
|
||||
|
||||
#: models.py:267
|
||||
msgid "text"
|
||||
msgstr "tekst"
|
||||
|
||||
#: models.py:273
|
||||
msgid "enable liveblog on post"
|
||||
msgstr "activeer liveblog voor post"
|
||||
|
||||
#: models.py:279
|
||||
msgid ""
|
||||
"Type a tag and hit tab, or start typing and select from autocomplete list."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:282
|
||||
msgid "Related Posts"
|
||||
msgstr "Gerelateerde artikelen"
|
||||
|
||||
#: models.py:314
|
||||
msgid "blog article"
|
||||
msgstr "blog artikel"
|
||||
|
||||
#: models.py:315
|
||||
msgid "blog articles"
|
||||
msgstr "blog artikelen"
|
||||
|
||||
#: models.py:320
|
||||
msgid "Post (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "current site"
|
||||
msgstr "huidige site"
|
||||
|
||||
#: models.py:493
|
||||
msgid "Select items from the current site only"
|
||||
msgstr "Selecteer alleen items van de huidige site"
|
||||
|
||||
#: models.py:497
|
||||
msgid "Plugin template"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:498
|
||||
msgid "Select plugin template to load for this instance"
|
||||
msgstr "Selecteer plugin template voor deze instance"
|
||||
|
||||
#: models.py:536 models.py:578
|
||||
msgid "articles"
|
||||
msgstr "artikelen"
|
||||
|
||||
#: models.py:538
|
||||
msgid "The number of latests articles to be displayed."
|
||||
msgstr "Het aantal nieuwste berichten om te tonen."
|
||||
|
||||
#: models.py:541
|
||||
msgid "filter by tag"
|
||||
msgstr "filter op tag"
|
||||
|
||||
#: models.py:543
|
||||
msgid "Show only the blog articles tagged with chosen tags."
|
||||
msgstr "Alleen blog artikelen tonen die gekoppeld zijn aan de gekozen tags."
|
||||
|
||||
#: models.py:549
|
||||
msgid "filter by category"
|
||||
msgstr "filter op categorie"
|
||||
|
||||
#: models.py:550
|
||||
msgid "Show only the blog articles tagged with chosen categories."
|
||||
msgstr "Alleen blog artikelen tonen die gekoppeld zijn aan de gekozen categorieën."
|
||||
|
||||
#: models.py:554
|
||||
#, python-format
|
||||
msgid "%s latest articles by tag"
|
||||
msgstr "%s nieuwste artikelen met tag"
|
||||
|
||||
#: models.py:574
|
||||
msgid "authors"
|
||||
msgstr "auteurs"
|
||||
|
||||
#: models.py:580
|
||||
msgid "The number of author articles to be displayed."
|
||||
msgstr "Het aantal artikelen door auteur om te tonen."
|
||||
|
||||
#: models.py:584
|
||||
#, python-format
|
||||
msgid "%s latest articles by author"
|
||||
msgstr "%s nieuwste artikelen door auteur"
|
||||
|
||||
#: models.py:605 models.py:608
|
||||
msgid "Featured posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:623
|
||||
msgid "generic blog plugin"
|
||||
msgstr "generieke blog plugin"
|
||||
|
||||
#: settings.py:26
|
||||
msgid "Full date"
|
||||
msgstr "Volledige datum"
|
||||
|
||||
#: settings.py:27
|
||||
msgid "Year / Month"
|
||||
msgstr "Jaar / Maand"
|
||||
|
||||
#: settings.py:28 templates/djangocms_blog/post_list.html:14
|
||||
msgid "Category"
|
||||
msgstr "Categorie"
|
||||
|
||||
#: settings.py:29
|
||||
msgid "Just slug"
|
||||
msgstr "Alleen slug"
|
||||
|
||||
#: settings.py:59
|
||||
msgid "Categories and posts"
|
||||
msgstr "Categorieën en berichten"
|
||||
|
||||
#: settings.py:60
|
||||
msgid "Categories only"
|
||||
msgstr "Alleen Categorieën"
|
||||
|
||||
#: settings.py:61
|
||||
msgid "Posts only"
|
||||
msgstr "Alleen Berichten"
|
||||
|
||||
#: settings.py:62
|
||||
msgid "None"
|
||||
msgstr "Geen"
|
||||
|
||||
#: settings.py:71
|
||||
msgid "always"
|
||||
msgstr "altijd"
|
||||
|
||||
#: settings.py:72
|
||||
msgid "hourly"
|
||||
msgstr "elk uur"
|
||||
|
||||
#: settings.py:73
|
||||
msgid "daily"
|
||||
msgstr "elke dag"
|
||||
|
||||
#: settings.py:74
|
||||
msgid "weekly"
|
||||
msgstr "elke week"
|
||||
|
||||
#: settings.py:75
|
||||
msgid "monthly"
|
||||
msgstr "elke maand"
|
||||
|
||||
#: settings.py:76
|
||||
msgid "yearly"
|
||||
msgstr "elk jaar"
|
||||
|
||||
#: settings.py:77
|
||||
msgid "never"
|
||||
msgstr "nooit"
|
||||
|
||||
#: settings.py:492
|
||||
msgid "Latest Blog Articles"
|
||||
msgstr "Nieuwste Blog Artikelen"
|
||||
|
||||
#: settings.py:499
|
||||
msgid "Latest Blog Articles - Cache"
|
||||
msgstr "Laatste Blog Artikelen - Cache"
|
||||
|
||||
#: settings.py:506
|
||||
msgid "Author Blog Articles"
|
||||
msgstr "Blog Artikelen Van Auteur"
|
||||
|
||||
#: settings.py:513
|
||||
msgid "Author Blog Articles List"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:520 templates/djangocms_blog/plugins/tags.html:5
|
||||
msgid "Tags"
|
||||
msgstr "Tags"
|
||||
|
||||
#: settings.py:527 templates/djangocms_blog/plugins/categories.html:3
|
||||
msgid "Categories"
|
||||
msgstr "Categorieën "
|
||||
|
||||
#: settings.py:534 templates/djangocms_blog/plugins/archive.html:3
|
||||
#: templates/djangocms_blog/post_list.html:12
|
||||
msgid "Archive"
|
||||
msgstr "Archief"
|
||||
|
||||
#: settings.py:541
|
||||
msgid "Featured Posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:548
|
||||
msgid "Featured Posts - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:590
|
||||
msgid "Default template"
|
||||
msgstr "Standaard template"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr "lees verder"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr "door"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:17
|
||||
#: templates/djangocms_blog/plugins/authors.html:10
|
||||
#: templates/djangocms_blog/plugins/categories.html:10
|
||||
#: templates/djangocms_blog/plugins/tags.html:12
|
||||
#, python-format
|
||||
msgid "1 article"
|
||||
msgid_plural "%(articles)s articles"
|
||||
msgstr[0] "1 artikel"
|
||||
msgstr[1] "%(articles)s artikelen"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:18
|
||||
#: templates/djangocms_blog/plugins/authors.html:11
|
||||
#: templates/djangocms_blog/plugins/categories.html:11
|
||||
#: templates/djangocms_blog/plugins/tags.html:13
|
||||
msgid "0 articles"
|
||||
msgstr "0 artikelen"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:26
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:12
|
||||
#: templates/djangocms_blog/plugins/latest_entries.html:7
|
||||
#: templates/djangocms_blog/plugins/tags.html:17
|
||||
#: templates/djangocms_blog/post_list.html:21
|
||||
msgid "No article found."
|
||||
msgstr "Geen artikelen gevonden."
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:3
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:3
|
||||
msgid "Authors"
|
||||
msgstr "Auteurs"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:15
|
||||
msgid "No author found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:7
|
||||
#: templates/djangocms_blog/post_list.html:11
|
||||
msgid "Articles by"
|
||||
msgstr "Artikelen door"
|
||||
|
||||
#: templates/djangocms_blog/plugins/categories.html:15
|
||||
msgid "No categories found."
|
||||
msgstr "Geen categorieën gevonden."
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:13
|
||||
msgid "Tag"
|
||||
msgstr "Tag"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:24
|
||||
msgid "Back"
|
||||
msgstr "Terug"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:29
|
||||
msgid "previous"
|
||||
msgstr "vorige"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "Page"
|
||||
msgstr "Pagina"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "of"
|
||||
msgstr "van"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:35
|
||||
msgid "next"
|
||||
msgstr "volgende"
|
||||
764
djangocms_blog/locale/pl_PL/LC_MESSAGES/django.po
Normal file
764
djangocms_blog/locale/pl_PL/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,764 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# marcingarbarczykapz <marcin.garbarczyk@apz.pl>, 2019
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: djangocms-blog\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-30 11:04+0200\n"
|
||||
"PO-Revision-Date: 2014-03-29 15:29+0000\n"
|
||||
"Last-Translator: marcingarbarczykapz <marcin.garbarczyk@apz.pl>, 2019\n"
|
||||
"Language-Team: Polish (Poland) (http://app.transifex.com/nephila/djangocms-blog/language/pl_PL/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pl_PL\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: admin.py:65
|
||||
msgid "site"
|
||||
msgstr "strona"
|
||||
|
||||
#: admin.py:131
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
#: admin.py:138
|
||||
msgid "Images"
|
||||
msgstr "Obrazki"
|
||||
|
||||
#: admin.py:141
|
||||
msgid "SEO"
|
||||
msgstr "SEO"
|
||||
|
||||
#: admin.py:172
|
||||
msgid "Publish selection"
|
||||
msgstr "Opublikuj zaznaczone"
|
||||
|
||||
#: admin.py:194
|
||||
msgid "Unpublish selection"
|
||||
msgstr "Ukryj zaznaczone"
|
||||
|
||||
#: admin.py:207
|
||||
msgid "Enable comments for selection"
|
||||
msgstr "Włącz komentarze dla zaznaczonych elementów"
|
||||
|
||||
#: admin.py:221
|
||||
msgid "Disable comments for selection "
|
||||
msgstr "Wyłącz komentarze dla zaznaczonych elementów"
|
||||
|
||||
#: admin.py:235
|
||||
msgid "Enable liveblog for selection"
|
||||
msgstr "Włącz liveblog dla zaznaczonych"
|
||||
|
||||
#: admin.py:249
|
||||
msgid "Disable liveblog for selection "
|
||||
msgstr "Wyłącz liveblog dla zaznaczonych"
|
||||
|
||||
#: admin.py:473
|
||||
msgid "Generic"
|
||||
msgstr "Generic"
|
||||
|
||||
#: admin.py:485
|
||||
msgid "Layout"
|
||||
msgstr "Szablon"
|
||||
|
||||
#: admin.py:499
|
||||
msgid "Notifications"
|
||||
msgstr "Powiadomienia"
|
||||
|
||||
#: admin.py:503
|
||||
msgid "Sitemap"
|
||||
msgstr "Sitemapa"
|
||||
|
||||
#: admin.py:512
|
||||
msgid "Meta"
|
||||
msgstr "Meta"
|
||||
|
||||
#: admin.py:524 admin.py:535 admin.py:545
|
||||
msgid "You can provide plain strings, Post model attribute or method names"
|
||||
msgstr "Możesz podać ciągi znaków, model lub nazwy metod"
|
||||
|
||||
#: apps.py:7
|
||||
msgid "django CMS Blog"
|
||||
msgstr "django CMS Blog"
|
||||
|
||||
#: cms_appconfig.py:19
|
||||
msgid "application title"
|
||||
msgstr "nazwa aplikacji"
|
||||
|
||||
#: cms_appconfig.py:20
|
||||
msgid "object name"
|
||||
msgstr "nazwa obiektu"
|
||||
|
||||
#: cms_appconfig.py:24
|
||||
msgid "blog config"
|
||||
msgstr "konfiguracja bloga"
|
||||
|
||||
#: cms_appconfig.py:25
|
||||
msgid "blog configs"
|
||||
msgstr "konfiguracje bloga"
|
||||
|
||||
#: cms_appconfig.py:28
|
||||
msgid "untitled"
|
||||
msgstr "bez tytułu"
|
||||
|
||||
#: cms_appconfig.py:54
|
||||
msgid "Post published by default"
|
||||
msgstr "Opublikowane posty domyślnie"
|
||||
|
||||
#: cms_appconfig.py:58
|
||||
msgid "Default size of full images"
|
||||
msgstr "Domyślny rozmiar pełnych obrazków"
|
||||
|
||||
#: cms_appconfig.py:61
|
||||
msgid ""
|
||||
"If left empty the image size will have to be set for every newly created "
|
||||
"post."
|
||||
msgstr "Jeśli pozostanie pusty, rozmiar obrazu będzie musiał zostać ustawiony dla każdego nowo utworzonego wpisu."
|
||||
|
||||
#: cms_appconfig.py:65
|
||||
msgid "Default size of thumbnail images"
|
||||
msgstr "Domyślny rozmiar miniaturek"
|
||||
|
||||
#: cms_appconfig.py:68
|
||||
msgid ""
|
||||
"If left empty the thumbnail image size will have to be set for every newly "
|
||||
"created post."
|
||||
msgstr "Jeśli pozostanie pusty, rozmiar miniatury obrazu będzie musiał zostać ustawiony dla każdego nowo utworzonego wpisu."
|
||||
|
||||
#: cms_appconfig.py:72
|
||||
msgid "Permalink structure"
|
||||
msgstr "Struktura linku"
|
||||
|
||||
#: cms_appconfig.py:79
|
||||
msgid "Use placeholder and plugins for article body"
|
||||
msgstr "Użyj placeholder i pluginy dla treści artykułu"
|
||||
|
||||
#: cms_appconfig.py:83
|
||||
msgid "Use abstract field"
|
||||
msgstr "Użyj pola abstrakcyjnego"
|
||||
|
||||
#: cms_appconfig.py:87
|
||||
msgid "Enable related posts"
|
||||
msgstr "Włącz powiązane posty"
|
||||
|
||||
#: cms_appconfig.py:91
|
||||
msgid "Set author"
|
||||
msgstr "Ustaw autora"
|
||||
|
||||
#: cms_appconfig.py:93
|
||||
msgid "Set author by default"
|
||||
msgstr "Ustaw autora domyślnie"
|
||||
|
||||
#: cms_appconfig.py:98
|
||||
msgid "Paginate size"
|
||||
msgstr "Paginacja"
|
||||
|
||||
#: cms_appconfig.py:101
|
||||
msgid "When paginating list views, how many articles per page?"
|
||||
msgstr "Jak dużo artykułów na stronę?"
|
||||
|
||||
#: cms_appconfig.py:105
|
||||
msgid "Template prefix"
|
||||
msgstr "Prefix szablonu"
|
||||
|
||||
#: cms_appconfig.py:108
|
||||
msgid "Alternative directory to load the blog templates from"
|
||||
msgstr "Alternatywna ścieżka do ładowania szablonów"
|
||||
|
||||
#: cms_appconfig.py:112
|
||||
msgid "Menu structure"
|
||||
msgstr "Struktura menu"
|
||||
|
||||
#: cms_appconfig.py:116
|
||||
msgid "Structure of the django CMS menu"
|
||||
msgstr "Struktura menu django CMS"
|
||||
|
||||
#: cms_appconfig.py:120
|
||||
msgid "Show empty categories in menu"
|
||||
msgstr "Pokaż puste kategorie w menu"
|
||||
|
||||
#: cms_appconfig.py:123
|
||||
msgid "Show categories with no post attached in the menu"
|
||||
msgstr "Pokaż kategorie bez postów w menu"
|
||||
|
||||
#: cms_appconfig.py:128
|
||||
msgid "Sitemap changefreq"
|
||||
msgstr "Sitemap changefreq"
|
||||
|
||||
#: cms_appconfig.py:132
|
||||
msgid "Changefreq attribute for sitemap items"
|
||||
msgstr "Changefreq attribute for sitemap items"
|
||||
|
||||
#: cms_appconfig.py:136
|
||||
msgid "Sitemap priority"
|
||||
msgstr "Priorytet sitemapy"
|
||||
|
||||
#: cms_appconfig.py:139
|
||||
msgid "Priority attribute for sitemap items"
|
||||
msgstr "Priority attribute for sitemap items"
|
||||
|
||||
#: cms_appconfig.py:143
|
||||
msgid "Object type"
|
||||
msgstr "Typ obiektu"
|
||||
|
||||
#: cms_appconfig.py:147
|
||||
msgid "Facebook type"
|
||||
msgstr "Facebook type"
|
||||
|
||||
#: cms_appconfig.py:151
|
||||
msgid "Facebook application ID"
|
||||
msgstr "Facebook application ID"
|
||||
|
||||
#: cms_appconfig.py:155
|
||||
msgid "Facebook profile ID"
|
||||
msgstr "Facebook profile ID"
|
||||
|
||||
#: cms_appconfig.py:159
|
||||
msgid "Facebook page URL"
|
||||
msgstr "Facebook page URL"
|
||||
|
||||
#: cms_appconfig.py:163
|
||||
msgid "Facebook author URL"
|
||||
msgstr "Facebook author URL"
|
||||
|
||||
#: cms_appconfig.py:167
|
||||
msgid "Facebook author"
|
||||
msgstr "Facebook author"
|
||||
|
||||
#: cms_appconfig.py:171
|
||||
msgid "Twitter type"
|
||||
msgstr "Twitter type"
|
||||
|
||||
#: cms_appconfig.py:178
|
||||
msgid "Twitter site handle"
|
||||
msgstr "Twitter site handle"
|
||||
|
||||
#: cms_appconfig.py:182
|
||||
msgid "Twitter author handle"
|
||||
msgstr "Twitter author handle"
|
||||
|
||||
#: cms_appconfig.py:186
|
||||
msgid "Schema.org type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:193
|
||||
msgid "Schema.org author name"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:197
|
||||
msgid "Send notifications on post publish"
|
||||
msgstr "Wyślij powiadomienie przy publikowaniu"
|
||||
|
||||
#: cms_appconfig.py:200
|
||||
msgid "Emits a desktop notification -if enabled- when publishing a new post"
|
||||
msgstr "Emituje powiadomienie na pulpicie - jeśli włączone - podczas publikowania nowego postu"
|
||||
|
||||
#: cms_appconfig.py:204
|
||||
msgid "Send notifications on post update"
|
||||
msgstr "Wyślij powiadomienie przy edycji postu"
|
||||
|
||||
#: cms_appconfig.py:207
|
||||
msgid ""
|
||||
"Emits a desktop notification -if enabled- when editing a published post"
|
||||
msgstr "Emituje powiadomienie na pulpicie - jeśli włączone - podczas edycji opublikowanego postu"
|
||||
|
||||
#: cms_apps.py:13 cms_toolbars.py:17 settings.py:485
|
||||
msgid "Blog"
|
||||
msgstr "Blog"
|
||||
|
||||
#: cms_menus.py:26
|
||||
msgid "Blog menu"
|
||||
msgstr "Menu bloga"
|
||||
|
||||
#: cms_toolbars.py:20
|
||||
msgid "Post list"
|
||||
msgstr "Lista postów"
|
||||
|
||||
#: cms_toolbars.py:23
|
||||
msgid "Category list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:26
|
||||
msgid "Tag list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:29
|
||||
msgid "Add post"
|
||||
msgstr "Dodaj post"
|
||||
|
||||
#: cms_toolbars.py:33
|
||||
msgid "Edit configuration"
|
||||
msgstr "Edytuj konfigurację"
|
||||
|
||||
#: cms_toolbars.py:38
|
||||
msgid "Edit Post"
|
||||
msgstr "Edytuj posta"
|
||||
|
||||
#: cms_toolbars.py:53
|
||||
#, python-brace-format
|
||||
msgid "Publish {0} now"
|
||||
msgstr "Publikuj {0} teraz"
|
||||
|
||||
#: cms_wizards.py:22
|
||||
msgid "Slug"
|
||||
msgstr "Slug"
|
||||
|
||||
#: cms_wizards.py:25
|
||||
msgid "Leave empty for automatic slug, or override as required."
|
||||
msgstr "Pozostaw puste dla automatycznego ślimaka lub zastąp w razie potrzeby."
|
||||
|
||||
#: cms_wizards.py:105
|
||||
#, python-brace-format
|
||||
msgid "New {0}"
|
||||
msgstr "Nowe {0}"
|
||||
|
||||
#: cms_wizards.py:109
|
||||
#, python-brace-format
|
||||
msgid "Create a new {0} in {1}"
|
||||
msgstr "Stwórz nowe {0} w {1}"
|
||||
|
||||
#: feeds.py:39
|
||||
#, python-format
|
||||
msgid "Blog articles on %(site_name)s"
|
||||
msgstr "Artykuły na %(site_name)s"
|
||||
|
||||
#: liveblog/apps.py:7
|
||||
msgid "Liveblog"
|
||||
msgstr "Liveblog"
|
||||
|
||||
#: liveblog/cms_plugins.py:13
|
||||
msgid "Liveblog item"
|
||||
msgstr "Elementy liveblog"
|
||||
|
||||
#: liveblog/models.py:27
|
||||
msgid "publish liveblog entry"
|
||||
msgstr "publikuj wpis liveblog"
|
||||
|
||||
#: liveblog/models.py:28
|
||||
msgid "post date"
|
||||
msgstr "data postu"
|
||||
|
||||
#: liveblog/models.py:31 liveblog/models.py:111
|
||||
msgid "liveblog entry"
|
||||
msgstr "element liveblog"
|
||||
|
||||
#: liveblog/models.py:32 liveblog/models.py:112
|
||||
msgid "liveblog entries"
|
||||
msgstr "elementy liveblog"
|
||||
|
||||
#: liveblog/models.py:93 models.py:252
|
||||
msgid "title"
|
||||
msgstr "tytuł"
|
||||
|
||||
#: liveblog/models.py:95
|
||||
msgid "image"
|
||||
msgstr "obrazek"
|
||||
|
||||
#: liveblog/models.py:103
|
||||
msgid "thumbnail size"
|
||||
msgstr "rozmiar miniaturki"
|
||||
|
||||
#: models.py:95
|
||||
msgid "parent"
|
||||
msgstr "rodzic"
|
||||
|
||||
#: models.py:97
|
||||
msgid "created at"
|
||||
msgstr "stworzony"
|
||||
|
||||
#: models.py:98
|
||||
msgid "modified at"
|
||||
msgstr "zmodyfikowany"
|
||||
|
||||
#: models.py:99 models.py:249 models.py:491
|
||||
msgid "app. config"
|
||||
msgstr "app. config"
|
||||
|
||||
#: models.py:102
|
||||
msgid "name"
|
||||
msgstr "nazwa"
|
||||
|
||||
#: models.py:103 models.py:254
|
||||
msgid "slug"
|
||||
msgstr "slug"
|
||||
|
||||
#: models.py:104
|
||||
msgid "category meta description"
|
||||
msgstr "meta description kategorii"
|
||||
|
||||
#: models.py:132
|
||||
msgid "blog category"
|
||||
msgstr "kategoria bloga"
|
||||
|
||||
#: models.py:133
|
||||
msgid "blog categories"
|
||||
msgstr "kategorie bloga"
|
||||
|
||||
#: models.py:169
|
||||
msgid "BlogCategory (no translation)"
|
||||
msgstr "BlogCategory (no translation)"
|
||||
|
||||
#: models.py:196
|
||||
msgid "author"
|
||||
msgstr "autor"
|
||||
|
||||
#: models.py:203
|
||||
msgid "created"
|
||||
msgstr "stworzone"
|
||||
|
||||
#: models.py:204
|
||||
msgid "last modified"
|
||||
msgstr "zmodyfikowane"
|
||||
|
||||
#: models.py:205
|
||||
msgid "published since"
|
||||
msgstr "opublikowane od"
|
||||
|
||||
#: models.py:206
|
||||
msgid "published until"
|
||||
msgstr "opublikowane do"
|
||||
|
||||
#: models.py:207
|
||||
msgid "featured date"
|
||||
msgstr "data wyróżnienia"
|
||||
|
||||
#: models.py:208
|
||||
msgid "publish"
|
||||
msgstr "publikuj"
|
||||
|
||||
#: models.py:209
|
||||
msgid "include in RSS feed"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:211
|
||||
msgid "category"
|
||||
msgstr "kategoria"
|
||||
|
||||
#: models.py:214
|
||||
msgid "main image"
|
||||
msgstr "główny obrazek"
|
||||
|
||||
#: models.py:222
|
||||
msgid "main image thumbnail"
|
||||
msgstr "miniaturka głównego obrazka"
|
||||
|
||||
#: models.py:230
|
||||
msgid "main image full"
|
||||
msgstr "pełny główny obrazek"
|
||||
|
||||
#: models.py:237
|
||||
msgid "enable comments on post"
|
||||
msgstr "włącz komentarze na poście"
|
||||
|
||||
#: models.py:241
|
||||
msgid "Site(s)"
|
||||
msgstr "Strona(y)"
|
||||
|
||||
#: models.py:244
|
||||
msgid ""
|
||||
"Select sites in which to show the post. If none is set it will be visible in"
|
||||
" all the configured sites."
|
||||
msgstr "Wybierz witryny, w których chcesz pokazać wpis. Jeśli żaden nie jest ustawiony, będzie widoczny we wszystkich skonfigurowanych witrynach."
|
||||
|
||||
#: models.py:256
|
||||
msgid "subtitle"
|
||||
msgstr "podtytuł"
|
||||
|
||||
#: models.py:257
|
||||
msgid "abstract"
|
||||
msgstr "abstract"
|
||||
|
||||
#: models.py:258
|
||||
msgid "post meta description"
|
||||
msgstr "meta description postu"
|
||||
|
||||
#: models.py:259
|
||||
msgid "post meta keywords"
|
||||
msgstr "meta keywords postu"
|
||||
|
||||
#: models.py:261
|
||||
msgid "post meta title"
|
||||
msgstr "meta title postu"
|
||||
|
||||
#: models.py:262
|
||||
msgid "used in title tag and social sharing"
|
||||
msgstr "używany w tagu tytułu i udostępnianiu społecznościowym"
|
||||
|
||||
#: models.py:267
|
||||
msgid "text"
|
||||
msgstr "tekst"
|
||||
|
||||
#: models.py:273
|
||||
msgid "enable liveblog on post"
|
||||
msgstr "włącz liveblog na poście"
|
||||
|
||||
#: models.py:279
|
||||
msgid ""
|
||||
"Type a tag and hit tab, or start typing and select from autocomplete list."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:282
|
||||
msgid "Related Posts"
|
||||
msgstr "Powiązane posty"
|
||||
|
||||
#: models.py:314
|
||||
msgid "blog article"
|
||||
msgstr "artykuł bloga"
|
||||
|
||||
#: models.py:315
|
||||
msgid "blog articles"
|
||||
msgstr "artykuły bloga"
|
||||
|
||||
#: models.py:320
|
||||
msgid "Post (no translation)"
|
||||
msgstr "Posty (nie przetłumaczone)"
|
||||
|
||||
#: models.py:493
|
||||
msgid "current site"
|
||||
msgstr "obecna strona"
|
||||
|
||||
#: models.py:493
|
||||
msgid "Select items from the current site only"
|
||||
msgstr "Wybierz elementy z obecnej strony"
|
||||
|
||||
#: models.py:497
|
||||
msgid "Plugin template"
|
||||
msgstr "Plugin template"
|
||||
|
||||
#: models.py:498
|
||||
msgid "Select plugin template to load for this instance"
|
||||
msgstr "Wybierz template pluginu do załadowania dla tej instancji"
|
||||
|
||||
#: models.py:536 models.py:578
|
||||
msgid "articles"
|
||||
msgstr "artykuły"
|
||||
|
||||
#: models.py:538
|
||||
msgid "The number of latests articles to be displayed."
|
||||
msgstr "Liczba wyświetlanych ostatnich artykułów"
|
||||
|
||||
#: models.py:541
|
||||
msgid "filter by tag"
|
||||
msgstr "filtruj według tagu"
|
||||
|
||||
#: models.py:543
|
||||
msgid "Show only the blog articles tagged with chosen tags."
|
||||
msgstr "Pokaż tylko artykuły oznaczone wybranymi tagami"
|
||||
|
||||
#: models.py:549
|
||||
msgid "filter by category"
|
||||
msgstr "filtruj według kategorii"
|
||||
|
||||
#: models.py:550
|
||||
msgid "Show only the blog articles tagged with chosen categories."
|
||||
msgstr "Pokaż tylko artykuły oznaczone wybranymi kategoriami"
|
||||
|
||||
#: models.py:554
|
||||
#, python-format
|
||||
msgid "%s latest articles by tag"
|
||||
msgstr "%s ostatnie artykuły według tagu"
|
||||
|
||||
#: models.py:574
|
||||
msgid "authors"
|
||||
msgstr "autorzy"
|
||||
|
||||
#: models.py:580
|
||||
msgid "The number of author articles to be displayed."
|
||||
msgstr "Liczba autorów artykułów do wyświetlenia."
|
||||
|
||||
#: models.py:584
|
||||
#, python-format
|
||||
msgid "%s latest articles by author"
|
||||
msgstr "%s ostatnich artykułów według autora"
|
||||
|
||||
#: models.py:605 models.py:608
|
||||
msgid "Featured posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:623
|
||||
msgid "generic blog plugin"
|
||||
msgstr "generic blog plugin"
|
||||
|
||||
#: settings.py:26
|
||||
msgid "Full date"
|
||||
msgstr "Pełna data"
|
||||
|
||||
#: settings.py:27
|
||||
msgid "Year / Month"
|
||||
msgstr "Rok / miesiąc"
|
||||
|
||||
#: settings.py:28 templates/djangocms_blog/post_list.html:14
|
||||
msgid "Category"
|
||||
msgstr "Kategoria"
|
||||
|
||||
#: settings.py:29
|
||||
msgid "Just slug"
|
||||
msgstr "Just slug"
|
||||
|
||||
#: settings.py:59
|
||||
msgid "Categories and posts"
|
||||
msgstr "Kategorie i posty"
|
||||
|
||||
#: settings.py:60
|
||||
msgid "Categories only"
|
||||
msgstr "Tylko kategorie"
|
||||
|
||||
#: settings.py:61
|
||||
msgid "Posts only"
|
||||
msgstr "Tylko posty"
|
||||
|
||||
#: settings.py:62
|
||||
msgid "None"
|
||||
msgstr "Brak"
|
||||
|
||||
#: settings.py:71
|
||||
msgid "always"
|
||||
msgstr "zawsze"
|
||||
|
||||
#: settings.py:72
|
||||
msgid "hourly"
|
||||
msgstr "godzinnie"
|
||||
|
||||
#: settings.py:73
|
||||
msgid "daily"
|
||||
msgstr "dziennie"
|
||||
|
||||
#: settings.py:74
|
||||
msgid "weekly"
|
||||
msgstr "tygodniowo"
|
||||
|
||||
#: settings.py:75
|
||||
msgid "monthly"
|
||||
msgstr "miesięcznie"
|
||||
|
||||
#: settings.py:76
|
||||
msgid "yearly"
|
||||
msgstr "rocznie"
|
||||
|
||||
#: settings.py:77
|
||||
msgid "never"
|
||||
msgstr "nigdy"
|
||||
|
||||
#: settings.py:492
|
||||
msgid "Latest Blog Articles"
|
||||
msgstr "Ostatnie artykuły bloga"
|
||||
|
||||
#: settings.py:499
|
||||
msgid "Latest Blog Articles - Cache"
|
||||
msgstr "Ostatnie artykuły bloga - cache"
|
||||
|
||||
#: settings.py:506
|
||||
msgid "Author Blog Articles"
|
||||
msgstr "Artykuły bloga autora"
|
||||
|
||||
#: settings.py:513
|
||||
msgid "Author Blog Articles List"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:520 templates/djangocms_blog/plugins/tags.html:5
|
||||
msgid "Tags"
|
||||
msgstr "Tagi"
|
||||
|
||||
#: settings.py:527 templates/djangocms_blog/plugins/categories.html:3
|
||||
msgid "Categories"
|
||||
msgstr "Kategorie"
|
||||
|
||||
#: settings.py:534 templates/djangocms_blog/plugins/archive.html:3
|
||||
#: templates/djangocms_blog/post_list.html:12
|
||||
msgid "Archive"
|
||||
msgstr "Archiwum"
|
||||
|
||||
#: settings.py:541
|
||||
msgid "Featured Posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:548
|
||||
msgid "Featured Posts - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:590
|
||||
msgid "Default template"
|
||||
msgstr "Domyślny template"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr "czytaj więcej"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr "przez"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:17
|
||||
#: templates/djangocms_blog/plugins/authors.html:10
|
||||
#: templates/djangocms_blog/plugins/categories.html:10
|
||||
#: templates/djangocms_blog/plugins/tags.html:12
|
||||
#, python-format
|
||||
msgid "1 article"
|
||||
msgid_plural "%(articles)s articles"
|
||||
msgstr[0] "1 artykuł"
|
||||
msgstr[1] "%(articles)s artykuły"
|
||||
msgstr[2] "%(articles)s artykułów"
|
||||
msgstr[3] "%(articles)s artykułów"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:18
|
||||
#: templates/djangocms_blog/plugins/authors.html:11
|
||||
#: templates/djangocms_blog/plugins/categories.html:11
|
||||
#: templates/djangocms_blog/plugins/tags.html:13
|
||||
msgid "0 articles"
|
||||
msgstr "0 artykułów"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:26
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:12
|
||||
#: templates/djangocms_blog/plugins/latest_entries.html:7
|
||||
#: templates/djangocms_blog/plugins/tags.html:17
|
||||
#: templates/djangocms_blog/post_list.html:21
|
||||
msgid "No article found."
|
||||
msgstr "Nie znaleziono artykułów."
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:3
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:3
|
||||
msgid "Authors"
|
||||
msgstr "Autorzy"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:15
|
||||
msgid "No author found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:7
|
||||
#: templates/djangocms_blog/post_list.html:11
|
||||
msgid "Articles by"
|
||||
msgstr "Artykuły według"
|
||||
|
||||
#: templates/djangocms_blog/plugins/categories.html:15
|
||||
msgid "No categories found."
|
||||
msgstr "Nie znaleziono kategorii."
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:13
|
||||
msgid "Tag"
|
||||
msgstr "Tag"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:24
|
||||
msgid "Back"
|
||||
msgstr "Powrót"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:29
|
||||
msgid "previous"
|
||||
msgstr "poprzedni"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "Page"
|
||||
msgstr "Strona"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "of"
|
||||
msgstr "z"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:35
|
||||
msgid "next"
|
||||
msgstr "następny"
|
||||
763
djangocms_blog/locale/pt_BR/LC_MESSAGES/django.po
Normal file
763
djangocms_blog/locale/pt_BR/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,763 @@
|
|||
# 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 <dgo.ponciano@gmail.com>, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: djangocms-blog\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-30 11:04+0200\n"
|
||||
"PO-Revision-Date: 2014-03-29 15:29+0000\n"
|
||||
"Last-Translator: Diego Ponci <dgo.ponciano@gmail.com>, 2016\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://app.transifex.com/nephila/djangocms-blog/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"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: admin.py:65
|
||||
msgid "site"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:131
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:138
|
||||
msgid "Images"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:141
|
||||
msgid "SEO"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:172
|
||||
msgid "Publish selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:194
|
||||
msgid "Unpublish selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:207
|
||||
msgid "Enable comments for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:221
|
||||
msgid "Disable comments for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:235
|
||||
msgid "Enable liveblog for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:249
|
||||
msgid "Disable liveblog for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:473
|
||||
msgid "Generic"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:485
|
||||
msgid "Layout"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:499
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:503
|
||||
msgid "Sitemap"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:512
|
||||
msgid "Meta"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:524 admin.py:535 admin.py:545
|
||||
msgid "You can provide plain strings, Post model attribute or method names"
|
||||
msgstr "Você pode fornecer texto puro, atributos do modelo Post ou nomes de métodos"
|
||||
|
||||
#: apps.py:7
|
||||
msgid "django CMS Blog"
|
||||
msgstr "blog do django CMS"
|
||||
|
||||
#: cms_appconfig.py:19
|
||||
msgid "application title"
|
||||
msgstr "título da aplicação"
|
||||
|
||||
#: cms_appconfig.py:20
|
||||
msgid "object name"
|
||||
msgstr "nome do objeto"
|
||||
|
||||
#: cms_appconfig.py:24
|
||||
msgid "blog config"
|
||||
msgstr "configuração do blog"
|
||||
|
||||
#: cms_appconfig.py:25
|
||||
msgid "blog configs"
|
||||
msgstr "configurações do blog"
|
||||
|
||||
#: cms_appconfig.py:28
|
||||
msgid "untitled"
|
||||
msgstr "sem título"
|
||||
|
||||
#: cms_appconfig.py:54
|
||||
msgid "Post published by default"
|
||||
msgstr "Post publicado por padrão"
|
||||
|
||||
#: cms_appconfig.py:58
|
||||
msgid "Default size of full images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:61
|
||||
msgid ""
|
||||
"If left empty the image size will have to be set for every newly created "
|
||||
"post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:65
|
||||
msgid "Default size of thumbnail images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:68
|
||||
msgid ""
|
||||
"If left empty the thumbnail image size will have to be set for every newly "
|
||||
"created post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:72
|
||||
msgid "Permalink structure"
|
||||
msgstr "Estrutura de links permanentes"
|
||||
|
||||
#: cms_appconfig.py:79
|
||||
msgid "Use placeholder and plugins for article body"
|
||||
msgstr "Usar placeholder e plugins para o corpo da notícia"
|
||||
|
||||
#: cms_appconfig.py:83
|
||||
msgid "Use abstract field"
|
||||
msgstr "Usar campo abstrato"
|
||||
|
||||
#: cms_appconfig.py:87
|
||||
msgid "Enable related posts"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:91
|
||||
msgid "Set author"
|
||||
msgstr "Informar o autor"
|
||||
|
||||
#: cms_appconfig.py:93
|
||||
msgid "Set author by default"
|
||||
msgstr "Informar o autor por padrão"
|
||||
|
||||
#: cms_appconfig.py:98
|
||||
msgid "Paginate size"
|
||||
msgstr "Tamanho da paginação"
|
||||
|
||||
#: cms_appconfig.py:101
|
||||
msgid "When paginating list views, how many articles per page?"
|
||||
msgstr "Em paginações de listagem, quantas notícias por página?"
|
||||
|
||||
#: cms_appconfig.py:105
|
||||
msgid "Template prefix"
|
||||
msgstr "Prefixo do template"
|
||||
|
||||
#: cms_appconfig.py:108
|
||||
msgid "Alternative directory to load the blog templates from"
|
||||
msgstr "Diretório alternativo de origem dos templates do blog"
|
||||
|
||||
#: cms_appconfig.py:112
|
||||
msgid "Menu structure"
|
||||
msgstr "Estrutura do menu"
|
||||
|
||||
#: cms_appconfig.py:116
|
||||
msgid "Structure of the django CMS menu"
|
||||
msgstr "Estrutura do menu do django CMS"
|
||||
|
||||
#: cms_appconfig.py:120
|
||||
msgid "Show empty categories in menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:123
|
||||
msgid "Show categories with no post attached in the menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:128
|
||||
msgid "Sitemap changefreq"
|
||||
msgstr "'changefreq' do sitemap"
|
||||
|
||||
#: cms_appconfig.py:132
|
||||
msgid "Changefreq attribute for sitemap items"
|
||||
msgstr "Atributo changefreq de items do sitemap"
|
||||
|
||||
#: cms_appconfig.py:136
|
||||
msgid "Sitemap priority"
|
||||
msgstr "'priority' do sitemap"
|
||||
|
||||
#: cms_appconfig.py:139
|
||||
msgid "Priority attribute for sitemap items"
|
||||
msgstr "Atributo 'priority' de items do sitemap"
|
||||
|
||||
#: cms_appconfig.py:143
|
||||
msgid "Object type"
|
||||
msgstr "Tipo de objeto"
|
||||
|
||||
#: cms_appconfig.py:147
|
||||
msgid "Facebook type"
|
||||
msgstr "Tipo de conta do facebook"
|
||||
|
||||
#: cms_appconfig.py:151
|
||||
msgid "Facebook application ID"
|
||||
msgstr "ID da aplicação no Facebook"
|
||||
|
||||
#: cms_appconfig.py:155
|
||||
msgid "Facebook profile ID"
|
||||
msgstr "ID do perfil no Facebook"
|
||||
|
||||
#: cms_appconfig.py:159
|
||||
msgid "Facebook page URL"
|
||||
msgstr "URL da página no Facebook"
|
||||
|
||||
#: cms_appconfig.py:163
|
||||
msgid "Facebook author URL"
|
||||
msgstr "URL do autor no Facebook"
|
||||
|
||||
#: cms_appconfig.py:167
|
||||
msgid "Facebook author"
|
||||
msgstr "Autor no Facebook"
|
||||
|
||||
#: cms_appconfig.py:171
|
||||
msgid "Twitter type"
|
||||
msgstr "Tipo do Twitter"
|
||||
|
||||
#: cms_appconfig.py:178
|
||||
msgid "Twitter site handle"
|
||||
msgstr "Nome de usuário no Twitter"
|
||||
|
||||
#: cms_appconfig.py:182
|
||||
msgid "Twitter author handle"
|
||||
msgstr "Usuário do autor no Twitter"
|
||||
|
||||
#: cms_appconfig.py:186
|
||||
msgid "Schema.org type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:193
|
||||
msgid "Schema.org author name"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:197
|
||||
msgid "Send notifications on post publish"
|
||||
msgstr "Enviar notificações ao publicar postagem"
|
||||
|
||||
#: cms_appconfig.py:200
|
||||
msgid "Emits a desktop notification -if enabled- when publishing a new post"
|
||||
msgstr "Enviar notificação de desktop -se ativada- quando publicar uma nova postagem"
|
||||
|
||||
#: cms_appconfig.py:204
|
||||
msgid "Send notifications on post update"
|
||||
msgstr "Enviar notificações ao atualizar postagem"
|
||||
|
||||
#: cms_appconfig.py:207
|
||||
msgid ""
|
||||
"Emits a desktop notification -if enabled- when editing a published post"
|
||||
msgstr "Enviar notificação de desktop -se ativada- quando editar uma postagem publicada"
|
||||
|
||||
#: cms_apps.py:13 cms_toolbars.py:17 settings.py:485
|
||||
msgid "Blog"
|
||||
msgstr "Blog"
|
||||
|
||||
#: cms_menus.py:26
|
||||
msgid "Blog menu"
|
||||
msgstr "Menu do blog"
|
||||
|
||||
#: cms_toolbars.py:20
|
||||
msgid "Post list"
|
||||
msgstr "Lista de postagens"
|
||||
|
||||
#: cms_toolbars.py:23
|
||||
msgid "Category list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:26
|
||||
msgid "Tag list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:29
|
||||
msgid "Add post"
|
||||
msgstr "Adicionar postagem"
|
||||
|
||||
#: cms_toolbars.py:33
|
||||
msgid "Edit configuration"
|
||||
msgstr "Editar preferências"
|
||||
|
||||
#: cms_toolbars.py:38
|
||||
msgid "Edit Post"
|
||||
msgstr "Ediar Postagem"
|
||||
|
||||
#: cms_toolbars.py:53
|
||||
#, python-brace-format
|
||||
msgid "Publish {0} now"
|
||||
msgstr "Publicar {0} agora"
|
||||
|
||||
#: cms_wizards.py:22
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:25
|
||||
msgid "Leave empty for automatic slug, or override as required."
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:105
|
||||
#, python-brace-format
|
||||
msgid "New {0}"
|
||||
msgstr "Novo {0}"
|
||||
|
||||
#: cms_wizards.py:109
|
||||
#, python-brace-format
|
||||
msgid "Create a new {0} in {1}"
|
||||
msgstr "Criar um novo {0} em {1}"
|
||||
|
||||
#: feeds.py:39
|
||||
#, python-format
|
||||
msgid "Blog articles on %(site_name)s"
|
||||
msgstr "Artigos em %(site_name)s"
|
||||
|
||||
#: liveblog/apps.py:7
|
||||
msgid "Liveblog"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/cms_plugins.py:13
|
||||
msgid "Liveblog item"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:27
|
||||
msgid "publish liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:28
|
||||
msgid "post date"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:31 liveblog/models.py:111
|
||||
msgid "liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:32 liveblog/models.py:112
|
||||
msgid "liveblog entries"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:93 models.py:252
|
||||
msgid "title"
|
||||
msgstr "título"
|
||||
|
||||
#: liveblog/models.py:95
|
||||
msgid "image"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:103
|
||||
msgid "thumbnail size"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:95
|
||||
msgid "parent"
|
||||
msgstr "pai"
|
||||
|
||||
#: models.py:97
|
||||
msgid "created at"
|
||||
msgstr "criado em"
|
||||
|
||||
#: models.py:98
|
||||
msgid "modified at"
|
||||
msgstr "modificado em"
|
||||
|
||||
#: models.py:99 models.py:249 models.py:491
|
||||
msgid "app. config"
|
||||
msgstr "configuração da aplicação"
|
||||
|
||||
#: models.py:102
|
||||
msgid "name"
|
||||
msgstr "nome"
|
||||
|
||||
#: models.py:103 models.py:254
|
||||
msgid "slug"
|
||||
msgstr "slug"
|
||||
|
||||
#: models.py:104
|
||||
msgid "category meta description"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:132
|
||||
msgid "blog category"
|
||||
msgstr "categoria do blog"
|
||||
|
||||
#: models.py:133
|
||||
msgid "blog categories"
|
||||
msgstr "categorias do blog"
|
||||
|
||||
#: models.py:169
|
||||
msgid "BlogCategory (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:196
|
||||
msgid "author"
|
||||
msgstr "autor"
|
||||
|
||||
#: models.py:203
|
||||
msgid "created"
|
||||
msgstr "criado"
|
||||
|
||||
#: models.py:204
|
||||
msgid "last modified"
|
||||
msgstr "última modificação"
|
||||
|
||||
#: models.py:205
|
||||
msgid "published since"
|
||||
msgstr "publicado desde"
|
||||
|
||||
#: models.py:206
|
||||
msgid "published until"
|
||||
msgstr "publicado até"
|
||||
|
||||
#: models.py:207
|
||||
msgid "featured date"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:208
|
||||
msgid "publish"
|
||||
msgstr "publicar"
|
||||
|
||||
#: models.py:209
|
||||
msgid "include in RSS feed"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:211
|
||||
msgid "category"
|
||||
msgstr "categoria"
|
||||
|
||||
#: models.py:214
|
||||
msgid "main image"
|
||||
msgstr "imagem principal"
|
||||
|
||||
#: models.py:222
|
||||
msgid "main image thumbnail"
|
||||
msgstr "miniatura da imagem principal"
|
||||
|
||||
#: models.py:230
|
||||
msgid "main image full"
|
||||
msgstr "imagem principal completa"
|
||||
|
||||
#: models.py:237
|
||||
msgid "enable comments on post"
|
||||
msgstr "habilitar comentários nessa postagem"
|
||||
|
||||
#: models.py:241
|
||||
msgid "Site(s)"
|
||||
msgstr "Site(s)"
|
||||
|
||||
#: models.py:244
|
||||
msgid ""
|
||||
"Select sites in which to show the post. If none is set it will be visible in"
|
||||
" all the configured sites."
|
||||
msgstr "Selecionar sites onde a postagem deve aparecer. Se nenhum for selecionado ela ficará visível em todos os sites configurados."
|
||||
|
||||
#: models.py:256
|
||||
msgid "subtitle"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:257
|
||||
msgid "abstract"
|
||||
msgstr "resumo"
|
||||
|
||||
#: models.py:258
|
||||
msgid "post meta description"
|
||||
msgstr "meta descrição da postagem"
|
||||
|
||||
#: models.py:259
|
||||
msgid "post meta keywords"
|
||||
msgstr "palavras-chave da postagem"
|
||||
|
||||
#: models.py:261
|
||||
msgid "post meta title"
|
||||
msgstr "meta título da postagem"
|
||||
|
||||
#: models.py:262
|
||||
msgid "used in title tag and social sharing"
|
||||
msgstr "usado na tag de título e compartilhamento em redes sociais"
|
||||
|
||||
#: models.py:267
|
||||
msgid "text"
|
||||
msgstr "texto"
|
||||
|
||||
#: models.py:273
|
||||
msgid "enable liveblog on post"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:279
|
||||
msgid ""
|
||||
"Type a tag and hit tab, or start typing and select from autocomplete list."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:282
|
||||
msgid "Related Posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:314
|
||||
msgid "blog article"
|
||||
msgstr "artigo do blog"
|
||||
|
||||
#: models.py:315
|
||||
msgid "blog articles"
|
||||
msgstr "artigos do blog"
|
||||
|
||||
#: models.py:320
|
||||
msgid "Post (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "current site"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "Select items from the current site only"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:497
|
||||
msgid "Plugin template"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:498
|
||||
msgid "Select plugin template to load for this instance"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:536 models.py:578
|
||||
msgid "articles"
|
||||
msgstr "artigos"
|
||||
|
||||
#: models.py:538
|
||||
msgid "The number of latests articles to be displayed."
|
||||
msgstr "O número dos últimos artigos a serem exibidos."
|
||||
|
||||
#: models.py:541
|
||||
msgid "filter by tag"
|
||||
msgstr "filtrar por tag"
|
||||
|
||||
#: models.py:543
|
||||
msgid "Show only the blog articles tagged with chosen tags."
|
||||
msgstr "Exibir apenas os artigos marcados com as tags escolhidas."
|
||||
|
||||
#: models.py:549
|
||||
msgid "filter by category"
|
||||
msgstr "filtrar por categoria"
|
||||
|
||||
#: models.py:550
|
||||
msgid "Show only the blog articles tagged with chosen categories."
|
||||
msgstr "Exibir apenas os artigos marcados com as categorias escolhidas."
|
||||
|
||||
#: models.py:554
|
||||
#, python-format
|
||||
msgid "%s latest articles by tag"
|
||||
msgstr "%s últimos artigos por tag"
|
||||
|
||||
#: models.py:574
|
||||
msgid "authors"
|
||||
msgstr "autores"
|
||||
|
||||
#: models.py:580
|
||||
msgid "The number of author articles to be displayed."
|
||||
msgstr "Número de artigos do autor a serem exibidos."
|
||||
|
||||
#: models.py:584
|
||||
#, python-format
|
||||
msgid "%s latest articles by author"
|
||||
msgstr "%s últimos artigos por autor"
|
||||
|
||||
#: models.py:605 models.py:608
|
||||
msgid "Featured posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:623
|
||||
msgid "generic blog plugin"
|
||||
msgstr "plugin genérico do blog"
|
||||
|
||||
#: settings.py:26
|
||||
msgid "Full date"
|
||||
msgstr "Data completa"
|
||||
|
||||
#: settings.py:27
|
||||
msgid "Year / Month"
|
||||
msgstr "Ano / Mês"
|
||||
|
||||
#: settings.py:28 templates/djangocms_blog/post_list.html:14
|
||||
msgid "Category"
|
||||
msgstr "Categoria"
|
||||
|
||||
#: settings.py:29
|
||||
msgid "Just slug"
|
||||
msgstr "Apenas a slug"
|
||||
|
||||
#: settings.py:59
|
||||
msgid "Categories and posts"
|
||||
msgstr "Categorias e postagens"
|
||||
|
||||
#: settings.py:60
|
||||
msgid "Categories only"
|
||||
msgstr "Apenas categorias"
|
||||
|
||||
#: settings.py:61
|
||||
msgid "Posts only"
|
||||
msgstr "Apenas postagens"
|
||||
|
||||
#: settings.py:62
|
||||
msgid "None"
|
||||
msgstr "Nenhum"
|
||||
|
||||
#: settings.py:71
|
||||
msgid "always"
|
||||
msgstr "sempre"
|
||||
|
||||
#: settings.py:72
|
||||
msgid "hourly"
|
||||
msgstr "a cada hora"
|
||||
|
||||
#: settings.py:73
|
||||
msgid "daily"
|
||||
msgstr "diariamente"
|
||||
|
||||
#: settings.py:74
|
||||
msgid "weekly"
|
||||
msgstr "semanalmente"
|
||||
|
||||
#: settings.py:75
|
||||
msgid "monthly"
|
||||
msgstr "mensalmente"
|
||||
|
||||
#: settings.py:76
|
||||
msgid "yearly"
|
||||
msgstr "anualmente"
|
||||
|
||||
#: settings.py:77
|
||||
msgid "never"
|
||||
msgstr "nunca"
|
||||
|
||||
#: settings.py:492
|
||||
msgid "Latest Blog Articles"
|
||||
msgstr "Últimos Artigos"
|
||||
|
||||
#: settings.py:499
|
||||
msgid "Latest Blog Articles - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:506
|
||||
msgid "Author Blog Articles"
|
||||
msgstr "Artigos do Autor"
|
||||
|
||||
#: settings.py:513
|
||||
msgid "Author Blog Articles List"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:520 templates/djangocms_blog/plugins/tags.html:5
|
||||
msgid "Tags"
|
||||
msgstr "Tags"
|
||||
|
||||
#: settings.py:527 templates/djangocms_blog/plugins/categories.html:3
|
||||
msgid "Categories"
|
||||
msgstr "Categorias"
|
||||
|
||||
#: settings.py:534 templates/djangocms_blog/plugins/archive.html:3
|
||||
#: templates/djangocms_blog/post_list.html:12
|
||||
msgid "Archive"
|
||||
msgstr "Arquivo"
|
||||
|
||||
#: settings.py:541
|
||||
msgid "Featured Posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:548
|
||||
msgid "Featured Posts - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:590
|
||||
msgid "Default template"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr "ler mais"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr "por"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:17
|
||||
#: templates/djangocms_blog/plugins/authors.html:10
|
||||
#: templates/djangocms_blog/plugins/categories.html:10
|
||||
#: templates/djangocms_blog/plugins/tags.html:12
|
||||
#, python-format
|
||||
msgid "1 article"
|
||||
msgid_plural "%(articles)s articles"
|
||||
msgstr[0] "1 artigo"
|
||||
msgstr[1] "%(articles)s artigos"
|
||||
msgstr[2] "%(articles)s artigos"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:18
|
||||
#: templates/djangocms_blog/plugins/authors.html:11
|
||||
#: templates/djangocms_blog/plugins/categories.html:11
|
||||
#: templates/djangocms_blog/plugins/tags.html:13
|
||||
msgid "0 articles"
|
||||
msgstr "0 artigos"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:26
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:12
|
||||
#: templates/djangocms_blog/plugins/latest_entries.html:7
|
||||
#: templates/djangocms_blog/plugins/tags.html:17
|
||||
#: templates/djangocms_blog/post_list.html:21
|
||||
msgid "No article found."
|
||||
msgstr "Nenhum artigo encontrado."
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:3
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:3
|
||||
msgid "Authors"
|
||||
msgstr "Autores"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:15
|
||||
msgid "No author found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:7
|
||||
#: templates/djangocms_blog/post_list.html:11
|
||||
msgid "Articles by"
|
||||
msgstr "Artigos por"
|
||||
|
||||
#: templates/djangocms_blog/plugins/categories.html:15
|
||||
msgid "No categories found."
|
||||
msgstr "Nenhuma categoria encontrada."
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:13
|
||||
msgid "Tag"
|
||||
msgstr "Tag"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:24
|
||||
msgid "Back"
|
||||
msgstr "Voltar"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:29
|
||||
msgid "previous"
|
||||
msgstr "anterior"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "Page"
|
||||
msgstr "Página"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "of"
|
||||
msgstr "de"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:35
|
||||
msgid "next"
|
||||
msgstr "próxima"
|
||||
767
djangocms_blog/locale/ru/LC_MESSAGES/django.po
Normal file
767
djangocms_blog/locale/ru/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,767 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Iacopo Spalletti, 2014
|
||||
# Rustam Mirzaev <mirus@2x2.pw>, 2016-2018
|
||||
# Rustam Mirzaev <mirus@2x2.pw>, 2015
|
||||
# Rustam Mirzaev <mirus@2x2.pw>, 2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: djangocms-blog\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-30 11:04+0200\n"
|
||||
"PO-Revision-Date: 2014-03-29 15:29+0000\n"
|
||||
"Last-Translator: Rustam Mirzaev <mirus@2x2.pw>, 2016-2018\n"
|
||||
"Language-Team: Russian (http://app.transifex.com/nephila/djangocms-blog/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"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: admin.py:65
|
||||
msgid "site"
|
||||
msgstr "сайт"
|
||||
|
||||
#: admin.py:131
|
||||
msgid "Info"
|
||||
msgstr "Информация"
|
||||
|
||||
#: admin.py:138
|
||||
msgid "Images"
|
||||
msgstr "Изображения"
|
||||
|
||||
#: admin.py:141
|
||||
msgid "SEO"
|
||||
msgstr "СЕО"
|
||||
|
||||
#: admin.py:172
|
||||
msgid "Publish selection"
|
||||
msgstr "Опубликовать выделенное"
|
||||
|
||||
#: admin.py:194
|
||||
msgid "Unpublish selection"
|
||||
msgstr "Снять с публикации выделенное"
|
||||
|
||||
#: admin.py:207
|
||||
msgid "Enable comments for selection"
|
||||
msgstr "Включить коментарии к выделенному"
|
||||
|
||||
#: admin.py:221
|
||||
msgid "Disable comments for selection "
|
||||
msgstr "Выключить коментарии к выделенному"
|
||||
|
||||
#: admin.py:235
|
||||
msgid "Enable liveblog for selection"
|
||||
msgstr "Включить живой блог к выделенному"
|
||||
|
||||
#: admin.py:249
|
||||
msgid "Disable liveblog for selection "
|
||||
msgstr "Выключить живой блог к выделенному"
|
||||
|
||||
#: admin.py:473
|
||||
msgid "Generic"
|
||||
msgstr "Общий"
|
||||
|
||||
#: admin.py:485
|
||||
msgid "Layout"
|
||||
msgstr "Макет"
|
||||
|
||||
#: admin.py:499
|
||||
msgid "Notifications"
|
||||
msgstr "Уведомления"
|
||||
|
||||
#: admin.py:503
|
||||
msgid "Sitemap"
|
||||
msgstr "Карта сайта"
|
||||
|
||||
#: admin.py:512
|
||||
msgid "Meta"
|
||||
msgstr "Мета"
|
||||
|
||||
#: admin.py:524 admin.py:535 admin.py:545
|
||||
msgid "You can provide plain strings, Post model attribute or method names"
|
||||
msgstr "Вы можете использовать простую строку, атрибут модели статьи или имена методов"
|
||||
|
||||
#: apps.py:7
|
||||
msgid "django CMS Blog"
|
||||
msgstr "django CMS Блог"
|
||||
|
||||
#: cms_appconfig.py:19
|
||||
msgid "application title"
|
||||
msgstr "название приложения"
|
||||
|
||||
#: cms_appconfig.py:20
|
||||
msgid "object name"
|
||||
msgstr "название объекта"
|
||||
|
||||
#: cms_appconfig.py:24
|
||||
msgid "blog config"
|
||||
msgstr "настройка блога"
|
||||
|
||||
#: cms_appconfig.py:25
|
||||
msgid "blog configs"
|
||||
msgstr "настройки блога"
|
||||
|
||||
#: cms_appconfig.py:28
|
||||
msgid "untitled"
|
||||
msgstr "безымянный"
|
||||
|
||||
#: cms_appconfig.py:54
|
||||
msgid "Post published by default"
|
||||
msgstr "Статья опубликованная по умолчанию"
|
||||
|
||||
#: cms_appconfig.py:58
|
||||
msgid "Default size of full images"
|
||||
msgstr "Размер изображения по умолчанию"
|
||||
|
||||
#: cms_appconfig.py:61
|
||||
msgid ""
|
||||
"If left empty the image size will have to be set for every newly created "
|
||||
"post."
|
||||
msgstr "Если слева пусто, то размер изображения будет применен к каждому новосозданному изображению"
|
||||
|
||||
#: cms_appconfig.py:65
|
||||
msgid "Default size of thumbnail images"
|
||||
msgstr "Размер изображения заглушки по умолчанию"
|
||||
|
||||
#: cms_appconfig.py:68
|
||||
msgid ""
|
||||
"If left empty the thumbnail image size will have to be set for every newly "
|
||||
"created post."
|
||||
msgstr "Если слева пусто, то этот размер изображения заглушки будет применен к каждому новосозданному изображению"
|
||||
|
||||
#: cms_appconfig.py:72
|
||||
msgid "Permalink structure"
|
||||
msgstr "Строение постоянной ссылки"
|
||||
|
||||
#: cms_appconfig.py:79
|
||||
msgid "Use placeholder and plugins for article body"
|
||||
msgstr "Используйте местозаполнитель и плагины для тела статьи"
|
||||
|
||||
#: cms_appconfig.py:83
|
||||
msgid "Use abstract field"
|
||||
msgstr "Используйте поле краткого описания"
|
||||
|
||||
#: cms_appconfig.py:87
|
||||
msgid "Enable related posts"
|
||||
msgstr "Включить связанные публикации"
|
||||
|
||||
#: cms_appconfig.py:91
|
||||
msgid "Set author"
|
||||
msgstr "Указать автора"
|
||||
|
||||
#: cms_appconfig.py:93
|
||||
msgid "Set author by default"
|
||||
msgstr "Указать автора по умолчанию"
|
||||
|
||||
#: cms_appconfig.py:98
|
||||
msgid "Paginate size"
|
||||
msgstr "Разбить на части"
|
||||
|
||||
#: cms_appconfig.py:101
|
||||
msgid "When paginating list views, how many articles per page?"
|
||||
msgstr "Сколько статей на страницу вы бы хотели использовать при разбиении её на части."
|
||||
|
||||
#: cms_appconfig.py:105
|
||||
msgid "Template prefix"
|
||||
msgstr "Префикс шаблона"
|
||||
|
||||
#: cms_appconfig.py:108
|
||||
msgid "Alternative directory to load the blog templates from"
|
||||
msgstr "Альтернативная директория загрузки шаблонов блога"
|
||||
|
||||
#: cms_appconfig.py:112
|
||||
msgid "Menu structure"
|
||||
msgstr "Структура меню"
|
||||
|
||||
#: cms_appconfig.py:116
|
||||
msgid "Structure of the django CMS menu"
|
||||
msgstr "Структура меню django CMS "
|
||||
|
||||
#: cms_appconfig.py:120
|
||||
msgid "Show empty categories in menu"
|
||||
msgstr "Показывать пустые категории в меню"
|
||||
|
||||
#: cms_appconfig.py:123
|
||||
msgid "Show categories with no post attached in the menu"
|
||||
msgstr "Показывать категории без статей в меню"
|
||||
|
||||
#: cms_appconfig.py:128
|
||||
msgid "Sitemap changefreq"
|
||||
msgstr "Частота обновления карты сайта"
|
||||
|
||||
#: cms_appconfig.py:132
|
||||
msgid "Changefreq attribute for sitemap items"
|
||||
msgstr "Атрибут частоты изменения объектов карты сайта"
|
||||
|
||||
#: cms_appconfig.py:136
|
||||
msgid "Sitemap priority"
|
||||
msgstr "Приоритет"
|
||||
|
||||
#: cms_appconfig.py:139
|
||||
msgid "Priority attribute for sitemap items"
|
||||
msgstr "Приоритет атребута для объектов карты сайта"
|
||||
|
||||
#: cms_appconfig.py:143
|
||||
msgid "Object type"
|
||||
msgstr "Тип объекта"
|
||||
|
||||
#: cms_appconfig.py:147
|
||||
msgid "Facebook type"
|
||||
msgstr "тип в Facebook"
|
||||
|
||||
#: cms_appconfig.py:151
|
||||
msgid "Facebook application ID"
|
||||
msgstr "ID приложения на Facebook"
|
||||
|
||||
#: cms_appconfig.py:155
|
||||
msgid "Facebook profile ID"
|
||||
msgstr "ID профиля на Facebook"
|
||||
|
||||
#: cms_appconfig.py:159
|
||||
msgid "Facebook page URL"
|
||||
msgstr "URL страницы на Facebook"
|
||||
|
||||
#: cms_appconfig.py:163
|
||||
msgid "Facebook author URL"
|
||||
msgstr "URL автора на Facebook "
|
||||
|
||||
#: cms_appconfig.py:167
|
||||
msgid "Facebook author"
|
||||
msgstr "автор на Facebook "
|
||||
|
||||
#: cms_appconfig.py:171
|
||||
msgid "Twitter type"
|
||||
msgstr "тип на Twitter"
|
||||
|
||||
#: cms_appconfig.py:178
|
||||
msgid "Twitter site handle"
|
||||
msgstr "дескриптор сайта на Twitter"
|
||||
|
||||
#: cms_appconfig.py:182
|
||||
msgid "Twitter author handle"
|
||||
msgstr "дескриптор автора на Twitter"
|
||||
|
||||
#: cms_appconfig.py:186
|
||||
msgid "Schema.org type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:193
|
||||
msgid "Schema.org author name"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:197
|
||||
msgid "Send notifications on post publish"
|
||||
msgstr "Отправлять уведомления после публикации статьи"
|
||||
|
||||
#: cms_appconfig.py:200
|
||||
msgid "Emits a desktop notification -if enabled- when publishing a new post"
|
||||
msgstr "Уведомлять сигналами на рабочем столе, если включено, при публикации новой записи"
|
||||
|
||||
#: cms_appconfig.py:204
|
||||
msgid "Send notifications on post update"
|
||||
msgstr "Отправлять уведомления после публикации"
|
||||
|
||||
#: cms_appconfig.py:207
|
||||
msgid ""
|
||||
"Emits a desktop notification -if enabled- when editing a published post"
|
||||
msgstr "Уведомлять сигналами на рабочем столе, если включено, при редактировании опубликованной записи"
|
||||
|
||||
#: cms_apps.py:13 cms_toolbars.py:17 settings.py:485
|
||||
msgid "Blog"
|
||||
msgstr "Блог"
|
||||
|
||||
#: cms_menus.py:26
|
||||
msgid "Blog menu"
|
||||
msgstr "Меню блога"
|
||||
|
||||
#: cms_toolbars.py:20
|
||||
msgid "Post list"
|
||||
msgstr "Список статей"
|
||||
|
||||
#: cms_toolbars.py:23
|
||||
msgid "Category list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:26
|
||||
msgid "Tag list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:29
|
||||
msgid "Add post"
|
||||
msgstr "Добавить статью"
|
||||
|
||||
#: cms_toolbars.py:33
|
||||
msgid "Edit configuration"
|
||||
msgstr "Редактировать настройки"
|
||||
|
||||
#: cms_toolbars.py:38
|
||||
msgid "Edit Post"
|
||||
msgstr "Редактировать статью"
|
||||
|
||||
#: cms_toolbars.py:53
|
||||
#, python-brace-format
|
||||
msgid "Publish {0} now"
|
||||
msgstr "Опубликовано сейчас {0} "
|
||||
|
||||
#: cms_wizards.py:22
|
||||
msgid "Slug"
|
||||
msgstr "ЧПУ"
|
||||
|
||||
#: cms_wizards.py:25
|
||||
msgid "Leave empty for automatic slug, or override as required."
|
||||
msgstr "Оставьте пустым для автоматического ЧПУ, либо измените как понадобится"
|
||||
|
||||
#: cms_wizards.py:105
|
||||
#, python-brace-format
|
||||
msgid "New {0}"
|
||||
msgstr "Новых {0}"
|
||||
|
||||
#: cms_wizards.py:109
|
||||
#, python-brace-format
|
||||
msgid "Create a new {0} in {1}"
|
||||
msgstr "Создать новых {0} из {1}"
|
||||
|
||||
#: feeds.py:39
|
||||
#, python-format
|
||||
msgid "Blog articles on %(site_name)s"
|
||||
msgstr "Статьи блога с сайта: %(site_name)s"
|
||||
|
||||
#: liveblog/apps.py:7
|
||||
msgid "Liveblog"
|
||||
msgstr "Транслируемый блог"
|
||||
|
||||
#: liveblog/cms_plugins.py:13
|
||||
msgid "Liveblog item"
|
||||
msgstr "Новость в транслируемом блоге"
|
||||
|
||||
#: liveblog/models.py:27
|
||||
msgid "publish liveblog entry"
|
||||
msgstr "опубликовать запись в транслируемый блог"
|
||||
|
||||
#: liveblog/models.py:28
|
||||
msgid "post date"
|
||||
msgstr "дата публикации"
|
||||
|
||||
#: liveblog/models.py:31 liveblog/models.py:111
|
||||
msgid "liveblog entry"
|
||||
msgstr "запись транслируемого блога"
|
||||
|
||||
#: liveblog/models.py:32 liveblog/models.py:112
|
||||
msgid "liveblog entries"
|
||||
msgstr "записи в транслируемом блоге"
|
||||
|
||||
#: liveblog/models.py:93 models.py:252
|
||||
msgid "title"
|
||||
msgstr "Заголовок"
|
||||
|
||||
#: liveblog/models.py:95
|
||||
msgid "image"
|
||||
msgstr "изображение"
|
||||
|
||||
#: liveblog/models.py:103
|
||||
msgid "thumbnail size"
|
||||
msgstr "размер миниатюры"
|
||||
|
||||
#: models.py:95
|
||||
msgid "parent"
|
||||
msgstr "предок"
|
||||
|
||||
#: models.py:97
|
||||
msgid "created at"
|
||||
msgstr "время создания"
|
||||
|
||||
#: models.py:98
|
||||
msgid "modified at"
|
||||
msgstr "время изменения"
|
||||
|
||||
#: models.py:99 models.py:249 models.py:491
|
||||
msgid "app. config"
|
||||
msgstr "настройки приложения"
|
||||
|
||||
#: models.py:102
|
||||
msgid "name"
|
||||
msgstr "название"
|
||||
|
||||
#: models.py:103 models.py:254
|
||||
msgid "slug"
|
||||
msgstr "ЧПУ"
|
||||
|
||||
#: models.py:104
|
||||
msgid "category meta description"
|
||||
msgstr "категория мета описания"
|
||||
|
||||
#: models.py:132
|
||||
msgid "blog category"
|
||||
msgstr "категория блога"
|
||||
|
||||
#: models.py:133
|
||||
msgid "blog categories"
|
||||
msgstr "категории блога"
|
||||
|
||||
#: models.py:169
|
||||
msgid "BlogCategory (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:196
|
||||
msgid "author"
|
||||
msgstr "автор"
|
||||
|
||||
#: models.py:203
|
||||
msgid "created"
|
||||
msgstr "создан(о)"
|
||||
|
||||
#: models.py:204
|
||||
msgid "last modified"
|
||||
msgstr "последние изменения"
|
||||
|
||||
#: models.py:205
|
||||
msgid "published since"
|
||||
msgstr "опубликовано"
|
||||
|
||||
#: models.py:206
|
||||
msgid "published until"
|
||||
msgstr "опубликовано до"
|
||||
|
||||
#: models.py:207
|
||||
msgid "featured date"
|
||||
msgstr "избранная дата"
|
||||
|
||||
#: models.py:208
|
||||
msgid "publish"
|
||||
msgstr "опубликовать"
|
||||
|
||||
#: models.py:209
|
||||
msgid "include in RSS feed"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:211
|
||||
msgid "category"
|
||||
msgstr "категория"
|
||||
|
||||
#: models.py:214
|
||||
msgid "main image"
|
||||
msgstr "главная страница"
|
||||
|
||||
#: models.py:222
|
||||
msgid "main image thumbnail"
|
||||
msgstr "уменьшенная копия главного изображения"
|
||||
|
||||
#: models.py:230
|
||||
msgid "main image full"
|
||||
msgstr "Полноразмерное изображение"
|
||||
|
||||
#: models.py:237
|
||||
msgid "enable comments on post"
|
||||
msgstr "Разрешить комментарии к статье"
|
||||
|
||||
#: models.py:241
|
||||
msgid "Site(s)"
|
||||
msgstr "Сайт(ы)"
|
||||
|
||||
#: models.py:244
|
||||
msgid ""
|
||||
"Select sites in which to show the post. If none is set it will be visible in"
|
||||
" all the configured sites."
|
||||
msgstr "Выберите сайты на которых будет опубликована статья. Если сайты не выбраны, статья будет опубликована на всех сайтах сразу."
|
||||
|
||||
#: models.py:256
|
||||
msgid "subtitle"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:257
|
||||
msgid "abstract"
|
||||
msgstr "Краткое описание"
|
||||
|
||||
#: models.py:258
|
||||
msgid "post meta description"
|
||||
msgstr "мета-описание статьи"
|
||||
|
||||
#: models.py:259
|
||||
msgid "post meta keywords"
|
||||
msgstr "ключевые слова к статье"
|
||||
|
||||
#: models.py:261
|
||||
msgid "post meta title"
|
||||
msgstr "мета-заголовок к статье"
|
||||
|
||||
#: models.py:262
|
||||
msgid "used in title tag and social sharing"
|
||||
msgstr "используется в метках и обмене в социальных сетях"
|
||||
|
||||
#: models.py:267
|
||||
msgid "text"
|
||||
msgstr "текст"
|
||||
|
||||
#: models.py:273
|
||||
msgid "enable liveblog on post"
|
||||
msgstr "включить трансляцию при публикации"
|
||||
|
||||
#: models.py:279
|
||||
msgid ""
|
||||
"Type a tag and hit tab, or start typing and select from autocomplete list."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:282
|
||||
msgid "Related Posts"
|
||||
msgstr "Связанные Публикации"
|
||||
|
||||
#: models.py:314
|
||||
msgid "blog article"
|
||||
msgstr "статья блога"
|
||||
|
||||
#: models.py:315
|
||||
msgid "blog articles"
|
||||
msgstr "статьи блога"
|
||||
|
||||
#: models.py:320
|
||||
msgid "Post (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "current site"
|
||||
msgstr "текущий сайт"
|
||||
|
||||
#: models.py:493
|
||||
msgid "Select items from the current site only"
|
||||
msgstr "Выбрать записи только из текущего сайта"
|
||||
|
||||
#: models.py:497
|
||||
msgid "Plugin template"
|
||||
msgstr "Шаблон плагина"
|
||||
|
||||
#: models.py:498
|
||||
msgid "Select plugin template to load for this instance"
|
||||
msgstr "Выберите шаблон плагина для загрузки к данному экземпляру объекта"
|
||||
|
||||
#: models.py:536 models.py:578
|
||||
msgid "articles"
|
||||
msgstr "статьи"
|
||||
|
||||
#: models.py:538
|
||||
msgid "The number of latests articles to be displayed."
|
||||
msgstr "Количество последних статей, которые будут показаны."
|
||||
|
||||
#: models.py:541
|
||||
msgid "filter by tag"
|
||||
msgstr "фильтровать по тегам"
|
||||
|
||||
#: models.py:543
|
||||
msgid "Show only the blog articles tagged with chosen tags."
|
||||
msgstr "Показывать статьи только с выбранными метками."
|
||||
|
||||
#: models.py:549
|
||||
msgid "filter by category"
|
||||
msgstr "фильтровать по категориям"
|
||||
|
||||
#: models.py:550
|
||||
msgid "Show only the blog articles tagged with chosen categories."
|
||||
msgstr "Показывать статьи только из выбранных категорий."
|
||||
|
||||
#: models.py:554
|
||||
#, python-format
|
||||
msgid "%s latest articles by tag"
|
||||
msgstr "%s последних статей по тегам"
|
||||
|
||||
#: models.py:574
|
||||
msgid "authors"
|
||||
msgstr "авторы"
|
||||
|
||||
#: models.py:580
|
||||
msgid "The number of author articles to be displayed."
|
||||
msgstr "Количество статей автора, которые будут показаны."
|
||||
|
||||
#: models.py:584
|
||||
#, python-format
|
||||
msgid "%s latest articles by author"
|
||||
msgstr "%s последних статей по авторам"
|
||||
|
||||
#: models.py:605 models.py:608
|
||||
msgid "Featured posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:623
|
||||
msgid "generic blog plugin"
|
||||
msgstr "генерируемый плагин блога"
|
||||
|
||||
#: settings.py:26
|
||||
msgid "Full date"
|
||||
msgstr "Полная дата"
|
||||
|
||||
#: settings.py:27
|
||||
msgid "Year / Month"
|
||||
msgstr "Год / Месяц"
|
||||
|
||||
#: settings.py:28 templates/djangocms_blog/post_list.html:14
|
||||
msgid "Category"
|
||||
msgstr "Категория"
|
||||
|
||||
#: settings.py:29
|
||||
msgid "Just slug"
|
||||
msgstr "ЧПУ"
|
||||
|
||||
#: settings.py:59
|
||||
msgid "Categories and posts"
|
||||
msgstr "Категории и статьи"
|
||||
|
||||
#: settings.py:60
|
||||
msgid "Categories only"
|
||||
msgstr "Только категории"
|
||||
|
||||
#: settings.py:61
|
||||
msgid "Posts only"
|
||||
msgstr "Только статьи"
|
||||
|
||||
#: settings.py:62
|
||||
msgid "None"
|
||||
msgstr "Ничего"
|
||||
|
||||
#: settings.py:71
|
||||
msgid "always"
|
||||
msgstr "всегда"
|
||||
|
||||
#: settings.py:72
|
||||
msgid "hourly"
|
||||
msgstr "ежечасно"
|
||||
|
||||
#: settings.py:73
|
||||
msgid "daily"
|
||||
msgstr "ежедневно"
|
||||
|
||||
#: settings.py:74
|
||||
msgid "weekly"
|
||||
msgstr "еженедельно"
|
||||
|
||||
#: settings.py:75
|
||||
msgid "monthly"
|
||||
msgstr "ежемесячно"
|
||||
|
||||
#: settings.py:76
|
||||
msgid "yearly"
|
||||
msgstr "ежегодно"
|
||||
|
||||
#: settings.py:77
|
||||
msgid "never"
|
||||
msgstr "никогда"
|
||||
|
||||
#: settings.py:492
|
||||
msgid "Latest Blog Articles"
|
||||
msgstr "Последние статьи блога"
|
||||
|
||||
#: settings.py:499
|
||||
msgid "Latest Blog Articles - Cache"
|
||||
msgstr "Последние статьи блога - Кэш"
|
||||
|
||||
#: settings.py:506
|
||||
msgid "Author Blog Articles"
|
||||
msgstr "Автор статей блога"
|
||||
|
||||
#: settings.py:513
|
||||
msgid "Author Blog Articles List"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:520 templates/djangocms_blog/plugins/tags.html:5
|
||||
msgid "Tags"
|
||||
msgstr "Метки"
|
||||
|
||||
#: settings.py:527 templates/djangocms_blog/plugins/categories.html:3
|
||||
msgid "Categories"
|
||||
msgstr "Категории"
|
||||
|
||||
#: settings.py:534 templates/djangocms_blog/plugins/archive.html:3
|
||||
#: templates/djangocms_blog/post_list.html:12
|
||||
msgid "Archive"
|
||||
msgstr "Архив"
|
||||
|
||||
#: settings.py:541
|
||||
msgid "Featured Posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:548
|
||||
msgid "Featured Posts - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:590
|
||||
msgid "Default template"
|
||||
msgstr "Шаблон по умолчанию"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr "читать далее"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr "создана"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:17
|
||||
#: templates/djangocms_blog/plugins/authors.html:10
|
||||
#: templates/djangocms_blog/plugins/categories.html:10
|
||||
#: templates/djangocms_blog/plugins/tags.html:12
|
||||
#, python-format
|
||||
msgid "1 article"
|
||||
msgid_plural "%(articles)s articles"
|
||||
msgstr[0] "%(articles)s статья"
|
||||
msgstr[1] "%(articles)s статьи"
|
||||
msgstr[2] "%(articles)s статей"
|
||||
msgstr[3] "%(articles)s статей"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:18
|
||||
#: templates/djangocms_blog/plugins/authors.html:11
|
||||
#: templates/djangocms_blog/plugins/categories.html:11
|
||||
#: templates/djangocms_blog/plugins/tags.html:13
|
||||
msgid "0 articles"
|
||||
msgstr "0 статей"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:26
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:12
|
||||
#: templates/djangocms_blog/plugins/latest_entries.html:7
|
||||
#: templates/djangocms_blog/plugins/tags.html:17
|
||||
#: templates/djangocms_blog/post_list.html:21
|
||||
msgid "No article found."
|
||||
msgstr "Не найдено ни одной статьи."
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:3
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:3
|
||||
msgid "Authors"
|
||||
msgstr "Авторы"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:15
|
||||
msgid "No author found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:7
|
||||
#: templates/djangocms_blog/post_list.html:11
|
||||
msgid "Articles by"
|
||||
msgstr "Статьи созданы"
|
||||
|
||||
#: templates/djangocms_blog/plugins/categories.html:15
|
||||
msgid "No categories found."
|
||||
msgstr "Не найдено ни одной категории."
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:13
|
||||
msgid "Tag"
|
||||
msgstr "Метка"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:24
|
||||
msgid "Back"
|
||||
msgstr "Назад"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:29
|
||||
msgid "previous"
|
||||
msgstr "предыдущая"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "Page"
|
||||
msgstr "Страница"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "of"
|
||||
msgstr "из"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:35
|
||||
msgid "next"
|
||||
msgstr "следующая"
|
||||
764
djangocms_blog/locale/sl/LC_MESSAGES/django.po
Normal file
764
djangocms_blog/locale/sl/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,764 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Iacopo Spalletti, 2014
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: djangocms-blog\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-30 11:04+0200\n"
|
||||
"PO-Revision-Date: 2014-03-29 15:29+0000\n"
|
||||
"Last-Translator: Iacopo Spalletti, 2014\n"
|
||||
"Language-Team: Slovenian (http://app.transifex.com/nephila/djangocms-blog/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"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: admin.py:65
|
||||
msgid "site"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:131
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:138
|
||||
msgid "Images"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:141
|
||||
msgid "SEO"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:172
|
||||
msgid "Publish selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:194
|
||||
msgid "Unpublish selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:207
|
||||
msgid "Enable comments for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:221
|
||||
msgid "Disable comments for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:235
|
||||
msgid "Enable liveblog for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:249
|
||||
msgid "Disable liveblog for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:473
|
||||
msgid "Generic"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:485
|
||||
msgid "Layout"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:499
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:503
|
||||
msgid "Sitemap"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:512
|
||||
msgid "Meta"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:524 admin.py:535 admin.py:545
|
||||
msgid "You can provide plain strings, Post model attribute or method names"
|
||||
msgstr ""
|
||||
|
||||
#: apps.py:7
|
||||
msgid "django CMS Blog"
|
||||
msgstr "django CMS Blog"
|
||||
|
||||
#: cms_appconfig.py:19
|
||||
msgid "application title"
|
||||
msgstr "naziv aplikacije"
|
||||
|
||||
#: cms_appconfig.py:20
|
||||
msgid "object name"
|
||||
msgstr "ime objekta"
|
||||
|
||||
#: cms_appconfig.py:24
|
||||
msgid "blog config"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:25
|
||||
msgid "blog configs"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:28
|
||||
msgid "untitled"
|
||||
msgstr "nepoimenovano"
|
||||
|
||||
#: cms_appconfig.py:54
|
||||
msgid "Post published by default"
|
||||
msgstr "Objava naj bo samodejno objavljena"
|
||||
|
||||
#: cms_appconfig.py:58
|
||||
msgid "Default size of full images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:61
|
||||
msgid ""
|
||||
"If left empty the image size will have to be set for every newly created "
|
||||
"post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:65
|
||||
msgid "Default size of thumbnail images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:68
|
||||
msgid ""
|
||||
"If left empty the thumbnail image size will have to be set for every newly "
|
||||
"created post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:72
|
||||
msgid "Permalink structure"
|
||||
msgstr "Struktura povezav"
|
||||
|
||||
#: cms_appconfig.py:79
|
||||
msgid "Use placeholder and plugins for article body"
|
||||
msgstr "Za objavo naj bodo uporabljeni vtičniki in označbe mest"
|
||||
|
||||
#: cms_appconfig.py:83
|
||||
msgid "Use abstract field"
|
||||
msgstr "Uporaba abstraktnih polj"
|
||||
|
||||
#: cms_appconfig.py:87
|
||||
msgid "Enable related posts"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:91
|
||||
msgid "Set author"
|
||||
msgstr "Nastavi avtorja"
|
||||
|
||||
#: cms_appconfig.py:93
|
||||
msgid "Set author by default"
|
||||
msgstr "Avtor naj bo nastavljen samodejno"
|
||||
|
||||
#: cms_appconfig.py:98
|
||||
msgid "Paginate size"
|
||||
msgstr "Število objav na stran"
|
||||
|
||||
#: cms_appconfig.py:101
|
||||
msgid "When paginating list views, how many articles per page?"
|
||||
msgstr "Koliko objav naj bo na eni strani?"
|
||||
|
||||
#: cms_appconfig.py:105
|
||||
msgid "Template prefix"
|
||||
msgstr "Predpona predlog"
|
||||
|
||||
#: cms_appconfig.py:108
|
||||
msgid "Alternative directory to load the blog templates from"
|
||||
msgstr "Alternativni direktorij za nalaganje predlog bloga"
|
||||
|
||||
#: cms_appconfig.py:112
|
||||
msgid "Menu structure"
|
||||
msgstr "Struktura menija"
|
||||
|
||||
#: cms_appconfig.py:116
|
||||
msgid "Structure of the django CMS menu"
|
||||
msgstr "Struktura django CMS menija"
|
||||
|
||||
#: cms_appconfig.py:120
|
||||
msgid "Show empty categories in menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:123
|
||||
msgid "Show categories with no post attached in the menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:128
|
||||
msgid "Sitemap changefreq"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:132
|
||||
msgid "Changefreq attribute for sitemap items"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:136
|
||||
msgid "Sitemap priority"
|
||||
msgstr "Sitemap prioriteta"
|
||||
|
||||
#: cms_appconfig.py:139
|
||||
msgid "Priority attribute for sitemap items"
|
||||
msgstr "Prioriteta atributov za elemente sitemapa"
|
||||
|
||||
#: cms_appconfig.py:143
|
||||
msgid "Object type"
|
||||
msgstr "Tip objekta"
|
||||
|
||||
#: cms_appconfig.py:147
|
||||
msgid "Facebook type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:151
|
||||
msgid "Facebook application ID"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:155
|
||||
msgid "Facebook profile ID"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:159
|
||||
msgid "Facebook page URL"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:163
|
||||
msgid "Facebook author URL"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:167
|
||||
msgid "Facebook author"
|
||||
msgstr "Facebook avtor"
|
||||
|
||||
#: cms_appconfig.py:171
|
||||
msgid "Twitter type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:178
|
||||
msgid "Twitter site handle"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:182
|
||||
msgid "Twitter author handle"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:186
|
||||
msgid "Schema.org type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:193
|
||||
msgid "Schema.org author name"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:197
|
||||
msgid "Send notifications on post publish"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:200
|
||||
msgid "Emits a desktop notification -if enabled- when publishing a new post"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:204
|
||||
msgid "Send notifications on post update"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:207
|
||||
msgid ""
|
||||
"Emits a desktop notification -if enabled- when editing a published post"
|
||||
msgstr ""
|
||||
|
||||
#: cms_apps.py:13 cms_toolbars.py:17 settings.py:485
|
||||
msgid "Blog"
|
||||
msgstr "Blog"
|
||||
|
||||
#: cms_menus.py:26
|
||||
msgid "Blog menu"
|
||||
msgstr "Blog meni"
|
||||
|
||||
#: cms_toolbars.py:20
|
||||
msgid "Post list"
|
||||
msgstr "Seznam objav"
|
||||
|
||||
#: cms_toolbars.py:23
|
||||
msgid "Category list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:26
|
||||
msgid "Tag list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:29
|
||||
msgid "Add post"
|
||||
msgstr "Nova objava"
|
||||
|
||||
#: cms_toolbars.py:33
|
||||
msgid "Edit configuration"
|
||||
msgstr "Uredi nastavitve"
|
||||
|
||||
#: cms_toolbars.py:38
|
||||
msgid "Edit Post"
|
||||
msgstr "Uredi objavo"
|
||||
|
||||
#: cms_toolbars.py:53
|
||||
#, python-brace-format
|
||||
msgid "Publish {0} now"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:22
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:25
|
||||
msgid "Leave empty for automatic slug, or override as required."
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:105
|
||||
#, python-brace-format
|
||||
msgid "New {0}"
|
||||
msgstr "Nov {0}"
|
||||
|
||||
#: cms_wizards.py:109
|
||||
#, python-brace-format
|
||||
msgid "Create a new {0} in {1}"
|
||||
msgstr "Ustvari nov {0} v {1}"
|
||||
|
||||
#: feeds.py:39
|
||||
#, python-format
|
||||
msgid "Blog articles on %(site_name)s"
|
||||
msgstr "Blog objave na %(site_name)s"
|
||||
|
||||
#: liveblog/apps.py:7
|
||||
msgid "Liveblog"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/cms_plugins.py:13
|
||||
msgid "Liveblog item"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:27
|
||||
msgid "publish liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:28
|
||||
msgid "post date"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:31 liveblog/models.py:111
|
||||
msgid "liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:32 liveblog/models.py:112
|
||||
msgid "liveblog entries"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:93 models.py:252
|
||||
msgid "title"
|
||||
msgstr "naziv"
|
||||
|
||||
#: liveblog/models.py:95
|
||||
msgid "image"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:103
|
||||
msgid "thumbnail size"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:95
|
||||
msgid "parent"
|
||||
msgstr "starš"
|
||||
|
||||
#: models.py:97
|
||||
msgid "created at"
|
||||
msgstr "ustvarjeno na"
|
||||
|
||||
#: models.py:98
|
||||
msgid "modified at"
|
||||
msgstr "urejeno na"
|
||||
|
||||
#: models.py:99 models.py:249 models.py:491
|
||||
msgid "app. config"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:102
|
||||
msgid "name"
|
||||
msgstr "ime"
|
||||
|
||||
#: models.py:103 models.py:254
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:104
|
||||
msgid "category meta description"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:132
|
||||
msgid "blog category"
|
||||
msgstr "blog kategorija"
|
||||
|
||||
#: models.py:133
|
||||
msgid "blog categories"
|
||||
msgstr "blog kategorije"
|
||||
|
||||
#: models.py:169
|
||||
msgid "BlogCategory (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:196
|
||||
msgid "author"
|
||||
msgstr "avtor"
|
||||
|
||||
#: models.py:203
|
||||
msgid "created"
|
||||
msgstr "ustvarjeno"
|
||||
|
||||
#: models.py:204
|
||||
msgid "last modified"
|
||||
msgstr "nazadnje urejeno"
|
||||
|
||||
#: models.py:205
|
||||
msgid "published since"
|
||||
msgstr "objavljeno od"
|
||||
|
||||
#: models.py:206
|
||||
msgid "published until"
|
||||
msgstr "objavljeno do"
|
||||
|
||||
#: models.py:207
|
||||
msgid "featured date"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:208
|
||||
msgid "publish"
|
||||
msgstr "objavljeno"
|
||||
|
||||
#: models.py:209
|
||||
msgid "include in RSS feed"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:211
|
||||
msgid "category"
|
||||
msgstr "kategorija"
|
||||
|
||||
#: models.py:214
|
||||
msgid "main image"
|
||||
msgstr "glavna slika"
|
||||
|
||||
#: models.py:222
|
||||
msgid "main image thumbnail"
|
||||
msgstr "glavna slika - predogled"
|
||||
|
||||
#: models.py:230
|
||||
msgid "main image full"
|
||||
msgstr "glavna slika - polna"
|
||||
|
||||
#: models.py:237
|
||||
msgid "enable comments on post"
|
||||
msgstr "Omogoči komentarje na objavi"
|
||||
|
||||
#: models.py:241
|
||||
msgid "Site(s)"
|
||||
msgstr "Stran(i)"
|
||||
|
||||
#: models.py:244
|
||||
msgid ""
|
||||
"Select sites in which to show the post. If none is set it will be visible in"
|
||||
" all the configured sites."
|
||||
msgstr "Izberi strani na katerih naj bo objava prikazana. Če ni izbrano nič, bo objava prikazana na vseh nastavljenih straneh."
|
||||
|
||||
#: models.py:256
|
||||
msgid "subtitle"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:257
|
||||
msgid "abstract"
|
||||
msgstr "osnutek"
|
||||
|
||||
#: models.py:258
|
||||
msgid "post meta description"
|
||||
msgstr "meta opis objave"
|
||||
|
||||
#: models.py:259
|
||||
msgid "post meta keywords"
|
||||
msgstr "meta ključne besede objave"
|
||||
|
||||
#: models.py:261
|
||||
msgid "post meta title"
|
||||
msgstr "meta naziv objave"
|
||||
|
||||
#: models.py:262
|
||||
msgid "used in title tag and social sharing"
|
||||
msgstr "za uporabo v označbi naslova in deljenju na socialnih omrežjih"
|
||||
|
||||
#: models.py:267
|
||||
msgid "text"
|
||||
msgstr "tekst"
|
||||
|
||||
#: models.py:273
|
||||
msgid "enable liveblog on post"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:279
|
||||
msgid ""
|
||||
"Type a tag and hit tab, or start typing and select from autocomplete list."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:282
|
||||
msgid "Related Posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:314
|
||||
msgid "blog article"
|
||||
msgstr "blog objava"
|
||||
|
||||
#: models.py:315
|
||||
msgid "blog articles"
|
||||
msgstr "blog objave"
|
||||
|
||||
#: models.py:320
|
||||
msgid "Post (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "current site"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "Select items from the current site only"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:497
|
||||
msgid "Plugin template"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:498
|
||||
msgid "Select plugin template to load for this instance"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:536 models.py:578
|
||||
msgid "articles"
|
||||
msgstr "objave"
|
||||
|
||||
#: models.py:538
|
||||
msgid "The number of latests articles to be displayed."
|
||||
msgstr "Število najnovejših objav, ki naj bodo prikazane"
|
||||
|
||||
#: models.py:541
|
||||
msgid "filter by tag"
|
||||
msgstr "filtriraj po oznakah"
|
||||
|
||||
#: models.py:543
|
||||
msgid "Show only the blog articles tagged with chosen tags."
|
||||
msgstr "Prikaži le blog objave označene z izbranimi oznakami"
|
||||
|
||||
#: models.py:549
|
||||
msgid "filter by category"
|
||||
msgstr "filtriraj po kategoriji"
|
||||
|
||||
#: models.py:550
|
||||
msgid "Show only the blog articles tagged with chosen categories."
|
||||
msgstr "Prikaži le blog objave označene z izbranimi kategorijami"
|
||||
|
||||
#: models.py:554
|
||||
#, python-format
|
||||
msgid "%s latest articles by tag"
|
||||
msgstr "%s najnovejših objav glede na oznako"
|
||||
|
||||
#: models.py:574
|
||||
msgid "authors"
|
||||
msgstr "avtorji"
|
||||
|
||||
#: models.py:580
|
||||
msgid "The number of author articles to be displayed."
|
||||
msgstr "Število avtorjevih objav, ki naj bodo prikazane"
|
||||
|
||||
#: models.py:584
|
||||
#, python-format
|
||||
msgid "%s latest articles by author"
|
||||
msgstr "%s najnovejših objav glede na avtorja"
|
||||
|
||||
#: models.py:605 models.py:608
|
||||
msgid "Featured posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:623
|
||||
msgid "generic blog plugin"
|
||||
msgstr "generični blog vtičnik"
|
||||
|
||||
#: settings.py:26
|
||||
msgid "Full date"
|
||||
msgstr "Datum (poln)"
|
||||
|
||||
#: settings.py:27
|
||||
msgid "Year / Month"
|
||||
msgstr "Leto / Mesec"
|
||||
|
||||
#: settings.py:28 templates/djangocms_blog/post_list.html:14
|
||||
msgid "Category"
|
||||
msgstr "Kategorija"
|
||||
|
||||
#: settings.py:29
|
||||
msgid "Just slug"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:59
|
||||
msgid "Categories and posts"
|
||||
msgstr "Kategorije in objave"
|
||||
|
||||
#: settings.py:60
|
||||
msgid "Categories only"
|
||||
msgstr "Samo kategorije"
|
||||
|
||||
#: settings.py:61
|
||||
msgid "Posts only"
|
||||
msgstr "Samo objave"
|
||||
|
||||
#: settings.py:62
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:71
|
||||
msgid "always"
|
||||
msgstr "vedno"
|
||||
|
||||
#: settings.py:72
|
||||
msgid "hourly"
|
||||
msgstr "vsako uro"
|
||||
|
||||
#: settings.py:73
|
||||
msgid "daily"
|
||||
msgstr "dnevno"
|
||||
|
||||
#: settings.py:74
|
||||
msgid "weekly"
|
||||
msgstr "tedensko"
|
||||
|
||||
#: settings.py:75
|
||||
msgid "monthly"
|
||||
msgstr "mesečno"
|
||||
|
||||
#: settings.py:76
|
||||
msgid "yearly"
|
||||
msgstr "letno"
|
||||
|
||||
#: settings.py:77
|
||||
msgid "never"
|
||||
msgstr "nikoli"
|
||||
|
||||
#: settings.py:492
|
||||
msgid "Latest Blog Articles"
|
||||
msgstr "Najnovejše blog objave"
|
||||
|
||||
#: settings.py:499
|
||||
msgid "Latest Blog Articles - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:506
|
||||
msgid "Author Blog Articles"
|
||||
msgstr "Avtorjeve blog objave"
|
||||
|
||||
#: settings.py:513
|
||||
msgid "Author Blog Articles List"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:520 templates/djangocms_blog/plugins/tags.html:5
|
||||
msgid "Tags"
|
||||
msgstr "Oznake"
|
||||
|
||||
#: settings.py:527 templates/djangocms_blog/plugins/categories.html:3
|
||||
msgid "Categories"
|
||||
msgstr "Kategorije"
|
||||
|
||||
#: settings.py:534 templates/djangocms_blog/plugins/archive.html:3
|
||||
#: templates/djangocms_blog/post_list.html:12
|
||||
msgid "Archive"
|
||||
msgstr "Arhiv"
|
||||
|
||||
#: settings.py:541
|
||||
msgid "Featured Posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:548
|
||||
msgid "Featured Posts - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:590
|
||||
msgid "Default template"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr "preberi več"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:17
|
||||
#: templates/djangocms_blog/plugins/authors.html:10
|
||||
#: templates/djangocms_blog/plugins/categories.html:10
|
||||
#: templates/djangocms_blog/plugins/tags.html:12
|
||||
#, python-format
|
||||
msgid "1 article"
|
||||
msgid_plural "%(articles)s articles"
|
||||
msgstr[0] "%(articles)s objava"
|
||||
msgstr[1] "%(articles)s objave"
|
||||
msgstr[2] "%(articles)s objave"
|
||||
msgstr[3] "%(articles)s objave"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:18
|
||||
#: templates/djangocms_blog/plugins/authors.html:11
|
||||
#: templates/djangocms_blog/plugins/categories.html:11
|
||||
#: templates/djangocms_blog/plugins/tags.html:13
|
||||
msgid "0 articles"
|
||||
msgstr "0 objav"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:26
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:12
|
||||
#: templates/djangocms_blog/plugins/latest_entries.html:7
|
||||
#: templates/djangocms_blog/plugins/tags.html:17
|
||||
#: templates/djangocms_blog/post_list.html:21
|
||||
msgid "No article found."
|
||||
msgstr "Nič objav"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:3
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:3
|
||||
msgid "Authors"
|
||||
msgstr "Avtorji"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:15
|
||||
msgid "No author found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:7
|
||||
#: templates/djangocms_blog/post_list.html:11
|
||||
msgid "Articles by"
|
||||
msgstr "Objave avtorja"
|
||||
|
||||
#: templates/djangocms_blog/plugins/categories.html:15
|
||||
msgid "No categories found."
|
||||
msgstr "Nič kategorij"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:13
|
||||
msgid "Tag"
|
||||
msgstr "Oznaka"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:24
|
||||
msgid "Back"
|
||||
msgstr "Nazaj"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:29
|
||||
msgid "previous"
|
||||
msgstr "prejšnji/a"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "Page"
|
||||
msgstr "Stran"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "of"
|
||||
msgstr "od"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:35
|
||||
msgid "next"
|
||||
msgstr "naslednji"
|
||||
763
djangocms_blog/locale/tr/LC_MESSAGES/django.po
Normal file
763
djangocms_blog/locale/tr/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,763 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Rustam Mirzaev <mirus@2x2.pw>, 2016,2018
|
||||
# Rustam Mirzaev <mirus@2x2.pw>, 2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: djangocms-blog\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-30 11:04+0200\n"
|
||||
"PO-Revision-Date: 2014-03-29 15:29+0000\n"
|
||||
"Last-Translator: Rustam Mirzaev <mirus@2x2.pw>, 2016,2018\n"
|
||||
"Language-Team: Turkish (http://app.transifex.com/nephila/djangocms-blog/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"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: admin.py:65
|
||||
msgid "site"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:131
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:138
|
||||
msgid "Images"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:141
|
||||
msgid "SEO"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:172
|
||||
msgid "Publish selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:194
|
||||
msgid "Unpublish selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:207
|
||||
msgid "Enable comments for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:221
|
||||
msgid "Disable comments for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:235
|
||||
msgid "Enable liveblog for selection"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:249
|
||||
msgid "Disable liveblog for selection "
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:473
|
||||
msgid "Generic"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:485
|
||||
msgid "Layout"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:499
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:503
|
||||
msgid "Sitemap"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:512
|
||||
msgid "Meta"
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:524 admin.py:535 admin.py:545
|
||||
msgid "You can provide plain strings, Post model attribute or method names"
|
||||
msgstr "Düz dizgiler, makale modeli özniteliği veya metod adları sağlayabilirsiniz."
|
||||
|
||||
#: apps.py:7
|
||||
msgid "django CMS Blog"
|
||||
msgstr "django CMS Blogu"
|
||||
|
||||
#: cms_appconfig.py:19
|
||||
msgid "application title"
|
||||
msgstr "uygulama başlığı"
|
||||
|
||||
#: cms_appconfig.py:20
|
||||
msgid "object name"
|
||||
msgstr "nesne adı"
|
||||
|
||||
#: cms_appconfig.py:24
|
||||
msgid "blog config"
|
||||
msgstr "blog ayarı"
|
||||
|
||||
#: cms_appconfig.py:25
|
||||
msgid "blog configs"
|
||||
msgstr "blog ayarları"
|
||||
|
||||
#: cms_appconfig.py:28
|
||||
msgid "untitled"
|
||||
msgstr "isimsiz"
|
||||
|
||||
#: cms_appconfig.py:54
|
||||
msgid "Post published by default"
|
||||
msgstr "Varsayılan olarak yayınlanan makale"
|
||||
|
||||
#: cms_appconfig.py:58
|
||||
msgid "Default size of full images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:61
|
||||
msgid ""
|
||||
"If left empty the image size will have to be set for every newly created "
|
||||
"post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:65
|
||||
msgid "Default size of thumbnail images"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:68
|
||||
msgid ""
|
||||
"If left empty the thumbnail image size will have to be set for every newly "
|
||||
"created post."
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:72
|
||||
msgid "Permalink structure"
|
||||
msgstr "Kalıcı bağlantı yapısı"
|
||||
|
||||
#: cms_appconfig.py:79
|
||||
msgid "Use placeholder and plugins for article body"
|
||||
msgstr "Makale gövdesi olarak yer tututcu veya eklenti kullan"
|
||||
|
||||
#: cms_appconfig.py:83
|
||||
msgid "Use abstract field"
|
||||
msgstr "Soyut alanı kullan"
|
||||
|
||||
#: cms_appconfig.py:87
|
||||
msgid "Enable related posts"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:91
|
||||
msgid "Set author"
|
||||
msgstr "Yazarı ekle"
|
||||
|
||||
#: cms_appconfig.py:93
|
||||
msgid "Set author by default"
|
||||
msgstr "Varsayılan yazarı ekle"
|
||||
|
||||
#: cms_appconfig.py:98
|
||||
msgid "Paginate size"
|
||||
msgstr "Boyutu sayfala"
|
||||
|
||||
#: cms_appconfig.py:101
|
||||
msgid "When paginating list views, how many articles per page?"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:105
|
||||
msgid "Template prefix"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:108
|
||||
msgid "Alternative directory to load the blog templates from"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:112
|
||||
msgid "Menu structure"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:116
|
||||
msgid "Structure of the django CMS menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:120
|
||||
msgid "Show empty categories in menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:123
|
||||
msgid "Show categories with no post attached in the menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:128
|
||||
msgid "Sitemap changefreq"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:132
|
||||
msgid "Changefreq attribute for sitemap items"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:136
|
||||
msgid "Sitemap priority"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:139
|
||||
msgid "Priority attribute for sitemap items"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:143
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:147
|
||||
msgid "Facebook type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:151
|
||||
msgid "Facebook application ID"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:155
|
||||
msgid "Facebook profile ID"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:159
|
||||
msgid "Facebook page URL"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:163
|
||||
msgid "Facebook author URL"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:167
|
||||
msgid "Facebook author"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:171
|
||||
msgid "Twitter type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:178
|
||||
msgid "Twitter site handle"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:182
|
||||
msgid "Twitter author handle"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:186
|
||||
msgid "Schema.org type"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:193
|
||||
msgid "Schema.org author name"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:197
|
||||
msgid "Send notifications on post publish"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:200
|
||||
msgid "Emits a desktop notification -if enabled- when publishing a new post"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:204
|
||||
msgid "Send notifications on post update"
|
||||
msgstr ""
|
||||
|
||||
#: cms_appconfig.py:207
|
||||
msgid ""
|
||||
"Emits a desktop notification -if enabled- when editing a published post"
|
||||
msgstr ""
|
||||
|
||||
#: cms_apps.py:13 cms_toolbars.py:17 settings.py:485
|
||||
msgid "Blog"
|
||||
msgstr "Blog"
|
||||
|
||||
#: cms_menus.py:26
|
||||
msgid "Blog menu"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:20
|
||||
msgid "Post list"
|
||||
msgstr "Makale listesi"
|
||||
|
||||
#: cms_toolbars.py:23
|
||||
msgid "Category list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:26
|
||||
msgid "Tag list"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:29
|
||||
msgid "Add post"
|
||||
msgstr "Makale ekle"
|
||||
|
||||
#: cms_toolbars.py:33
|
||||
msgid "Edit configuration"
|
||||
msgstr ""
|
||||
|
||||
#: cms_toolbars.py:38
|
||||
msgid "Edit Post"
|
||||
msgstr "Makaleyi düzenle"
|
||||
|
||||
#: cms_toolbars.py:53
|
||||
#, python-brace-format
|
||||
msgid "Publish {0} now"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:22
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:25
|
||||
msgid "Leave empty for automatic slug, or override as required."
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:105
|
||||
#, python-brace-format
|
||||
msgid "New {0}"
|
||||
msgstr ""
|
||||
|
||||
#: cms_wizards.py:109
|
||||
#, python-brace-format
|
||||
msgid "Create a new {0} in {1}"
|
||||
msgstr ""
|
||||
|
||||
#: feeds.py:39
|
||||
#, python-format
|
||||
msgid "Blog articles on %(site_name)s"
|
||||
msgstr "%(site_name)s 'ki blog makaleleri"
|
||||
|
||||
#: liveblog/apps.py:7
|
||||
msgid "Liveblog"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/cms_plugins.py:13
|
||||
msgid "Liveblog item"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:27
|
||||
msgid "publish liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:28
|
||||
msgid "post date"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:31 liveblog/models.py:111
|
||||
msgid "liveblog entry"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:32 liveblog/models.py:112
|
||||
msgid "liveblog entries"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:93 models.py:252
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:95
|
||||
msgid "image"
|
||||
msgstr ""
|
||||
|
||||
#: liveblog/models.py:103
|
||||
msgid "thumbnail size"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:95
|
||||
msgid "parent"
|
||||
msgstr "üst öğe"
|
||||
|
||||
#: models.py:97
|
||||
msgid "created at"
|
||||
msgstr "oluşturma tarihi"
|
||||
|
||||
#: models.py:98
|
||||
msgid "modified at"
|
||||
msgstr "düzenleme tarihi"
|
||||
|
||||
#: models.py:99 models.py:249 models.py:491
|
||||
msgid "app. config"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:102
|
||||
msgid "name"
|
||||
msgstr "isim"
|
||||
|
||||
#: models.py:103 models.py:254
|
||||
msgid "slug"
|
||||
msgstr "okunaklı URL"
|
||||
|
||||
#: models.py:104
|
||||
msgid "category meta description"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:132
|
||||
msgid "blog category"
|
||||
msgstr "blog kategorisi"
|
||||
|
||||
#: models.py:133
|
||||
msgid "blog categories"
|
||||
msgstr "blog kategorileri"
|
||||
|
||||
#: models.py:169
|
||||
msgid "BlogCategory (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:196
|
||||
msgid "author"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:203
|
||||
msgid "created"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:204
|
||||
msgid "last modified"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:205
|
||||
msgid "published since"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:206
|
||||
msgid "published until"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:207
|
||||
msgid "featured date"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:208
|
||||
msgid "publish"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:209
|
||||
msgid "include in RSS feed"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:211
|
||||
msgid "category"
|
||||
msgstr "kategori"
|
||||
|
||||
#: models.py:214
|
||||
msgid "main image"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:222
|
||||
msgid "main image thumbnail"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:230
|
||||
msgid "main image full"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:237
|
||||
msgid "enable comments on post"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:241
|
||||
msgid "Site(s)"
|
||||
msgstr "Web site(ler)"
|
||||
|
||||
#: models.py:244
|
||||
msgid ""
|
||||
"Select sites in which to show the post. If none is set it will be visible in"
|
||||
" all the configured sites."
|
||||
msgstr "Yayınlamak istediğiniz web siteleri seçiniz. Eğer herhangi seçim yapılmaz ise, yayında olan tüm web sitelerde görünecektir."
|
||||
|
||||
#: models.py:256
|
||||
msgid "subtitle"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:257
|
||||
msgid "abstract"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:258
|
||||
msgid "post meta description"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:259
|
||||
msgid "post meta keywords"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:261
|
||||
msgid "post meta title"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:262
|
||||
msgid "used in title tag and social sharing"
|
||||
msgstr "başlık etiketinde veya sosyal paylaşımda kullanılır"
|
||||
|
||||
#: models.py:267
|
||||
msgid "text"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:273
|
||||
msgid "enable liveblog on post"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:279
|
||||
msgid ""
|
||||
"Type a tag and hit tab, or start typing and select from autocomplete list."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:282
|
||||
msgid "Related Posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:314
|
||||
msgid "blog article"
|
||||
msgstr "blog makalesi"
|
||||
|
||||
#: models.py:315
|
||||
msgid "blog articles"
|
||||
msgstr "blog makaleleri"
|
||||
|
||||
#: models.py:320
|
||||
msgid "Post (no translation)"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "current site"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:493
|
||||
msgid "Select items from the current site only"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:497
|
||||
msgid "Plugin template"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:498
|
||||
msgid "Select plugin template to load for this instance"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:536 models.py:578
|
||||
msgid "articles"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:538
|
||||
msgid "The number of latests articles to be displayed."
|
||||
msgstr "Ğörütülenecek olan makale sayısı"
|
||||
|
||||
#: models.py:541
|
||||
msgid "filter by tag"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:543
|
||||
msgid "Show only the blog articles tagged with chosen tags."
|
||||
msgstr "Sadece seçili etiketlerle işaretlenmiş makaleleri göster."
|
||||
|
||||
#: models.py:549
|
||||
msgid "filter by category"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:550
|
||||
msgid "Show only the blog articles tagged with chosen categories."
|
||||
msgstr "Sadece seçili kategorilerde bulunan makaleleri ğöster"
|
||||
|
||||
#: models.py:554
|
||||
#, python-format
|
||||
msgid "%s latest articles by tag"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:574
|
||||
msgid "authors"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:580
|
||||
msgid "The number of author articles to be displayed."
|
||||
msgstr "İlgili yazarın gösterilecek olan makale sayısı."
|
||||
|
||||
#: models.py:584
|
||||
#, python-format
|
||||
msgid "%s latest articles by author"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:605 models.py:608
|
||||
msgid "Featured posts"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:623
|
||||
msgid "generic blog plugin"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:26
|
||||
msgid "Full date"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:27
|
||||
msgid "Year / Month"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:28 templates/djangocms_blog/post_list.html:14
|
||||
msgid "Category"
|
||||
msgstr "Kategori"
|
||||
|
||||
#: settings.py:29
|
||||
msgid "Just slug"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:59
|
||||
msgid "Categories and posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:60
|
||||
msgid "Categories only"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:61
|
||||
msgid "Posts only"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:62
|
||||
msgid "None"
|
||||
msgstr "Yok"
|
||||
|
||||
#: settings.py:71
|
||||
msgid "always"
|
||||
msgstr "her zaman"
|
||||
|
||||
#: settings.py:72
|
||||
msgid "hourly"
|
||||
msgstr "her saat"
|
||||
|
||||
#: settings.py:73
|
||||
msgid "daily"
|
||||
msgstr "her gün"
|
||||
|
||||
#: settings.py:74
|
||||
msgid "weekly"
|
||||
msgstr "her hafta"
|
||||
|
||||
#: settings.py:75
|
||||
msgid "monthly"
|
||||
msgstr "her ay"
|
||||
|
||||
#: settings.py:76
|
||||
msgid "yearly"
|
||||
msgstr "her yıl"
|
||||
|
||||
#: settings.py:77
|
||||
msgid "never"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:492
|
||||
msgid "Latest Blog Articles"
|
||||
msgstr "Blog'un son makaleleri"
|
||||
|
||||
#: settings.py:499
|
||||
msgid "Latest Blog Articles - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:506
|
||||
msgid "Author Blog Articles"
|
||||
msgstr "Blog'un makale yazarı"
|
||||
|
||||
#: settings.py:513
|
||||
msgid "Author Blog Articles List"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:520 templates/djangocms_blog/plugins/tags.html:5
|
||||
msgid "Tags"
|
||||
msgstr "Etiketler"
|
||||
|
||||
#: settings.py:527 templates/djangocms_blog/plugins/categories.html:3
|
||||
msgid "Categories"
|
||||
msgstr "Kategoriler"
|
||||
|
||||
#: settings.py:534 templates/djangocms_blog/plugins/archive.html:3
|
||||
#: templates/djangocms_blog/post_list.html:12
|
||||
msgid "Archive"
|
||||
msgstr "Arşiv"
|
||||
|
||||
#: settings.py:541
|
||||
msgid "Featured Posts"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:548
|
||||
msgid "Featured Posts - Cache"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:590
|
||||
msgid "Default template"
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_item.html:32
|
||||
msgid "read more"
|
||||
msgstr "devamını oku"
|
||||
|
||||
#: templates/djangocms_blog/includes/blog_meta.html:6
|
||||
msgid "by"
|
||||
msgstr "tarafından"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:17
|
||||
#: templates/djangocms_blog/plugins/authors.html:10
|
||||
#: templates/djangocms_blog/plugins/categories.html:10
|
||||
#: templates/djangocms_blog/plugins/tags.html:12
|
||||
#, python-format
|
||||
msgid "1 article"
|
||||
msgid_plural "%(articles)s articles"
|
||||
msgstr[0] "1 makale"
|
||||
msgstr[1] "%(articles)s makale"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:18
|
||||
#: templates/djangocms_blog/plugins/authors.html:11
|
||||
#: templates/djangocms_blog/plugins/categories.html:11
|
||||
#: templates/djangocms_blog/plugins/tags.html:13
|
||||
msgid "0 articles"
|
||||
msgstr "0 makale"
|
||||
|
||||
#: templates/djangocms_blog/plugins/archive.html:26
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:12
|
||||
#: templates/djangocms_blog/plugins/latest_entries.html:7
|
||||
#: templates/djangocms_blog/plugins/tags.html:17
|
||||
#: templates/djangocms_blog/post_list.html:21
|
||||
msgid "No article found."
|
||||
msgstr "Makale bulunamadı."
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:3
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:3
|
||||
msgid "Authors"
|
||||
msgstr "Yazarlar"
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors.html:15
|
||||
msgid "No author found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/plugins/authors_posts.html:7
|
||||
#: templates/djangocms_blog/post_list.html:11
|
||||
msgid "Articles by"
|
||||
msgstr "Makaleler"
|
||||
|
||||
#: templates/djangocms_blog/plugins/categories.html:15
|
||||
msgid "No categories found."
|
||||
msgstr ""
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:13
|
||||
msgid "Tag"
|
||||
msgstr "Etiket"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:24
|
||||
msgid "Back"
|
||||
msgstr "Geri"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:29
|
||||
msgid "previous"
|
||||
msgstr "önceki"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "Page"
|
||||
msgstr "Sayfa"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:32
|
||||
msgid "of"
|
||||
msgstr "biri"
|
||||
|
||||
#: templates/djangocms_blog/post_list.html:35
|
||||
msgid "next"
|
||||
msgstr "sonraki"
|
||||
197
djangocms_blog/managers.py
Normal file
197
djangocms_blog/managers.py
Normal file
|
|
@ -0,0 +1,197 @@
|
|||
from collections import Counter
|
||||
|
||||
from aldryn_apphooks_config.managers.parler import AppHookConfigTranslatableManager, AppHookConfigTranslatableQueryset
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.sites.models import Site
|
||||
from django.db import models
|
||||
from django.utils.timezone import now
|
||||
|
||||
|
||||
class TaggedFilterItem:
|
||||
def tagged(self, other_model=None, queryset=None):
|
||||
"""
|
||||
Restituisce una queryset di elementi del model taggati,
|
||||
o con gli stessi tag di un model o un queryset
|
||||
"""
|
||||
tags = self._taglist(other_model, queryset)
|
||||
return self.get_queryset().filter(tags__in=tags).distinct()
|
||||
|
||||
def _taglist(self, other_model=None, queryset=None):
|
||||
"""
|
||||
Restituisce una lista di id di tag comuni al model corrente e al model
|
||||
o queryset passati come argomento
|
||||
"""
|
||||
from taggit.models import TaggedItem
|
||||
|
||||
filters = None
|
||||
if queryset is not None:
|
||||
filters = set()
|
||||
for item in queryset.all():
|
||||
filters.update(item.tags.all())
|
||||
filters = {tag.id for tag in filters}
|
||||
elif other_model is not None:
|
||||
filters = set(
|
||||
TaggedItem.objects.filter(content_type__model=other_model.__name__.lower()).values_list(
|
||||
"tag_id", flat=True
|
||||
)
|
||||
)
|
||||
tags = set(
|
||||
TaggedItem.objects.filter(content_type__model=self.model.__name__.lower()).values_list("tag_id", flat=True)
|
||||
)
|
||||
if filters is not None:
|
||||
tags = tags.intersection(filters)
|
||||
return list(tags)
|
||||
|
||||
def tag_list(self, other_model=None, queryset=None):
|
||||
"""
|
||||
Restituisce un queryset di tag comuni al model corrente e
|
||||
al model o queryset passati come argomento
|
||||
"""
|
||||
from taggit.models import Tag
|
||||
|
||||
return Tag.objects.filter(id__in=self._taglist(other_model, queryset))
|
||||
|
||||
def tag_list_slug(self, other_model=None, queryset=None):
|
||||
queryset = self.tag_list(other_model, queryset)
|
||||
return queryset.values("slug")
|
||||
|
||||
def tag_cloud(self, other_model=None, queryset=None, published=True, on_site=False):
|
||||
from taggit.models import TaggedItem
|
||||
|
||||
if on_site:
|
||||
queryset = queryset.on_site()
|
||||
tag_ids = self._taglist(other_model, queryset)
|
||||
kwargs = {}
|
||||
if published:
|
||||
kwargs = {
|
||||
"object_id__in": self.model.objects.published(),
|
||||
"content_type": ContentType.objects.get_for_model(self.model),
|
||||
}
|
||||
kwargs["tag_id__in"] = tag_ids
|
||||
counted_tags = dict(
|
||||
TaggedItem.objects.filter(**kwargs)
|
||||
.values("tag")
|
||||
.annotate(count=models.Count("tag"))
|
||||
.values_list("tag", "count")
|
||||
)
|
||||
tags = TaggedItem.tag_model().objects.filter(pk__in=counted_tags.keys())
|
||||
for tag in tags:
|
||||
tag.count = counted_tags[tag.pk]
|
||||
return sorted(tags, key=lambda x: -x.count)
|
||||
|
||||
|
||||
class GenericDateQuerySet(AppHookConfigTranslatableQueryset):
|
||||
start_date_field = "date_published"
|
||||
fallback_date_field = "date_modified"
|
||||
end_date_field = "date_published_end"
|
||||
publish_field = "publish"
|
||||
|
||||
def on_site(self, site=None):
|
||||
if not site:
|
||||
site = Site.objects.get_current()
|
||||
return self.filter(models.Q(sites__isnull=True) | models.Q(sites=site.pk))
|
||||
|
||||
def published(self, current_site=True):
|
||||
queryset = self.published_future(current_site)
|
||||
if self.start_date_field:
|
||||
return queryset.filter(**{"%s__lte" % self.start_date_field: now()})
|
||||
else:
|
||||
return queryset
|
||||
|
||||
def published_on_rss(self, current_site=True):
|
||||
queryset = self.published_future(current_site)
|
||||
return queryset.exclude(include_in_rss=False)
|
||||
|
||||
def published_future(self, current_site=True):
|
||||
if current_site:
|
||||
queryset = self.on_site()
|
||||
else:
|
||||
queryset = self
|
||||
if self.end_date_field:
|
||||
qfilter = models.Q(**{"%s__gte" % self.end_date_field: now()}) | models.Q(
|
||||
**{"%s__isnull" % self.end_date_field: True}
|
||||
)
|
||||
queryset = queryset.filter(qfilter)
|
||||
return queryset.filter(**{self.publish_field: True})
|
||||
|
||||
def archived(self, current_site=True):
|
||||
if current_site:
|
||||
queryset = self.on_site()
|
||||
else:
|
||||
queryset = self
|
||||
if self.end_date_field:
|
||||
qfilter = models.Q(**{"%s__lte" % self.end_date_field: now()})
|
||||
queryset = queryset.filter(qfilter)
|
||||
return queryset.filter(**{self.publish_field: True})
|
||||
|
||||
def available(self, current_site=True):
|
||||
if current_site:
|
||||
return self.on_site().filter(**{self.publish_field: True})
|
||||
else:
|
||||
return self.filter(**{self.publish_field: True})
|
||||
|
||||
def filter_by_language(self, language, current_site=True):
|
||||
if current_site:
|
||||
return self.active_translations(language_code=language).on_site()
|
||||
else:
|
||||
return self.active_translations(language_code=language)
|
||||
|
||||
|
||||
class GenericDateTaggedManager(TaggedFilterItem, AppHookConfigTranslatableManager):
|
||||
use_for_related_fields = True
|
||||
|
||||
queryset_class = GenericDateQuerySet
|
||||
|
||||
def get_queryset(self, *args, **kwargs):
|
||||
return super().get_queryset(*args, **kwargs)
|
||||
|
||||
def published(self, current_site=True):
|
||||
return self.get_queryset().published(current_site)
|
||||
|
||||
def published_on_rss(self, current_site=True):
|
||||
return self.get_queryset().published_on_rss(current_site)
|
||||
|
||||
def available(self, current_site=True):
|
||||
return self.get_queryset().available(current_site)
|
||||
|
||||
def archived(self, current_site=True):
|
||||
return self.get_queryset().archived(current_site)
|
||||
|
||||
def published_future(self, current_site=True):
|
||||
return self.get_queryset().published_future(current_site)
|
||||
|
||||
def filter_by_language(self, language, current_site=True):
|
||||
return self.get_queryset().filter_by_language(language, current_site)
|
||||
|
||||
def on_site(self, site=None):
|
||||
return self.get_queryset().on_site(site)
|
||||
|
||||
def get_months(self, queryset=None, current_site=True):
|
||||
"""
|
||||
Get months with aggregate count (how much posts is in the month).
|
||||
Results are ordered by date.
|
||||
"""
|
||||
if queryset is None:
|
||||
queryset = self.get_queryset()
|
||||
if current_site:
|
||||
queryset = queryset.on_site()
|
||||
dates_qs = queryset.values_list(queryset.start_date_field, queryset.fallback_date_field)
|
||||
dates = []
|
||||
for blog_dates in dates_qs:
|
||||
if blog_dates[0]:
|
||||
current_date = blog_dates[0]
|
||||
else:
|
||||
current_date = blog_dates[1]
|
||||
dates.append(
|
||||
(
|
||||
current_date.year,
|
||||
current_date.month,
|
||||
)
|
||||
)
|
||||
date_counter = Counter(dates)
|
||||
dates = set(dates)
|
||||
dates = sorted(dates, reverse=True)
|
||||
return [
|
||||
{"date": now().replace(year=year, month=month, day=1), "count": date_counter[year, month]}
|
||||
for year, month in dates
|
||||
]
|
||||
286
djangocms_blog/migrations/0001_initial.py
Normal file
286
djangocms_blog/migrations/0001_initial.py
Normal file
|
|
@ -0,0 +1,286 @@
|
|||
import cms.models.fields
|
||||
import django.utils.timezone
|
||||
import djangocms_text_ckeditor.fields
|
||||
import filer.fields.image
|
||||
import meta.models
|
||||
import taggit_autosuggest.managers
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
from filer.settings import FILER_IMAGE_MODEL
|
||||
|
||||
from djangocms_blog.models import thumbnail_model
|
||||
|
||||
ACTUAL_FILER_IMAGE_MODEL = FILER_IMAGE_MODEL or "filer.Image"
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
migrations.swappable_dependency(ACTUAL_FILER_IMAGE_MODEL),
|
||||
("cms", "0020_old_tree_cleanup"),
|
||||
("taggit", "__first__"),
|
||||
("filer", "0003_thumbnailoption"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="AuthorEntriesPlugin",
|
||||
fields=[
|
||||
(
|
||||
"cmsplugin_ptr",
|
||||
models.OneToOneField(
|
||||
parent_link=True,
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="cms.CMSPlugin",
|
||||
on_delete=models.deletion.CASCADE,
|
||||
),
|
||||
),
|
||||
(
|
||||
"latest_posts",
|
||||
models.IntegerField(
|
||||
default=5, help_text="The number of author articles to be displayed.", verbose_name="Articles"
|
||||
),
|
||||
),
|
||||
("authors", models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name="Authors")),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
},
|
||||
bases=("cms.cmsplugin",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="BlogCategory",
|
||||
fields=[
|
||||
("id", models.AutoField(verbose_name="ID", serialize=False, auto_created=True, primary_key=True)),
|
||||
("date_created", models.DateTimeField(auto_now_add=True, verbose_name="created at")),
|
||||
("date_modified", models.DateTimeField(auto_now=True, verbose_name="modified at")),
|
||||
(
|
||||
"parent",
|
||||
models.ForeignKey(
|
||||
verbose_name="parent",
|
||||
blank=True,
|
||||
to="djangocms_blog.BlogCategory",
|
||||
null=True,
|
||||
on_delete=models.deletion.CASCADE,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "blog category",
|
||||
"verbose_name_plural": "blog categories",
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="BlogCategoryTranslation",
|
||||
fields=[
|
||||
("id", models.AutoField(verbose_name="ID", serialize=False, auto_created=True, primary_key=True)),
|
||||
(
|
||||
"language_code",
|
||||
models.CharField(
|
||||
db_index=True, max_length=15, verbose_name="Language", choices=settings.LANGUAGES
|
||||
),
|
||||
),
|
||||
("name", models.CharField(max_length=255, verbose_name="name")),
|
||||
("slug", models.SlugField(verbose_name="slug", blank=True)),
|
||||
(
|
||||
"master",
|
||||
models.ForeignKey(
|
||||
related_name="translations",
|
||||
editable=False,
|
||||
to="djangocms_blog.BlogCategory",
|
||||
null=True,
|
||||
on_delete=models.deletion.CASCADE,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"db_table": "djangocms_blog_blogcategory_translation",
|
||||
"verbose_name": "blog category Translation",
|
||||
"default_permissions": (),
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="LatestPostsPlugin",
|
||||
fields=[
|
||||
(
|
||||
"cmsplugin_ptr",
|
||||
models.OneToOneField(
|
||||
parent_link=True,
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="cms.CMSPlugin",
|
||||
on_delete=models.deletion.CASCADE,
|
||||
),
|
||||
),
|
||||
(
|
||||
"latest_posts",
|
||||
models.IntegerField(
|
||||
default=5, help_text="The number of latests articles to be displayed.", verbose_name="Articles"
|
||||
),
|
||||
),
|
||||
(
|
||||
"categories",
|
||||
models.ManyToManyField(
|
||||
help_text="Show only the blog articles tagged with chosen categories.",
|
||||
to="djangocms_blog.BlogCategory",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"tags",
|
||||
models.ManyToManyField(
|
||||
help_text="Show only the blog articles tagged with chosen tags.", to="taggit.Tag", blank=True
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
},
|
||||
bases=("cms.cmsplugin",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Post",
|
||||
fields=[
|
||||
("id", models.AutoField(verbose_name="ID", serialize=False, auto_created=True, primary_key=True)),
|
||||
("date_created", models.DateTimeField(auto_now_add=True)),
|
||||
("date_modified", models.DateTimeField(auto_now=True)),
|
||||
(
|
||||
"date_published",
|
||||
models.DateTimeField(default=django.utils.timezone.now, verbose_name="Published Since"),
|
||||
),
|
||||
("date_published_end", models.DateTimeField(null=True, verbose_name="Published Until", blank=True)),
|
||||
("publish", models.BooleanField(default=False, verbose_name="Publish")),
|
||||
("enable_comments", models.BooleanField(default=True, verbose_name="Enable comments on post")),
|
||||
(
|
||||
"author",
|
||||
models.ForeignKey(
|
||||
related_name="djangocms_blog_post_author",
|
||||
verbose_name="Author",
|
||||
blank=True,
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
null=True,
|
||||
on_delete=models.deletion.PROTECT,
|
||||
),
|
||||
),
|
||||
(
|
||||
"categories",
|
||||
models.ManyToManyField(
|
||||
related_name="blog_posts", verbose_name="category", to="djangocms_blog.BlogCategory"
|
||||
),
|
||||
),
|
||||
(
|
||||
"content",
|
||||
cms.models.fields.PlaceholderField(
|
||||
slotname="post_content", editable=False, to="cms.Placeholder", null=True
|
||||
),
|
||||
),
|
||||
(
|
||||
"main_image",
|
||||
filer.fields.image.FilerImageField(
|
||||
related_name="djangocms_blog_post_image",
|
||||
verbose_name="Main image",
|
||||
blank=True,
|
||||
to=ACTUAL_FILER_IMAGE_MODEL,
|
||||
null=True,
|
||||
on_delete=models.deletion.SET_NULL,
|
||||
),
|
||||
),
|
||||
(
|
||||
"main_image_full",
|
||||
models.ForeignKey(
|
||||
related_name="djangocms_blog_post_full",
|
||||
verbose_name="Main image full",
|
||||
blank=True,
|
||||
to=thumbnail_model,
|
||||
null=True,
|
||||
on_delete=models.deletion.SET_NULL,
|
||||
),
|
||||
),
|
||||
(
|
||||
"main_image_thumbnail",
|
||||
models.ForeignKey(
|
||||
related_name="djangocms_blog_post_thumbnail",
|
||||
verbose_name="Main image thumbnail",
|
||||
blank=True,
|
||||
to=thumbnail_model,
|
||||
null=True,
|
||||
on_delete=models.deletion.SET_NULL,
|
||||
),
|
||||
),
|
||||
(
|
||||
"tags",
|
||||
taggit_autosuggest.managers.TaggableManager(
|
||||
to="taggit.Tag",
|
||||
through="taggit.TaggedItem",
|
||||
blank=True,
|
||||
help_text="A comma-separated list of tags.",
|
||||
verbose_name="Tags",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"ordering": ("-date_published", "-date_created"),
|
||||
"get_latest_by": "date_published",
|
||||
"verbose_name": "blog article",
|
||||
"verbose_name_plural": "blog articles",
|
||||
},
|
||||
bases=(meta.models.ModelMeta, models.Model),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="PostTranslation",
|
||||
fields=[
|
||||
("id", models.AutoField(verbose_name="ID", serialize=False, auto_created=True, primary_key=True)),
|
||||
(
|
||||
"language_code",
|
||||
models.CharField(
|
||||
db_index=True, max_length=15, verbose_name="Language", choices=settings.LANGUAGES
|
||||
),
|
||||
),
|
||||
("title", models.CharField(max_length=255, verbose_name="Title")),
|
||||
("slug", models.SlugField(verbose_name="slug", blank=True)),
|
||||
("abstract", djangocms_text_ckeditor.fields.HTMLField(verbose_name="Abstract")),
|
||||
("meta_description", models.TextField(default="", verbose_name="Post meta description", blank=True)),
|
||||
("meta_keywords", models.TextField(default="", verbose_name="Post meta keywords", blank=True)),
|
||||
(
|
||||
"meta_title",
|
||||
models.CharField(
|
||||
default="",
|
||||
help_text="used in title tag and social sharing",
|
||||
max_length=255,
|
||||
verbose_name="Post meta title",
|
||||
blank=True,
|
||||
),
|
||||
),
|
||||
("post_text", djangocms_text_ckeditor.fields.HTMLField(default="", verbose_name="Text", blank=True)),
|
||||
(
|
||||
"master",
|
||||
models.ForeignKey(
|
||||
related_name="translations",
|
||||
editable=False,
|
||||
to="djangocms_blog.Post",
|
||||
null=True,
|
||||
on_delete=models.deletion.CASCADE,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"db_table": "djangocms_blog_post_translation",
|
||||
"verbose_name": "blog article Translation",
|
||||
"default_permissions": (),
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="posttranslation",
|
||||
unique_together={("language_code", "master"), ("language_code", "slug")},
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="blogcategorytranslation",
|
||||
unique_together={("language_code", "master"), ("language_code", "slug")},
|
||||
),
|
||||
]
|
||||
24
djangocms_blog/migrations/0002_post_sites.py
Normal file
24
djangocms_blog/migrations/0002_post_sites.py
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("sites", "__first__"),
|
||||
("djangocms_blog", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="sites",
|
||||
field=models.ManyToManyField(
|
||||
help_text="Select sites in which to show the post. If none is set it will be "
|
||||
"visible in all the configured sites.",
|
||||
to="sites.Site",
|
||||
null=True,
|
||||
verbose_name="Site(s",
|
||||
blank=True,
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
23
djangocms_blog/migrations/0003_auto_20141201_2252.py
Normal file
23
djangocms_blog/migrations/0003_auto_20141201_2252.py
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0002_post_sites"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="sites",
|
||||
field=models.ManyToManyField(
|
||||
help_text="Select sites in which to show the post. If none is set it will "
|
||||
"be visible in all the configured sites.",
|
||||
to="sites.Site",
|
||||
null=True,
|
||||
verbose_name="Site(s)",
|
||||
blank=True,
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
58
djangocms_blog/migrations/0004_auto_20150108_1435.py
Normal file
58
djangocms_blog/migrations/0004_auto_20150108_1435.py
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
import django.db.models.deletion
|
||||
import filer.fields.image
|
||||
from django.db import migrations, models
|
||||
from filer.settings import FILER_IMAGE_MODEL
|
||||
|
||||
from djangocms_blog.models import thumbnail_model
|
||||
|
||||
ACTUAL_FILER_IMAGE_MODEL = FILER_IMAGE_MODEL or "filer.Image"
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(ACTUAL_FILER_IMAGE_MODEL),
|
||||
("djangocms_blog", "0003_auto_20141201_2252"),
|
||||
("filer", "0003_thumbnailoption"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="main_image",
|
||||
field=filer.fields.image.FilerImageField(
|
||||
related_name="djangocms_blog_post_image",
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
verbose_name="Main image",
|
||||
blank=True,
|
||||
to=ACTUAL_FILER_IMAGE_MODEL,
|
||||
null=True,
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="main_image_full",
|
||||
field=models.ForeignKey(
|
||||
related_name="djangocms_blog_post_full",
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
verbose_name="Main image full",
|
||||
blank=True,
|
||||
to=thumbnail_model,
|
||||
null=True,
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="main_image_thumbnail",
|
||||
field=models.ForeignKey(
|
||||
related_name="djangocms_blog_post_thumbnail",
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
verbose_name="Main image thumbnail",
|
||||
blank=True,
|
||||
to=thumbnail_model,
|
||||
null=True,
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
25
djangocms_blog/migrations/0005_auto_20150212_1118.py
Normal file
25
djangocms_blog/migrations/0005_auto_20150212_1118.py
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
import cms.models.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0004_auto_20150108_1435"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="content",
|
||||
field=cms.models.fields.PlaceholderField(
|
||||
slotname="post_content", to="cms.Placeholder", null=True, related_name="post_content", editable=False
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="enable_comments",
|
||||
field=models.BooleanField(default=False, verbose_name="Enable comments on post"),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
17
djangocms_blog/migrations/0006_auto_20150214_1907.py
Normal file
17
djangocms_blog/migrations/0006_auto_20150214_1907.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
import djangocms_text_ckeditor.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0005_auto_20150212_1118"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="abstract",
|
||||
field=djangocms_text_ckeditor.fields.HTMLField(verbose_name="Abstract", blank=True, default=""),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
216
djangocms_blog/migrations/0007_auto_20150719_0933.py
Normal file
216
djangocms_blog/migrations/0007_auto_20150719_0933.py
Normal file
|
|
@ -0,0 +1,216 @@
|
|||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
import djangocms_text_ckeditor.fields
|
||||
import filer.fields.image
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
from filer.settings import FILER_IMAGE_MODEL
|
||||
|
||||
from djangocms_blog.models import thumbnail_model
|
||||
|
||||
ACTUAL_FILER_IMAGE_MODEL = FILER_IMAGE_MODEL or "filer.Image"
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0006_auto_20150214_1907"),
|
||||
migrations.swappable_dependency(ACTUAL_FILER_IMAGE_MODEL),
|
||||
("filer", "0003_thumbnailoption"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name="blogcategorytranslation",
|
||||
options={"managed": True, "verbose_name": "blog category Translation", "default_permissions": ()},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name="posttranslation",
|
||||
options={"managed": True, "verbose_name": "blog article Translation", "default_permissions": ()},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="authorentriesplugin",
|
||||
name="authors",
|
||||
field=models.ManyToManyField(verbose_name="authors", to=settings.AUTH_USER_MODEL),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="authorentriesplugin",
|
||||
name="latest_posts",
|
||||
field=models.IntegerField(
|
||||
help_text="The number of author articles to be displayed.", verbose_name="articles", default=5
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="blogcategorytranslation",
|
||||
name="language_code",
|
||||
field=models.CharField(db_index=True, verbose_name="Language", max_length=15),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="latestpostsplugin",
|
||||
name="categories",
|
||||
field=models.ManyToManyField(
|
||||
blank=True,
|
||||
help_text="Show only the blog articles tagged with chosen categories.",
|
||||
verbose_name="filter by category",
|
||||
to="djangocms_blog.BlogCategory",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="latestpostsplugin",
|
||||
name="latest_posts",
|
||||
field=models.IntegerField(
|
||||
help_text="The number of latests articles to be displayed.", verbose_name="articles", default=5
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="latestpostsplugin",
|
||||
name="tags",
|
||||
field=models.ManyToManyField(
|
||||
blank=True,
|
||||
help_text="Show only the blog articles tagged with chosen tags.",
|
||||
verbose_name="filter by tag",
|
||||
to="taggit.Tag",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="author",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
verbose_name="author",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
related_name="djangocms_blog_post_author",
|
||||
null=True,
|
||||
on_delete=models.deletion.PROTECT,
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="date_created",
|
||||
field=models.DateTimeField(auto_now_add=True, verbose_name="created"),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="date_modified",
|
||||
field=models.DateTimeField(auto_now=True, verbose_name="last modified"),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="date_published",
|
||||
field=models.DateTimeField(verbose_name="published Since", default=django.utils.timezone.now),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="date_published_end",
|
||||
field=models.DateTimeField(blank=True, verbose_name="published Until", null=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="enable_comments",
|
||||
field=models.BooleanField(verbose_name="enable comments on post", default=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="main_image",
|
||||
field=filer.fields.image.FilerImageField(
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
blank=True,
|
||||
verbose_name="main image",
|
||||
to=ACTUAL_FILER_IMAGE_MODEL,
|
||||
related_name="djangocms_blog_post_image",
|
||||
null=True,
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="main_image_full",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
blank=True,
|
||||
verbose_name="main image full",
|
||||
to=thumbnail_model,
|
||||
related_name="djangocms_blog_post_full",
|
||||
null=True,
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="main_image_thumbnail",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
blank=True,
|
||||
verbose_name="main image thumbnail",
|
||||
to=thumbnail_model,
|
||||
related_name="djangocms_blog_post_thumbnail",
|
||||
null=True,
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="publish",
|
||||
field=models.BooleanField(verbose_name="publish", default=False),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="abstract",
|
||||
field=djangocms_text_ckeditor.fields.HTMLField(verbose_name="abstract"),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="language_code",
|
||||
field=models.CharField(db_index=True, verbose_name="Language", max_length=15),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="meta_description",
|
||||
field=models.TextField(blank=True, verbose_name="post meta description", default=""),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="meta_keywords",
|
||||
field=models.TextField(blank=True, verbose_name="post meta keywords", default=""),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="meta_title",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
help_text="used in title tag and social sharing",
|
||||
verbose_name="post meta title",
|
||||
max_length=255,
|
||||
default="",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="post_text",
|
||||
field=djangocms_text_ckeditor.fields.HTMLField(blank=True, verbose_name="text", default=""),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="title",
|
||||
field=models.CharField(verbose_name="title", max_length=255),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
17
djangocms_blog/migrations/0008_auto_20150814_0831.py
Normal file
17
djangocms_blog/migrations/0008_auto_20150814_0831.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
import djangocms_text_ckeditor.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0007_auto_20150719_0933"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="abstract",
|
||||
field=djangocms_text_ckeditor.fields.HTMLField(default=b"", verbose_name="abstract", blank=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
59
djangocms_blog/migrations/0009_latestpostsplugin_tags_new.py
Normal file
59
djangocms_blog/migrations/0009_latestpostsplugin_tags_new.py
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
import taggit_autosuggest.managers
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def migrate_tags(apps, schema_editor):
|
||||
LatestPostsPlugin = apps.get_model("djangocms_blog", "LatestPostsPlugin")
|
||||
Tag = apps.get_model("taggit", "Tag")
|
||||
TaggedItem = apps.get_model("taggit", "TaggedItem")
|
||||
plugin_content_type = ContentType.objects.get_for_model(LatestPostsPlugin)
|
||||
for tag in Tag.objects.all():
|
||||
for plugin in tag.latestpostsplugin_set.all():
|
||||
if not TaggedItem.objects.filter(
|
||||
tag=tag, object_id=plugin.pk, content_type_id=plugin_content_type.pk
|
||||
).exists():
|
||||
TaggedItem.objects.create(tag=tag, object_id=plugin.pk, content_type_id=plugin_content_type.pk)
|
||||
|
||||
|
||||
def migrate_tags_reverse(apps, schema_editor):
|
||||
LatestPostsPlugin = apps.get_model("djangocms_blog", "LatestPostsPlugin")
|
||||
apps.get_model("taggit", "Tag")
|
||||
TaggedItem = apps.get_model("taggit", "TaggedItem")
|
||||
plugin_content_type = ContentType.objects.get_for_model(LatestPostsPlugin)
|
||||
for tagged in TaggedItem.objects.filter(content_type_id=plugin_content_type.pk):
|
||||
post = LatestPostsPlugin.objects.get(pk=tagged.object_id)
|
||||
post.tags.add(tagged.tag)
|
||||
tagged.delete()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("taggit", "__first__"),
|
||||
("djangocms_blog", "0008_auto_20150814_0831"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="latestpostsplugin",
|
||||
name="tags_new",
|
||||
field=taggit_autosuggest.managers.TaggableManager(
|
||||
to="taggit.Tag",
|
||||
through="taggit.TaggedItem",
|
||||
blank=True,
|
||||
help_text="Show only the blog articles tagged with chosen tags.",
|
||||
verbose_name="filter by tag",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.RunPython(migrate_tags, migrate_tags_reverse),
|
||||
migrations.RemoveField(
|
||||
model_name="latestpostsplugin",
|
||||
name="tags",
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name="latestpostsplugin",
|
||||
old_name="tags_new",
|
||||
new_name="tags",
|
||||
),
|
||||
]
|
||||
153
djangocms_blog/migrations/0010_auto_20150923_1151.py
Normal file
153
djangocms_blog/migrations/0010_auto_20150923_1151.py
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
import aldryn_apphooks_config.fields
|
||||
import app_data.fields
|
||||
import djangocms_text_ckeditor.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("cms", "0020_old_tree_cleanup"),
|
||||
("djangocms_blog", "0009_latestpostsplugin_tags_new"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="BlogConfig",
|
||||
fields=[
|
||||
("id", models.AutoField(auto_created=True, verbose_name="ID", serialize=False, primary_key=True)),
|
||||
("type", models.CharField(verbose_name="type", max_length=100)),
|
||||
(
|
||||
"namespace",
|
||||
models.CharField(default=None, verbose_name="instance namespace", unique=True, max_length=100),
|
||||
),
|
||||
("app_data", app_data.fields.AppDataField(editable=False, default="{}")),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="BlogConfigTranslation",
|
||||
fields=[
|
||||
("id", models.AutoField(auto_created=True, verbose_name="ID", serialize=False, primary_key=True)),
|
||||
("language_code", models.CharField(db_index=True, verbose_name="Language", max_length=15)),
|
||||
("app_title", models.CharField(verbose_name="application title", max_length=234)),
|
||||
(
|
||||
"master",
|
||||
models.ForeignKey(
|
||||
editable=False,
|
||||
to="djangocms_blog.BlogConfig",
|
||||
related_name="translations",
|
||||
null=True,
|
||||
on_delete=models.deletion.CASCADE,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "blog config Translation",
|
||||
"db_table": "djangocms_blog_blogconfig_translation",
|
||||
"default_permissions": (),
|
||||
"db_tablespace": "",
|
||||
"managed": True,
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="GenericBlogPlugin",
|
||||
fields=[
|
||||
(
|
||||
"cmsplugin_ptr",
|
||||
models.OneToOneField(
|
||||
parent_link=True,
|
||||
serialize=False,
|
||||
primary_key=True,
|
||||
auto_created=True,
|
||||
to="cms.CMSPlugin",
|
||||
on_delete=models.deletion.CASCADE,
|
||||
),
|
||||
),
|
||||
(
|
||||
"app_config",
|
||||
aldryn_apphooks_config.fields.AppHookConfigField(
|
||||
verbose_name="app. config",
|
||||
blank=True,
|
||||
to="djangocms_blog.BlogConfig",
|
||||
help_text="When selecting a value, the form is reloaded to get the updated default",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
},
|
||||
bases=("cms.cmsplugin",),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="abstract",
|
||||
field=djangocms_text_ckeditor.fields.HTMLField(default="", verbose_name="abstract", blank=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="authorentriesplugin",
|
||||
name="app_config",
|
||||
field=aldryn_apphooks_config.fields.AppHookConfigField(
|
||||
default=None,
|
||||
blank=True,
|
||||
verbose_name="app. config",
|
||||
to="djangocms_blog.BlogConfig",
|
||||
help_text="When selecting a value, the form is reloaded to get the updated default",
|
||||
null=True,
|
||||
),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="blogcategory",
|
||||
name="app_config",
|
||||
field=aldryn_apphooks_config.fields.AppHookConfigField(
|
||||
default=None,
|
||||
verbose_name="app. config",
|
||||
to="djangocms_blog.BlogConfig",
|
||||
help_text="When selecting a value, the form is reloaded to get the updated default",
|
||||
null=True,
|
||||
),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="latestpostsplugin",
|
||||
name="app_config",
|
||||
field=aldryn_apphooks_config.fields.AppHookConfigField(
|
||||
default=None,
|
||||
blank=True,
|
||||
verbose_name="app. config",
|
||||
to="djangocms_blog.BlogConfig",
|
||||
help_text="When selecting a value, the form is reloaded to get the updated default",
|
||||
null=True,
|
||||
),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="app_config",
|
||||
field=aldryn_apphooks_config.fields.AppHookConfigField(
|
||||
default=None,
|
||||
verbose_name="app. config",
|
||||
to="djangocms_blog.BlogConfig",
|
||||
help_text="When selecting a value, the form is reloaded to get the updated default",
|
||||
null=True,
|
||||
),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="blogconfigtranslation",
|
||||
unique_together={("language_code", "master")},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="sites",
|
||||
field=models.ManyToManyField(
|
||||
to="sites.Site",
|
||||
help_text="Select sites in which to show the post. "
|
||||
"If none is set it will be visible in all the configured sites.",
|
||||
blank=True,
|
||||
verbose_name="Site(s)",
|
||||
),
|
||||
),
|
||||
]
|
||||
84
djangocms_blog/migrations/0011_auto_20151024_1809.py
Normal file
84
djangocms_blog/migrations/0011_auto_20151024_1809.py
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
import aldryn_apphooks_config.fields
|
||||
import django.utils.timezone
|
||||
from django.db import migrations, models
|
||||
|
||||
from djangocms_blog.settings import get_setting
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0010_auto_20150923_1151"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="blogconfigtranslation",
|
||||
name="object_name",
|
||||
field=models.CharField(
|
||||
verbose_name="object name", default=get_setting("DEFAULT_OBJECT_NAME"), max_length=234
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="authorentriesplugin",
|
||||
name="app_config",
|
||||
field=aldryn_apphooks_config.fields.AppHookConfigField(
|
||||
blank=True,
|
||||
help_text="When selecting a value, the form is reloaded to get the updated default",
|
||||
to="djangocms_blog.BlogConfig",
|
||||
verbose_name="app. config",
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="blogcategory",
|
||||
name="app_config",
|
||||
field=aldryn_apphooks_config.fields.AppHookConfigField(
|
||||
help_text="When selecting a value, the form is reloaded to get the updated default",
|
||||
to="djangocms_blog.BlogConfig",
|
||||
verbose_name="app. config",
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="genericblogplugin",
|
||||
name="app_config",
|
||||
field=aldryn_apphooks_config.fields.AppHookConfigField(
|
||||
blank=True,
|
||||
help_text="When selecting a value, the form is reloaded to get the updated default",
|
||||
to="djangocms_blog.BlogConfig",
|
||||
verbose_name="app. config",
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="latestpostsplugin",
|
||||
name="app_config",
|
||||
field=aldryn_apphooks_config.fields.AppHookConfigField(
|
||||
blank=True,
|
||||
help_text="When selecting a value, the form is reloaded to get the updated default",
|
||||
to="djangocms_blog.BlogConfig",
|
||||
verbose_name="app. config",
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="app_config",
|
||||
field=aldryn_apphooks_config.fields.AppHookConfigField(
|
||||
help_text="When selecting a value, the form is reloaded to get the updated default",
|
||||
to="djangocms_blog.BlogConfig",
|
||||
verbose_name="app. config",
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="date_published",
|
||||
field=models.DateTimeField(verbose_name="published since", default=django.utils.timezone.now),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="date_published_end",
|
||||
field=models.DateTimeField(blank=True, verbose_name="published until", null=True),
|
||||
),
|
||||
]
|
||||
14
djangocms_blog/migrations/0012_auto_20151220_1734.py
Normal file
14
djangocms_blog/migrations/0012_auto_20151220_1734.py
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0011_auto_20151024_1809"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name="blogconfig",
|
||||
options={"verbose_name": "blog config", "verbose_name_plural": "blog configs"},
|
||||
),
|
||||
]
|
||||
19
djangocms_blog/migrations/0013_auto_20160201_2235.py
Normal file
19
djangocms_blog/migrations/0013_auto_20160201_2235.py
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# Generated by Django 1.9.2 on 2016-02-01 21:35
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0012_auto_20151220_1734"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="categories",
|
||||
field=models.ManyToManyField(
|
||||
blank=True, related_name="blog_posts", to="djangocms_blog.BlogCategory", verbose_name="category"
|
||||
),
|
||||
),
|
||||
]
|
||||
41
djangocms_blog/migrations/0014_auto_20160215_1331.py
Normal file
41
djangocms_blog/migrations/0014_auto_20160215_1331.py
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
from cms.models import Page
|
||||
from cms.utils.i18n import get_language_list
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def forwards(apps, schema_editor):
|
||||
BlogConfig = apps.get_model("djangocms_blog", "BlogConfig")
|
||||
BlogConfigTranslation = apps.get_model("djangocms_blog", "BlogConfigTranslation")
|
||||
Post = apps.get_model("djangocms_blog", "Post")
|
||||
BlogCategory = apps.get_model("djangocms_blog", "BlogCategory")
|
||||
GenericBlogPlugin = apps.get_model("djangocms_blog", "GenericBlogPlugin")
|
||||
LatestPostsPlugin = apps.get_model("djangocms_blog", "LatestPostsPlugin")
|
||||
AuthorEntriesPlugin = apps.get_model("djangocms_blog", "AuthorEntriesPlugin")
|
||||
config = None
|
||||
for page in Page.objects.drafts().filter(application_urls="BlogApp"):
|
||||
config, created = BlogConfig.objects.get_or_create(namespace=page.application_namespace)
|
||||
if not BlogConfigTranslation.objects.exists():
|
||||
for lang in get_language_list():
|
||||
title = page.get_title(lang)
|
||||
BlogConfigTranslation.objects.create(language_code=lang, master_id=config.pk, app_title=title)
|
||||
if config:
|
||||
for model in (Post, BlogCategory, GenericBlogPlugin, LatestPostsPlugin, AuthorEntriesPlugin):
|
||||
for item in model.objects.filter(app_config__isnull=True):
|
||||
item.app_config = config
|
||||
item.save()
|
||||
|
||||
|
||||
def backwards(apps, schema_editor):
|
||||
# No need for backward data migration
|
||||
pass
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("cms", "0004_auto_20140924_1038"),
|
||||
("djangocms_blog", "0013_auto_20160201_2235"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(forwards, backwards),
|
||||
]
|
||||
17
djangocms_blog/migrations/0015_auto_20160408_1849.py
Normal file
17
djangocms_blog/migrations/0015_auto_20160408_1849.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Generated by Django 1.9.5 on 2016-04-08 16:49
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0014_auto_20160215_1331"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="date_published",
|
||||
field=models.DateTimeField(blank=True, null=True, verbose_name="published since"),
|
||||
),
|
||||
]
|
||||
20
djangocms_blog/migrations/0016_auto_20160502_1741.py
Normal file
20
djangocms_blog/migrations/0016_auto_20160502_1741.py
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0015_auto_20160408_1849"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="blogcategorytranslation",
|
||||
name="slug",
|
||||
field=models.SlugField(max_length=255, verbose_name="slug", blank=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="slug",
|
||||
field=models.SlugField(max_length=255, verbose_name="slug", blank=True),
|
||||
),
|
||||
]
|
||||
10
djangocms_blog/migrations/0017_thumbnail_move.py
Normal file
10
djangocms_blog/migrations/0017_thumbnail_move.py
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("filer", "0003_thumbnailoption"),
|
||||
("djangocms_blog", "0016_auto_20160502_1741"),
|
||||
]
|
||||
|
||||
operations = []
|
||||
45
djangocms_blog/migrations/0018_thumbnail_move2.py
Normal file
45
djangocms_blog/migrations/0018_thumbnail_move2.py
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
from djangocms_blog.models import thumbnail_model
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
if "cmsplugin_filer" not in thumbnail_model:
|
||||
dependencies = [
|
||||
("djangocms_blog", "0017_thumbnail_move"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="main_image_full_new",
|
||||
field=models.ForeignKey(
|
||||
related_name="djangocms_blog_post_full",
|
||||
verbose_name="Main image full",
|
||||
blank=True,
|
||||
to=thumbnail_model,
|
||||
null=True,
|
||||
on_delete=models.deletion.SET_NULL,
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="main_image_thumbnail_new",
|
||||
field=models.ForeignKey(
|
||||
related_name="djangocms_blog_post_thumbnail",
|
||||
verbose_name="Main image thumbnail",
|
||||
blank=True,
|
||||
to=thumbnail_model,
|
||||
null=True,
|
||||
on_delete=models.deletion.SET_NULL,
|
||||
),
|
||||
),
|
||||
]
|
||||
else:
|
||||
dependencies = [
|
||||
("filer", "__first__"),
|
||||
("cmsplugin_filer_image", "__first__"),
|
||||
("djangocms_blog", "0017_thumbnail_move"),
|
||||
]
|
||||
|
||||
operations = []
|
||||
38
djangocms_blog/migrations/0019_thumbnail_move3.py
Normal file
38
djangocms_blog/migrations/0019_thumbnail_move3.py
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
from django.db import migrations
|
||||
|
||||
from djangocms_blog.models import thumbnail_model
|
||||
|
||||
|
||||
def move_thumbnail_opt_to_filer(apps, schema_editor):
|
||||
Post = apps.get_model("djangocms_blog", "Post")
|
||||
for post in Post.objects.all():
|
||||
post.main_image_full_new_id = post.main_image_full_id
|
||||
post.main_image_thumbnail_new_id = post.main_image_thumbnail_id
|
||||
post.save()
|
||||
|
||||
|
||||
def move_thumbnail_opt_to_plugin(apps, schema_editor):
|
||||
Post = apps.get_model("djangocms_blog", "Post")
|
||||
for post in Post.objects.all():
|
||||
post.main_image_full_id = post.main_image_full_new_id
|
||||
post.main_image_thumbnail_id = post.main_image_thumbnail_new_id
|
||||
post.save()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
if "cmsplugin_filer" not in thumbnail_model:
|
||||
dependencies = [
|
||||
("djangocms_blog", "0018_thumbnail_move2"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(move_thumbnail_opt_to_filer, move_thumbnail_opt_to_plugin),
|
||||
]
|
||||
else:
|
||||
dependencies = [
|
||||
("filer", "__first__"),
|
||||
("cmsplugin_filer_image", "__first__"),
|
||||
("djangocms_blog", "0018_thumbnail_move2"),
|
||||
]
|
||||
|
||||
operations = []
|
||||
36
djangocms_blog/migrations/0020_thumbnail_move4.py
Normal file
36
djangocms_blog/migrations/0020_thumbnail_move4.py
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
from django.db import migrations
|
||||
|
||||
from djangocms_blog.models import thumbnail_model
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
if "cmsplugin_filer" not in thumbnail_model:
|
||||
dependencies = [
|
||||
("djangocms_blog", "0019_thumbnail_move3"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(model_name="post", name="main_image_full"),
|
||||
migrations.RemoveField(
|
||||
model_name="post",
|
||||
name="main_image_thumbnail",
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name="post",
|
||||
old_name="main_image_full_new",
|
||||
new_name="main_image_full",
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name="post",
|
||||
old_name="main_image_thumbnail_new",
|
||||
new_name="main_image_thumbnail",
|
||||
),
|
||||
]
|
||||
else:
|
||||
dependencies = [
|
||||
("filer", "__first__"),
|
||||
("cmsplugin_filer_image", "__first__"),
|
||||
("djangocms_blog", "0019_thumbnail_move3"),
|
||||
]
|
||||
|
||||
operations = []
|
||||
76
djangocms_blog/migrations/0021_auto_20160823_2008.py
Normal file
76
djangocms_blog/migrations/0021_auto_20160823_2008.py
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
from djangocms_blog.models import thumbnail_model
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0020_thumbnail_move4"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="authorentriesplugin",
|
||||
name="cmsplugin_ptr",
|
||||
field=models.OneToOneField(
|
||||
parent_link=True,
|
||||
related_name="djangocms_blog_authorentriesplugin",
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="cms.CMSPlugin",
|
||||
on_delete=models.deletion.CASCADE,
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="genericblogplugin",
|
||||
name="cmsplugin_ptr",
|
||||
field=models.OneToOneField(
|
||||
parent_link=True,
|
||||
related_name="djangocms_blog_genericblogplugin",
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="cms.CMSPlugin",
|
||||
on_delete=models.deletion.CASCADE,
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="latestpostsplugin",
|
||||
name="cmsplugin_ptr",
|
||||
field=models.OneToOneField(
|
||||
parent_link=True,
|
||||
related_name="djangocms_blog_latestpostsplugin",
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="cms.CMSPlugin",
|
||||
on_delete=models.deletion.CASCADE,
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="main_image_full",
|
||||
field=models.ForeignKey(
|
||||
related_name="djangocms_blog_post_full",
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
verbose_name="main image full",
|
||||
blank=True,
|
||||
to=thumbnail_model,
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="main_image_thumbnail",
|
||||
field=models.ForeignKey(
|
||||
related_name="djangocms_blog_post_thumbnail",
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
verbose_name="main image thumbnail",
|
||||
blank=True,
|
||||
to=thumbnail_model,
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
]
|
||||
19
djangocms_blog/migrations/0021_post_liveblog.py
Normal file
19
djangocms_blog/migrations/0021_post_liveblog.py
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
import cms.models.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("cms", "0020_old_tree_cleanup"),
|
||||
("djangocms_blog", "0020_thumbnail_move4"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="liveblog",
|
||||
field=cms.models.fields.PlaceholderField(
|
||||
related_name="live_blog", slotname="live_blog", editable=False, to="cms.Placeholder", null=True
|
||||
),
|
||||
),
|
||||
]
|
||||
17
djangocms_blog/migrations/0022_auto_20160605_2305.py
Normal file
17
djangocms_blog/migrations/0022_auto_20160605_2305.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Generated by Django 1.9.7 on 2016-06-05 21:05
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0021_post_liveblog"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="enable_liveblog",
|
||||
field=models.BooleanField(default=False, verbose_name="enable liveblog on post"),
|
||||
),
|
||||
]
|
||||
26
djangocms_blog/migrations/0022_auto_20170304_1040.py
Normal file
26
djangocms_blog/migrations/0022_auto_20170304_1040.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
# Generated by Django 1.9.12 on 2017-03-04 09:40
|
||||
|
||||
from distutils.version import LooseVersion
|
||||
|
||||
import aldryn_apphooks_config
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0021_auto_20160823_2008"),
|
||||
]
|
||||
|
||||
if LooseVersion(aldryn_apphooks_config.__version__) > LooseVersion("0.3.0"):
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="blogconfig",
|
||||
name="namespace",
|
||||
field=models.CharField(default=None, max_length=100, unique=True, verbose_name="Instance namespace"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="blogconfig",
|
||||
name="type",
|
||||
field=models.CharField(max_length=100, verbose_name="Type"),
|
||||
),
|
||||
]
|
||||
33
djangocms_blog/migrations/0023_auto_20160626_1539.py
Normal file
33
djangocms_blog/migrations/0023_auto_20160626_1539.py
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
# Generated by Django 1.9.6 on 2016-06-26 13:39
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0022_auto_20160605_2305"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="authorentriesplugin",
|
||||
name="current_site",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Select items from the current site only", verbose_name="current site"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="genericblogplugin",
|
||||
name="current_site",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Select items from the current site only", verbose_name="current site"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="latestpostsplugin",
|
||||
name="current_site",
|
||||
field=models.BooleanField(
|
||||
default=True, help_text="Select items from the current site only", verbose_name="current site"
|
||||
),
|
||||
),
|
||||
]
|
||||
47
djangocms_blog/migrations/0024_auto_20160706_1524.py
Normal file
47
djangocms_blog/migrations/0024_auto_20160706_1524.py
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
from djangocms_blog.settings import get_setting
|
||||
|
||||
BLOG_PLUGIN_TEMPLATE_FOLDERS = get_setting("PLUGIN_TEMPLATE_FOLDERS")
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0023_auto_20160626_1539"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="authorentriesplugin",
|
||||
name="template_folder",
|
||||
field=models.CharField(
|
||||
default=BLOG_PLUGIN_TEMPLATE_FOLDERS[0][0],
|
||||
verbose_name="Plugin template",
|
||||
max_length=200,
|
||||
help_text="Select plugin template to load for this instance",
|
||||
choices=BLOG_PLUGIN_TEMPLATE_FOLDERS,
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="genericblogplugin",
|
||||
name="template_folder",
|
||||
field=models.CharField(
|
||||
default=BLOG_PLUGIN_TEMPLATE_FOLDERS[0][0],
|
||||
verbose_name="Plugin template",
|
||||
max_length=200,
|
||||
help_text="Select plugin template to load for this instance",
|
||||
choices=BLOG_PLUGIN_TEMPLATE_FOLDERS,
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="latestpostsplugin",
|
||||
name="template_folder",
|
||||
field=models.CharField(
|
||||
default=BLOG_PLUGIN_TEMPLATE_FOLDERS[0][0],
|
||||
verbose_name="Plugin template",
|
||||
max_length=200,
|
||||
help_text="Select plugin template to load for this instance",
|
||||
choices=BLOG_PLUGIN_TEMPLATE_FOLDERS,
|
||||
),
|
||||
),
|
||||
]
|
||||
25
djangocms_blog/migrations/0025_auto_20160803_0858.py
Normal file
25
djangocms_blog/migrations/0025_auto_20160803_0858.py
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Generated by Django 1.9.9 on 2016-08-03 06:58
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0024_auto_20160706_1524"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="blogcategory",
|
||||
name="parent",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="children",
|
||||
to="djangocms_blog.BlogCategory",
|
||||
verbose_name="parent",
|
||||
),
|
||||
),
|
||||
]
|
||||
12
djangocms_blog/migrations/0026_merge.py
Normal file
12
djangocms_blog/migrations/0026_merge.py
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# Generated by Django 1.9.9 on 2016-08-25 20:24
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0021_auto_20160823_2008"),
|
||||
("djangocms_blog", "0025_auto_20160803_0858"),
|
||||
]
|
||||
|
||||
operations = []
|
||||
17
djangocms_blog/migrations/0027_post_date_featured.py
Normal file
17
djangocms_blog/migrations/0027_post_date_featured.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Generated by Django 1.10.5 on 2017-01-25 11:15
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0026_merge"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="date_featured",
|
||||
field=models.DateTimeField(blank=True, null=True, verbose_name="featured date"),
|
||||
),
|
||||
]
|
||||
26
djangocms_blog/migrations/0028_auto_20170304_1040.py
Normal file
26
djangocms_blog/migrations/0028_auto_20170304_1040.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
# Generated by Django 1.9.12 on 2017-03-04 09:40
|
||||
|
||||
from distutils.version import LooseVersion
|
||||
|
||||
import aldryn_apphooks_config
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0027_post_date_featured"),
|
||||
]
|
||||
|
||||
if LooseVersion(aldryn_apphooks_config.__version__) > LooseVersion("0.3.0"):
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="blogconfig",
|
||||
name="namespace",
|
||||
field=models.CharField(default=None, max_length=100, unique=True, verbose_name="Instance namespace"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="blogconfig",
|
||||
name="type",
|
||||
field=models.CharField(max_length=100, verbose_name="Type"),
|
||||
),
|
||||
]
|
||||
17
djangocms_blog/migrations/0029_post_related.py
Normal file
17
djangocms_blog/migrations/0029_post_related.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Generated by Django 1.10.5 on 2017-04-07 07:35
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0028_auto_20170304_1040"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="related",
|
||||
field=models.ManyToManyField(blank=True, to="djangocms_blog.Post", verbose_name="Related Posts"),
|
||||
),
|
||||
]
|
||||
19
djangocms_blog/migrations/0030_auto_20170509_1831.py
Normal file
19
djangocms_blog/migrations/0030_auto_20170509_1831.py
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# Generated by Django 1.10.5 on 2017-07-22 05:28
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0029_post_related"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="slug",
|
||||
field=models.SlugField(
|
||||
allow_unicode=True, blank=True, db_index=False, max_length=255, verbose_name="slug"
|
||||
),
|
||||
),
|
||||
]
|
||||
21
djangocms_blog/migrations/0031_auto_20170610_1744.py
Normal file
21
djangocms_blog/migrations/0031_auto_20170610_1744.py
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
# Generated by Django 1.10.5 on 2017-06-10 12:14
|
||||
|
||||
import sortedm2m.fields
|
||||
from django.db import migrations
|
||||
from sortedm2m.operations import AlterSortedManyToManyField
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0030_auto_20170509_1831"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
AlterSortedManyToManyField(
|
||||
model_name="post",
|
||||
name="related",
|
||||
field=sortedm2m.fields.SortedManyToManyField(
|
||||
blank=True, help_text=None, to="djangocms_blog.Post", verbose_name="Related Posts"
|
||||
),
|
||||
),
|
||||
]
|
||||
50
djangocms_blog/migrations/0032_auto_20180109_0023.py
Normal file
50
djangocms_blog/migrations/0032_auto_20180109_0023.py
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
# Generated by Django 1.10.8 on 2018-01-08 23:23
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0031_auto_20170610_1744"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="blogcategorytranslation",
|
||||
name="meta_description",
|
||||
field=models.TextField(blank=True, default="", verbose_name="post meta description"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="blogcategorytranslation",
|
||||
name="name",
|
||||
field=models.CharField(max_length=752, verbose_name="name"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="blogcategorytranslation",
|
||||
name="slug",
|
||||
field=models.SlugField(blank=True, max_length=752, verbose_name="slug"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="meta_title",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
default="",
|
||||
help_text="used in title tag and social sharing",
|
||||
max_length=2000,
|
||||
verbose_name="post meta title",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="slug",
|
||||
field=models.SlugField(
|
||||
allow_unicode=True, blank=True, db_index=False, max_length=752, verbose_name="slug"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="title",
|
||||
field=models.CharField(max_length=752, verbose_name="title"),
|
||||
),
|
||||
]
|
||||
15
djangocms_blog/migrations/0033_auto_20180226_1410.py
Normal file
15
djangocms_blog/migrations/0033_auto_20180226_1410.py
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0032_auto_20180109_0023"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="blogcategorytranslation",
|
||||
name="meta_description",
|
||||
field=models.TextField(blank=True, verbose_name="category meta description", default=""),
|
||||
),
|
||||
]
|
||||
10
djangocms_blog/migrations/0034_merge.py
Normal file
10
djangocms_blog/migrations/0034_merge.py
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0022_auto_20170304_1040"),
|
||||
("djangocms_blog", "0033_auto_20180226_1410"),
|
||||
]
|
||||
|
||||
operations = []
|
||||
17
djangocms_blog/migrations/0035_posttranslation_subtitle.py
Normal file
17
djangocms_blog/migrations/0035_posttranslation_subtitle.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Generated by Django 1.11 on 2018-04-13 14:09
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0034_merge"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="posttranslation",
|
||||
name="subtitle",
|
||||
field=models.CharField(blank=True, default="", max_length=767, verbose_name="subtitle"),
|
||||
),
|
||||
]
|
||||
17
djangocms_blog/migrations/0036_auto_20180913_1809.py
Normal file
17
djangocms_blog/migrations/0036_auto_20180913_1809.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Generated by Django 1.11.15 on 2018-09-13 18:09
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0035_posttranslation_subtitle"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="slug",
|
||||
field=models.SlugField(allow_unicode=True, blank=True, max_length=752, verbose_name="slug"),
|
||||
),
|
||||
]
|
||||
82
djangocms_blog/migrations/0037_auto_20190806_0743.py
Normal file
82
djangocms_blog/migrations/0037_auto_20190806_0743.py
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
# Generated by Django 2.1.11 on 2019-08-06 05:43
|
||||
|
||||
import django.db.models.deletion
|
||||
import parler.fields
|
||||
import taggit_autosuggest.managers
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0036_auto_20180913_1809"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="authorentriesplugin",
|
||||
name="authors",
|
||||
field=models.ManyToManyField(
|
||||
limit_choices_to={"djangocms_blog_post_author__publish": True},
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
verbose_name="authors",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="blogcategorytranslation",
|
||||
name="master",
|
||||
field=parler.fields.TranslationsForeignKey(
|
||||
editable=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="translations",
|
||||
to="djangocms_blog.BlogCategory",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="blogconfigtranslation",
|
||||
name="master",
|
||||
field=parler.fields.TranslationsForeignKey(
|
||||
editable=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="translations",
|
||||
to="djangocms_blog.BlogConfig",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="latestpostsplugin",
|
||||
name="tags",
|
||||
field=taggit_autosuggest.managers.TaggableManager(
|
||||
blank=True,
|
||||
help_text="Show only the blog articles tagged with chosen tags.",
|
||||
related_name="djangocms_blog_latest_post",
|
||||
through="taggit.TaggedItem",
|
||||
to="taggit.Tag",
|
||||
verbose_name="filter by tag",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="tags",
|
||||
field=taggit_autosuggest.managers.TaggableManager(
|
||||
blank=True,
|
||||
help_text="Type a tag and hit tab, or start typing and select from autocomplete list.",
|
||||
related_name="djangocms_blog_tags",
|
||||
through="taggit.TaggedItem",
|
||||
to="taggit.Tag",
|
||||
verbose_name="Tags",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="master",
|
||||
field=parler.fields.TranslationsForeignKey(
|
||||
editable=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="translations",
|
||||
to="djangocms_blog.Post",
|
||||
),
|
||||
),
|
||||
]
|
||||
27
djangocms_blog/migrations/0038_post_media.py
Normal file
27
djangocms_blog/migrations/0038_post_media.py
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# Generated by Django 1.11.24 on 2019-09-14 10:45
|
||||
|
||||
import cms.models.fields
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("cms", "0020_old_tree_cleanup"),
|
||||
("djangocms_blog", "0037_auto_20190806_0743"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="media",
|
||||
field=cms.models.fields.PlaceholderField(
|
||||
editable=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="media",
|
||||
slotname="media",
|
||||
to="cms.Placeholder",
|
||||
),
|
||||
),
|
||||
]
|
||||
32
djangocms_blog/migrations/0039_auto_20200331_2227.py
Normal file
32
djangocms_blog/migrations/0039_auto_20200331_2227.py
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# Generated by Django 2.2.11 on 2020-03-31 20:27
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0038_post_media"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="blogcategorytranslation",
|
||||
name="name",
|
||||
field=models.CharField(max_length=752, verbose_name="name"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="blogcategorytranslation",
|
||||
name="slug",
|
||||
field=models.SlugField(blank=True, max_length=752, verbose_name="slug"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="slug",
|
||||
field=models.SlugField(allow_unicode=True, blank=True, max_length=752, verbose_name="slug"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="title",
|
||||
field=models.CharField(max_length=752, verbose_name="title"),
|
||||
),
|
||||
]
|
||||
17
djangocms_blog/migrations/0040_post_include_in_rss.py
Normal file
17
djangocms_blog/migrations/0040_post_include_in_rss.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Generated by Django 2.2 on 2021-10-25 12:44
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0039_auto_20200331_2227"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="include_in_rss",
|
||||
field=models.BooleanField(default=True, verbose_name="include in RSS feed"),
|
||||
),
|
||||
]
|
||||
42
djangocms_blog/migrations/0041_auto_20230720_1508.py
Normal file
42
djangocms_blog/migrations/0041_auto_20230720_1508.py
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
# Generated by Django 3.2.18 on 2023-07-20 13:08
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("djangocms_blog", "0040_post_include_in_rss"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="blogcategory",
|
||||
name="id",
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="blogcategorytranslation",
|
||||
name="id",
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="blogconfig",
|
||||
name="id",
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="blogconfigtranslation",
|
||||
name="id",
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="id",
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="posttranslation",
|
||||
name="id",
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,109 @@
|
|||
# Generated by Django 4.2.3 on 2023-08-04 09:10
|
||||
|
||||
import aldryn_apphooks_config.fields
|
||||
import django.db.models.deletion
|
||||
import sortedm2m.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("cms", "0022_auto_20180620_1551"),
|
||||
("djangocms_blog", "0041_auto_20230720_1508"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="authorentriesplugin",
|
||||
name="cmsplugin_ptr",
|
||||
field=models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
related_name="%(app_label)s_%(class)s",
|
||||
serialize=False,
|
||||
to="cms.cmsplugin",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="genericblogplugin",
|
||||
name="cmsplugin_ptr",
|
||||
field=models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
related_name="%(app_label)s_%(class)s",
|
||||
serialize=False,
|
||||
to="cms.cmsplugin",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="latestpostsplugin",
|
||||
name="cmsplugin_ptr",
|
||||
field=models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
related_name="%(app_label)s_%(class)s",
|
||||
serialize=False,
|
||||
to="cms.cmsplugin",
|
||||
),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="FeaturedPostsPlugin",
|
||||
fields=[
|
||||
(
|
||||
"cmsplugin_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
related_name="%(app_label)s_%(class)s",
|
||||
serialize=False,
|
||||
to="cms.cmsplugin",
|
||||
),
|
||||
),
|
||||
(
|
||||
"current_site",
|
||||
models.BooleanField(
|
||||
default=True, help_text="Select items from the current site only", verbose_name="current site"
|
||||
),
|
||||
),
|
||||
(
|
||||
"template_folder",
|
||||
models.CharField(
|
||||
choices=[("plugins", "Default template")],
|
||||
default="plugins",
|
||||
help_text="Select plugin template to load for this instance",
|
||||
max_length=200,
|
||||
verbose_name="Plugin template",
|
||||
),
|
||||
),
|
||||
(
|
||||
"app_config",
|
||||
aldryn_apphooks_config.fields.AppHookConfigField(
|
||||
blank=True,
|
||||
help_text="When selecting a value, the form is reloaded to get the updated default",
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to="djangocms_blog.blogconfig",
|
||||
verbose_name="app. config",
|
||||
),
|
||||
),
|
||||
(
|
||||
"posts",
|
||||
sortedm2m.fields.SortedManyToManyField(
|
||||
help_text=None, to="djangocms_blog.post", verbose_name="Featured posts"
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
},
|
||||
bases=("cms.cmsplugin",),
|
||||
),
|
||||
]
|
||||
0
djangocms_blog/migrations/__init__.py
Normal file
0
djangocms_blog/migrations/__init__.py
Normal file
637
djangocms_blog/models.py
Normal file
637
djangocms_blog/models.py
Normal file
|
|
@ -0,0 +1,637 @@
|
|||
import hashlib
|
||||
|
||||
from aldryn_apphooks_config.fields import AppHookConfigField
|
||||
from aldryn_apphooks_config.managers.parler import AppHookConfigTranslatableManager
|
||||
from cms.models import CMSPlugin, PlaceholderField
|
||||
from django.conf import settings as dj_settings
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.sites.shortcuts import get_current_site
|
||||
from django.core.cache import cache
|
||||
from django.db import models
|
||||
from django.db.models.signals import post_save, pre_delete
|
||||
from django.dispatch import receiver
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
from django.utils.encoding import force_bytes, force_str
|
||||
from django.utils.functional import cached_property
|
||||
from django.utils.html import strip_tags
|
||||
from django.utils.translation import get_language, gettext, gettext_lazy as _
|
||||
from djangocms_text_ckeditor.fields import HTMLField
|
||||
from easy_thumbnails.files import get_thumbnailer
|
||||
from filer.fields.image import FilerImageField
|
||||
from filer.models import ThumbnailOption
|
||||
from meta.models import ModelMeta
|
||||
from parler.models import TranslatableModel, TranslatedFields
|
||||
from parler.utils.context import switch_language
|
||||
from sortedm2m.fields import SortedManyToManyField
|
||||
from taggit_autosuggest.managers import TaggableManager
|
||||
|
||||
from .cms_appconfig import BlogConfig
|
||||
from .fields import slugify
|
||||
from .managers import GenericDateTaggedManager
|
||||
from .settings import get_setting
|
||||
|
||||
BLOG_CURRENT_POST_IDENTIFIER = get_setting("CURRENT_POST_IDENTIFIER")
|
||||
BLOG_CURRENT_NAMESPACE = get_setting("CURRENT_NAMESPACE")
|
||||
BLOG_PLUGIN_TEMPLATE_FOLDERS = get_setting("PLUGIN_TEMPLATE_FOLDERS")
|
||||
|
||||
|
||||
thumbnail_model = "{}.{}".format(ThumbnailOption._meta.app_label, ThumbnailOption.__name__)
|
||||
|
||||
|
||||
try:
|
||||
from knocker.mixins import KnockerModel
|
||||
except ImportError: # pragma: no cover
|
||||
|
||||
class KnockerModel:
|
||||
"""
|
||||
Stub class if django-knocker is not installed
|
||||
"""
|
||||
|
||||
pass
|
||||
|
||||
|
||||
def _get_language(instance, language):
|
||||
available_languages = instance.get_available_languages()
|
||||
if language and language in available_languages:
|
||||
return language
|
||||
language = get_language()
|
||||
if language and language in available_languages:
|
||||
return language
|
||||
language = instance.get_current_language()
|
||||
if language and language in available_languages:
|
||||
return language
|
||||
if get_setting("USE_FALLBACK_LANGUAGE_IN_URL"):
|
||||
for fallback_language in instance.get_fallback_languages():
|
||||
if fallback_language in available_languages:
|
||||
return fallback_language
|
||||
return language
|
||||
|
||||
|
||||
class BlogMetaMixin(ModelMeta):
|
||||
def get_meta_attribute(self, param):
|
||||
"""
|
||||
Retrieves django-meta attributes from apphook config instance
|
||||
:param param: django-meta attribute passed as key
|
||||
"""
|
||||
return self._get_meta_value(param, getattr(self.app_config, param)) or ""
|
||||
|
||||
def get_locale(self):
|
||||
return self.get_current_language()
|
||||
|
||||
def get_full_url(self):
|
||||
"""
|
||||
Return the url with protocol and domain url
|
||||
"""
|
||||
return self.build_absolute_uri(self.get_absolute_url())
|
||||
|
||||
|
||||
class BlogCategory(BlogMetaMixin, TranslatableModel):
|
||||
"""
|
||||
Blog category
|
||||
"""
|
||||
|
||||
parent = models.ForeignKey(
|
||||
"self", verbose_name=_("parent"), null=True, blank=True, related_name="children", on_delete=models.CASCADE
|
||||
)
|
||||
date_created = models.DateTimeField(_("created at"), auto_now_add=True)
|
||||
date_modified = models.DateTimeField(_("modified at"), auto_now=True)
|
||||
app_config = AppHookConfigField(BlogConfig, null=True, verbose_name=_("app. config"))
|
||||
|
||||
translations = TranslatedFields(
|
||||
name=models.CharField(_("name"), max_length=752),
|
||||
slug=models.SlugField(_("slug"), max_length=752, blank=True, db_index=True),
|
||||
meta_description=models.TextField(verbose_name=_("category meta description"), blank=True, default=""),
|
||||
meta={"unique_together": (("language_code", "slug"),)},
|
||||
)
|
||||
|
||||
objects = AppHookConfigTranslatableManager()
|
||||
|
||||
_metadata = {
|
||||
"title": "get_title",
|
||||
"description": "get_description",
|
||||
"og_description": "get_description",
|
||||
"twitter_description": "get_description",
|
||||
"schemaorg_description": "get_description",
|
||||
"schemaorg_type": "get_meta_attribute",
|
||||
"locale": "get_locale",
|
||||
"object_type": "get_meta_attribute",
|
||||
"og_type": "get_meta_attribute",
|
||||
"og_app_id": "get_meta_attribute",
|
||||
"og_profile_id": "get_meta_attribute",
|
||||
"og_publisher": "get_meta_attribute",
|
||||
"og_author_url": "get_meta_attribute",
|
||||
"og_author": "get_meta_attribute",
|
||||
"twitter_type": "get_meta_attribute",
|
||||
"twitter_site": "get_meta_attribute",
|
||||
"twitter_author": "get_meta_attribute",
|
||||
"url": "get_absolute_url",
|
||||
}
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("blog category")
|
||||
verbose_name_plural = _("blog categories")
|
||||
|
||||
def descendants(self):
|
||||
children = []
|
||||
if self.children.exists():
|
||||
children.extend(self.children.all())
|
||||
for child in self.children.all():
|
||||
children.extend(child.descendants())
|
||||
return children
|
||||
|
||||
@cached_property
|
||||
def linked_posts(self):
|
||||
return self.blog_posts.namespace(self.app_config.namespace)
|
||||
|
||||
@cached_property
|
||||
def count(self):
|
||||
return self.linked_posts.published().count()
|
||||
|
||||
@cached_property
|
||||
def count_all_sites(self):
|
||||
return self.linked_posts.published(current_site=False).count()
|
||||
|
||||
def get_absolute_url(self, lang=None):
|
||||
lang = _get_language(self, lang)
|
||||
if self.has_translation(lang):
|
||||
slug = self.safe_translation_getter("slug", language_code=lang)
|
||||
return reverse(
|
||||
"%s:posts-category" % self.app_config.namespace,
|
||||
kwargs={"category": slug},
|
||||
current_app=self.app_config.namespace,
|
||||
)
|
||||
# in case category doesn't exist in this language, gracefully fallback
|
||||
# to posts-latest
|
||||
return reverse("%s:posts-latest" % self.app_config.namespace, current_app=self.app_config.namespace)
|
||||
|
||||
def __str__(self):
|
||||
default = gettext("BlogCategory (no translation)")
|
||||
return self.safe_translation_getter("name", any_language=True, default=default)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
super().save(*args, **kwargs)
|
||||
for lang in self.get_available_languages():
|
||||
self.set_current_language(lang)
|
||||
if not self.slug and self.name:
|
||||
self.slug = slugify(force_str(self.name))
|
||||
self.save_translations()
|
||||
|
||||
def get_title(self):
|
||||
title = self.safe_translation_getter("name", any_language=True)
|
||||
return title.strip()
|
||||
|
||||
def get_description(self):
|
||||
description = self.safe_translation_getter("meta_description", any_language=True)
|
||||
return strip_tags(description).strip()
|
||||
|
||||
|
||||
class Post(KnockerModel, BlogMetaMixin, TranslatableModel):
|
||||
"""
|
||||
Blog post
|
||||
"""
|
||||
|
||||
author = models.ForeignKey(
|
||||
dj_settings.AUTH_USER_MODEL,
|
||||
verbose_name=_("author"),
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name="djangocms_blog_post_author",
|
||||
on_delete=models.PROTECT,
|
||||
)
|
||||
|
||||
date_created = models.DateTimeField(_("created"), auto_now_add=True)
|
||||
date_modified = models.DateTimeField(_("last modified"), auto_now=True)
|
||||
date_published = models.DateTimeField(_("published since"), null=True, blank=True)
|
||||
date_published_end = models.DateTimeField(_("published until"), null=True, blank=True)
|
||||
date_featured = models.DateTimeField(_("featured date"), null=True, blank=True)
|
||||
publish = models.BooleanField(_("publish"), default=False)
|
||||
include_in_rss = models.BooleanField(_("include in RSS feed"), default=True)
|
||||
categories = models.ManyToManyField(
|
||||
"djangocms_blog.BlogCategory", verbose_name=_("category"), related_name="blog_posts", blank=True
|
||||
)
|
||||
main_image = FilerImageField(
|
||||
verbose_name=_("main image"),
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name="djangocms_blog_post_image",
|
||||
)
|
||||
main_image_thumbnail = models.ForeignKey(
|
||||
thumbnail_model,
|
||||
verbose_name=_("main image thumbnail"),
|
||||
related_name="djangocms_blog_post_thumbnail",
|
||||
on_delete=models.SET_NULL,
|
||||
blank=True,
|
||||
null=True,
|
||||
)
|
||||
main_image_full = models.ForeignKey(
|
||||
thumbnail_model,
|
||||
verbose_name=_("main image full"),
|
||||
related_name="djangocms_blog_post_full",
|
||||
on_delete=models.SET_NULL,
|
||||
blank=True,
|
||||
null=True,
|
||||
)
|
||||
enable_comments = models.BooleanField(
|
||||
verbose_name=_("enable comments on post"), default=get_setting("ENABLE_COMMENTS")
|
||||
)
|
||||
sites = models.ManyToManyField(
|
||||
"sites.Site",
|
||||
verbose_name=_("Site(s)"),
|
||||
blank=True,
|
||||
help_text=_(
|
||||
"Select sites in which to show the post. "
|
||||
"If none is set it will be "
|
||||
"visible in all the configured sites."
|
||||
),
|
||||
)
|
||||
app_config = AppHookConfigField(BlogConfig, null=True, verbose_name=_("app. config"))
|
||||
|
||||
translations = TranslatedFields(
|
||||
title=models.CharField(_("title"), max_length=752),
|
||||
slug=models.SlugField(
|
||||
_("slug"), max_length=752, blank=True, db_index=True, allow_unicode=get_setting("UNICODE_SLUGS")
|
||||
),
|
||||
subtitle=models.CharField(verbose_name=_("subtitle"), max_length=767, blank=True, default=""),
|
||||
abstract=HTMLField(_("abstract"), blank=True, default="", configuration="BLOG_ABSTRACT_CKEDITOR"),
|
||||
meta_description=models.TextField(verbose_name=_("post meta description"), blank=True, default=""),
|
||||
meta_keywords=models.TextField(verbose_name=_("post meta keywords"), blank=True, default=""),
|
||||
meta_title=models.CharField(
|
||||
verbose_name=_("post meta title"),
|
||||
help_text=_("used in title tag and social sharing"),
|
||||
max_length=2000,
|
||||
blank=True,
|
||||
default="",
|
||||
),
|
||||
post_text=HTMLField(_("text"), default="", blank=True, configuration="BLOG_POST_TEXT_CKEDITOR"),
|
||||
meta={"unique_together": (("language_code", "slug"),)},
|
||||
)
|
||||
media = PlaceholderField("media", related_name="media")
|
||||
content = PlaceholderField("post_content", related_name="post_content")
|
||||
liveblog = PlaceholderField("live_blog", related_name="live_blog")
|
||||
enable_liveblog = models.BooleanField(verbose_name=_("enable liveblog on post"), default=False)
|
||||
|
||||
objects = GenericDateTaggedManager()
|
||||
tags = TaggableManager(
|
||||
blank=True,
|
||||
related_name="djangocms_blog_tags",
|
||||
help_text=_("Type a tag and hit tab, or start typing and select from autocomplete list."),
|
||||
)
|
||||
|
||||
related = SortedManyToManyField("self", verbose_name=_("Related Posts"), blank=True, symmetrical=False)
|
||||
|
||||
_metadata = {
|
||||
"title": "get_title",
|
||||
"description": "get_description",
|
||||
"keywords": "get_keywords",
|
||||
"og_description": "get_description",
|
||||
"twitter_description": "get_description",
|
||||
"schemaorg_description": "get_description",
|
||||
"locale": "get_locale",
|
||||
"image": "get_image_full_url",
|
||||
"image_width": "get_image_width",
|
||||
"image_height": "get_image_height",
|
||||
"object_type": "get_meta_attribute",
|
||||
"og_type": "get_meta_attribute",
|
||||
"og_app_id": "get_meta_attribute",
|
||||
"og_profile_id": "get_meta_attribute",
|
||||
"og_publisher": "get_meta_attribute",
|
||||
"og_author_url": "get_meta_attribute",
|
||||
"og_author": "get_meta_attribute",
|
||||
"twitter_type": "get_meta_attribute",
|
||||
"twitter_site": "get_meta_attribute",
|
||||
"twitter_author": "get_meta_attribute",
|
||||
"schemaorg_type": "get_meta_attribute",
|
||||
"published_time": "date_published",
|
||||
"modified_time": "date_modified",
|
||||
"expiration_time": "date_published_end",
|
||||
"tag": "get_tags",
|
||||
"url": "get_absolute_url",
|
||||
}
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("blog article")
|
||||
verbose_name_plural = _("blog articles")
|
||||
ordering = ("-date_published", "-date_created")
|
||||
get_latest_by = "date_published"
|
||||
|
||||
def __str__(self):
|
||||
default = gettext("Post (no translation)")
|
||||
return self.safe_translation_getter("title", any_language=True, default=default)
|
||||
|
||||
@property
|
||||
def guid(self, language=None):
|
||||
if not language:
|
||||
language = self.get_current_language()
|
||||
base_string = "-{0}-{2}-{1}-".format(
|
||||
language,
|
||||
self.app_config.namespace,
|
||||
self.safe_translation_getter("slug", language_code=language, any_language=True),
|
||||
)
|
||||
return hashlib.sha256(force_bytes(base_string)).hexdigest()
|
||||
|
||||
@property
|
||||
def date(self):
|
||||
if self.date_featured:
|
||||
return self.date_featured
|
||||
return self.date_published
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
"""
|
||||
Handle some auto configuration during save
|
||||
"""
|
||||
if self.publish and self.date_published is None:
|
||||
self.date_published = timezone.now()
|
||||
if not self.slug and self.title:
|
||||
self.slug = slugify(self.title)
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
def save_translation(self, translation, *args, **kwargs):
|
||||
"""
|
||||
Handle some auto configuration during save
|
||||
"""
|
||||
if not translation.slug and translation.title:
|
||||
translation.slug = slugify(translation.title)
|
||||
super().save_translation(translation, *args, **kwargs)
|
||||
|
||||
def get_absolute_url(self, lang=None):
|
||||
lang = _get_language(self, lang)
|
||||
with switch_language(self, lang):
|
||||
category = self.categories.first()
|
||||
kwargs = {}
|
||||
if self.date_published:
|
||||
current_date = self.date_published
|
||||
else:
|
||||
current_date = self.date_created
|
||||
urlconf = get_setting("PERMALINK_URLS")[self.app_config.url_patterns]
|
||||
if "<int:year>" in urlconf:
|
||||
kwargs["year"] = current_date.year
|
||||
if "<int:month>" in urlconf:
|
||||
kwargs["month"] = "%02d" % current_date.month
|
||||
if "<int:day>" in urlconf:
|
||||
kwargs["day"] = "%02d" % current_date.day
|
||||
if "<str:slug>" in urlconf or "<slug:slug>" in urlconf:
|
||||
kwargs["slug"] = self.safe_translation_getter("slug", language_code=lang, any_language=True) # NOQA
|
||||
if "<slug:category>" in urlconf or "<str:category>" in urlconf:
|
||||
kwargs["category"] = category.safe_translation_getter(
|
||||
"slug", language_code=lang, any_language=True
|
||||
) # NOQA
|
||||
return reverse(
|
||||
"%s:post-detail" % self.app_config.namespace, kwargs=kwargs, current_app=self.app_config.namespace
|
||||
)
|
||||
|
||||
def get_title(self):
|
||||
title = self.safe_translation_getter("meta_title", any_language=True)
|
||||
if not title:
|
||||
title = self.safe_translation_getter("title", any_language=True)
|
||||
return title.strip()
|
||||
|
||||
def get_keywords(self):
|
||||
"""
|
||||
Returns the list of keywords (as python list)
|
||||
:return: list
|
||||
"""
|
||||
return self.safe_translation_getter("meta_keywords", default="").strip().split(",")
|
||||
|
||||
def get_description(self):
|
||||
description = self.safe_translation_getter("meta_description", any_language=True)
|
||||
if not description:
|
||||
description = self.safe_translation_getter("abstract", any_language=True)
|
||||
return strip_tags(description).strip()
|
||||
|
||||
def get_image_full_url(self):
|
||||
if self.main_image:
|
||||
thumbnail_options = get_setting("META_IMAGE_SIZE")
|
||||
if thumbnail_options:
|
||||
thumbnail_url = get_thumbnailer(self.main_image).get_thumbnail(thumbnail_options).url
|
||||
return self.build_absolute_uri(thumbnail_url)
|
||||
return self.build_absolute_uri(self.main_image.url)
|
||||
return ""
|
||||
|
||||
def get_image_width(self):
|
||||
if self.main_image:
|
||||
thumbnail_options = get_setting("META_IMAGE_SIZE")
|
||||
if thumbnail_options:
|
||||
return get_thumbnailer(self.main_image).get_thumbnail(thumbnail_options).width
|
||||
return self.main_image.width
|
||||
|
||||
def get_image_height(self):
|
||||
if self.main_image:
|
||||
thumbnail_options = get_setting("META_IMAGE_SIZE")
|
||||
if thumbnail_options:
|
||||
return get_thumbnailer(self.main_image).get_thumbnail(thumbnail_options).height
|
||||
return self.main_image.height
|
||||
|
||||
def get_tags(self):
|
||||
"""
|
||||
Returns the list of object tags as comma separated list
|
||||
"""
|
||||
taglist = [tag.name for tag in self.tags.all()]
|
||||
return ",".join(taglist)
|
||||
|
||||
def get_author(self):
|
||||
"""
|
||||
Return the author (user) objects
|
||||
"""
|
||||
return self.author
|
||||
|
||||
def _set_default_author(self, current_user):
|
||||
if not self.author_id and self.app_config.set_author:
|
||||
if get_setting("AUTHOR_DEFAULT") is True:
|
||||
user = current_user
|
||||
else:
|
||||
user = get_user_model().objects.get(username=get_setting("AUTHOR_DEFAULT"))
|
||||
self.author = user
|
||||
|
||||
def thumbnail_options(self):
|
||||
if self.main_image_thumbnail_id:
|
||||
return self.main_image_thumbnail.as_dict
|
||||
else:
|
||||
return get_setting("IMAGE_THUMBNAIL_SIZE")
|
||||
|
||||
def full_image_options(self):
|
||||
if self.main_image_full_id:
|
||||
return self.main_image_full.as_dict
|
||||
else:
|
||||
return get_setting("IMAGE_FULL_SIZE")
|
||||
|
||||
@property
|
||||
def is_published(self):
|
||||
"""
|
||||
Checks wether the blog post is *really* published by checking publishing dates too
|
||||
"""
|
||||
return (
|
||||
self.publish
|
||||
and (self.date_published and self.date_published <= timezone.now())
|
||||
and (self.date_published_end is None or self.date_published_end > timezone.now())
|
||||
)
|
||||
|
||||
def should_knock(self, signal_type, created=False):
|
||||
"""
|
||||
Returns whether to emit knocks according to the post state
|
||||
"""
|
||||
new = self.app_config.send_knock_create and self.is_published and self.date_published == self.date_modified
|
||||
updated = self.app_config.send_knock_update and self.is_published
|
||||
return (new or updated) and signal_type in ("post_save", "post_delete")
|
||||
|
||||
def get_cache_key(self, language, prefix):
|
||||
return "djangocms-blog:{2}:{0}:{1}".format(language, self.guid, prefix)
|
||||
|
||||
@property
|
||||
def liveblog_group(self):
|
||||
return "liveblog-{apphook}-{lang}-{post}".format(
|
||||
lang=self.get_current_language(),
|
||||
apphook=self.app_config.namespace,
|
||||
post=self.safe_translation_getter("slug", any_language=True),
|
||||
)
|
||||
|
||||
|
||||
class BasePostPlugin(CMSPlugin):
|
||||
app_config = AppHookConfigField(BlogConfig, null=True, verbose_name=_("app. config"), blank=True)
|
||||
current_site = models.BooleanField(
|
||||
_("current site"), default=True, help_text=_("Select items from the current site only")
|
||||
)
|
||||
template_folder = models.CharField(
|
||||
max_length=200,
|
||||
verbose_name=_("Plugin template"),
|
||||
help_text=_("Select plugin template to load for this instance"),
|
||||
default=BLOG_PLUGIN_TEMPLATE_FOLDERS[0][0],
|
||||
choices=BLOG_PLUGIN_TEMPLATE_FOLDERS,
|
||||
)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
def optimize(self, qs):
|
||||
"""
|
||||
Apply select_related / prefetch_related to optimize the view queries
|
||||
:param qs: queryset to optimize
|
||||
:return: optimized queryset
|
||||
"""
|
||||
return qs.select_related("app_config").prefetch_related(
|
||||
"translations", "categories", "categories__translations", "categories__app_config"
|
||||
)
|
||||
|
||||
def post_queryset(self, request=None, published_only=True, selected_posts=None):
|
||||
language = get_language()
|
||||
posts = Post.objects if not selected_posts else selected_posts
|
||||
if self.app_config:
|
||||
posts = posts.namespace(self.app_config.namespace)
|
||||
if self.current_site:
|
||||
posts = posts.on_site(get_current_site(request))
|
||||
posts = posts.active_translations(language_code=language)
|
||||
if (
|
||||
published_only
|
||||
or not request
|
||||
or not getattr(request, "toolbar", False)
|
||||
or not request.toolbar.edit_mode_active
|
||||
):
|
||||
posts = posts.published(current_site=self.current_site)
|
||||
return self.optimize(posts.all())
|
||||
|
||||
|
||||
class LatestPostsPlugin(BasePostPlugin):
|
||||
latest_posts = models.IntegerField(
|
||||
_("articles"),
|
||||
default=get_setting("LATEST_POSTS"),
|
||||
help_text=_("The number of latests " "articles to be displayed."),
|
||||
)
|
||||
tags = TaggableManager(
|
||||
_("filter by tag"),
|
||||
blank=True,
|
||||
help_text=_("Show only the blog articles tagged with chosen tags."),
|
||||
related_name="djangocms_blog_latest_post",
|
||||
)
|
||||
categories = models.ManyToManyField(
|
||||
"djangocms_blog.BlogCategory",
|
||||
blank=True,
|
||||
verbose_name=_("filter by category"),
|
||||
help_text=_("Show only the blog articles tagged " "with chosen categories."),
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return force_str(_("%s latest articles by tag") % self.latest_posts)
|
||||
|
||||
def copy_relations(self, oldinstance):
|
||||
for tag in oldinstance.tags.all():
|
||||
self.tags.add(tag)
|
||||
for category in oldinstance.categories.all():
|
||||
self.categories.add(category)
|
||||
|
||||
def get_posts(self, request, published_only=True):
|
||||
posts = self.post_queryset(request, published_only)
|
||||
if self.tags.exists():
|
||||
posts = posts.filter(tags__in=list(self.tags.all()))
|
||||
if self.categories.exists():
|
||||
posts = posts.filter(categories__in=list(self.categories.all()))
|
||||
return self.optimize(posts.distinct())[: self.latest_posts]
|
||||
|
||||
|
||||
class AuthorEntriesPlugin(BasePostPlugin):
|
||||
authors = models.ManyToManyField(
|
||||
dj_settings.AUTH_USER_MODEL,
|
||||
verbose_name=_("authors"),
|
||||
limit_choices_to={"djangocms_blog_post_author__publish": True},
|
||||
)
|
||||
latest_posts = models.IntegerField(
|
||||
_("articles"),
|
||||
default=get_setting("LATEST_POSTS"),
|
||||
help_text=_("The number of author articles to be displayed."),
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return force_str(_("%s latest articles by author") % self.latest_posts)
|
||||
|
||||
def copy_relations(self, oldinstance):
|
||||
self.authors.set(oldinstance.authors.all())
|
||||
|
||||
def get_posts(self, request, published_only=True):
|
||||
posts = self.post_queryset(request, published_only)
|
||||
return posts
|
||||
|
||||
def get_authors(self, request):
|
||||
authors = self.authors.all()
|
||||
for author in authors:
|
||||
qs = self.get_posts(request).filter(author=author)
|
||||
# total nb of articles
|
||||
author.count = qs.count()
|
||||
# "the number of author articles to be displayed"
|
||||
author.posts = qs[: self.latest_posts]
|
||||
return authors
|
||||
|
||||
|
||||
class FeaturedPostsPlugin(BasePostPlugin):
|
||||
posts = SortedManyToManyField(Post, verbose_name=_("Featured posts"))
|
||||
|
||||
def __str__(self):
|
||||
return force_str(_("Featured posts"))
|
||||
|
||||
def copy_relations(self, oldinstance):
|
||||
self.posts.set(oldinstance.posts.all())
|
||||
|
||||
def get_posts(self, request, published_only=True):
|
||||
posts = self.post_queryset(request, published_only, selected_posts=self.posts.all())
|
||||
return posts
|
||||
|
||||
|
||||
class GenericBlogPlugin(BasePostPlugin):
|
||||
class Meta:
|
||||
abstract = False
|
||||
|
||||
def __str__(self):
|
||||
return force_str(_("generic blog plugin"))
|
||||
|
||||
|
||||
@receiver(pre_delete, sender=Post)
|
||||
def pre_delete_post(sender, instance, **kwargs):
|
||||
for language in instance.get_available_languages():
|
||||
key = instance.get_cache_key(language, "feed")
|
||||
cache.delete(key)
|
||||
|
||||
|
||||
@receiver(post_save, sender=Post)
|
||||
def post_save_post(sender, instance, **kwargs):
|
||||
for language in instance.get_available_languages():
|
||||
key = instance.get_cache_key(language, "feed")
|
||||
cache.delete(key)
|
||||
635
djangocms_blog/settings.py
Normal file
635
djangocms_blog/settings.py
Normal file
|
|
@ -0,0 +1,635 @@
|
|||
"""
|
||||
List of settings that can be set in project django settings.
|
||||
"""
|
||||
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from meta import settings as meta_settings
|
||||
|
||||
MENU_TYPE_COMPLETE = "complete"
|
||||
MENU_TYPE_CATEGORIES = "categories"
|
||||
MENU_TYPE_POSTS = "posts"
|
||||
MENU_TYPE_NONE = "none"
|
||||
DATE_FORMAT = "%a %d %b %Y %H:%M"
|
||||
|
||||
PERMALINK_TYPE_FULL_DATE = "full_date"
|
||||
PERMALINK_TYPE_SHORT_DATE = "short_date"
|
||||
PERMALINK_TYPE_CATEGORY = "category"
|
||||
PERMALINK_TYPE_SLUG = "slug"
|
||||
|
||||
BLOG_DEFAULT_PUBLISHED = False
|
||||
"""
|
||||
.. _DEFAULT_PUBLISHED:
|
||||
|
||||
Default post published status.
|
||||
"""
|
||||
|
||||
PERMALINKS = ( # noqa
|
||||
(PERMALINK_TYPE_FULL_DATE, _("Full date")),
|
||||
(PERMALINK_TYPE_SHORT_DATE, _("Year / Month")),
|
||||
(PERMALINK_TYPE_CATEGORY, _("Category")),
|
||||
(PERMALINK_TYPE_SLUG, _("Just slug")),
|
||||
)
|
||||
"""
|
||||
.. _PERMALINKS:
|
||||
|
||||
Permalinks styles.
|
||||
"""
|
||||
|
||||
BLOG_UNICODE_SLUGS = True
|
||||
"""
|
||||
.. _UNICODE_SLUGS:
|
||||
|
||||
Allow unicode chars in auto-generated slugs.
|
||||
"""
|
||||
|
||||
|
||||
PERMALINKS_URLS = { # noqa
|
||||
PERMALINK_TYPE_FULL_DATE: "<int:year>/<int:month>/<int:day>/<str:slug>/",
|
||||
PERMALINK_TYPE_SHORT_DATE: "<int:year>/<int:month>/<str:slug>/",
|
||||
PERMALINK_TYPE_CATEGORY: "<str:category>/<str:slug>/",
|
||||
PERMALINK_TYPE_SLUG: "<str:slug>/",
|
||||
}
|
||||
|
||||
"""
|
||||
.. _PERMALINKS_URLS:
|
||||
|
||||
Permalinks urlconfs.
|
||||
"""
|
||||
|
||||
MENU_TYPES = ( # noqa
|
||||
(MENU_TYPE_COMPLETE, _("Categories and posts")),
|
||||
(MENU_TYPE_CATEGORIES, _("Categories only")),
|
||||
(MENU_TYPE_POSTS, _("Posts only")),
|
||||
(MENU_TYPE_NONE, _("None")),
|
||||
)
|
||||
"""
|
||||
.. _DEFAULT_MENU_TYPES:
|
||||
|
||||
Types of menu structure.
|
||||
"""
|
||||
|
||||
SITEMAP_CHANGEFREQ_LIST = ( # noqa
|
||||
("always", _("always")),
|
||||
("hourly", _("hourly")),
|
||||
("daily", _("daily")),
|
||||
("weekly", _("weekly")),
|
||||
("monthly", _("monthly")),
|
||||
("yearly", _("yearly")),
|
||||
("never", _("never")),
|
||||
)
|
||||
"""
|
||||
.. _SITEMAP_CHANGEFREQ_LIST:
|
||||
|
||||
List of changefreqs defined in sitemaps.
|
||||
"""
|
||||
|
||||
BLOG_IMAGE_THUMBNAIL_SIZE = {"size": "120x120", "crop": True, "upscale": False}
|
||||
"""
|
||||
.. _IMAGE_THUMBNAIL_SIZE:
|
||||
|
||||
Easy-thumbnail alias configuration for the post main image when shown on the post lists;
|
||||
it's a dictionary with ``size``, ``crop`` and ``upscale`` keys.
|
||||
"""
|
||||
|
||||
BLOG_IMAGE_FULL_SIZE = {"size": "640", "crop": True, "upscale": False}
|
||||
"""
|
||||
.. _IMAGE_FULL_SIZE:
|
||||
|
||||
Easy-thumbnail alias configuration for the post main image when shown on the post detail;
|
||||
it's a dictionary with ``size``, ``crop`` and ``upscale`` keys.
|
||||
"""
|
||||
|
||||
BLOG_META_IMAGE_SIZE = None
|
||||
"""
|
||||
.. _META_IMAGE_SIZE:
|
||||
|
||||
Easy-thumbnail alias configuration for the post meta image;
|
||||
it's a dictionary with ``size``, ``crop`` and ``upscale`` keys.
|
||||
Recommended values are {"size": (1200, 630), "crop": True, "upscale": False}
|
||||
"""
|
||||
|
||||
BLOG_URLCONF = "djangocms_blog.urls"
|
||||
"""
|
||||
.. _URLCONF:
|
||||
|
||||
Standard Apphook URLConf.
|
||||
"""
|
||||
|
||||
BLOG_PAGINATION = 10
|
||||
"""
|
||||
.. _PAGINATION:
|
||||
|
||||
Number of post per page.
|
||||
"""
|
||||
|
||||
BLOG_LATEST_POSTS = 5
|
||||
"""
|
||||
.. _LATEST_POSTS:
|
||||
|
||||
Default number of post in the **Latest post** plugin.
|
||||
"""
|
||||
|
||||
BLOG_POSTS_LIST_TRUNCWORDS_COUNT = 100
|
||||
"""
|
||||
.. _POSTS_LIST_TRUNCWORDS_COUNT:
|
||||
|
||||
Default number of words shown for abstract in the post list.
|
||||
"""
|
||||
|
||||
BLOG_META_DESCRIPTION_LENGTH = 320
|
||||
"""
|
||||
.. _META_DESCRIPTION_LENGTH:
|
||||
|
||||
Maximum length for the Meta description field.
|
||||
"""
|
||||
|
||||
BLOG_META_TITLE_LENGTH = 70
|
||||
"""
|
||||
.. _META_TITLE_LENGTH:
|
||||
|
||||
Maximum length for the Meta title field.
|
||||
"""
|
||||
|
||||
BLOG_MENU_TYPES = MENU_TYPES
|
||||
"""
|
||||
.. _MENU_TYPES:
|
||||
|
||||
List of available menu types.
|
||||
"""
|
||||
|
||||
BLOG_MENU_EMPTY_CATEGORIES = True
|
||||
"""
|
||||
.. _MENU_EMPTY_CATEGORIES:
|
||||
|
||||
Flag to show / hide categories without posts attached from the menu.
|
||||
"""
|
||||
|
||||
BLOG_TYPE = "Article"
|
||||
"""
|
||||
.. _TYPE:
|
||||
|
||||
Generic type for the post object.
|
||||
"""
|
||||
|
||||
BLOG_TYPES = meta_settings.OBJECT_TYPES
|
||||
"""
|
||||
.. _TYPES:
|
||||
|
||||
Choices of available blog types.
|
||||
|
||||
Available values are defined in to ``META_OBJECT_TYPES`` defined in `django-meta settings`_.
|
||||
"""
|
||||
|
||||
BLOG_FB_TYPE = "Article"
|
||||
"""
|
||||
.. _FB_TYPE:
|
||||
|
||||
Open Graph type for the post object.
|
||||
"""
|
||||
|
||||
BLOG_FB_TYPES = meta_settings.FB_TYPES
|
||||
"""
|
||||
.. _FB_TYPES:
|
||||
|
||||
Choices of available blog types.
|
||||
|
||||
Available values are defined in to ``META_FB_TYPES`` defined in `django-meta settings`_.
|
||||
"""
|
||||
|
||||
BLOG_FB_APPID = meta_settings.get_setting("FB_APPID")
|
||||
"""
|
||||
.. _FB_APPID:
|
||||
|
||||
Facebook Application ID.
|
||||
|
||||
Default from ``FB_APPID`` defined in `django-meta settings`_.
|
||||
"""
|
||||
|
||||
BLOG_FB_PROFILE_ID = meta_settings.get_setting("FB_PROFILE_ID")
|
||||
"""
|
||||
.. _FB_PROFILE_ID:
|
||||
|
||||
Facebook profile ID of the post author.
|
||||
|
||||
Default from ``FB_PROFILE_ID`` defined in `django-meta settings`_.
|
||||
"""
|
||||
|
||||
BLOG_FB_PUBLISHER = meta_settings.get_setting("FB_PUBLISHER")
|
||||
"""
|
||||
.. _FB_PUBLISHER:
|
||||
|
||||
Facebook URL of the blog publisher.
|
||||
|
||||
Default from ``FB_PUBLISHER`` defined in `django-meta settings`_.
|
||||
"""
|
||||
|
||||
BLOG_FB_AUTHOR_URL = "get_author_url"
|
||||
"""
|
||||
.. _FB_AUTHOR_URL:
|
||||
|
||||
Facebook profile URL of the post author.
|
||||
"""
|
||||
|
||||
BLOG_FB_AUTHOR = "get_author_name"
|
||||
"""
|
||||
.. _FB_AUTHOR:
|
||||
|
||||
Facebook profile URL of the post author.
|
||||
"""
|
||||
|
||||
BLOG_TWITTER_TYPE = "summary"
|
||||
"""
|
||||
.. _TWITTER_TYPE:
|
||||
|
||||
Twitter Card type for the post object.
|
||||
"""
|
||||
|
||||
BLOG_TWITTER_TYPES = meta_settings.TWITTER_TYPES
|
||||
"""
|
||||
.. _TWITTER_TYPES:
|
||||
|
||||
Choices of available blog types for twitter.
|
||||
|
||||
Default from ``TWITTER_TYPES`` defined in `django-meta settings`_.
|
||||
"""
|
||||
|
||||
BLOG_TWITTER_SITE = meta_settings.get_setting("TWITTER_SITE")
|
||||
"""
|
||||
.. _TWITTER_SITE:
|
||||
|
||||
Twitter account of the site.
|
||||
|
||||
Default from ``TWITTER_SITE`` defined in `django-meta settings`_.
|
||||
"""
|
||||
|
||||
BLOG_TWITTER_AUTHOR = "get_author_twitter"
|
||||
"""
|
||||
.. _TWITTER_AUTHOR:
|
||||
|
||||
Twitter account of the post author.
|
||||
"""
|
||||
|
||||
BLOG_SCHEMAORG_TYPE = "Blog"
|
||||
"""
|
||||
.. _SCHEMAORG_TYPE:
|
||||
|
||||
Schema.org type for the post object.
|
||||
"""
|
||||
|
||||
BLOG_SCHEMAORG_TYPES = meta_settings.SCHEMAORG_TYPES
|
||||
"""
|
||||
.. _SCHEMAORG_TYPES:
|
||||
|
||||
Choices of available Schema.org types.
|
||||
|
||||
Default from ``SCHEMAORG_TYPES`` defined in `django-meta settings`_.
|
||||
"""
|
||||
|
||||
BLOG_SCHEMAORG_AUTHOR = "get_author_schemaorg"
|
||||
"""
|
||||
.. _SCHEMAORG_AUTHOR:
|
||||
|
||||
Google+ account of the post author (deprecated).
|
||||
"""
|
||||
|
||||
BLOG_ENABLE_COMMENTS = True
|
||||
"""
|
||||
.. _ENABLE_COMMENTS:
|
||||
|
||||
Whether to enable comments by default on posts
|
||||
|
||||
While ``djangocms_blog`` does not ship any comment system, this flag
|
||||
can be used to control the chosen comments framework.
|
||||
"""
|
||||
|
||||
BLOG_USE_ABSTRACT = True
|
||||
"""
|
||||
.. _USE_ABSTRACT:
|
||||
|
||||
Use an abstract field for the post.
|
||||
|
||||
If ``False`` no abstract field is available for posts.
|
||||
"""
|
||||
|
||||
BLOG_USE_PLACEHOLDER = True
|
||||
"""
|
||||
.. _USE_PLACEHOLDER:
|
||||
|
||||
Post content is managed via placeholder
|
||||
|
||||
If ``False`` a HTMLField is provided instead.
|
||||
"""
|
||||
|
||||
BLOG_USE_RELATED = True
|
||||
"""
|
||||
.. _USE_RELATED:
|
||||
|
||||
Enable related posts to link one post to others.
|
||||
"""
|
||||
|
||||
BLOG_MULTISITE = True
|
||||
"""
|
||||
.. _MULTISITE:
|
||||
|
||||
Add support for multisite setup.
|
||||
"""
|
||||
|
||||
BLOG_AUTHOR_DEFAULT = True
|
||||
"""
|
||||
.. _AUTHOR_DEFAULT:
|
||||
|
||||
Use a default if not specified:
|
||||
|
||||
* ``True``: the current user is set as the default author;
|
||||
* ``False``: no default author is set;
|
||||
* any other string: the user with the provided username is used;
|
||||
"""
|
||||
|
||||
BLOG_ADMIN_POST_FIELDSET_FILTER = False
|
||||
"""
|
||||
.. _ADMIN_POST_FIELDSET_FILTER:
|
||||
|
||||
Callable function to change (add or filter) fields to fieldsets for admin post edit form.
|
||||
|
||||
See :ref:`admin_filter_function` for more details.
|
||||
"""
|
||||
|
||||
BLOG_AVAILABLE_PERMALINK_STYLES = PERMALINKS
|
||||
"""
|
||||
.. _AVAILABLE_PERMALINK_STYLES:
|
||||
|
||||
Choices of permalinks styles.
|
||||
"""
|
||||
|
||||
BLOG_PERMALINK_URLS = PERMALINKS_URLS
|
||||
"""
|
||||
.. _PERMALINK_URLS:
|
||||
|
||||
URLConf corresponding to :ref:`BLOG_AVAILABLE_PERMALINK_STYLES <AVAILABLE_PERMALINK_STYLES>`.
|
||||
"""
|
||||
|
||||
BLOG_DEFAULT_OBJECT_NAME = "Article"
|
||||
"""
|
||||
.. _DEFAULT_OBJECT_NAME:
|
||||
|
||||
Default label for Blog item (used in django CMS Wizard).
|
||||
"""
|
||||
|
||||
BLOG_AUTO_SETUP = True
|
||||
"""
|
||||
.. _AUTO_SETUP:
|
||||
|
||||
Enable the blog :ref:`auto_setup` feature.
|
||||
"""
|
||||
|
||||
BLOG_AUTO_HOME_TITLE = "Home"
|
||||
"""
|
||||
.. _AUTO_HOME_TITLE:
|
||||
|
||||
Title of the home page created by :ref:`auto_setup`.
|
||||
"""
|
||||
|
||||
BLOG_AUTO_BLOG_TITLE = "Blog"
|
||||
"""
|
||||
.. _AUTO_BLOG_TITLE:
|
||||
|
||||
Title of the blog page created by :ref:`auto_setup`.
|
||||
"""
|
||||
|
||||
BLOG_AUTO_APP_TITLE = "Blog"
|
||||
"""
|
||||
.. _AUTO_APP_TITLE:
|
||||
|
||||
Title of the ``BlogConfig`` instance created by :ref:`auto_setup`.
|
||||
"""
|
||||
|
||||
BLOG_AUTO_NAMESPACE = "Blog"
|
||||
"""
|
||||
.. _AUTO_NAMESPACE:
|
||||
|
||||
Namespace of the ``BlogConfig`` instance created by :ref:`auto_setup`.
|
||||
"""
|
||||
|
||||
BLOG_SITEMAP_PRIORITY_DEFAULT = "0.5"
|
||||
"""
|
||||
.. _SITEMAP_PRIORITY_DEFAULT:
|
||||
|
||||
Default priority for sitemap items.
|
||||
"""
|
||||
|
||||
BLOG_SITEMAP_CHANGEFREQ = SITEMAP_CHANGEFREQ_LIST
|
||||
"""
|
||||
.. _SITEMAP_CHANGEFREQ:
|
||||
|
||||
List for available changefreqs for sitemap items.
|
||||
"""
|
||||
|
||||
BLOG_SITEMAP_CHANGEFREQ_DEFAULT = "monthly"
|
||||
"""
|
||||
.. _SITEMAP_CHANGEFREQ_DEFAULT:
|
||||
|
||||
Default changefreq for sitemap items.
|
||||
"""
|
||||
|
||||
BLOG_ABSTRACT_CKEDITOR = True
|
||||
"""
|
||||
.. _ABSTRACT_CKEDITOR:
|
||||
|
||||
Configuration for the CKEditor of the abstract field.
|
||||
|
||||
See https://github.com/divio/djangocms-text-ckeditor/#customizing-htmlfield-editor for details.
|
||||
"""
|
||||
|
||||
BLOG_POST_TEXT_CKEDITOR = True
|
||||
"""
|
||||
.. _POST_TEXT_CKEDITOR:
|
||||
|
||||
Configuration for the CKEditor of the post content field.
|
||||
|
||||
See https://github.com/divio/djangocms-text-ckeditor/#customizing-htmlfield-editor for details.
|
||||
"""
|
||||
|
||||
BLOG_ENABLE_SEARCH = True
|
||||
"""
|
||||
.. _ENABLE_SEARCH:
|
||||
|
||||
Enable ``aldryn-search`` (i.e.: ``django-haystack``) indexes.
|
||||
"""
|
||||
|
||||
BLOG_CURRENT_POST_IDENTIFIER = "djangocms_post_current"
|
||||
"""
|
||||
.. _CURRENT_POST_IDENTIFIER:
|
||||
|
||||
Current post identifier in request.
|
||||
|
||||
Name of the request attribute used in :py:class:`djangocms_blog.cms_toolbars.BlogToolbar` to detect if
|
||||
request match a post detail.
|
||||
"""
|
||||
|
||||
BLOG_CURRENT_NAMESPACE = "djangocms_post_current_config"
|
||||
"""
|
||||
.. _CURRENT_NAMESPACE:
|
||||
|
||||
Current post config identifier in request.
|
||||
|
||||
Name of the request attribute used in :py:class:`djangocms_blog.cms_toolbars.BlogToolbar` to detect the
|
||||
current apphook namespace.
|
||||
"""
|
||||
|
||||
BLOG_ENABLE_THROUGH_TOOLBAR_MENU = False
|
||||
"""
|
||||
.. _ENABLE_THROUGH_TOOLBAR_MENU:
|
||||
|
||||
Show djangocms-blog toolbar in any page, even when outside the blog apphooks.
|
||||
"""
|
||||
|
||||
BLOG_PLUGIN_MODULE_NAME = _("Blog")
|
||||
"""
|
||||
.. _PLUGIN_MODULE_NAME:
|
||||
|
||||
Name of the djangocms-blog plugins module (group).
|
||||
"""
|
||||
|
||||
BLOG_LATEST_ENTRIES_PLUGIN_NAME = _("Latest Blog Articles")
|
||||
"""
|
||||
.. _LATEST_ENTRIES_PLUGIN_NAME:
|
||||
|
||||
Name of the plugin showing the list of latest posts.
|
||||
"""
|
||||
|
||||
BLOG_LATEST_ENTRIES_PLUGIN_NAME_CACHED = _("Latest Blog Articles - Cache")
|
||||
"""
|
||||
.. _LATEST_ENTRIES_PLUGIN_NAME_CACHED:
|
||||
|
||||
Name of the plugin showing the list of latest posts (cached version).
|
||||
"""
|
||||
|
||||
BLOG_AUTHOR_POSTS_PLUGIN_NAME = _("Author Blog Articles")
|
||||
"""
|
||||
.. _AUTHOR_POSTS_PLUGIN_NAME:
|
||||
|
||||
Name of the plugin showing the list of blog posts authors.
|
||||
"""
|
||||
|
||||
BLOG_AUTHOR_POSTS_LIST_PLUGIN_NAME = _("Author Blog Articles List")
|
||||
"""
|
||||
.. _AUTHOR_POSTS_LIST_PLUGIN_NAME:
|
||||
|
||||
Name of the plugin showing the list of posts per authors.
|
||||
"""
|
||||
|
||||
BLOG_TAGS_PLUGIN_NAME = _("Tags")
|
||||
"""
|
||||
.. _TAGS_PLUGIN_NAME:
|
||||
|
||||
Name of the plugin showing the tag blog cloud.
|
||||
"""
|
||||
|
||||
BLOG_CATEGORY_PLUGIN_NAME = _("Categories")
|
||||
"""
|
||||
.. _CATEGORY_PLUGIN_NAME:
|
||||
|
||||
Name of the plugin showing the list of blog categories.
|
||||
"""
|
||||
|
||||
BLOG_ARCHIVE_PLUGIN_NAME = _("Archive")
|
||||
"""
|
||||
.. _ARCHIVE_PLUGIN_NAME:
|
||||
|
||||
Name of the plugin showing the blog archive index.
|
||||
"""
|
||||
|
||||
BLOG_FEATURED_POSTS_PLUGIN_NAME = _("Featured Posts")
|
||||
"""
|
||||
.. _FEATURED_POSTS_PLUGIN_NAME:
|
||||
|
||||
Name of the plugin showing the selected posts.
|
||||
"""
|
||||
|
||||
BLOG_FEATURED_POSTS_PLUGIN_NAME_CACHED = _("Featured Posts - Cache")
|
||||
"""
|
||||
.. _FEATURED_POSTS_PLUGIN_NAME_CACHED:
|
||||
|
||||
Name of the plugin showing the selected posts (cached version).
|
||||
"""
|
||||
|
||||
BLOG_FEED_CACHE_TIMEOUT = 3600
|
||||
"""
|
||||
.. _FEED_CACHE_TIMEOUT:
|
||||
|
||||
Cache timeout for RSS feeds.
|
||||
"""
|
||||
|
||||
BLOG_FEED_INSTANT_ITEMS = 50
|
||||
"""
|
||||
.. _FEED_INSTANT_ITEMS:
|
||||
|
||||
Number of items in Instant Article feed.
|
||||
"""
|
||||
|
||||
BLOG_FEED_LATEST_ITEMS = 10
|
||||
"""
|
||||
.. _FEED_LATEST_ITEMS:
|
||||
|
||||
Number of items in latest items feed.
|
||||
"""
|
||||
|
||||
BLOG_FEED_TAGS_ITEMS = 10
|
||||
"""
|
||||
.. _FEED_TAGS_ITEMS:
|
||||
|
||||
Number of items in per tags feed.
|
||||
"""
|
||||
|
||||
BLOG_LIVEBLOG_PLUGINS = ("LiveblogPlugin",)
|
||||
"""
|
||||
.. _LIVEBLOG_PLUGINS:
|
||||
|
||||
List of plugins implementing the :ref:`liveblog` feature.
|
||||
"""
|
||||
|
||||
BLOG_PLUGIN_TEMPLATE_FOLDERS = (("plugins", _("Default template")),)
|
||||
"""
|
||||
.. _PLUGIN_TEMPLATE_FOLDERS:
|
||||
|
||||
(Sub-)folder from which the plugin templates are loaded.
|
||||
|
||||
The default folder is ``plugins``.
|
||||
|
||||
See :ref:`plugin_templates` for more details.
|
||||
"""
|
||||
|
||||
BLOG_USE_FALLBACK_LANGUAGE_IN_URL = False
|
||||
"""
|
||||
.. _USE_FALLBACK_LANGUAGE_IN_URL:
|
||||
|
||||
When displaying URL, prefer URL in the fallback language if an article or category is not available in the
|
||||
current language.
|
||||
"""
|
||||
|
||||
BLOG_WIZARD_CONTENT_PLUGIN = "TextPlugin"
|
||||
"""
|
||||
.. _WIZARD_CONTENT_PLUGIN:
|
||||
|
||||
Name of the plugin created by wizard for the text content.
|
||||
"""
|
||||
|
||||
BLOG_WIZARD_CONTENT_PLUGIN_BODY = "body"
|
||||
"""
|
||||
.. _WIZARD_CONTENT_PLUGIN_BODY:
|
||||
|
||||
Name of the plugin field to add wizard text.
|
||||
"""
|
||||
|
||||
params = {param: value for param, value in locals().items() if param.startswith("BLOG_")}
|
||||
|
||||
"""
|
||||
.. _django-meta settings: https://github.com/nephila/django-meta#settings
|
||||
"""
|
||||
|
||||
|
||||
def get_setting(name):
|
||||
"""Get setting value from django settings with fallback to globals defaults."""
|
||||
from django.conf import settings
|
||||
|
||||
return getattr(settings, "BLOG_%s" % name, params["BLOG_%s" % name])
|
||||
51
djangocms_blog/sitemaps/__init__.py
Normal file
51
djangocms_blog/sitemaps/__init__.py
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
from cms.utils import get_language_list
|
||||
from django.contrib.sitemaps import Sitemap
|
||||
from django.urls.exceptions import NoReverseMatch
|
||||
from parler.utils.context import smart_override
|
||||
|
||||
from ..models import Post
|
||||
from ..settings import get_setting
|
||||
|
||||
|
||||
class BlogSitemap(Sitemap):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.url_cache = {}
|
||||
|
||||
def priority(self, obj):
|
||||
if obj and obj.app_config:
|
||||
return obj.app_config.sitemap_priority
|
||||
return get_setting("SITEMAP_PRIORITY_DEFAULT")
|
||||
|
||||
def changefreq(self, obj):
|
||||
if obj and obj.app_config:
|
||||
return obj.app_config.sitemap_changefreq
|
||||
return get_setting("SITEMAP_CHANGEFREQ_DEFAULT")
|
||||
|
||||
def location(self, obj):
|
||||
with smart_override(obj.get_current_language()):
|
||||
return self.url_cache[obj.get_current_language()][obj]
|
||||
|
||||
def items(self):
|
||||
items = []
|
||||
self.url_cache.clear()
|
||||
for lang in get_language_list():
|
||||
self.url_cache[lang] = {}
|
||||
posts = Post.objects.translated(lang).language(lang).published()
|
||||
for post in posts:
|
||||
# check if the post actually has a url before appending
|
||||
# if a post is published but the associated app config is not
|
||||
# then this post will not have a url
|
||||
try:
|
||||
with smart_override(post.get_current_language()):
|
||||
self.url_cache[lang][post] = post.get_absolute_url()
|
||||
except NoReverseMatch:
|
||||
# couldn't determine the url of the post so pass on it
|
||||
continue
|
||||
|
||||
items.append(post)
|
||||
|
||||
return items
|
||||
|
||||
def lastmod(self, obj):
|
||||
return obj.date_modified
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
.select2-container-multi .select2-choices .select2-search-field input {
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
.selector select[multiple] {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.selector {
|
||||
width: auto;
|
||||
margin-right: 12px;
|
||||
}
|
||||
|
||||
.selector-available, .selector-chosen {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.selector .selector-available input, .selector .selector-chosen input {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
form select {
|
||||
max-width: 266px;
|
||||
}
|
||||
|
||||
.as-selections.vTextField {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.as-results ul.as-list {
|
||||
margin-left: 0;
|
||||
margin-top: 0;
|
||||
padding-left: 0;
|
||||
box-shadow: none !important;
|
||||
border: 1px solid #888888 !important;
|
||||
}
|
||||
.as-results ul.as-list li {
|
||||
list-style: none;
|
||||
}
|
||||
ul.as-selections.vTextField {
|
||||
padding-left: 10px;
|
||||
margin-left: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
ul.as-selections {
|
||||
border-top-width: 1px;
|
||||
}
|
||||
|
||||
ul.as-selections li {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ul.as-selections li.as-original {
|
||||
border-top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
7
djangocms_blog/taggit_urls.py
Normal file
7
djangocms_blog/taggit_urls.py
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# This file is used on divio cloud only during automatic setup
|
||||
from django.urls import path # pragma: no cover
|
||||
from django.urls import include
|
||||
|
||||
urlpatterns = [ # pragma: no cover
|
||||
path("taggit_autosuggest/", include("taggit_autosuggest.urls")),
|
||||
]
|
||||
22
djangocms_blog/templates/djangocms_blog/base.html
Normal file
22
djangocms_blog/templates/djangocms_blog/base.html
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{% extends CMS_TEMPLATE %}
|
||||
|
||||
{% block meta %}
|
||||
{% comment %}
|
||||
This is needed if you can't add ``{% include "meta/meta.html" %}`` in the django CMS template attached to the blog
|
||||
page or if you use djangocms-page-meta.
|
||||
|
||||
Please check the documentation at https://djangocms-blog.readthedocs.io/en/latest/features/meta.html for more
|
||||
details about the correct template configuration for social media tags rendering.
|
||||
{% endcomment %}
|
||||
{% if meta %}
|
||||
{% include "meta/meta.html" %}
|
||||
{% else %}
|
||||
{{ block.super }}
|
||||
{% endif %}
|
||||
{% endblock meta %}
|
||||
|
||||
{% block content %}
|
||||
<div class="app app-blog">
|
||||
{% block content_blog %}{% endblock %}
|
||||
</div>
|
||||
{% endblock content %}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
{% load djangocms_blog i18n easy_thumbnails_tags cms_tags %}
|
||||
|
||||
<article id="post-{{ post.slug }}" class="post-item">
|
||||
<header>
|
||||
<h3><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></h3>
|
||||
{% if post.subtitle %}
|
||||
<h4>{{ post.subtitle }}</h4>
|
||||
{% endif %}
|
||||
{% block blog_meta %}
|
||||
{% include "djangocms_blog/includes/blog_meta.html" %}
|
||||
{% endblock %}
|
||||
</header>
|
||||
{% if image and post.main_image %}
|
||||
<div class="blog-visual">
|
||||
{% thumbnail post.main_image post.thumbnail_options.size crop=post.thumbnail_options.crop upscale=post.thumbnail_options.upscale subject_location=post.main_image.subject_location as thumb %}
|
||||
<img src="{{ thumb.url }}" alt="{{ post.main_image.default_alt_text }}" width="{{ thumb.width }}" height="{{ thumb.height }}" />
|
||||
</div>
|
||||
{% else %}
|
||||
{% media_images post as previews %}
|
||||
<div class="blog-visual">
|
||||
{% for preview in previews %}<img src="{{ preview }}" />{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="blog-lead">
|
||||
{% if not TRUNCWORDS_COUNT %}
|
||||
{% render_model post "abstract" "" "" "safe" %}
|
||||
{% else %}
|
||||
{% render_model post "abstract" "" "" "truncatewords_html:TRUNCWORDS_COUNT|safe" %}
|
||||
{% endif %}
|
||||
</div>
|
||||
<footer class="read-more">
|
||||
<a href="{{ post.get_absolute_url }}">{% trans "read more" %} »</a>
|
||||
</footer>
|
||||
</article>
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
{% load i18n easy_thumbnails_tags cms_tags apphooks_config_tags %}
|
||||
|
||||
<ul class="post-detail">
|
||||
{% if post.author %}
|
||||
<li>
|
||||
{% trans "by" %} <a href="{% namespace_url 'posts-author' post.author.get_username namespace=post.app_config.namespace %}">{% if post.author.get_full_name %}{{ post.author.get_full_name }}{% else %}{{ post.author }}{% endif %}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if post.date_published %}
|
||||
<li>
|
||||
{{ post.date_published|date:"DATE_FORMAT" }}
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if post.date_featured %}
|
||||
<li>
|
||||
{{ post.date_featured|date:"DATE_FORMAT" }}
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
<ul class="post-detail tags">
|
||||
{% if post.categories.exists %}
|
||||
{% for category in post.categories.all %}
|
||||
{% if category.slug %}
|
||||
<li class="category_{{ forloop.counter }}"><a href="{% namespace_url 'posts-category' category=category.slug namespace=category.app_config.namespace %}" class="blog-categories-{{ category.count }} blog-categories-{{ category.slug }}">{{ category.name }}</a>{% if not forloop.last %}, {% endif %}</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if post.tags.exists %}
|
||||
{% for tag in post.tags.all %}
|
||||
<li class="tag_{{ forloop.counter }}"><a href="{% namespace_url 'posts-tagged' tag=tag.slug namespace=post.app_config.namespace %}" class="blog-tag blog-tag-{{ tag.count }} blog-tag-{{ tag.slug }}">{{ tag.name }}</a>{% if not forloop.last %}, {% endif %}</li>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</ul>
|
||||
31
djangocms_blog/templates/djangocms_blog/plugins/archive.html
Normal file
31
djangocms_blog/templates/djangocms_blog/plugins/archive.html
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
{% load i18n apphooks_config_tags %}{% spaceless %}
|
||||
<div class="plugin plugin-blog">
|
||||
<h3>{% trans "Archive" %}</h3>
|
||||
{% regroup dates by date.year as years %}
|
||||
{% with current_year=year current_month=month %}
|
||||
<ul class="blog-archive">
|
||||
{% for year in years %}
|
||||
<li{% if year.grouper == current_year %} class="active"{% endif %}>
|
||||
<a href="{% namespace_url 'posts-archive' year=year.grouper namespace=instance.app_config.namespace %}">{{ year.grouper }}</a>
|
||||
<ul>
|
||||
{% for month in year.list %}
|
||||
<li{% if year.grouper == current_year and month.date.month == current_month %} class="active"{% else %} class="month"{% endif %}>
|
||||
<a href="{% namespace_url 'posts-archive' year=year.grouper month=month.date|date:"n" namespace=instance.app_config.namespace %}">
|
||||
{{ month.date|date:"F" }}
|
||||
<span>(
|
||||
{% if month.count > 0 %}
|
||||
{% blocktrans count articles=month.count %}1 article{% plural %}{{ articles }} articles{% endblocktrans %}
|
||||
{% else %}{% trans "0 articles" %}{% endif %}
|
||||
)</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
{% empty %}
|
||||
<li class="blog-empty"><p>{% trans "No article found." %}</p></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endwith %}
|
||||
</div>
|
||||
{% endspaceless %}
|
||||
19
djangocms_blog/templates/djangocms_blog/plugins/authors.html
Normal file
19
djangocms_blog/templates/djangocms_blog/plugins/authors.html
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{% load i18n easy_thumbnails_tags apphooks_config_tags %}{% spaceless %}
|
||||
<div class="plugin plugin-blog">
|
||||
<h3>{% trans "Authors" %}</h3>
|
||||
<ul class="blog-authors">
|
||||
{% for author in authors_list %}
|
||||
<li><a href="{% namespace_url 'posts-author' author.get_username namespace=instance.app_config.namespace %}">
|
||||
{{ author.get_full_name }}
|
||||
<span>(
|
||||
{% if author.count > 0 %}
|
||||
{% blocktrans count articles=author.count %}1 article{% plural %}{{ articles }} articles{% endblocktrans %}
|
||||
{% else %}{% trans "0 articles" %}{% endif %}
|
||||
)</span>
|
||||
</a></li>
|
||||
{% empty %}
|
||||
<li class="blog-empty"><p>{% trans "No author found." %}</p></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endspaceless %}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue