From c046efeae52dfaa030bb75ca2b5b607df36bcc4c Mon Sep 17 00:00:00 2001 From: Jannis Leidel Date: Sun, 14 Nov 2010 16:44:32 +0100 Subject: [PATCH 001/689] Updated test buildout config a bit. --- tests/buildout.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/buildout.cfg b/tests/buildout.cfg index d18272d4c98..9451df2b120 100644 --- a/tests/buildout.cfg +++ b/tests/buildout.cfg @@ -30,7 +30,7 @@ settings = settings eggs = ${buildout:eggs} [versions] -South = 0.7.1 -django = 1.2.1 -coverage = 3.4 +South = 0.7.2 +django = 1.2.3 +coverage = 3.3.1 unittest-xml-reporting = 1.0.3 From 0ea37ba685377da4a92204818928697c702a853e Mon Sep 17 00:00:00 2001 From: Jannis Leidel Date: Sun, 14 Nov 2010 18:03:48 +0100 Subject: [PATCH 002/689] A bit of cleanup (PEP8, consistency, dead code). --- cms/admin/dialog/views.py | 8 +- cms/admin/forms.py | 110 +++++++++---------- cms/admin/pageadmin.py | 192 ++++++++++++++++++--------------- cms/admin/permissionadmin.py | 60 +++++------ cms/admin/useradmin.py | 8 +- cms/cache/permissions.py | 5 +- cms/menu.py | 1 + cms/models/fields.py | 5 +- cms/models/managers.py | 14 +-- cms/models/moderatormodels.py | 28 ++--- cms/models/pagemodel.py | 63 +++++------ cms/models/permissionmodels.py | 40 ++++--- cms/models/placeholdermodel.py | 7 +- cms/models/pluginmodel.py | 30 +++--- cms/signals.py | 29 ++--- cms/tests/base.py | 27 ++--- cms/tests/menu.py | 2 +- cms/tests/permmod.py | 47 ++++---- cms/utils/admin.py | 37 +++---- cms/utils/mail.py | 3 +- cms/utils/permissions.py | 69 ++++++------ menus/menu_pool.py | 25 +++-- 22 files changed, 400 insertions(+), 410 deletions(-) diff --git a/cms/admin/dialog/views.py b/cms/admin/dialog/views.py index c221501299d..99c737e948d 100644 --- a/cms/admin/dialog/views.py +++ b/cms/admin/dialog/views.py @@ -1,8 +1,10 @@ -from cms.admin.dialog.forms import get_copy_dialog_form from django.shortcuts import render_to_response, get_object_or_404 -from django.contrib.admin.views.decorators import staff_member_required from django.http import Http404, HttpResponse from django.conf import settings + +from django.contrib.admin.views.decorators import staff_member_required + +from cms.admin.dialog.forms import get_copy_dialog_form from cms.models import Page @staff_member_required @@ -14,7 +16,7 @@ def get_copy_dialog(request, page_id): target = get_object_or_404(Page, pk=request.REQUEST['target']) if not page.has_change_permission(request) or \ - not target.has_add_permission(request): # pragma: no cover + not target.has_add_permission(request): # pragma: no cover raise Http404 context = { diff --git a/cms/admin/forms.py b/cms/admin/forms.py index 656a0ba26ba..4186ee7e054 100644 --- a/cms/admin/forms.py +++ b/cms/admin/forms.py @@ -1,11 +1,3 @@ -from cms.apphook_pool import apphook_pool -from cms.forms.widgets import UserSelectAdminWidget -from cms.models import Page, PagePermission, PageUser, ACCESS_PAGE, \ - PageUserGroup -from cms.utils.page import is_valid_page_slug -from cms.utils.permissions import get_current_user, get_subordinate_users, \ - get_subordinate_groups, mail_page_user_change -from cms.utils.urlutils import any_path_re from django import forms from django.conf import settings from django.contrib.auth.forms import UserCreationForm @@ -18,9 +10,17 @@ from django.forms.widgets import HiddenInput from django.template.defaultfilters import slugify from django.utils.translation import ugettext_lazy as _, get_language -from menus.menu_pool import menu_pool +from cms.apphook_pool import apphook_pool +from cms.forms.widgets import UserSelectAdminWidget +from cms.models import (Page, PagePermission, PageUser, + ACCESS_PAGE, PageUserGroup) +from cms.utils.page import is_valid_page_slug +from cms.utils.permissions import (get_current_user, get_subordinate_users, + get_subordinate_groups, mail_page_user_change) +from cms.utils.urlutils import any_path_re +from menus.menu_pool import menu_pool class PageAddForm(forms.ModelForm): @@ -139,33 +139,24 @@ def clean_overwrite_url(self): if not any_path_re.match(url): raise forms.ValidationError(_('Invalid URL, use /my/url format.')) return url - class PagePermissionInlineAdminForm(forms.ModelForm): - """Page permission inline admin form used in inline admin. Required, because + """ + Page permission inline admin form used in inline admin. Required, because user and group queryset must be changed. User can see only users on the same level or under him in choosen page tree, and users which were created by him, but aren't assigned to higher page level than current user. """ - user = forms.ModelChoiceField('user', label=_('user'), widget=UserSelectAdminWidget, required=False) page = forms.ModelChoiceField(Page, label=_('user'), widget=HiddenInput(), required=True) - def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, - initial=None, error_class=ErrorList, label_suffix=':', - empty_permitted=False, instance=None): - - super(PagePermissionInlineAdminForm, self).__init__(data, files, - auto_id, prefix, initial, error_class, label_suffix, empty_permitted, - instance) - + def __init__(self, *args, **kwargs): + super(PagePermissionInlineAdminForm, self).__init__(*args, **kwargs) user = get_current_user() # current user from threadlocals - self.fields['user'].queryset = get_subordinate_users(user) self.fields['user'].widget.user = user # assign current user self.fields['group'].queryset = get_subordinate_groups(user) - - + def clean(self): super(PagePermissionInlineAdminForm, self).clean() for field in self.Meta.model._meta.fields: @@ -181,33 +172,39 @@ def clean(self): # this is a missconfiguration - user can add/move page to current # page but after he does this, he will not have permissions to # access this page anymore, so avoid this - raise forms.ValidationError(_('Add page permission requires also access to children, or descendants, otherwise added page can\'t be changed by its creator.')) + raise forms.ValidationError(_("Add page permission requires also " + "access to children, or descendants, otherwise added page " + "can't be changed by its creator.")) if can_add and not can_edit: raise forms.ValidationError(_('Add page permission also requires edit page permission.')) # TODO: finish this, but is it really required? might be nice to have - # check if permissions assigned in cms are correct, and display an message - # if not - correctness mean: if user has add permisson to page, but he - # does'nt have auth permissions to add page object, display warning + # check if permissions assigned in cms are correct, and display + # a message if not - correctness mean: if user has add permisson to + # page, but he does'nt have auth permissions to add page object, + # display warning return self.cleaned_data def save(self, commit=True): - """Boolean fields lacks, if they aren't available in the form, they are - taking default value, but we actually wan't false for them. - """ + """ + Makes sure the boolean fields are set to False if they aren't + available in the form. + """ instance = super(PagePermissionInlineAdminForm, self).save(commit=False) - for field in self.Meta.model._meta.fields: - if not isinstance(field, BooleanField) or not field.name.startswith('can_'): - continue - name = field.name - setattr(instance, name, self.cleaned_data.get(name, False)) + for field in self._meta.model._meta.fields: + if isinstance(field, BooleanField) and field.name.startswith('can_'): + setattr(instance, field.name, self.cleaned_data.get(field.name, False)) if commit: instance.save() return instance + class Meta: + model = PagePermission + class GlobalPagePermissionAdminForm(forms.ModelForm): + def clean(self): super(GlobalPagePermissionAdminForm, self).clean() if not self.cleaned_data['user'] and not self.cleaned_data['group']: @@ -223,8 +220,8 @@ class GenericCmsPermissionForm(forms.ModelForm): can_delete_page = forms.BooleanField(label=_('Delete'), required=False) can_recover_page = forms.BooleanField(label=_('Recover (any) pages'), required=False) - # pageuser is for pageuser & group - they are combined together, and readed out - # from PageUser model + # pageuser is for pageuser & group - they are combined together, + # and read out from PageUser model can_add_pageuser = forms.BooleanField(label=_('Add'), required=False) can_change_pageuser = forms.BooleanField(label=_('Change'), required=False) can_delete_pageuser = forms.BooleanField(label=_('Delete'), required=False) @@ -237,47 +234,41 @@ def populate_initials(self, obj): """Read out permissions from permission system. """ initials = {} - models = (Page, PageUser, PagePermission) - """ - for model in models: - name = model.__name__.lower() - for t in ('add', 'change', 'delete'): - codename = getattr(model._meta, 'get_%s_permission' % t)() - initials['can_%s_%s' % (t, name)] = obj.has_perm('%s.%s' % (model._meta.app_label, codename)) - return initials - """ permission_acessor = self.permission_acessor(obj) - for model in models: + for model in (Page, PageUser, PagePermission): name = model.__name__.lower() content_type = ContentType.objects.get_for_model(model) permissions = permission_acessor.filter(content_type=content_type).values_list('codename', flat=True) for t in ('add', 'change', 'delete'): codename = getattr(model._meta, 'get_%s_permission' % t)() - initials['can_%s_%s' % (t, name)] = codename in permissions + initials['can_%s_%s' % (t, name)] = codename in permissions return initials def permission_acessor(self, obj): if isinstance(obj, PageUser): - rel_name = 'user_permissions' + rel_name = 'user_permissions' else: rel_name = 'permissions' return getattr(obj, rel_name) - + def save_permissions(self, obj): - models = ((Page, 'page'), (PageUser, 'pageuser'), (PageUserGroup, 'pageuser'), (PagePermission, 'pagepermission')) - + models = ( + (Page, 'page'), + (PageUser, 'pageuser'), + (PageUserGroup, 'pageuser'), + (PagePermission, 'pagepermission') + ) if not obj.pk: # save obj, otherwise we can't assign permissions to him obj.save() permission_acessor = self.permission_acessor(obj) - for model, name in models: content_type = ContentType.objects.get_for_model(model) - for t in ('add', 'change', 'delete'): + for method in ('add', 'change', 'delete'): # add permission `t` to model `model` - codename = getattr(model._meta, 'get_%s_permission' % t)() + codename = getattr(model._meta, 'get_%s_permission' % method)() permission = Permission.objects.get(content_type=content_type, codename=codename) - if self.cleaned_data.get('can_%s_%s' % (t, name), None): + if self.cleaned_data.get('can_%s_%s' % (method, name), None): permission_acessor.add(permission) else: permission_acessor.remove(permission) @@ -321,7 +312,7 @@ def clean_password2(self): self._password_change = False return u'' return super(PageUserForm, self).clean_password2() - + def clean(self): cleaned_data = super(PageUserForm, self).clean() notify_user = self.cleaned_data['notify_user'] @@ -334,7 +325,7 @@ def clean(self): if self.cleaned_data['can_add_pagepermission'] and not self.cleaned_data['can_change_pagepermission']: raise forms.ValidationError(_("To add permissions you also need to edit them!")) return cleaned_data - + def save(self, commit=True): """Create user, assign him to staff users, and create permissions for him if required. Also assigns creator to user. @@ -350,12 +341,9 @@ def save(self, commit=True): user.created_by = get_current_user() if commit: user.save() - self.save_permissions(user) - if self.cleaned_data['notify_user']: mail_page_user_change(user, created, self.cleaned_data['password1']) - return user diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py index 9c3321ca08c..fbb1a19e76b 100644 --- a/cms/admin/pageadmin.py +++ b/cms/admin/pageadmin.py @@ -1,61 +1,55 @@ -from cms.admin.change_list import CMSChangeList -from cms.admin.dialog.views import get_copy_dialog -from cms.admin.forms import PageForm, PageAddForm -from cms.admin.permissionadmin import PAGE_ADMIN_INLINES, \ - PagePermissionInlineAdmin -from cms.admin.views import save_all_plugins, revert_plugins -from cms.apphook_pool import apphook_pool -from cms.exceptions import NoPermissionsException -from cms.forms.widgets import PluginEditor -from cms.models import Page, Title, CMSPlugin, PagePermission, \ - PageModeratorState, EmptyTitle, GlobalPagePermission -from cms.models.managers import PagePermissionsPermissionManager -from cms.models.moderatormodels import MASK_PAGE, MASK_CHILDREN, \ - MASK_DESCENDANTS -from cms.models.placeholdermodel import Placeholder -from cms.plugin_pool import plugin_pool -from cms.utils import get_template_from_request, get_language_from_request -from cms.utils.admin import render_admin_menu_item -from cms.utils.moderator import update_moderation_message, \ - get_test_moderation_level, moderator_should_approve, approve_page, \ - will_require_moderation -from cms.utils.permissions import has_page_add_permission, \ - has_page_change_permission, get_user_permission_level, \ - has_global_change_permissions_permission -from cms.utils.placeholder import get_page_from_placeholder_if_exists -from cms.utils.plugins import get_placeholders, get_page_from_plugin_or_404 +import os from copy import deepcopy + from django import template from django.conf import settings -from django.contrib import admin -from django.contrib.admin.options import IncorrectLookupParameters -from django.contrib.admin.util import unquote, get_deleted_objects -from django.contrib.sites.models import Site from django.core.exceptions import PermissionDenied, ObjectDoesNotExist from django.core.urlresolvers import reverse from django.db import transaction from django.forms import Widget, Textarea, CharField -from django.http import HttpResponseRedirect, HttpResponse, Http404, \ - HttpResponseBadRequest, HttpResponseForbidden, HttpResponseNotAllowed +from django.http import (HttpResponseRedirect, HttpResponse, Http404, + HttpResponseBadRequest, HttpResponseForbidden, HttpResponseNotAllowed) from django.shortcuts import render_to_response, get_object_or_404 from django.template.context import RequestContext from django.template.defaultfilters import title, escape, force_escape, escapejs from django.utils.encoding import force_unicode from django.utils.translation import ugettext_lazy as _ -from menus.menu_pool import menu_pool -import os -model_admin = admin.ModelAdmin -create_on_success = lambda x: x +from django.contrib import admin +from django.contrib.admin.options import IncorrectLookupParameters +from django.contrib.admin.util import unquote, get_deleted_objects +from django.contrib.sites.models import Site + +from cms.admin.change_list import CMSChangeList +from cms.admin.dialog.views import get_copy_dialog +from cms.admin.forms import PageForm, PageAddForm +from cms.admin.permissionadmin import (PAGE_ADMIN_INLINES, + PagePermissionInlineAdmin) +from cms.admin.views import save_all_plugins, revert_plugins +from cms.apphook_pool import apphook_pool +from cms.exceptions import NoPermissionsException +from cms.forms.widgets import PluginEditor +from cms.models import (Page, Title, CMSPlugin, PagePermission, + PageModeratorState, EmptyTitle, GlobalPagePermission) +from cms.models.managers import PagePermissionsPermissionManager +from cms.models.placeholdermodel import Placeholder +from cms.plugin_pool import plugin_pool +from cms.utils import (moderator, permissions, plugins, placeholder, + get_template_from_request, get_language_from_request, admin as admin_utils) +from cms.utils.placeholder import get_page_from_placeholder_if_exists + +from menus.menu_pool import menu_pool if 'reversion' in settings.INSTALLED_APPS: import reversion - from reversion.admin import VersionAdmin - model_admin = VersionAdmin - + from reversion.admin import VersionAdmin as ModelAdmin create_on_success = reversion.revision.create_on_success +else: + from django.contrib.admin import ModelAdmin + create_on_success = lambda x: x + -class PageAdmin(model_admin): +class PageAdmin(ModelAdmin): form = PageForm list_filter = ['published', 'in_navigation', 'template', 'changed_by'] # TODO: add the new equivalent of 'cmsplugin__text__body' to search_fields' @@ -133,8 +127,6 @@ class PageAdmin(model_admin): 'fields': advanced_fields, 'classes': ('collapse',), }), - - ] if settings.CMS_SEO_FIELDS: @@ -230,7 +222,7 @@ def save_model(self, request, obj, form, change): obj.lft = old_obj.lft obj.tree_id = old_obj.tree_id force_with_moderation = target is not None and position is not None and \ - will_require_moderation(target, position) + moderator.will_require_moderation(target, position) obj.save(force_with_moderation=force_with_moderation) language = form.cleaned_data['language'] @@ -262,7 +254,7 @@ def save_model(self, request, obj, form, change): # is there any moderation message? save/update state if settings.CMS_MODERATOR and 'moderator_message' in form.cleaned_data and \ form.cleaned_data['moderator_message']: - update_moderation_message(obj, form.cleaned_data['moderator_message']) + moderator.update_moderation_message(obj, form.cleaned_data['moderator_message']) @create_on_success def change_template(self, request, object_id): @@ -302,7 +294,7 @@ def get_fieldsets(self, request, obj=None): l = list(given_fieldsets[0][1]['fields'][2]) l.remove('published') given_fieldsets[0][1]['fields'][2] = tuple(l) - for placeholder_name in get_placeholders(placeholders_template): + for placeholder_name in plugins.get_placeholders(placeholders_template): name = settings.CMS_PLACEHOLDER_CONF.get("%s %s" % (obj.template, placeholder_name), {}).get("name", None) if not name: name = settings.CMS_PLACEHOLDER_CONF.get(placeholder_name, {}).get("name", None) @@ -372,7 +364,7 @@ def get_form(self, request, obj=None, **kwargs): form.base_fields['template'].choices = template_choices form.base_fields['template'].initial = force_unicode(selected_template) - placeholders = get_placeholders(selected_template) + placeholders = plugins.get_placeholders(selected_template) for placeholder_name in placeholders: placeholder, created = obj.placeholders.get_or_create(slot=placeholder_name) installed_plugins = plugin_pool.get_all_plugins(placeholder_name, obj) @@ -384,7 +376,7 @@ def get_form(self, request, obj=None, **kwargs): version = get_object_or_404(Version, pk=version_id) revs = [related_version.object_version for related_version in version.revision.version_set.all()] plugin_list = [] - plugins = [] + actual_plugins = [] bases = {} for rev in revs: pobj = rev.object @@ -395,8 +387,8 @@ def get_form(self, request, obj=None, **kwargs): else: bases[int(pobj.pk)] = pobj if hasattr(pobj, "cmsplugin_ptr_id"): - plugins.append(pobj) - for plugin in plugins: + actual_plugins.append(pobj) + for plugin in actual_plugins: if int(plugin.cmsplugin_ptr_id) in bases: bases[int(plugin.cmsplugin_ptr_id)].set_base_attr(plugin) plugin_list.append(plugin) @@ -414,7 +406,7 @@ def get_form(self, request, obj=None, **kwargs): 'installed': installed_plugins, 'list': plugin_list, 'copy_languages': copy_languages.items(), - 'show_copy':show_copy, + 'show_copy': show_copy, 'language': language, 'placeholder': placeholder }) @@ -438,7 +430,7 @@ def get_formsets(self, request, obj=None): continue elif not obj: try: - get_user_permission_level(request.user) + permissions.get_user_permission_level(request.user) except NoPermissionsException: continue yield inline.get_formset(request, obj) @@ -449,8 +441,7 @@ def save_form(self, request, form, change): Given a ModelForm return an unsaved instance. ``change`` is True if the object is being changed, and False if it's being added. """ - instance = super(PageAdmin, self).save_form(request, form, change) - return instance + return super(PageAdmin, self).save_form(request, form, change) def get_widget(self, request, page, lang, name): """ @@ -465,7 +456,9 @@ def get_widget(self, request, page, lang, name): def add_view(self, request, form_url='', extra_context=None): extra_context = extra_context or {} if settings.CMS_MODERATOR and 'target' in request.GET and 'position' in request.GET: - moderation_required = will_require_moderation(request.GET['target'], request.GET['position']) + moderation_required = moderator.will_require_moderation( + request.GET['target'], request.GET['position'] + ) extra_context.update({ 'moderation_required': moderation_required, 'moderation_level': _('higher'), @@ -490,7 +483,7 @@ def change_view(self, request, object_id, extra_context=None): obj = None else: selected_template = get_template_from_request(request, obj) - moderation_level, moderation_required = get_test_moderation_level(obj, request.user) + moderation_level, moderation_required = moderator.get_test_moderation_level(obj, request.user) # if there is a delete request for this page moderation_delete_request = (settings.CMS_MODERATOR and @@ -500,7 +493,7 @@ def change_view(self, request, object_id, extra_context=None): #activate(user_lang_set) extra_context = { - 'placeholders': get_placeholders(selected_template), + 'placeholders': plugins.get_placeholders(selected_template), 'page': obj, 'CMS_PERMISSION': settings.CMS_PERMISSION, 'CMS_MODERATOR': settings.CMS_MODERATOR, @@ -509,7 +502,7 @@ def change_view(self, request, object_id, extra_context=None): 'has_moderate_permission': obj.has_moderate_permission(request), 'moderation_level': moderation_level, 'moderation_required': moderation_required, - 'moderator_should_approve': moderator_should_approve(request, obj), + 'moderator_should_approve': moderator.moderator_should_approve(request, obj), 'moderation_delete_request': moderation_delete_request, 'show_delete_translation': len(obj.get_languages()) > 1, 'current_site_id': settings.SITE_ID, @@ -560,7 +553,6 @@ def update_language_tab_context(self, request, obj, context=None): }) return context - def response_change(self, request, obj): """Called always when page gets changed, call save on page, there may be some new stuff, which should be published after all other objects on page @@ -577,7 +569,7 @@ def has_add_permission(self, request): Return true if the current user has permission to add a new page. """ if settings.CMS_PERMISSION: - return has_page_add_permission(request) + return permissions.has_page_add_permission(request) return super(PageAdmin, self).has_add_permission(request) def has_change_permission(self, request, obj=None): @@ -589,7 +581,7 @@ def has_change_permission(self, request, obj=None): if obj: return obj.has_change_permission(request) else: - return has_page_change_permission(request) + return permissions.has_page_change_permission(request) return super(PageAdmin, self).has_change_permission(request, obj) def has_delete_permission(self, request, obj=None): @@ -771,7 +763,7 @@ def move_page(self, request, page_id, extra_context=None): # move page page.move_page(target, position) - return render_admin_menu_item(request, page) + return admin_utils.render_admin_menu_item(request, page) def get_permissions(self, request, page_id): page = get_object_or_404(Page, id=page_id) @@ -783,7 +775,7 @@ def get_permissions(self, request, page_id): permissions = list(global_page_permissions) + list(page_permissions) # does he can change global permissions ? - has_global = has_global_change_permissions_permission(request.user) + has_global = permissions.has_global_change_permissions_permission(request.user) permission_set = [] for permission in permissions: @@ -819,16 +811,16 @@ def copy_page(self, request, page_id, extra_context=None): if target is not None and position is not None and site is not None: try: target = self.model.objects.get(pk=target) - # does he haves permissions to copy this page under target? + # does he have permissions to copy this page under target? assert target.has_add_permission(request) site = Site.objects.get(pk=site) except (ObjectDoesNotExist, AssertionError): return HttpResponse("error") #context.update({'error': _('Page could not been moved.')}) else: - kwargs ={ + kwargs = { 'copy_permissions': request.REQUEST.get('copy_permissions', False), - 'copy_moderation': request.REQUEST.get('copy_moderation', False) + 'copy_moderation': request.REQUEST.get('copy_moderation', False), } page.copy_page(target, site, position, **kwargs) return HttpResponse("ok") @@ -859,7 +851,7 @@ def approve_page(self, request, page_id): if not page.has_moderate_permission(request): raise Http404() - approve_page(request, page) + moderator.approve_page(request, page) # Django SQLite bug. Does not convert to string the lazy instances from django.utils.translation import ugettext as _ @@ -867,7 +859,7 @@ def approve_page(self, request, page_id): if 'node' in request.REQUEST: # if request comes from tree.. - return render_admin_menu_item(request, page) + return admin_utils.render_admin_menu_item(request, page) return HttpResponseRedirect('../../') @@ -918,16 +910,20 @@ def delete_translation(self, request, object_id, extra_context=None): raise PermissionDenied if obj is None: - raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_unicode(opts.verbose_name), 'key': escape(object_id)}) + raise Http404( + _('%(name)s object with primary key %(key)r does not exist.') % { + 'name': force_unicode(opts.verbose_name), + 'key': escape(object_id) + }) if not len(obj.get_languages()) > 1: raise Http404(_('There only exists one translation for this page')) titleobj = get_object_or_404(Title, page__id=object_id, language=language) - plugins = CMSPlugin.objects.filter(placeholder__page__id=object_id, language=language) + saved_plugins = CMSPlugin.objects.filter(placeholder__page__id=object_id, language=language) deleted_objects, perms_needed = get_deleted_objects([titleobj], titleopts, request.user, self.admin_site) - to_delete_plugins, perms_needed_plugins = get_deleted_objects(plugins, pluginopts, request.user, self.admin_site) + to_delete_plugins, perms_needed_plugins = get_deleted_objects(saved_plugins, pluginopts, request.user, self.admin_site) deleted_objects.append(to_delete_plugins) perms_needed = set( list(perms_needed) + list(perms_needed_plugins) ) @@ -937,12 +933,13 @@ def delete_translation(self, request, object_id, extra_context=None): raise PermissionDenied message = _('Title and plugins with language %(language)s was deleted') % { - 'language': [name for code, name in settings.CMS_LANGUAGES if code == language][0]} + 'language': [name for code, name in settings.CMS_LANGUAGES if code == language][0] + } self.log_change(request, titleobj, message) self.message_user(request, message) titleobj.delete() - for p in plugins: + for p in saved_plugins: p.delete() if 'reversion' in settings.INSTALLED_APPS: @@ -1017,7 +1014,7 @@ def change_status(self, request, page_id): if page.has_publish_permission(request): page.published = not page.published page.save(force_state=Page.MODERATOR_NEED_APPROVEMENT) - return render_admin_menu_item(request, page) + return admin_utils.render_admin_menu_item(request, page) else: return HttpResponseForbidden(_("You do not have permission to publish this page")) @@ -1031,12 +1028,10 @@ def change_innavigation(self, request, page_id): if page.has_change_permission(request): if page.in_navigation: page.in_navigation = False - val = 0 else: page.in_navigation = True - val = 1 page.save(force_state=Page.MODERATOR_NEED_APPROVEMENT) - return render_admin_menu_item(request, page) + return admin_utils.render_admin_menu_item(request, page) return HttpResponseForbidden(_("You do not have permission to change this page's in_navigation status")) @create_on_success @@ -1120,17 +1115,28 @@ def copy_plugins(self, request): return HttpResponseBadRequest(_("Language must be set to a supported language!")) if language == copy_from: return HttpResponseBadRequest(_("Language must be different than the copied language!")) - plugins = list(placeholder.cmsplugin_set.filter(language=copy_from).order_by('tree_id', '-rght')) + placeholder_plugins = list( + placeholder.cmsplugin_set.filter( + language=copy_from + ).order_by('tree_id', '-rght') + ) ptree = [] - for p in plugins: + for p in placeholder_plugins: p.copy_plugin(placeholder, language, ptree) if 'reversion' in settings.INSTALLED_APPS: page.save() save_all_plugins(request, page, placeholder) reversion.revision.user = request.user - reversion.revision.comment = _(u"Copied %(language)s plugins to %(placeholder)s") % {'language':dict(settings.LANGUAGES)[language], 'placeholder':placeholder} - plugin_list = CMSPlugin.objects.filter(language=language, placeholder=placeholder, parent=None).order_by('position') - return render_to_response('admin/cms/page/widgets/plugin_item.html', {'plugin_list':plugin_list}, RequestContext(request)) + reversion.revision.comment = _(u"Copied %(language)s plugins to %(placeholder)s") % { + 'language': dict(settings.LANGUAGES)[language], + 'placeholder': placeholder, + } + plugin_list = CMSPlugin.objects.filter( + language=language, placeholder=placeholder, parent=None + ).order_by('position') + return render_to_response('admin/cms/page/widgets/plugin_item.html', { + 'plugin_list': plugin_list + }, RequestContext(request)) raise Http404 @create_on_success @@ -1157,7 +1163,7 @@ def edit_plugin(self, request, plugin_id): if obj.__class__ == CMSPlugin and obj.pk == plugin_id: cms_plugin = obj break - page = get_page_from_plugin_or_404(cms_plugin) + page = plugins.get_page_from_plugin_or_404(cms_plugin) inst, plugin_admin = cms_plugin.get_plugin_instance(self.admin_site) instance = None if cms_plugin.get_plugin_class().model == CMSPlugin: @@ -1203,8 +1209,11 @@ def edit_plugin(self, request, plugin_id): save_all_plugins(request, page, cms_plugin.placeholder, [cms_plugin.pk]) reversion.revision.user = request.user plugin_name = unicode(plugin_pool.get_plugin(cms_plugin.plugin_type).name) - reversion.revision.comment = _(u"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s") % {'plugin_name':plugin_name, 'position':cms_plugin.position, 'placeholder': cms_plugin.placeholder.slot} - + reversion.revision.comment = _(u"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s") % { + 'plugin_name': plugin_name, + 'position': cms_plugin.position, + 'placeholder': cms_plugin.placeholder.slot + } # read the saved object from plugin_admin - ugly but works saved_object = plugin_admin.saved_object @@ -1230,9 +1239,9 @@ def move_plugin(self, request): success = False if 'plugin_id' in request.POST: plugin = CMSPlugin.objects.get(pk=int(request.POST['plugin_id'])) - page = get_page_from_plugin_or_404(plugin) + page = plugins.get_page_from_plugin_or_404(plugin) placeholder_slot = request.POST['placeholder'] - placeholders = get_placeholders(page.get_template()) + placeholders = plugins.get_placeholders(page.get_template()) if not placeholder_slot in placeholders: return HttpResponse(str("error")) placeholder = page.placeholders.get(slot=placeholder_slot) @@ -1284,7 +1293,11 @@ def remove_plugin(self, request): plugin.delete_with_public() plugin_name = unicode(plugin_pool.get_plugin(plugin.plugin_type).name) - comment = _(u"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted.") % {'plugin_name':plugin_name, 'position':plugin.position, 'placeholder':plugin.placeholder} + comment = _(u"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted.") % { + 'plugin_name': plugin_name, + 'position': plugin.position, + 'placeholder': plugin.placeholder, + } if page and 'reversion' in settings.INSTALLED_APPS: save_all_plugins(request, page, placeholder) page.save() @@ -1298,6 +1311,7 @@ def change_moderation(self, request, page_id): wants to add/remove/change moderation required by him. Moderate is sum of mask values. """ + from cms.models.moderatormodels import MASK_PAGE, MASK_CHILDREN, MASK_DESCENDANTS if request.method != 'POST': return HttpResponseNotAllowed page = get_object_or_404(Page, id=page_id) @@ -1314,13 +1328,13 @@ def change_moderation(self, request, page_id): page.pagemoderator_set.get(user=request.user).delete() except ObjectDoesNotExist: pass - return render_admin_menu_item(request, page) + return admin_utils.render_admin_menu_item(request, page) elif moderate <= MASK_PAGE + MASK_CHILDREN + MASK_DESCENDANTS: page_moderator, created = page.pagemoderator_set.get_or_create(user=request.user) # split value to attributes page_moderator.set_decimal(moderate) page_moderator.save() - return render_admin_menu_item(request, page) + return admin_utils.render_admin_menu_item(request, page) raise Http404 admin.site.register(Page, PageAdmin) diff --git a/cms/admin/permissionadmin.py b/cms/admin/permissionadmin.py index 5de544e4dc3..eec9b1d5792 100644 --- a/cms/admin/permissionadmin.py +++ b/cms/admin/permissionadmin.py @@ -1,34 +1,29 @@ +from copy import deepcopy from django.conf import settings -from cms.admin.forms import GlobalPagePermissionAdminForm, \ - PagePermissionInlineAdminForm from cms.admin.models import BaseInlineFormSetWithQuerySet +from django.template.defaultfilters import title +from django.utils.translation import ugettext as _ + +from django.contrib import admin + from cms.exceptions import NoPermissionsException from cms.models import Page, PagePermission, GlobalPagePermission, PageUser from cms.utils.permissions import get_user_permission_level -from copy import deepcopy -from django.contrib import admin -from django.template.defaultfilters import title -from django.utils.translation import ugettext as _ +from cms.admin.forms import (GlobalPagePermissionAdminForm, + PagePermissionInlineAdminForm) PAGE_ADMIN_INLINES = [] -################################################################################ -# Permissions -################################################################################ class PagePermissionInlineAdmin(admin.TabularInline): model = PagePermission # use special form, so we can override of user and group field form = PagePermissionInlineAdminForm - # use special formset, so we can use queryset defined here - formset = BaseInlineFormSetWithQuerySet - classes = ['collapse', 'collapsed'] - - def __init__(self, *args, **kwargs): - super(PagePermissionInlineAdmin, self).__init__(*args, **kwargs) + classes = ['collapse', 'collapsed'] def queryset(self, request): - """Queryset change, so user with global change permissions can see + """ + Queryset change, so user with global change permissions can see all permissions. Otherwise can user see only permissions for peoples which are under him (he can't see his permissions, because this will lead to violation, when he can add more power to itself) @@ -90,33 +85,31 @@ class GlobalPagePermissionAdmin(admin.ModelAdmin): list_display.append('can_change_advanced_settings') list_filter.append('can_change_advanced_settings') - + if settings.CMS_MODERATOR: list_display.append('can_moderate') list_filter.append('can_moderate') else: exclude.append('can_moderate') -if settings.CMS_PERMISSION: - admin.site.register(GlobalPagePermission, GlobalPagePermissionAdmin) - class GenericCmsPermissionAdmin(object): + """ + Custom mixin for permission-enabled admin interfaces. + """ def update_permission_fieldsets(self, request, obj=None): - """Nobody can grant more than he haves, so check for user - permissions to Page and User model and render fieldset depending on - them. + """ + Nobody can grant more than he haves, so check for user permissions + to Page and User model and render fieldset depending on them. """ fieldsets = deepcopy(self.fieldsets) - - models = ( + perm_models = ( (Page, _('Page permissions')), (PageUser, _('User & Group permissions')), (PagePermission, _('Page permissions management')), ) - - i = 0 - for model, title in models: + for i, perm_model in enumerate(perm_models): + model, title = perm_model opts, fields = model._meta, [] name = model.__name__.lower() for t in ('add', 'change', 'delete'): @@ -125,11 +118,11 @@ def update_permission_fieldsets(self, request, obj=None): fields.append('can_%s_%s' % (t, name)) if fields: fieldsets.insert(2 + i, (title, {'fields': (fields,)})) - i += 1 return fieldsets - + def _has_change_permissions_permission(self, request): - """User is able to add/change objects only if he haves can change + """ + User is able to add/change objects only if he haves can change permission on some page. """ try: @@ -141,8 +134,11 @@ def _has_change_permissions_permission(self, request): def has_add_permission(self, request): return self._has_change_permissions_permission(request) and \ super(self.__class__, self).has_add_permission(request) - + def has_change_permission(self, request, obj=None): return self._has_change_permissions_permission(request) and \ super(self.__class__, self).has_change_permission(request, obj) + +if settings.CMS_PERMISSION: + admin.site.register(GlobalPagePermission, GlobalPagePermissionAdmin) diff --git a/cms/admin/useradmin.py b/cms/admin/useradmin.py index ad85cab888a..23e99051274 100644 --- a/cms/admin/useradmin.py +++ b/cms/admin/useradmin.py @@ -1,12 +1,14 @@ from django.conf import settings +from django.utils.translation import ugettext as _ + +from django.contrib import admin +from django.contrib.auth.admin import UserAdmin + from cms.admin.forms import PageUserForm, PageUserGroupForm from cms.admin.permissionadmin import GenericCmsPermissionAdmin from cms.exceptions import NoPermissionsException from cms.models import PageUser, PageUserGroup from cms.utils.permissions import get_subordinate_users -from django.contrib import admin -from django.contrib.auth.admin import UserAdmin -from django.utils.translation import ugettext as _ class PageUserAdmin(UserAdmin, GenericCmsPermissionAdmin): diff --git a/cms/cache/permissions.py b/cms/cache/permissions.py index b04665ccc12..5f77070dc95 100644 --- a/cms/cache/permissions.py +++ b/cms/cache/permissions.py @@ -23,11 +23,10 @@ def set_permission_cache(user, key, value): cache_key = get_cache_key(user, key) if not cache_key in all_keys: - all_keys.append(cache_key) + all_keys.append(cache_key) if not key in permission_cache_keys: permission_cache_keys.append(key) cache.set(cache_key, value, TTL) - def clear_user_permission_cache(user): """Cleans permission cache for given user. @@ -37,4 +36,4 @@ def clear_user_permission_cache(user): def clear_permission_cache(): for key in all_keys: - cache.delete(key) \ No newline at end of file + cache.delete(key) diff --git a/cms/menu.py b/cms/menu.py index 0a7046395f8..1aa56ec0aed 100644 --- a/cms/menu.py +++ b/cms/menu.py @@ -91,6 +91,7 @@ def get_nodes(self, request): page.title_cache[title.language] = title nodes.append(page_to_node(page, home, home_cut)) ids.remove(page.pk) + if ids: # get fallback languages fallbacks = get_fallback_languages(lang) for l in fallbacks: diff --git a/cms/models/fields.py b/cms/models/fields.py index 47275ad56eb..b912b494e31 100644 --- a/cms/models/fields.py +++ b/cms/models/fields.py @@ -1,10 +1,11 @@ +from django.db import models +from django.utils.text import capfirst + from cms.forms.fields import PageSelectFormField, PlaceholderFormField from cms.forms.widgets import PlaceholderPluginEditorWidget from cms.models.pagemodel import Page from cms.models.placeholdermodel import Placeholder from cms.utils.placeholder import PlaceholderNoAction -from django.db import models -from django.utils.text import capfirst class PlaceholderField(models.ForeignKey): diff --git a/cms/models/managers.py b/cms/models/managers.py index ef189c7e8d1..09552a3b608 100644 --- a/cms/models/managers.py +++ b/cms/models/managers.py @@ -2,18 +2,13 @@ from django.db import models from django.contrib.sites.models import Site from django.db.models import Q + from cms.exceptions import NoPermissionsException from publisher import PublisherManager from cms.models.query import PageQuerySet from cms.utils.i18n import get_fallback_languages -try: - set -except NameError: - from sets import Set as set - - class PageManager(PublisherManager): """Use draft() and public() methods for accessing the corresponding instances. @@ -277,7 +272,7 @@ def subordinate_to_user(self, user): User permissions can be assigned to multiple page nodes, so merge of all of them is required. In this case user can see permissions for - users C,X,D,Y,I,J but not A, because A user in higher in hierarchy. + users C,X,D,Y,I,J but not A, because A user in higher in hierarchy. If permission object holds group, this permission object can be visible to user only if all of the group members are lover in hierarchy. If any @@ -334,12 +329,11 @@ def for_page(self, page): class PagePermissionsPermissionManager(models.Manager): """Page permissions permission manager. - !IMPORTANT: this actually points to Page model, not to PagePermission. Seems - this will be better approach. Accessible under permissions. + !IMPORTANT: this actually points to Page model, not to PagePermission. + Seems this will be better approach. Accessible under permissions. Maybe this even shouldn't be a manager - it mixes different models together. """ - # we will return this in case we have a superuser, or permissions are not # enabled/configured in settings GRANT_ALL = 'All' diff --git a/cms/models/moderatormodels.py b/cms/models/moderatormodels.py index 471b077b8f8..192857ab62b 100644 --- a/cms/models/moderatormodels.py +++ b/cms/models/moderatormodels.py @@ -1,11 +1,11 @@ -from cms.models.pagemodel import Page import sys + from django.db import models from django.contrib.auth.models import User from django.utils.translation import ugettext_lazy as _ -from cms.models.managers import PageModeratorStateManager - +from cms.models.managers import PageModeratorStateManager +from cms.models.pagemodel import Page # NOTE: those are not just numbers!! we will do binary AND on them, # so pay attention when adding/changing them, or MASKs.. @@ -34,11 +34,11 @@ ################################################################################ class PageModerator(models.Model): - """Page moderator holds user / page / moderation type states. User can be - assigned to any page (to which he haves permissions), and say which + """ + Page moderator holds user / page / moderation type states. User can be + assigned to any page (to which he haves permissions), and say which moderation depth he requires. """ - MAX_MODERATION_LEVEL = sys.maxint # just an number page = models.ForeignKey(Page, verbose_name=_('Page')) @@ -54,7 +54,7 @@ class Meta: verbose_name=_('PageModerator') verbose_name_plural=_('PageModerator') app_label = 'cms' - + def set_decimal(self, state): """Converts and sets binary state to local attributes """ @@ -67,15 +67,16 @@ def set_decimal(self, state): self.moderate_children = moderate_children self.moderate_descendants = moderate_descendants - + def get_decimal(self): return self.moderate_page * MASK_PAGE + \ self.moderate_children * MASK_CHILDREN + \ self.moderate_descendants * MASK_DESCENDANTS + + def __unicode__(self): + return u"%s on %s mod: %d" % (self.user, self.page, self.get_decimal()) + - __unicode__ = lambda self: "%s on %s mod: %d" % (unicode(self.user), unicode(self.page), self.get_decimal()) - - class PageModeratorState(models.Model): """PageModeratorState memories all actions made on page. Page can be in only one advanced state. @@ -119,6 +120,5 @@ class Meta: css_class = lambda self: self.action.lower() - __unicode__ = lambda self: "%s: %s" % (unicode(self.page), self.get_action_display()) - - \ No newline at end of file + def __unicode__(self): + return u"%s: %s" % (self.page, self.get_action_display()) diff --git a/cms/models/pagemodel.py b/cms/models/pagemodel.py index 07dd51ad450..7d750c04849 100644 --- a/cms/models/pagemodel.py +++ b/cms/models/pagemodel.py @@ -1,11 +1,7 @@ -from cms.exceptions import NoHomeFound -from cms.models.managers import PageManager, PagePermissionsPermissionManager -from cms.models.placeholdermodel import Placeholder -from cms.utils.helpers import reversion_register -from cms.utils.i18n import get_fallback_languages -from cms.utils.page import get_available_slug, check_title_slugs -from cms.utils.urlutils import urljoin +import copy +from os.path import join from datetime import datetime + from django.conf import settings from django.contrib.sites.models import Site from django.core.exceptions import ObjectDoesNotExist @@ -15,18 +11,17 @@ from django.shortcuts import get_object_or_404 from django.utils.functional import lazy from django.utils.translation import ugettext_lazy as _, get_language, ugettext -from publisher import MpttPublisher, Publisher -from publisher.errors import PublisherCantPublish -from cms.utils.urlutils import urljoin + +from cms.exceptions import NoHomeFound from cms.models.managers import PageManager, PagePermissionsPermissionManager from cms.models.placeholdermodel import Placeholder -from cms.utils.page import get_available_slug, check_title_slugs -from cms.exceptions import NoHomeFound from cms.utils.helpers import reversion_register -from cms.utils.i18n import get_fallback_languages +from cms.utils import i18n, urlutils, page as page_utils + from menus.menu_pool import menu_pool -import copy -from os.path import join + +from publisher import MpttPublisher, Publisher +from publisher.errors import PublisherCantPublish class Page(MpttPublisher): @@ -49,10 +44,9 @@ class Page(MpttPublisher): ) LIMIT_VISIBILITY_IN_MENU_CHOICES = ( - (1,_('for logged in users only')), - (2,_('for anonymous users only')), + (1,_('for logged in users only')), + (2,_('for anonymous users only')), ) - template_choices = [(x, _(y)) for x,y in settings.CMS_TEMPLATES] created_by = models.CharField(_("created by"), max_length=70, editable=False) @@ -77,7 +71,7 @@ class Page(MpttPublisher): rght = models.PositiveIntegerField(db_index=True, editable=False) tree_id = models.PositiveIntegerField(db_index=True, editable=False) - login_required = models.BooleanField(_("login required"),default=False) + login_required = models.BooleanField(_("login required"), default=False) limit_visibility_in_menu = models.SmallIntegerField(_("menu visibility"), default=None, null=True, blank=True, choices=LIMIT_VISIBILITY_IN_MENU_CHOICES, db_index=True, help_text=_("limit when this page is visible in the menu")) # Placeholders (plugins) @@ -101,7 +95,7 @@ def __unicode__(self): if title is None: title = u"" return u'%s' % (title,) - + def move_page(self, target, position='first-child'): """Called from admin interface when page is moved. Should be used on all the places which are changing page position. Used like an interface @@ -117,7 +111,7 @@ def move_page(self, target, position='first-child'): self.save(change_state=True) # always save the page after move, because of publisher # check the slugs - check_title_slugs(self) + page_utils.check_title_slugs(self) def copy_page(self, target, site, position='first-child', copy_permissions=True, copy_moderation=True, public_copy=False): """ @@ -237,7 +231,7 @@ def copy_page(self, target, site, position='first-child', copy_permissions=True, # create slug-copy for standard copy if not public_copy: - title.slug = get_available_slug(title) + title.slug = page_utils.get_available_slug(title) title.save() # copy the placeholders (and plugins on those placeholders!) @@ -483,7 +477,7 @@ def get_absolute_url(self, language=None, fallback=True): if settings.CMS_DBGETTEXT and settings.CMS_DBGETTEXT_SLUGS: path = '/'.join([ugettext(p) for p in path.split('/')]) - return urljoin(reverse('pages-root'), path) + return urlutils.urljoin(reverse('pages-root'), path) def get_cached_ancestors(self, ascending=True): if ascending: @@ -590,7 +584,7 @@ def _get_title_cache(self, language, fallback, version_id, force_reload): self.title_cache = {} elif not language in self.title_cache: if fallback: - fallback_langs = get_fallback_languages(language) + fallback_langs = i18n.get_fallback_languages(language) for lang in fallback_langs: if lang in self.title_cache: return lang @@ -628,7 +622,7 @@ def get_template(self): if not template: template = settings.CMS_TEMPLATES[0][0] return template - + def get_template_name(self): """ get the textual name (2nd parameter in settings.CMS_TEMPLATES) @@ -640,7 +634,7 @@ def get_template_name(self): if t[0] == template: return t[1] return _("default") - + def has_change_permission(self, request): opts = self._meta if request.user.is_superuser: @@ -662,12 +656,14 @@ def has_advanced_settings_permission(self, request): return self.has_generic_permission(request, "advanced_settings") def has_change_permissions_permission(self, request): - """Has user ability to change permissions for current page? + """ + Has user ability to change permissions for current page? """ return self.has_generic_permission(request, "change_permissions") def has_add_permission(self, request): - """Has user ability to add page under current page? + """ + Has user ability to add page under current page? """ return self.has_generic_permission(request, "add") @@ -677,7 +673,8 @@ def has_move_page_permission(self, request): return self.has_generic_permission(request, "move_page") def has_moderate_permission(self, request): - """Has user ability to moderate current page? If moderation isn't + """ + Has user ability to moderate current page? If moderation isn't installed, nobody can moderate. """ if not settings.CMS_MODERATOR: @@ -691,13 +688,12 @@ def has_generic_permission(self, request, type): """ att_name = "permission_%s_cache" % type if not hasattr(self, "permission_user_cache") or not hasattr(self, att_name) \ - or request.user.pk != self.permission_user_cache.pk: + or request.user.pk != self.permission_user_cache.pk: from cms.utils.permissions import has_generic_permission self.permission_user_cache = request.user setattr(self, att_name, has_generic_permission(self.id, request.user, type, self.site_id)) if getattr(self, att_name): self.permission_edit_cache = True - return getattr(self, att_name) def is_home(self): @@ -715,7 +711,6 @@ def get_home_pk_cache(self): if not hasattr(self, attr): setattr(self, attr, self.get_object_queryset().get_home(self.site).pk) return getattr(self, attr) - def set_home_pk_cache(self, value): attr = "%s_home_pk_cache_%s" % (self.publisher_is_draft and "draft" or "public", self.site.pk) @@ -801,7 +796,7 @@ def get_moderation_value(self, user): self._moderation_value_cahce = moderation_value self._moderation_value_cache_for_user_id = user - + return moderation_value -reversion_register(Page, follow=["title_set", "placeholders", "pagepermission_set"]) \ No newline at end of file +reversion_register(Page, follow=["title_set", "placeholders", "pagepermission_set"]) diff --git a/cms/models/permissionmodels.py b/cms/models/permissionmodels.py index 663985d143d..2e400c3f6f0 100644 --- a/cms/models/permissionmodels.py +++ b/cms/models/permissionmodels.py @@ -1,14 +1,13 @@ -from cms.models.managers import BasicPagePermissionManager, \ - PagePermissionManager -from cms.models.moderatormodels import ACCESS_CHOICES, \ - ACCESS_PAGE_AND_DESCENDANTS -from cms.models.pagemodel import Page -from cms.utils.helpers import reversion_register -from django.contrib.auth.models import User, Group -from django.contrib.sites.models import Site from django.db import models from django.utils.translation import ugettext_lazy as _ +from django.contrib.auth.models import User, Group +from django.contrib.sites.models import Site + +from cms.models import Page, ACCESS_CHOICES, ACCESS_PAGE_AND_DESCENDANTS +from cms.models.managers import BasicPagePermissionManager, PagePermissionManager +from cms.utils.helpers import reversion_register + class AbstractPagePermission(models.Model): """Abstract page permissions """ @@ -29,11 +28,10 @@ class AbstractPagePermission(models.Model): class Meta: abstract = True app_label = 'cms' - - + @property def audience(self): - """Return audience by priority, so: All or User, Group + """Return audience by priority, so: All or User, Group """ targets = filter(lambda item: item, (self.user, self.group,)) return ", ".join([unicode(t) for t in targets]) or 'No one' @@ -42,9 +40,9 @@ def save(self, *args, **kwargs): if not self.user and not self.group: # don't allow `empty` objects return - return super(AbstractPagePermission, self).save(*args, **kwargs) + return super(AbstractPagePermission, self).save(*args, **kwargs) + - class GlobalPagePermission(AbstractPagePermission): """Permissions for all pages (global). """ @@ -58,7 +56,8 @@ class Meta: verbose_name_plural = _('Pages global permissions') app_label = 'cms' - __unicode__ = lambda self: "%s :: GLOBAL" % self.audience + def __unicode__(self): + return "%s :: GLOBAL" % self.audience class PagePermission(AbstractPagePermission): @@ -73,10 +72,11 @@ class Meta: verbose_name = _('Page permission') verbose_name_plural = _('Page permissions') app_label = 'cms' - + def __unicode__(self): page = self.page_id and unicode(self.page) or "None" - return "%s :: %s has: %s" % (page, self.audience, unicode(dict(ACCESS_CHOICES)[self.grant_on][1])) + return "%s :: %s has: %s" % (page, self.audience, unicode(dict(ACCESS_CHOICES)[self.grant_on])) + class PageUser(User): """Cms specific user data, required for permission system @@ -87,21 +87,17 @@ class Meta: verbose_name = _('User (page)') verbose_name_plural = _('Users (page)') app_label = 'cms' - - #__unicode__ = lambda self: unicode(self.user) - + + class PageUserGroup(Group): """Cms specific group data, required for permission system """ - #group = models.OneToOneField(Group) created_by = models.ForeignKey(User, related_name="created_usergroups") class Meta: verbose_name = _('User group (page)') verbose_name_plural = _('User groups (page)') app_label = 'cms' - - #__unicode__ = lambda self: unicode(self.group) reversion_register(PagePermission) \ No newline at end of file diff --git a/cms/models/placeholdermodel.py b/cms/models/placeholdermodel.py index 18a545a3992..b53d51f656b 100644 --- a/cms/models/placeholdermodel.py +++ b/cms/models/placeholdermodel.py @@ -1,10 +1,11 @@ -from cms.utils.helpers import reversion_register -from cms.utils.placeholder import PlaceholderNoAction +import operator + from django.db import models from django.forms.widgets import Media from django.utils.translation import ugettext_lazy as _ -import operator +from cms.utils.helpers import reversion_register +from cms.utils.placeholder import PlaceholderNoAction class PlaceholderManager(models.Manager): def _orphans(self): diff --git a/cms/models/pluginmodel.py b/cms/models/pluginmodel.py index 5031ac615b4..6f8158384df 100644 --- a/cms/models/pluginmodel.py +++ b/cms/models/pluginmodel.py @@ -1,22 +1,21 @@ -from cms.exceptions import DontUsePageAttributeWarning -from cms.models.placeholdermodel import Placeholder -from cms.plugin_rendering import PluginContext, PluginRenderer -from cms.utils.helpers import reversion_register -from cms.utils.placeholder import get_page_from_placeholder_if_exists -from cms.plugin_rendering import PluginContext, PluginRenderer -from cms.exceptions import DontUsePageAttributeWarning -from publisher import MpttPublisher -from publisher.mptt_support import Mptt +import os, warnings from datetime import datetime, date + from django.conf import settings from django.core.exceptions import ValidationError, ObjectDoesNotExist from django.db import models -from django.db.models.base import ModelBase, model_unpickle, \ - simple_class_factory +from django.db.models.base import (ModelBase, model_unpickle, + simple_class_factory) from django.db.models.query_utils import DeferredAttribute from django.utils.translation import ugettext_lazy as _ -from os.path import join -import warnings + +from cms.exceptions import DontUsePageAttributeWarning +from cms.models.placeholdermodel import Placeholder +from cms.plugin_rendering import PluginContext, PluginRenderer +from cms.utils.helpers import reversion_register +from cms.utils.placeholder import get_page_from_placeholder_if_exists + +from publisher.mptt_support import Mptt class PluginModelBase(ModelBase): """ @@ -155,8 +154,9 @@ def get_media_path(self, filename): return pages[0].get_media_path(filename) else: # django 1.0.2 compatibility today = date.today() - return join(settings.CMS_PAGE_MEDIA_PATH, str(today.year), str(today.month), str(today.day), filename) - + return os.path.join(settings.CMS_PAGE_MEDIA_PATH, + str(today.year), str(today.month), str(today.day), filename) + @property def page(self): warnings.warn( diff --git a/cms/signals.py b/cms/signals.py index f257990678c..e9ec8541510 100644 --- a/cms/signals.py +++ b/cms/signals.py @@ -1,8 +1,12 @@ -from django.db.models import signals from django.conf import settings -from cms.models import Page, Title, CMSPlugin, Placeholder from django.core.exceptions import ObjectDoesNotExist +from django.db.models import signals from django.dispatch import Signal + +from cms.cache.permissions import (clear_user_permission_cache, clear_permission_cache) +from cms.models import (Page, Title, CMSPlugin, Placeholder, + PagePermission, GlobalPagePermission, PageUser, PageUserGroup) + from menus.menu_pool import menu_pool # fired after page location is changed - is moved from one node to other @@ -120,8 +124,6 @@ def post_save_user(instance, raw, created, **kwargs): creator = get_current_user() if not creator or not created or not hasattr(creator, 'pk'): return - - from cms.models import PageUser from django.db import connection # i'm not sure if there is a workaround for this, somebody any ideas? What @@ -152,8 +154,6 @@ def post_save_user_group(instance, raw, created, **kwargs): creator = get_current_user() if not creator or not created: return - - from cms.models import PageUserGroup from django.db import connection # TODO: same as in post_save_user - raw sql is just not nice - workaround...? @@ -184,7 +184,7 @@ def pre_save_page(instance, raw, **kwargs): instance.old_page = Page.objects.get(pk=instance.pk) except ObjectDoesNotExist: pass - + def post_save_page(instance, raw, created, **kwargs): """Helper post save signal, cleans old_page attribute. @@ -196,7 +196,8 @@ def post_save_page(instance, raw, created, **kwargs): # tell moderator something was happen with this page from cms.utils.moderator import page_changed page_changed(instance, old_page) - + + def update_placeholders(instance, **kwargs): from cms.utils.plugins import get_placeholders placeholders = get_placeholders(instance.get_template()) @@ -211,7 +212,7 @@ def update_placeholders(instance, **kwargs): found[placeholder_name] = placeholder def invalidate_menu_cache(instance, **kwargs): - menu_pool.clear(instance.site_id) + menu_pool.clear(instance.site_id) if settings.CMS_MODERATOR: # tell moderator, there is something happening with this page @@ -220,11 +221,6 @@ def invalidate_menu_cache(instance, **kwargs): signals.post_save.connect(update_placeholders, sender=Page) signals.pre_save.connect(invalidate_menu_cache, sender=Page) signals.pre_delete.connect(invalidate_menu_cache, sender=Page) - -from cms.models import PagePermission, GlobalPagePermission -from cms.cache.permissions import clear_user_permission_cache,\ - clear_permission_cache - def pre_save_user(instance, raw, **kwargs): clear_user_permission_cache(instance) @@ -240,7 +236,7 @@ def pre_save_group(instance, raw, **kwargs): def pre_delete_group(instance, **kwargs): for user in instance.user_set.filter(is_staff=True): clear_user_permission_cache(user) - + def pre_save_pagepermission(instance, raw, **kwargs): if instance.user: clear_user_permission_cache(instance.user) @@ -260,7 +256,6 @@ def pre_delete_globalpagepermission(instance, **kwargs): def pre_save_delete_page(instance, **kwargs): clear_permission_cache() - if settings.CMS_PERMISSION: # TODO: will this work also with PageUser and PageGroup?? signals.pre_save.connect(pre_save_user, sender=User) @@ -277,5 +272,3 @@ def pre_save_delete_page(instance, **kwargs): signals.pre_save.connect(pre_save_delete_page, sender=Page) signals.pre_delete.connect(pre_save_delete_page, sender=Page) - - diff --git a/cms/tests/base.py b/cms/tests/base.py index 32f0d561400..3c0b4e836f0 100644 --- a/cms/tests/base.py +++ b/cms/tests/base.py @@ -1,12 +1,14 @@ -from cms.models import Title, Page +import copy +import sys +import warnings + from django.conf import settings from django.core.exceptions import ObjectDoesNotExist from django.core.handlers.wsgi import WSGIRequest from django.template.defaultfilters import slugify from django.test.testcases import TestCase -import copy -import sys -import warnings + +from cms.models import Title, Page URL_CMS_PAGE = "/admin/cms/page/" URL_CMS_PAGE_ADD = URL_CMS_PAGE + "add/" @@ -71,18 +73,20 @@ def _post_teardown(self): settings._wrapped = self._original_settings_wrapped super(CMSTestCase, self)._post_teardown() - def login_user(self, user): logged_in = self.client.login(username=user.username, password=user.username) self.user = user self.assertEqual(logged_in, True) - def get_new_page_data(self, parent_id=''): - page_data = {'title':'test page %d' % self.counter, - 'slug':'test-page-%d' % self.counter, 'language':settings.LANGUAGES[0][0], - 'site':1, 'template':'nav_playground.html', 'parent': parent_id} - + page_data = { + 'title': 'test page %d' % self.counter, + 'slug': 'test-page-%d' % self.counter, + 'language': settings.LANGUAGES[0][0], + 'template': 'nav_playground.html', + 'parent': parent_id, + 'site': 1, + } # required only if user haves can_change_permission page_data['pagepermission_set-TOTAL_FORMS'] = 0 page_data['pagepermission_set-INITIAL_FORMS'] = 0 @@ -98,7 +102,6 @@ def print_page_structure(self, title=None): for page in Page.objects.drafts().order_by('tree_id', 'parent', 'lft'): print "%s%s #%d" % (" " * (page.level), page, page.id) - def assertObjectExist(self, qs, **filter): try: return qs.get(**filter) @@ -153,7 +156,7 @@ def create_page(self, parent_page=None, user=None, position="last-child", title= # public model shouldn't be available yet, because of the moderation self.assertObjectExist(Title.objects, slug=page_data['slug']) -# test case currently failing because Title model is no longer under Publisher + # test case currently failing because Title model is no longer under Publisher if settings.CMS_MODERATOR and page.is_under_moderation(): self.assertObjectDoesNotExist(Title.objects.public(), slug=page_data['slug']) diff --git a/cms/tests/menu.py b/cms/tests/menu.py index 67c306057ae..342595da346 100644 --- a/cms/tests/menu.py +++ b/cms/tests/menu.py @@ -21,7 +21,7 @@ def setUp(self): if not menu_pool.discovered: menu_pool.discover_menus() self.old_menu = menu_pool.menus - menu_pool.menus = {'CMSMenu':self.old_menu['CMSMenu']} + menu_pool.menus = {'CMSMenu': self.old_menu['CMSMenu']} menu_pool.clear(settings.SITE_ID) self.create_some_nodes() diff --git a/cms/tests/permmod.py b/cms/tests/permmod.py index ef9b69593eb..e804829892a 100644 --- a/cms/tests/permmod.py +++ b/cms/tests/permmod.py @@ -47,12 +47,13 @@ class PermissionModeratorTestCase(CMSTestCase): # set of heler functions def create_page_user(self, username, password=None, - can_add_page=True, can_change_page=True, can_delete_page=True, - can_recover_page=True, can_add_pageuser=True, can_change_pageuser=True, - can_delete_pageuser=True, can_add_pagepermission=True, + can_add_page=True, can_change_page=True, can_delete_page=True, + can_recover_page=True, can_add_pageuser=True, can_change_pageuser=True, + can_delete_pageuser=True, can_add_pagepermission=True, can_change_pagepermission=True, can_delete_pagepermission=True, grant_all=False): - """Helper function for creating page user, through form on: + """ + Helper function for creating page user, through form on: /admin/cms/pageuser/add/ Returns created user. @@ -66,19 +67,19 @@ def create_page_user(self, username, password=None, password=username data = { - 'username': username, + 'username': username, 'password1': password, - 'password2': password, - 'can_add_page': can_add_page, - 'can_change_page': can_change_page, - 'can_delete_page': can_delete_page, - 'can_recover_page': can_recover_page, - 'can_add_pageuser': can_add_pageuser, - 'can_change_pageuser': can_change_pageuser, - 'can_delete_pageuser': can_delete_pageuser, - 'can_add_pagepermission': can_add_pagepermission, - 'can_change_pagepermission': can_change_pagepermission, - 'can_delete_pagepermission': can_delete_pagepermission, + 'password2': password, + 'can_add_page': can_add_page, + 'can_change_page': can_change_page, + 'can_delete_page': can_delete_page, + 'can_recover_page': can_recover_page, + 'can_add_pageuser': can_add_pageuser, + 'can_change_pageuser': can_change_pageuser, + 'can_delete_pageuser': can_delete_pageuser, + 'can_add_pagepermission': can_add_pagepermission, + 'can_change_pagepermission': can_change_pagepermission, + 'can_delete_pagepermission': can_delete_pagepermission, } response = self.client.post('/admin/cms/pageuser/add/', data) self.assertRedirects(response, '/admin/cms/pageuser/') @@ -96,7 +97,7 @@ def assign_user_to_page(self, page, user, grant_on=ACCESS_PAGE_AND_DESCENDANTS, future will be nice. """ if grant_all: - return self.assign_user_to_page(page, user, grant_on, + return self.assign_user_to_page(page, user, grant_on, True, True, True, True, True, True, True, True) # just check if the current logged in user even can change the page and @@ -107,14 +108,13 @@ def assign_user_to_page(self, page, user, grant_on=ACCESS_PAGE_AND_DESCENDANTS, data = { 'can_add': can_add, 'can_change': can_change, - 'can_delete': can_delete, + 'can_delete': can_delete, 'can_change_advanced_settings': can_change_advanced_settings, - 'can_publish': can_publish, - 'can_change_permissions': can_change_permissions, - 'can_move_page': can_move_page, - 'can_moderate': can_moderate, + 'can_publish': can_publish, + 'can_change_permissions': can_change_permissions, + 'can_move_page': can_move_page, + 'can_moderate': can_moderate, } - page_permission = PagePermission(page=page, user=user, grant_on=grant_on, **data) page_permission.save() return page_permission @@ -234,7 +234,6 @@ def setUp(self): self.login_user(self.user_super) - home = self.create_page(title="home") self.publish_page(home) diff --git a/cms/utils/admin.py b/cms/utils/admin.py index aca7f55a8bb..ddd2419544e 100644 --- a/cms/utils/admin.py +++ b/cms/utils/admin.py @@ -1,17 +1,20 @@ -from django.contrib.sites.models import Site from django.conf import settings -from cms.utils.moderator import page_moderator_state, I_APPROVE -from cms.utils import get_language_from_request +from django.http import HttpResponse from django.shortcuts import render_to_response from django.template.context import RequestContext -from cms.utils.permissions import has_page_add_permission, has_generic_permission -from django.http import HttpResponse, Http404 -from cms.models.permissionmodels import GlobalPagePermission + +from django.contrib.sites.models import Site + from cms.models.pagemodel import Page +from cms.models.permissionmodels import GlobalPagePermission +from cms.utils import permissions, moderator, get_language_from_request + +NOT_FOUND_RESPONSE = "NotFound" def get_admin_menu_item_context(request, page, filtered=False): - """Used for rendering the page tree, inserts into context everything what + """ + Used for rendering the page tree, inserts into context everything what we need for single item """ has_add_page_permission = page.has_add_permission(request) @@ -26,17 +29,15 @@ def get_admin_menu_item_context(request, page, filtered=False): md = [] #if not has_add_page_permission: - if not has_move_page_permission: md.append(('valid_children', False)) md.append(('draggable', False)) - if md: # just turn it into simple javasript object metadata = "{" + ", ".join(map(lambda e: "%s: %s" %(e[0], isinstance(e[1], bool) and str(e[1]) or e[1].lower() ), md)) + "}" - moderator_state = page_moderator_state(request, page) + moderator_state = moderator.page_moderator_state(request, page) has_add_on_same_level_permission = False opts = Page._meta if (request.user.has_perm(opts.app_label + '.' + opts.get_add_permission()) and @@ -44,7 +45,7 @@ def get_admin_menu_item_context(request, page, filtered=False): has_add_on_same_level_permission = True if not has_add_on_same_level_permission and page.parent_id: - has_add_on_same_level_permission = has_generic_permission(page.parent_id, request.user, "add", page.site) + has_add_on_same_level_permission = permissions.has_generic_permission(page.parent_id, request.user, "add", page.site) #has_add_on_same_level_permission = has_add_page_on_same_level_permission(request, page) context = { @@ -61,30 +62,26 @@ def get_admin_menu_item_context(request, page, filtered=False): 'has_add_page_permission': has_add_page_permission, 'has_moderate_permission': page.has_moderate_permission(request), 'page_moderator_state': moderator_state, - 'moderator_should_approve': moderator_state['state'] >= I_APPROVE, - + 'moderator_should_approve': moderator_state['state'] >= moderator.I_APPROVE, 'has_add_on_same_level_permission': has_add_on_same_level_permission, - 'CMS_PERMISSION': settings.CMS_PERMISSION, 'CMS_MODERATOR': settings.CMS_MODERATOR, } return context -NOT_FOUND_RESPONSE = "NotFound" - def render_admin_menu_item(request, page): - """Renders requested page item for the tree. This is used in case when item + """ + Renders requested page item for the tree. This is used in case when item must be reloaded over ajax. """ - if not page.pk: return HttpResponse(NOT_FOUND_RESPONSE) # Not found - tree will remove item context = RequestContext(request, { - 'has_add_permission': has_page_add_permission(request), + 'has_add_permission': permissions.has_page_add_permission(request), }) filtered = 'filtered' in request.REQUEST context.update(get_admin_menu_item_context(request, page, filtered)) - return render_to_response('admin/cms/page/menu_item.html', context) \ No newline at end of file + return render_to_response('admin/cms/page/menu_item.html', context) diff --git a/cms/utils/mail.py b/cms/utils/mail.py index 42f0fb98bc3..08c0d3a8f94 100644 --- a/cms/utils/mail.py +++ b/cms/utils/mail.py @@ -5,7 +5,8 @@ from django.contrib import admin def send_mail(subject, txt_template, to, context=None, html_template=None, fail_silently=True): - """Multipart message helper with template rendering. + """ + Multipart message helper with template rendering. """ site = Site.objects.get_current() diff --git a/cms/utils/permissions.py b/cms/utils/permissions.py index 04bc9341eff..3b675cb41c4 100644 --- a/cms/utils/permissions.py +++ b/cms/utils/permissions.py @@ -18,20 +18,23 @@ _thread_locals = local() def set_current_user(user): - """Assigns current user from request to thread_locals, used by + """ + Assigns current user from request to thread_locals, used by CurrentUserMiddleware. """ _thread_locals.user=user def get_current_user(): - """Returns current user, or None + """ + Returns current user, or None """ return getattr(_thread_locals, 'user', None) def has_page_add_permission(request): - """Return true if the current user has permission to add a new page. This is + """ + Return true if the current user has permission to add a new page. This is just used for general add buttons - only superuser, or user with can_add in globalpagepermission can add page. @@ -39,7 +42,7 @@ def has_page_add_permission(request): Special case occur when page is going to be added from add page button in change list - then we have target and position there, so check if user can add page under target page will occur. - """ + """ opts = Page._meta if request.user.is_superuser: return True @@ -51,7 +54,7 @@ def has_page_add_permission(request): if target is not None: try: page = Page.objects.get(pk=target) - except: + except Page.DoesNotExist: return False if (request.user.has_perm(opts.app_label + '.' + opts.get_add_permission()) and GlobalPagePermission.objects.with_user(request.user).filter(can_add=True, sites__in=[page.site_id])): @@ -71,18 +74,21 @@ def has_page_add_permission(request): return False def has_any_page_change_permissions(request): - from cms.utils.plugins import current_site - permissions = PagePermission.objects.filter(page__site=current_site(request)).filter(Q(user=request.user)|Q(group__in=request.user.groups.all())) - if permissions.count()>0: - return True - return False - + from cms.utils.plugins import current_site + return PagePermission.objects.filter( + page__site=current_site(request) + ).filter(( + Q(user=request.user) | + Q(group__in=request.user.groups.all()) + )).exists() + def has_page_change_permission(request): - """Return true if the current user has permission to change any page. This is + """ + Return true if the current user has permission to change any page. This is just used for building the tree - only superuser, or user with can_change in globalpagepermission can change a page. - """ - from cms.utils.plugins import current_site + """ + from cms.utils.plugins import current_site opts = Page._meta if request.user.is_superuser or \ (request.user.has_perm(opts.app_label + '.' + opts.get_change_permission()) and @@ -93,7 +99,8 @@ def has_page_change_permission(request): def get_user_permission_level(user): - """Returns highest user level from the page/permission hierarchy on which + """ + Returns highest user level from the page/permission hierarchy on which user haves can_change_permission. Also takes look into user groups. Higher level equals to lover number. Users on top of hierarchy have level 0. Level is the same like page.level attribute. @@ -122,7 +129,8 @@ def get_user_permission_level(user): return permission.page.level def get_subordinate_users(user): - """Returns users queryset, containing all subordinate users to given user + """ + Returns users queryset, containing all subordinate users to given user including users created by given user and not assigned to any page. Not assigned users must be returned, because they shouldn't get lost, and @@ -170,11 +178,12 @@ def get_subordinate_users(user): return qs def get_subordinate_groups(user): - """Simillar to get_subordinate_users, but returns queryset of Groups instead + """ + Simillar to get_subordinate_users, but returns queryset of Groups instead of Users. """ - if user.is_superuser or \ - GlobalPagePermission.objects.with_can_change_permissions(user): + if (user.is_superuser or + GlobalPagePermission.objects.with_can_change_permissions(user)): return Group.objects.all() page_id_allow_list = Page.permissions.get_change_permissions_id_list(user) @@ -188,8 +197,8 @@ def get_subordinate_groups(user): def has_global_change_permissions_permission(user): opts = GlobalPagePermission._meta - if user.is_superuser or \ - (user.has_perm(opts.app_label + '.' + opts.get_change_permission()) and + if user.is_superuser or ( + user.has_perm(opts.app_label + '.' + opts.get_change_permission()) and GlobalPagePermission.objects.with_user(user).filter(can_change=True)): return True return False @@ -224,7 +233,8 @@ def has_generic_permission(page_id, user, attr, site): def get_user_sites_queryset(user): - """Returns queryset of all sites available for given user. + """ + Returns queryset of all sites available for given user. 1. For superuser always returns all sites. 2. For global user returns all sites he haves in global page permissions @@ -236,21 +246,20 @@ def get_user_sites_queryset(user): if user.is_superuser: return qs - global_ids = GlobalPagePermission.objects.with_user(user) \ - .filter(Q(can_add=True) | Q(can_change=True)).values_list('id', flat=True) + global_ids = GlobalPagePermission.objects.with_user(user).filter( + Q(can_add=True) | Q(can_change=True) + ).values_list('id', flat=True) q = Q() if global_ids: q = Q(globalpagepermission__id__in=global_ids) # haves some global permissions assigned - if not qs.filter(q).count(): - # haves global permissions, but none of sites is specified, so he haves - # access to all sites + if not qs.filter(q).exists(): + # haves global permissions, but none of sites is specified, + # so he haves access to all sites return qs - # add some pages if he haves permission to add / change her + # add some pages if he haves permission to add / change them q |= Q(Q(page__pagepermission__user=user) | Q(page__pagepermission__group__user=user)) & \ (Q(Q(page__pagepermission__can_add=True) | Q(page__pagepermission__can_change=True))) return qs.filter(q).distinct() - - \ No newline at end of file diff --git a/menus/menu_pool.py b/menus/menu_pool.py index de322b2eb88..f40995bbe58 100644 --- a/menus/menu_pool.py +++ b/menus/menu_pool.py @@ -19,7 +19,7 @@ def __init__(self): self.modifiers = [] self.discovered = False self.cache_keys = set() - + def discover_menus(self): if self.discovered: return @@ -48,21 +48,21 @@ def relevance_test(keylang, keysite): to_be_deleted.append(key) cache.delete_many(to_be_deleted) self.cache_keys.difference_update(to_be_deleted) - + def register_menu(self, menu): from menus.base import Menu assert issubclass(menu, Menu) if menu.__name__ in self.menus.keys(): - raise NamespaceAllreadyRegistered, "[%s] a menu with this name is already registered" % menu.__name__ + raise NamespaceAllreadyRegistered( + "[%s] a menu with this name is already registered" % menu.__name__) self.menus[menu.__name__] = menu() - + def register_modifier(self, modifier_class): from menus.base import Modifier assert issubclass(modifier_class, Modifier) if not modifier_class in self.modifiers: self.modifiers.append(modifier_class) - - + def _build_nodes(self, request, site_id): lang = get_language() prefix = getattr(settings, "CMS_CACHE_PREFIX", "menu_cache_") @@ -110,7 +110,7 @@ def _build_nodes(self, request, site_id): duration = getattr(settings, "MENU_CACHE_DURATION", 60*60) cache.set(key, final_nodes, duration) return final_nodes - + def apply_modifiers(self, nodes, request, namespace=None, root_id=None, post_cut=False, breadcrumb=False): if not post_cut: nodes = self._mark_selected(request, nodes) @@ -118,8 +118,7 @@ def apply_modifiers(self, nodes, request, namespace=None, root_id=None, post_cut inst = cls() nodes = inst.modify(request, nodes, namespace, root_id, post_cut, breadcrumb) return nodes - - + def get_nodes(self, request, namespace=None, root_id=None, site_id=None, breadcrumb=False): self.discover_menus() if not site_id: @@ -128,7 +127,7 @@ def get_nodes(self, request, namespace=None, root_id=None, site_id=None, breadcr nodes = copy.deepcopy(nodes) nodes = self.apply_modifiers(nodes, request, namespace, root_id, post_cut=False, breadcrumb=breadcrumb) return nodes - + def _mark_selected(self, request, nodes): sel = None for node in nodes: @@ -147,7 +146,7 @@ def _mark_selected(self, request, nodes): if sel: sel.selected = True return nodes - + def get_menus_by_attribute(self, name, value): self.discover_menus() found = [] @@ -155,12 +154,12 @@ def get_menus_by_attribute(self, name, value): if hasattr(menu[1], name) and getattr(menu[1], name, None) == value: found.append((menu[0], menu[1].name)) return found - + def get_nodes_by_attribute(self, nodes, name, value): found = [] for node in nodes: if node.attr.get(name, None) == value: found.append(node) return found - + menu_pool = MenuPool() From 7715bc76648876d1a0c55109370b261ac203ae63 Mon Sep 17 00:00:00 2001 From: Jannis Leidel Date: Mon, 15 Nov 2010 00:49:08 +0100 Subject: [PATCH 003/689] Get rid of unneeded BaseInlineFormSetWithQuerySet and use the existing hooks --- cms/admin/models.py | 23 ------------------- cms/admin/permissionadmin.py | 44 ++++++++++++++---------------------- 2 files changed, 17 insertions(+), 50 deletions(-) delete mode 100644 cms/admin/models.py diff --git a/cms/admin/models.py b/cms/admin/models.py deleted file mode 100644 index 5d4ef9f6d12..00000000000 --- a/cms/admin/models.py +++ /dev/null @@ -1,23 +0,0 @@ -from django.forms.models import BaseInlineFormSet - -class BaseInlineFormSetWithQuerySet(BaseInlineFormSet): - """Overriden BaseInlineFormSet, so we can pass queryset to it instead of - _default_manager, see django bug #11019 for more details. - """ - def __init__(self, data=None, files=None, instance=None, - save_as_new=False, prefix=None, queryset=None): - from django.db.models.fields.related import RelatedObject - if instance is None: - self.instance = self.model() - else: - self.instance = instance - self.save_as_new = save_as_new - # is there a better way to get the object descriptor? - self.rel_name = RelatedObject(self.fk.rel.to, self.model, self.fk).get_accessor_name() - if hasattr(self, 'use_queryset'): - qs = self.use_queryset - else: - qs = self.model._default_manager - qs = qs.filter(**{self.fk.name: self.instance}) - super(BaseInlineFormSet, self).__init__(data, files, prefix=prefix or self.rel_name, - queryset=qs) \ No newline at end of file diff --git a/cms/admin/permissionadmin.py b/cms/admin/permissionadmin.py index eec9b1d5792..b276ed5bfef 100644 --- a/cms/admin/permissionadmin.py +++ b/cms/admin/permissionadmin.py @@ -1,6 +1,5 @@ from copy import deepcopy from django.conf import settings -from cms.admin.models import BaseInlineFormSetWithQuerySet from django.template.defaultfilters import title from django.utils.translation import ugettext as _ @@ -32,42 +31,33 @@ def queryset(self, request): qs = PagePermission.objects.subordinate_to_user(request.user) return qs - def get_fieldsets(self, request, obj=None): - """Request formset with given obj. - """ - if self.declared_fieldsets: - return self.declared_fieldsets - form = self.get_formset(request, obj).form - return [(None, {'fields': form.base_fields.keys()})] - def get_formset(self, request, obj=None, **kwargs): - """Some fields may be excluded here. User can change only - permissions which are available for him. E.g. if user does not haves + """ + Some fields may be excluded here. User can change only + permissions which are available for him. E.g. if user does not haves can_publish flag, he can't change assign can_publish permissions. - - Seems django doesn't cares about queryset defined here - its - probably a bug, so monkey patching again.. Assign use_queryset - attribute to FormSet, our overiden formset knows how to handle this, - @see BaseInlineFormSetWithQuerySet for more details. """ + exclude = self.exclude or [] if obj: - self.exclude = [] if not obj.has_add_permission(request): - self.exclude.append('can_add') + exclude.append('can_add') if not obj.has_delete_permission(request): - self.exclude.append('can_delete') + exclude.append('can_delete') if not obj.has_publish_permission(request): - self.exclude.append('can_publish') + exclude.append('can_publish') if not obj.has_advanced_settings_permission(request): - self.exclude.append('can_change_advanced_settings') + exclude.append('can_change_advanced_settings') if not obj.has_move_page_permission(request): - self.exclude.append('can_move_page') + exclude.append('can_move_page') if not settings.CMS_MODERATOR or not obj.has_moderate_permission(request): - self.exclude.append('can_moderate') - FormSet = super(PagePermissionInlineAdmin, self).get_formset(request, obj=None, **kwargs) - # asign queryset - FormSet.use_queryset = self.queryset(request) - return FormSet + exclude.append('can_moderate') + formset_cls = super(PagePermissionInlineAdmin, self + ).get_formset(request, obj=None, exclude=exclude, *kwargs) + qs = self.queryset(request) + if obj is not None: + qs = qs.filter(page=obj) + formset_cls._queryset = qs + return formset_cls if settings.CMS_PERMISSION: PAGE_ADMIN_INLINES.append(PagePermissionInlineAdmin) From 31c425c47376d29155a5eedfed9db57ebc2330f0 Mon Sep 17 00:00:00 2001 From: Jannis Leidel Date: Sun, 14 Nov 2010 18:41:07 +0100 Subject: [PATCH 004/689] Move mail_page_user_change from django.utils.permissions to django.utils.mail. --- cms/admin/forms.py | 3 ++- cms/utils/mail.py | 24 +++++++++++++++++++++--- cms/utils/permissions.py | 35 ++++++----------------------------- 3 files changed, 29 insertions(+), 33 deletions(-) diff --git a/cms/admin/forms.py b/cms/admin/forms.py index 4186ee7e054..5438cd2fdc5 100644 --- a/cms/admin/forms.py +++ b/cms/admin/forms.py @@ -15,9 +15,10 @@ from cms.forms.widgets import UserSelectAdminWidget from cms.models import (Page, PagePermission, PageUser, ACCESS_PAGE, PageUserGroup) +from cms.utils.mail import mail_page_user_change from cms.utils.page import is_valid_page_slug from cms.utils.permissions import (get_current_user, get_subordinate_users, - get_subordinate_groups, mail_page_user_change) + get_subordinate_groups) from cms.utils.urlutils import any_path_re from menus.menu_pool import menu_pool diff --git a/cms/utils/mail.py b/cms/utils/mail.py index 08c0d3a8f94..1688dacc2e4 100644 --- a/cms/utils/mail.py +++ b/cms/utils/mail.py @@ -1,8 +1,11 @@ -from django.template.loader import render_to_string from django.core.mail import EmailMultiAlternatives +from django.template.loader import render_to_string +from django.utils.translation import ugettext_lazy as _ + +from django.contrib import admin from django.contrib.sites.models import Site + from cms.utils.urlutils import urljoin -from django.contrib import admin def send_mail(subject, txt_template, to, context=None, html_template=None, fail_silently=True): """ @@ -23,4 +26,19 @@ def send_mail(subject, txt_template, to, context=None, html_template=None, fail_ if html_template: body = render_to_string(html_template, context) message.attach_alternative(body, 'text/html') - message.send(fail_silently=fail_silently) \ No newline at end of file + message.send(fail_silently=fail_silently) + +def mail_page_user_change(user, created=False, password=""): + """ + Send email notification to given user. + Used it PageUser profile creation/update. + """ + if created: + subject = _('CMS - your user account was created.') + else: + subject = _('CMS - your user account was changed.') + send_mail(subject, 'admin/cms/mail/page_user_change.txt', [user.email], { + 'user': user, + 'password': password or "*" * 8, + 'created': created, + }, 'admin/cms/mail/page_user_change.html') diff --git a/cms/utils/permissions.py b/cms/utils/permissions.py index 3b675cb41c4..0d575e93b0b 100644 --- a/cms/utils/permissions.py +++ b/cms/utils/permissions.py @@ -1,13 +1,12 @@ -from django.contrib.auth.models import User, Group from django.conf import settings from django.db.models import Q from django.utils.translation import ugettext_lazy as _ -from cms.models import Page, PagePermission, GlobalPagePermission -from cms.exceptions import NoPermissionsException -from django.contrib.sites.models import Site - +from django.contrib.auth.models import User, Group +from django.contrib.sites.models import Site +from cms.models import Page, PagePermission, GlobalPagePermission +from cms.exceptions import NoPermissionsException try: from threading import local @@ -23,7 +22,6 @@ def set_current_user(user): CurrentUserMiddleware. """ _thread_locals.user=user - def get_current_user(): """ @@ -31,7 +29,6 @@ def get_current_user(): """ return getattr(_thread_locals, 'user', None) - def has_page_add_permission(request): """ Return true if the current user has permission to add a new page. This is @@ -203,29 +200,9 @@ def has_global_change_permissions_permission(user): return True return False - - -def mail_page_user_change(user, created=False, password=""): - """Send email notification to given user. Used it PageUser profile creation/ - update. - """ - from cms.utils.mail import send_mail - - if created: - subject = _('CMS - your user account was created.') - else: - subject = _('CMS - your user account was changed.') - - context = { - 'user': user, - 'password': password or "*" * 8, - 'created': created, - } - send_mail(subject, 'admin/cms/mail/page_user_change.txt', [user.email], context, 'admin/cms/mail/page_user_change.html') - - def has_generic_permission(page_id, user, attr, site): - """Permission getter for single page with given id. + """ + Permission getter for single page with given id. """ func = getattr(Page.permissions, "get_%s_id_list" % attr) permission = func(user, site) From fd25f6546dc53a8e11e65d99b9b4cdeeca63d4de Mon Sep 17 00:00:00 2001 From: Jannis Leidel Date: Sun, 14 Nov 2010 20:37:15 +0100 Subject: [PATCH 005/689] Added can_view permission and re-enabled permissions caching again. --- cms/admin/forms.py | 8 + cms/admin/pageadmin.py | 4 +- cms/admin/permissionadmin.py | 42 +++- cms/cache/permissions.py | 21 +- cms/conf/global_settings.py | 14 +- cms/media/cms/css/pages.css | 3 + cms/menu.py | 14 +- ...ssion_can_view__add_field_pagepermissio.py | 199 ++++++++++++++++++ cms/models/managers.py | 38 ++-- cms/models/pagemodel.py | 30 ++- cms/models/permissionmodels.py | 1 + cms/signals.py | 15 +- .../admin/cms/page/change_list_tree.html | 1 + cms/templates/admin/cms/page/menu_item.html | 1 + cms/templates/admin/cms/page/permissions.html | 2 + cms/templatetags/cms_admin.py | 9 + cms/tests/base.py | 10 +- cms/tests/permmod.py | 133 +++++++++--- cms/utils/permissions.py | 38 +++- cms/views.py | 33 +-- example/settings.py | 2 +- menus/menu_pool.py | 14 +- tests/testapp/settings.py | 3 + 23 files changed, 537 insertions(+), 98 deletions(-) create mode 100644 cms/migrations/0034_auto__add_field_globalpagepermission_can_view__add_field_pagepermissio.py diff --git a/cms/admin/forms.py b/cms/admin/forms.py index 5438cd2fdc5..c1437ed2395 100644 --- a/cms/admin/forms.py +++ b/cms/admin/forms.py @@ -204,6 +204,14 @@ class Meta: model = PagePermission +class ViewRestrictionInlineAdminForm(PagePermissionInlineAdminForm): + can_view = forms.BooleanField(label=_('can_view'), widget=HiddenInput(), initial=True) + + def clean_can_view(self): + self.cleaned_data["can_view"] = True + return self.cleaned_data + + class GlobalPagePermissionAdminForm(forms.ModelForm): def clean(self): diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py index fbb1a19e76b..6b4dadde7f4 100644 --- a/cms/admin/pageadmin.py +++ b/cms/admin/pageadmin.py @@ -24,7 +24,7 @@ from cms.admin.dialog.views import get_copy_dialog from cms.admin.forms import PageForm, PageAddForm from cms.admin.permissionadmin import (PAGE_ADMIN_INLINES, - PagePermissionInlineAdmin) + PagePermissionInlineAdmin, ViewRestrictionInlineAdmin) from cms.admin.views import save_all_plugins, revert_plugins from cms.apphook_pool import apphook_pool from cms.exceptions import NoPermissionsException @@ -423,7 +423,7 @@ def get_form(self, request, obj=None, **kwargs): def get_formsets(self, request, obj=None): if obj: for inline in self.inline_instances: - if settings.CMS_PERMISSION and isinstance(inline, PagePermissionInlineAdmin): + if settings.CMS_PERMISSION and isinstance(inline, PagePermissionInlineAdmin) and not isinstance(inline, ViewRestrictionInlineAdmin): if "recover" in request.path or "history" in request.path: #do not display permissions in recover mode continue if obj and not obj.has_change_permissions_permission(request): diff --git a/cms/admin/permissionadmin.py b/cms/admin/permissionadmin.py index b276ed5bfef..cbb701f6dfe 100644 --- a/cms/admin/permissionadmin.py +++ b/cms/admin/permissionadmin.py @@ -9,7 +9,7 @@ from cms.models import Page, PagePermission, GlobalPagePermission, PageUser from cms.utils.permissions import get_user_permission_level from cms.admin.forms import (GlobalPagePermissionAdminForm, - PagePermissionInlineAdminForm) + PagePermissionInlineAdminForm, ViewRestrictionInlineAdminForm) PAGE_ADMIN_INLINES = [] @@ -19,6 +19,7 @@ class PagePermissionInlineAdmin(admin.TabularInline): # use special form, so we can override of user and group field form = PagePermissionInlineAdminForm classes = ['collapse', 'collapsed'] + exclude = ['can_view'] def queryset(self, request): """ @@ -29,7 +30,7 @@ def queryset(self, request): """ # can see only permissions for users which are under him in tree qs = PagePermission.objects.subordinate_to_user(request.user) - return qs + return qs.filter(can_view=False) def get_formset(self, request, obj=None, **kwargs): """ @@ -59,8 +60,37 @@ def get_formset(self, request, obj=None, **kwargs): formset_cls._queryset = qs return formset_cls -if settings.CMS_PERMISSION: - PAGE_ADMIN_INLINES.append(PagePermissionInlineAdmin) +class ViewRestrictionInlineAdmin(PagePermissionInlineAdmin): + extra = 1 + form = ViewRestrictionInlineAdminForm + verbose_name = _("View restriction") + verbose_name_plural = _("View restrictions") + exclude = [ + 'can_add', 'can_change', 'can_delete', 'can_view', + 'can_publish', 'can_change_advanced_settings', 'can_move_page', + 'can_moderate', 'can_change_permissions' + ] + + def get_formset(self, request, obj=None, **kwargs): + """ + Some fields may be excluded here. User can change only permissions + which are available for him. E.g. if user does not haves can_publish + flag, he can't change assign can_publish permissions. + """ + formset_cls = super(PagePermissionInlineAdmin, self).get_formset(request, obj, **kwargs) + qs = self.queryset(request) + if obj is not None: + qs = qs.filter(page=obj) + formset_cls._queryset = qs + return formset_cls + + def queryset(self, request): + """ + Returns a QuerySet of all model instances that can be edited by the + admin site. This is used by changelist_view. + """ + qs = PagePermission.objects.subordinate_to_user(request.user) + return qs.filter(can_view=True) class GlobalPagePermissionAdmin(admin.ModelAdmin): @@ -132,3 +162,7 @@ def has_change_permission(self, request, obj=None): if settings.CMS_PERMISSION: admin.site.register(GlobalPagePermission, GlobalPagePermissionAdmin) + PAGE_ADMIN_INLINES.extend([ + ViewRestrictionInlineAdmin, + PagePermissionInlineAdmin, + ]) diff --git a/cms/cache/permissions.py b/cms/cache/permissions.py index 5f77070dc95..3a72079f684 100644 --- a/cms/cache/permissions.py +++ b/cms/cache/permissions.py @@ -1,22 +1,22 @@ +from django.conf import settings from django.core.cache import cache -# Time to live for cache entry 10 minutes, so it gets cleaned if we don't catch -# something - don't make higher; groups may be problematic because of no signals -# when adding / removing from group -TTL = 600 - permission_cache_keys = [] all_keys = [] -get_cache_key = lambda user, key: "Admin::Permission::%s::%s" % (user.username, key) +def get_cache_key(user, key): + return "%s:permission:%s:%s" % ( + settings.CMS_CACHE_PREFIX, user.username, key) def get_permission_cache(user, key): - """Helper for reading values from cache + """ + Helper for reading values from cache """ return cache.get(get_cache_key(user, key)) def set_permission_cache(user, key, value): - """Helper method for storing values in cache. Stores used keys so + """ + Helper method for storing values in cache. Stores used keys so all of them can be cleaned when clean_permission_cache gets called. """ # store this key, so we can clean it when required @@ -26,10 +26,11 @@ def set_permission_cache(user, key, value): all_keys.append(cache_key) if not key in permission_cache_keys: permission_cache_keys.append(key) - cache.set(cache_key, value, TTL) + cache.set(cache_key, value, settings.CMS_PERMISSION_CACHE_DURATION) def clear_user_permission_cache(user): - """Cleans permission cache for given user. + """ + Cleans permission cache for given user. """ for key in permission_cache_keys: cache.delete(get_cache_key(user, key)) diff --git a/cms/conf/global_settings.py b/cms/conf/global_settings.py index 6019f8de7a4..2acba2ab55b 100644 --- a/cms/conf/global_settings.py +++ b/cms/conf/global_settings.py @@ -10,7 +10,6 @@ # The id of default Site instance to be used for multisite purposes. SITE_ID = 1 - # Which templates should be used for extracting the placeholders? # example: CMS_TEMPLATES = (('base.html', 'default template'),) CMS_TEMPLATES = None @@ -24,7 +23,16 @@ # Whether to enable permissions. CMS_PERMISSION = False - + +# Decides if pages without any view restrictions are public by default +CMS_PUBLIC_FOR_ALL = True + +# Decides if staff members are allowed to view pages even if they are view restricted +CMS_PUBLIC_FOR_STAFF = True + +# Defines how long user permissions should be cached +CMS_PERMISSION_CACHE_DURATION = 600 + # Show the publication date field in the admin, allows for future dating # Changing this from True to False could cause some weirdness. If that is required, # you should update your database to correct any future dated pages @@ -120,4 +128,4 @@ CMS_CACHE_PREFIX = 'cms-' # Menu cache duration -MENU_CACHE_DURATION = 60 * 60 \ No newline at end of file +MENU_CACHE_DURATION = 60 * 60 diff --git a/cms/media/cms/css/pages.css b/cms/media/cms/css/pages.css index 8ec8e56efd0..459a59c4565 100644 --- a/cms/media/cms/css/pages.css +++ b/cms/media/cms/css/pages.css @@ -202,6 +202,7 @@ div#sitemap li, div#sitemap ul{list-style-type: none;} #sitemap li .col-moderator, #sitemap li .col-lastchange, #sitemap li .col-draft, +#sitemap li .col-view-perms, #sitemap li .col-creator{ border-left:1px solid #DEDEDC; text-align:center; @@ -247,6 +248,7 @@ div#sitemap li, div#sitemap ul{list-style-type: none;} #sitemap li .col-draft{width:119px; text-align: right;} #sitemap li .col-lastchange { width:96px; text-align: left;} */ +#sitemap li .col-view-perms { width: 55px; text-align: center;} #sitemap li .col-draft {text-align: right;} #sitemap li .col-lastchange, @@ -328,6 +330,7 @@ div#sitemap ul.header li{ #sitemap ul.header li .col-moderator, #sitemap ul.header li .col-lastchange, #sitemap ul.header li .col-draft, +#sitemap ul.header li .col-view-perms, #sitemap ul.header li .col-creator{ height:auto; border:none; diff --git a/cms/menu.py b/cms/menu.py index 1aa56ec0aed..210cfa26ffe 100644 --- a/cms/menu.py +++ b/cms/menu.py @@ -69,21 +69,29 @@ def get_nodes(self, request): home_cut = False home_children = [] home = None + actual_pages = [] + for page in pages: + if not page.has_view_permission(request): + # Don't include pages the user doesn't have access to + continue if not home: home = page - page.home_pk_cache = home.pk if first and page.pk != home.pk: home_cut = True + elif not settings.CMS_PUBLIC_FOR_ALL: + continue if (page.parent_id == home.pk or page.parent_id in home_children) and home_cut: page.home_cut_cache = True home_children.append(page.pk) if (page.pk == home.pk and home.in_navigation) or page.pk != home.pk: first = False ids.append(page.id) + actual_pages.append(page) + titles = list(get_title_queryset(request).filter(page__in=ids, language=lang)) - for page in pages:# add the title and slugs and some meta data + for page in actual_pages: # add the title and slugs and some meta data for title in titles: if title.page_id == page.pk: if not hasattr(page, "title_cache"): @@ -97,7 +105,7 @@ def get_nodes(self, request): for l in fallbacks: titles = list(get_title_queryset(request).filter(page__in=ids, language=l)) for title in titles: - for page in pages:# add the title and slugs and some meta data + for page in actual_pages: # add the title and slugs and some meta data if title.page_id == page.pk: if not hasattr(page, "title_cache"): page.title_cache = {} diff --git a/cms/migrations/0034_auto__add_field_globalpagepermission_can_view__add_field_pagepermissio.py b/cms/migrations/0034_auto__add_field_globalpagepermission_can_view__add_field_pagepermissio.py new file mode 100644 index 00000000000..b6e993193bf --- /dev/null +++ b/cms/migrations/0034_auto__add_field_globalpagepermission_can_view__add_field_pagepermissio.py @@ -0,0 +1,199 @@ +# encoding: utf-8 +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + +class Migration(SchemaMigration): + + def forwards(self, orm): + + # Adding field 'GlobalPagePermission.can_view' + db.add_column('cms_globalpagepermission', 'can_view', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True), keep_default=False) + + # Adding field 'PagePermission.can_view' + db.add_column('cms_pagepermission', 'can_view', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True), keep_default=False) + + + def backwards(self, orm): + + # Deleting field 'GlobalPagePermission.can_view' + db.delete_column('cms_globalpagepermission', 'can_view') + + # Deleting field 'PagePermission.can_view' + db.delete_column('cms_pagepermission', 'can_view') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'cms.cmsplugin': { + 'Meta': {'object_name': 'CMSPlugin'}, + 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), + 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), + 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), + 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), + 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), + 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) + }, + 'cms.globalpagepermission': { + 'Meta': {'object_name': 'GlobalPagePermission'}, + 'can_add': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), + 'can_change': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), + 'can_change_advanced_settings': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'can_change_permissions': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'can_delete': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), + 'can_moderate': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), + 'can_move_page': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), + 'can_publish': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), + 'can_recover_page': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), + 'can_view': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['sites.Site']", 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cms.page': { + 'Meta': {'object_name': 'Page'}, + 'changed_by': ('django.db.models.fields.CharField', [], {'max_length': '70'}), + 'created_by': ('django.db.models.fields.CharField', [], {'max_length': '70'}), + 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'in_navigation': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True', 'blank': 'True'}), + 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'limit_visibility_in_menu': ('django.db.models.fields.SmallIntegerField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'login_required': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'moderator_state': ('django.db.models.fields.SmallIntegerField', [], {'default': '1', 'blank': 'True'}), + 'navigation_extenders': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '80', 'null': 'True', 'blank': 'True'}), + 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.Page']"}), + 'placeholders': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['cms.Placeholder']", 'symmetrical': 'False'}), + 'publication_date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'publication_end_date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'published': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'publisher_is_draft': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True', 'blank': 'True'}), + 'publisher_public': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'publisher_draft'", 'unique': 'True', 'null': 'True', 'to': "orm['cms.Page']"}), + 'publisher_state': ('django.db.models.fields.SmallIntegerField', [], {'default': '0', 'db_index': 'True'}), + 'reverse_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '40', 'null': 'True', 'blank': 'True'}), + 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}), + 'soft_root': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True', 'blank': 'True'}), + 'template': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) + }, + 'cms.pagemoderator': { + 'Meta': {'object_name': 'PageModerator'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'moderate_children': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'moderate_descendants': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'moderate_page': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'page': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Page']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'cms.pagemoderatorstate': { + 'Meta': {'object_name': 'PageModeratorState'}, + 'action': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'blank': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'message': ('django.db.models.fields.TextField', [], {'default': "''", 'max_length': '1000', 'blank': 'True'}), + 'page': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Page']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}) + }, + 'cms.pagepermission': { + 'Meta': {'object_name': 'PagePermission'}, + 'can_add': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), + 'can_change': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), + 'can_change_advanced_settings': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'can_change_permissions': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'can_delete': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), + 'can_moderate': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), + 'can_move_page': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), + 'can_publish': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), + 'can_view': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'grant_on': ('django.db.models.fields.IntegerField', [], {'default': '5'}), + 'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'page': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Page']", 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cms.pageuser': { + 'Meta': {'object_name': 'PageUser', '_ormbases': ['auth.User']}, + 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_users'", 'to': "orm['auth.User']"}), + 'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) + }, + 'cms.pageusergroup': { + 'Meta': {'object_name': 'PageUserGroup', '_ormbases': ['auth.Group']}, + 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_usergroups'", 'to': "orm['auth.User']"}), + 'group_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.Group']", 'unique': 'True', 'primary_key': 'True'}) + }, + 'cms.placeholder': { + 'Meta': {'object_name': 'Placeholder'}, + 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) + }, + 'cms.title': { + 'Meta': {'unique_together': "(('language', 'page'),)", 'object_name': 'Title'}, + 'application_urls': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'has_url_overwrite': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), + 'menu_title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'meta_description': ('django.db.models.fields.TextField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'meta_keywords': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'page': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'title_set'", 'to': "orm['cms.Page']"}), + 'page_title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}), + 'redirect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'sites.site': { + 'Meta': {'object_name': 'Site', 'db_table': "'django_site'"}, + 'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + } + } + + complete_apps = ['cms'] diff --git a/cms/models/managers.py b/cms/models/managers.py index 09552a3b608..ff4044f219f 100644 --- a/cms/models/managers.py +++ b/cms/models/managers.py @@ -3,6 +3,7 @@ from django.contrib.sites.models import Site from django.db.models import Q +from cms.cache.permissions import get_permission_cache, set_permission_cache from cms.exceptions import NoPermissionsException from publisher import PublisherManager from cms.models.query import PageQuerySet @@ -385,7 +386,6 @@ def get_move_page_id_list(self, user, site): """ return self.__get_id_list(user, site, "can_move_page") - def get_moderate_id_list(self, user, site): """Give a list of pages which user can moderate. If moderation isn't installed, nobody can moderate. @@ -393,6 +393,11 @@ def get_moderate_id_list(self, user, site): if not settings.CMS_MODERATOR: return [] return self.__get_id_list(user, site, "can_moderate") + + def get_view_id_list(self, user, site): + """Give a list of pages which user can view. + """ + return self.__get_id_list(user, site, "can_view") ''' def get_change_list_id_list(self, user, site): @@ -417,29 +422,26 @@ def get_change_list_id_list(self, user, site): ''' def __get_id_list(self, user, site, attr): - # TODO: result of this method should be cached per user, and cache should - # be cleaned after some change in permissions / globalpermission - - if not user.is_authenticated() or not user.is_staff: - return [] - + from cms.models import (GlobalPagePermission, PagePermission, + MASK_PAGE, MASK_CHILDREN, MASK_DESCENDANTS) + if attr != "can_view": + if not user.is_authenticated() or not user.is_staff: + return [] if user.is_superuser or not settings.CMS_PERMISSION: # got superuser, or permissions aren't enabled? just return grant # all mark return PagePermissionsPermissionManager.GRANT_ALL - # read from cache if posssible - #cached = get_permission_cache(user, attr) - #if cached is not None: - # return cached - - from cms.models import GlobalPagePermission, PagePermission, MASK_PAGE,\ - MASK_CHILDREN, MASK_DESCENDANTS + cached = get_permission_cache(user, attr) + if cached is not None: + return cached # check global permissions - in_global_permissions = GlobalPagePermission.objects.with_user(user).filter(**{attr: True, 'sites__in':[site]}).count() - if in_global_permissions: + global_permissions = GlobalPagePermission.objects.with_user(user) + if global_permissions.filter(**{ + attr: True, 'sites__in':[site] + }).exists(): # user or his group are allowed to do `attr` action - # !IMPORTANT: page permissions must not override global permissions + # !IMPORTANT: page permissions must not override global permissions return PagePermissionsPermissionManager.GRANT_ALL # for standard users without global permissions, get all pages for him or # his group/s @@ -458,7 +460,7 @@ def __get_id_list(self, user, site, attr): elif permission.grant_on & MASK_DESCENDANTS: page_id_allow_list.extend(permission.page.get_descendants().values_list('id', flat=True)) # store value in cache - #set_permission_cache(user, attr, page_id_allow_list) + set_permission_cache(user, attr, page_id_allow_list) return page_id_allow_list diff --git a/cms/models/pagemodel.py b/cms/models/pagemodel.py index 7d750c04849..a60861ae5bc 100644 --- a/cms/models/pagemodel.py +++ b/cms/models/pagemodel.py @@ -82,6 +82,9 @@ class Page(MpttPublisher): permissions = PagePermissionsPermissionManager() class Meta: + permissions = ( + ('view_page', 'Can view page'), + ) verbose_name = _('page') verbose_name_plural = _('pages') ordering = ('site','tree_id', 'lft') @@ -635,6 +638,30 @@ def get_template_name(self): return t[1] return _("default") + def has_view_permission(self, request): + from cms.models.permissionmodels import PagePermission + # staff is allowed to see everything + if request.user.is_staff and settings.CMS_PUBLIC_FOR_STAFF: + return True + # does any restriction exist? + restricted = PagePermission.objects.filter(page=self, can_view=True).count() + # anonymous user, no restriction saved in database + if not request.user.is_authenticated() and not restricted: + return True + # authenticated user, no restriction and public for all fallback + if (request.user.is_authenticated() and not restricted and + settings.CMS_PUBLIC_FOR_ALL): + return True + # anyonymous user, page has restriction, generally false + if not request.user.is_authenticated() and restricted: + return False + # Authenticated user + # Django wide auth perms "can_view" or cms auth perms "can_view" + opts = self._meta + codename = '%s.%s_%s' % (opts.app_label, "view", opts.object_name.lower()) + return (request.user.has_perm(codename) or + self.has_generic_permission(request, "view")) + def has_change_permission(self, request): opts = self._meta if request.user.is_superuser: @@ -691,7 +718,8 @@ def has_generic_permission(self, request, type): or request.user.pk != self.permission_user_cache.pk: from cms.utils.permissions import has_generic_permission self.permission_user_cache = request.user - setattr(self, att_name, has_generic_permission(self.id, request.user, type, self.site_id)) + setattr(self, att_name, has_generic_permission( + self.id, request.user, type, self.site_id)) if getattr(self, att_name): self.permission_edit_cache = True return getattr(self, att_name) diff --git a/cms/models/permissionmodels.py b/cms/models/permissionmodels.py index 2e400c3f6f0..efd4f4a7043 100644 --- a/cms/models/permissionmodels.py +++ b/cms/models/permissionmodels.py @@ -24,6 +24,7 @@ class AbstractPagePermission(models.Model): can_change_permissions = models.BooleanField(_("can change permissions"), default=False, help_text=_("on page level")) can_move_page = models.BooleanField(_("can move"), default=True) can_moderate = models.BooleanField(_("can moderate"), default=True) + can_view = models.BooleanField(_("view restricted"), default=False, help_text=_("frontend view restriction")) class Meta: abstract = True diff --git a/cms/signals.py b/cms/signals.py index e9ec8541510..c2d10262e2f 100644 --- a/cms/signals.py +++ b/cms/signals.py @@ -3,7 +3,8 @@ from django.db.models import signals from django.dispatch import Signal -from cms.cache.permissions import (clear_user_permission_cache, clear_permission_cache) +from cms.cache.permissions import ( + clear_user_permission_cache, clear_permission_cache) from cms.models import (Page, Title, CMSPlugin, Placeholder, PagePermission, GlobalPagePermission, PageUser, PageUserGroup) @@ -230,11 +231,11 @@ def pre_delete_user(instance, **kwargs): def pre_save_group(instance, raw, **kwargs): if instance.pk: - for user in instance.user_set.filter(is_staff=True): + for user in instance.user_set.all(): clear_user_permission_cache(user) def pre_delete_group(instance, **kwargs): - for user in instance.user_set.filter(is_staff=True): + for user in instance.user_set.all(): clear_user_permission_cache(user) def pre_save_pagepermission(instance, raw, **kwargs): @@ -248,6 +249,7 @@ def pre_delete_pagepermission(instance, **kwargs): def pre_save_globalpagepermission(instance, raw, **kwargs): if instance.user: clear_user_permission_cache(instance.user) + menu_pool.clear(all=True) def pre_delete_globalpagepermission(instance, **kwargs): if instance.user: @@ -257,12 +259,17 @@ def pre_save_delete_page(instance, **kwargs): clear_permission_cache() if settings.CMS_PERMISSION: - # TODO: will this work also with PageUser and PageGroup?? signals.pre_save.connect(pre_save_user, sender=User) signals.pre_delete.connect(pre_delete_user, sender=User) + + signals.pre_save.connect(pre_save_user, sender=PageUser) + signals.pre_delete.connect(pre_delete_user, sender=PageUser) signals.pre_save.connect(pre_save_group, sender=Group) signals.pre_delete.connect(pre_delete_group, sender=Group) + + signals.pre_save.connect(pre_save_group, sender=PageUserGroup) + signals.pre_delete.connect(pre_delete_group, sender=PageUserGroup) signals.pre_save.connect(pre_save_pagepermission, sender=PagePermission) signals.pre_delete.connect(pre_delete_pagepermission, sender=PagePermission) diff --git a/cms/templates/admin/cms/page/change_list_tree.html b/cms/templates/admin/cms/page/change_list_tree.html index 468a4982718..4fa0888268c 100644 --- a/cms/templates/admin/cms/page/change_list_tree.html +++ b/cms/templates/admin/cms/page/change_list_tree.html @@ -14,6 +14,7 @@
{% trans "start" %}
{% trans "end" %}
+
{% trans "restricted" %}
{% if CMS_MODERATOR %}
{% trans "last changes" %}
{% endif %}
{% trans "changed by" %}
diff --git a/cms/templates/admin/cms/page/menu_item.html b/cms/templates/admin/cms/page/menu_item.html index 8447720d6d2..214ebb43d3c 100644 --- a/cms/templates/admin/cms/page/menu_item.html +++ b/cms/templates/admin/cms/page/menu_item.html @@ -84,6 +84,7 @@
{{ page.publication_date|date:"Y-m-d" }}
{{ page.publication_end_date|date:"Y-m-d" }}
+
{{ page|is_restricted:request }}
{% if CMS_MODERATOR %}
diff --git a/cms/templates/admin/cms/page/permissions.html b/cms/templates/admin/cms/page/permissions.html index ffd4ccf0a24..fb64e447e3b 100644 --- a/cms/templates/admin/cms/page/permissions.html +++ b/cms/templates/admin/cms/page/permissions.html @@ -11,6 +11,7 @@ {% trans 'Can publish' %} {% trans 'Can change permissions' %} {% trans 'Can move' %} + {% trans 'Can view' %} {% trans 'Grant on' %} @@ -38,6 +39,7 @@ {{ permission.can_publish|boolean_icon }} {{ permission.can_change_permissions|boolean_icon }} {{ permission.can_move_page|boolean_icon }} + {{ permission.can_view|boolean_icon }} {% if meta.0 %}{% trans 'All' %} {% else %}{{ permission.get_grant_on_display }} {% endif%} diff --git a/cms/templatetags/cms_admin.py b/cms/templatetags/cms_admin.py index a82ff08db12..7d8eae86ef1 100644 --- a/cms/templatetags/cms_admin.py +++ b/cms/templatetags/cms_admin.py @@ -5,6 +5,7 @@ from django.utils.translation import ugettext_lazy as _ from cms.models import MASK_PAGE, MASK_CHILDREN, MASK_DESCENDANTS from cms.utils.admin import get_admin_menu_item_context +from cms.utils.permissions import get_any_page_view_permissions register = template.Library() @@ -54,6 +55,14 @@ def boolean_icon(value): BOOLEAN_MAPPING = {True: 'yes', False: 'no', None: 'unknown'} return mark_safe(u'%s' % (settings.ADMIN_MEDIA_PREFIX, BOOLEAN_MAPPING[value], value)) +@register.filter +def is_restricted(page, request): + all_perms = get_any_page_view_permissions(request, page) + icon = boolean_icon(all_perms.exists()) + return mark_safe('%s' % ( + u', '.join((perm.get_grant_on_display() for perm in all_perms)) or None, icon)) + + @register.filter def moderator_choices(page, user): """Returns simple moderator choices used for checkbox rendering, as a value diff --git a/cms/tests/base.py b/cms/tests/base.py index 3c0b4e836f0..296d8f28b0d 100644 --- a/cms/tests/base.py +++ b/cms/tests/base.py @@ -91,6 +91,10 @@ def get_new_page_data(self, parent_id=''): page_data['pagepermission_set-TOTAL_FORMS'] = 0 page_data['pagepermission_set-INITIAL_FORMS'] = 0 page_data['pagepermission_set-MAX_NUM_FORMS'] = 0 + + page_data['pagepermission_set-2-TOTAL_FORMS'] = 0 + page_data['pagepermission_set-2-INITIAL_FORMS'] = 0 + page_data['pagepermission_set-2-MAX_NUM_FORMS'] = 0 self.counter = self.counter + 1 return page_data @@ -116,8 +120,10 @@ def assertObjectDoesNotExist(self, qs, **filter): return raise self.failureException, "ObjectDoesNotExist not raised" - def create_page(self, parent_page=None, user=None, position="last-child", title=None, site=1, published=False, in_navigation=False): - """Common way for page creation with some checks + def create_page(self, parent_page=None, user=None, position="last-child", + title=None, site=1, published=False, in_navigation=False): + """ + Common way for page creation with some checks """ if user: # change logged in user diff --git a/cms/tests/permmod.py b/cms/tests/permmod.py index e804829892a..100b639bc52 100644 --- a/cms/tests/permmod.py +++ b/cms/tests/permmod.py @@ -1,14 +1,15 @@ from django.contrib.auth.models import User +from django.contrib.sites.models import Site from django.conf import settings -from cms.tests.base import CMSTestCase, URL_CMS_PAGE_ADD, URL_CMS_PAGE,\ - URL_CMS_PAGE_CHANGE -from cms.models import Title, Page, CMSPlugin -from cms.models.permissionmodels import PagePermission -from cms.models.moderatormodels import ACCESS_PAGE_AND_DESCENDANTS,\ - ACCESS_CHOICES, ACCESS_DESCENDANTS, ACCESS_CHILDREN + +from cms.models import Page, CMSPlugin +from cms.models.permissionmodels import PagePermission, GlobalPagePermission +from cms.models.moderatormodels import ACCESS_PAGE_AND_DESCENDANTS, ACCESS_DESCENDANTS +from cms.tests.base import CMSTestCase, URL_CMS_PAGE_ADD, URL_CMS_PAGE, URL_CMS_PAGE_CHANGE class PermissionModeratorTestCase(CMSTestCase): - """Permissions and moderator together + """ + Permissions and moderator together Fixtures contains 3 users and 1 published page and some other stuff @@ -37,6 +38,11 @@ class PermissionModeratorTestCase(CMSTestCase): 4. `pageA`: - created by super - master can add/change/delete on it and descendants + + 5. `pageB`: + - created by super + - normal can view on it and descendants + """ #dumpdata -format=yaml -e south -e reversion -e contentypes > ../cms/tests/fixtures/permission.yaml @@ -46,12 +52,12 @@ class PermissionModeratorTestCase(CMSTestCase): ############################################################################ # set of heler functions - def create_page_user(self, username, password=None, + def create_page_user(self, username, password=None, can_add_page=True, can_change_page=True, can_delete_page=True, can_recover_page=True, can_add_pageuser=True, can_change_pageuser=True, can_delete_pageuser=True, can_add_pagepermission=True, can_change_pagepermission=True, can_delete_pagepermission=True, - grant_all=False): + grant_all=False, can_view_page=True): """ Helper function for creating page user, through form on: /admin/cms/pageuser/add/ @@ -71,6 +77,7 @@ def create_page_user(self, username, password=None, 'password1': password, 'password2': password, 'can_add_page': can_add_page, + 'can_view_page': can_view_page, 'can_change_page': can_change_page, 'can_delete_page': can_delete_page, 'can_recover_page': can_recover_page, @@ -85,20 +92,22 @@ def create_page_user(self, username, password=None, self.assertRedirects(response, '/admin/cms/pageuser/') return User.objects.get(username=username) - - def assign_user_to_page(self, page, user, grant_on=ACCESS_PAGE_AND_DESCENDANTS, + + def assign_user_to_page(self, user, page=None, grant_on=ACCESS_PAGE_AND_DESCENDANTS, can_add=False, can_change=False, can_delete=False, can_change_advanced_settings=False, can_publish=False, can_change_permissions=False, can_move_page=False, can_moderate=False, - grant_all=False): - """Assigns given user to page, and gives him requested permissions. + can_recover_page=True, can_view=False, grant_all=False, + global_permission=False): + """ + Assigns given user to page, and gives him requested permissions. Note: this is not happening over frontend, maybe a test for this in future will be nice. """ - if grant_all: - return self.assign_user_to_page(page, user, grant_on, - True, True, True, True, True, True, True, True) + if grant_all and not global_permission: + return self.assign_user_to_page(user, page, grant_on, + True, True, True, True, True, True, True, True, False, True) # just check if the current logged in user even can change the page and # see the permission inline @@ -114,9 +123,17 @@ def assign_user_to_page(self, page, user, grant_on=ACCESS_PAGE_AND_DESCENDANTS, 'can_change_permissions': can_change_permissions, 'can_move_page': can_move_page, 'can_moderate': can_moderate, + 'can_view': can_view, } - page_permission = PagePermission(page=page, user=user, grant_on=grant_on, **data) - page_permission.save() + if global_permission: + page_permission = GlobalPagePermission( + user=user, can_recover_page=can_recover_page, **data) + page_permission.save() + page_permission.sites.add(Site.objects.get_current()) + else: + page_permission = PagePermission( + page=page, user=user, grant_on=grant_on, **data) + page_permission.save() return page_permission def add_plugin(self, user, page=None): @@ -220,6 +237,10 @@ def slave_page(self): def master_page(self): return Page.objects.drafts().get(title_set__slug="master") + @property + def page_b(self): + return Page.objects.drafts().get(title_set__slug="pageb") + ############################################################################ # tests @@ -229,7 +250,11 @@ def setUp(self): is_superuser=True) self.user_super.set_password("super") self.user_super.save() - + + self.user_staff = User(username="staff", is_staff=True, is_active=True) + self.user_staff.set_password("staff") + self.user_staff.save() + # create basic structure ... self.login_user(self.user_super) @@ -245,11 +270,11 @@ def setUp(self): self.user_master = self.create_page_user("master", grant_all=True) # assign master user under home page - self.assign_user_to_page(home, self.user_master, grant_on=ACCESS_DESCENDANTS, + self.assign_user_to_page(self.user_master, home, grant_on=ACCESS_DESCENDANTS, grant_all=True) # and to master page - self.assign_user_to_page(master, self.user_master, grant_all=True) + self.assign_user_to_page(self.user_master, master, grant_all=True) # slave page & slave user @@ -257,12 +282,19 @@ def setUp(self): self.user_slave = self.create_page_user("slave", can_add_page=True, can_change_page=True, can_delete_page=True) - self.assign_user_to_page(slave, self.user_slave, grant_all=True) + self.assign_user_to_page(self.user_slave, slave, grant_all=True) + page_b = self.create_page(title="pageB", published=True) + page_b = self.publish_page(page_b, approve=True) + + # Normal user + self.user_normal = self.create_page_user("normal") + # it's allowed for the normal user to view the page + perm = self.assign_user_to_page(self.user_normal, page_b, can_view=True) + # create page_a - sample page from master - page_a = self.create_page(title="pageA") - self.assign_user_to_page(page_a, self.user_master, + self.assign_user_to_page(self.user_master, page_a, can_add=True, can_change=True, can_delete=True, can_publish=True, can_move_page=True, can_moderate=True) @@ -273,7 +305,6 @@ def setUp(self): self.client.logout() # login super again self.login_user(self.user_super) - def test_00_test_configuration(self): """Just check if we have right configuration for this test. Problem lies @@ -663,3 +694,55 @@ def test_17_plugins_get_published(self): self.assertEqual(CMSPlugin.objects.all().count(), 1) self.publish_page(page, True, self.user_super, True) self.assertEqual(CMSPlugin.objects.all().count(), 2) + + def test_18_superuser_can_view(self): + self.login_user(self.user_super) + response = self.client.get("/fr/pageb/") + self.assertEqual(response.status_code, 200) + + def test_19_superuser_can_view(self): + self.login_user(self.user_staff) + response = self.client.get("/fr/pageb/") + self.assertEqual(response.status_code, 200) + + def test_20_user_normal_can_view(self): + self.login_user(self.user_normal) + response = self.client.get("/fr/pageb/") + self.assertEqual(response.status_code, 200) + self.client.logout() + response = self.client.get("/fr/pageb/") + self.assertEqual(response.status_code, 200) + + def test_21_user_globalpermission(self): + global_page = self.create_page(title="global", published=True) + global_page = self.publish_page(global_page, approve=True) + + # Global user + user_global = self.create_page_user("global") + user_global.is_staff = False + user_global.save() # Preven is_staff permission + # it's allowed for the normal user to view the page + self.assign_user_to_page(user_global, global_page, + global_permission=True, can_view=True) + + self.login_user(user_global) + response = self.client.get("/fr/global/") + self.assertEqual(response.status_code, 200) + + user_non_global = User(username="nonglobal", is_active=True) + user_non_global.set_password("nonglobal") + user_non_global.save() + self.login_user(user_non_global) + response = self.client.get("/fr/global/") + self.assertEqual(response.status_code, 404, response.content) + + def test_22_anonymous_user(self): + settings.CMS_PUBLIC_FOR_ALL = True + response = self.client.get("/fr/pageb/") + self.assertEqual(response.status_code, 200) + + # default of when to show pages to anonymous user doesn't take + # global permissions into account + settings.CMS_PUBLIC_FOR_ALL = False + response = self.client.get("/fr/pageb/") + self.assertEqual(response.status_code, 200) diff --git a/cms/utils/permissions.py b/cms/utils/permissions.py index 0d575e93b0b..3f75dba25db 100644 --- a/cms/utils/permissions.py +++ b/cms/utils/permissions.py @@ -87,13 +87,39 @@ def has_page_change_permission(request): """ from cms.utils.plugins import current_site opts = Page._meta - if request.user.is_superuser or \ - (request.user.has_perm(opts.app_label + '.' + opts.get_change_permission()) and - (GlobalPagePermission.objects.with_user(request.user).filter(can_change=True, sites__in=[current_site(request)]).count()>0) or - has_any_page_change_permissions(request)): + if request.user.is_superuser or ( + request.user.has_perm(opts.app_label + '.' + opts.get_change_permission()) and ( + GlobalPagePermission.objects.with_user(request.user).filter( + can_change=True, sites__in=[current_site(request)] + ).exists()) or has_any_page_change_permissions(request)): return True return False +def has_page_view_permission(request): + """ + Return true if the current user has permission to view any page. This is + just used for building the tree - only superuser, or user with can_change in + globalpagepermission can change a page. + """ + from cms.utils.plugins import current_site + opts = self._meta + codename = '%s.%s_%s' % (opts.app_label, "view", opts.object_name.lower()) + if request.user.is_superuser or ( + request.user.has_perm(codename) and ( + GlobalPagePermission.objects.with_user(request.user).filter( + can_view=True, sites__in=[current_site(request)] + ).exists()) or ( + settings.CMS_PUBLIC_FOR_STAFF and request.user.is_staff)): + return True + return False + +def get_any_page_view_permissions(request, page): + from cms.utils.plugins import current_site + return PagePermission.objects.filter( + page__pk=page.pk, + page__site=current_site(request), + can_view=True) + def get_user_permission_level(user): """ @@ -114,8 +140,8 @@ def get_user_permission_level(user): 2. """ - if user.is_superuser or \ - GlobalPagePermission.objects.with_can_change_permissions(user).count(): + if (user.is_superuser or + GlobalPagePermission.objects.with_can_change_permissions(user).exists()): # those return 0 try: diff --git a/cms/views.py b/cms/views.py index 689024ddaf8..a00a422b8b9 100644 --- a/cms/views.py +++ b/cms/views.py @@ -1,18 +1,17 @@ from django.conf import settings -from cms.appresolver import applications_page_check -from cms.utils import auto_render, get_template_from_request, \ - get_language_from_request -from cms.utils.moderator import get_page_queryset -from django.contrib.sites.models import Site from django.core.urlresolvers import reverse -from django.db.models.query_utils import Q +from django.db.models import Q from django.http import Http404, HttpResponseRedirect from django.shortcuts import get_object_or_404 from django.utils.http import urlquote -from django.conf import settings as django_settings -from cms.utils.i18n import get_fallback_languages -from cms.exceptions import NoHomeFound + +from django.contrib.sites.models import Site + from cms.apphook_pool import apphook_pool +from cms.appresolver import applications_page_check +from cms.exceptions import NoHomeFound +from cms.utils import (auto_render, get_template_from_request, + get_language_from_request, moderator, i18n) def get_current_page(path, lang, queryset, home_slug=None, home_tree_id=None): """Helper for getting current page from path depending on language @@ -46,7 +45,7 @@ def get_current_page(path, lang, queryset, home_slug=None, home_tree_id=None): return page, None else: path = None - for alt_lang in get_fallback_languages(lang): + for alt_lang in i18n.get_fallback_languages(lang): if alt_lang in langs: path = '/%s%s' % (alt_lang, page.get_absolute_url(language=lang, fallback=True)) return None, path @@ -55,8 +54,10 @@ def get_current_page(path, lang, queryset, home_slug=None, home_tree_id=None): return None, None def details(request, page_id=None, slug=None, template_name=settings.CMS_TEMPLATES[0][0], no404=False): + # Import again to get to the right settings + from django.conf import settings # get the right model - page_queryset = get_page_queryset(request) + page_queryset = moderator.get_page_queryset(request) lang = get_language_from_request(request) site = Site.objects.get_current() @@ -105,26 +106,28 @@ def details(request, page_id=None, slug=None, template_name=settings.CMS_TEMPLAT CMS_MEDIA_URL = settings.CMS_MEDIA_URL return "cms/new.html", locals() raise Http404("CMS: No page found for site %s" % unicode(site.name)) - + if current_page: has_change_permissions = current_page.has_change_permission(request) + has_view_permissions = current_page.has_view_permission(request) request._current_page_cache = current_page - redirect_url = current_page.get_redirect(language=lang) if redirect_url: if settings.i18n_installed and redirect_url[0] == "/": redirect_url = "/%s/%s" % (lang, redirect_url.lstrip("/")) # add language prefix to url return HttpResponseRedirect(redirect_url) - if current_page.login_required and not request.user.is_authenticated(): if settings.i18n_installed: path = urlquote("/%s%s" % (request.LANGUAGE_CODE, request.get_full_path())) else: path = urlquote(request.get_full_path()) - tup = django_settings.LOGIN_URL , "next", path + tup = settings.LOGIN_URL , "next", path return HttpResponseRedirect('%s?%s=%s' % tup) else: has_change_permissions = False + has_view_permissions = settings.CMS_PUBLIC_FOR_ALL + if not has_view_permissions: + raise Http404("CMS: No page found for site %s" % unicode(site.name)) return template_name, locals() details = auto_render(details) diff --git a/example/settings.py b/example/settings.py index f202475ccc1..487b6fee46b 100644 --- a/example/settings.py +++ b/example/settings.py @@ -156,7 +156,7 @@ } CMS_SOFTROOT = True -CMS_MODERATOR = True +CMS_MODERATOR = False CMS_PERMISSION = True CMS_REDIRECTS = True CMS_SEO_FIELDS = True diff --git a/menus/menu_pool.py b/menus/menu_pool.py index f40995bbe58..e38df6aa917 100644 --- a/menus/menu_pool.py +++ b/menus/menu_pool.py @@ -11,7 +11,9 @@ def lex_cache_key(key): """ Returns the language and site ID a cache key is related to. """ - return key.rsplit('_', 2)[1:] + if key.endswith("_user"): + return key.split('_user')[0].rsplit('_', 3)[1:] + return key.rsplit('_', 2)[1:] + [None] class MenuPool(object): def __init__(self): @@ -31,9 +33,11 @@ def discover_menus(self): from menus.modifiers import register register() self.discovered = True - - def clear(self, site_id=None, language=None): + + def clear(self, site_id=None, language=None, all=False): def relevance_test(keylang, keysite): + if all: + return True sok = not site_id lok = not language if site_id and (site_id == keysite or site_id == int(keysite)): @@ -43,7 +47,7 @@ def relevance_test(keylang, keysite): return lok and sok to_be_deleted = [] for key in self.cache_keys: - keylang, keysite = lex_cache_key(key) + keylang, keysite, keyuser = lex_cache_key(key) if relevance_test(keylang, keysite): to_be_deleted.append(key) cache.delete_many(to_be_deleted) @@ -67,6 +71,8 @@ def _build_nodes(self, request, site_id): lang = get_language() prefix = getattr(settings, "CMS_CACHE_PREFIX", "menu_cache_") key = "%smenu_nodes_%s_%s" % (prefix, lang, site_id) + if request.user.is_authenticated(): + key += "_%s_user" % request.user.pk self.cache_keys.add(key) cached_nodes = cache.get(key, None) if cached_nodes: diff --git a/tests/testapp/settings.py b/tests/testapp/settings.py index 8002021f52d..a2ec78681b6 100644 --- a/tests/testapp/settings.py +++ b/tests/testapp/settings.py @@ -154,6 +154,9 @@ CMS_SOFTROOT = True CMS_MODERATOR = True CMS_PERMISSION = True +CMS_PUBLIC_FOR_ALL = False +CMS_PUBLIC_FOR_STAFF = True +CMS_PERMISSION_CACHE_DURATION = 0 CMS_REDIRECTS = True CMS_SEO_FIELDS = True CMS_FLAT_URLS = False From b164b306006a2497a7106c79d02b62a7ae77b60e Mon Sep 17 00:00:00 2001 From: Tobias von Klipstein Date: Fri, 16 Jul 2010 09:13:52 +0200 Subject: [PATCH 006/689] sometimes there are no ancestors --- cms/models/pagemodel.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cms/models/pagemodel.py b/cms/models/pagemodel.py index a60861ae5bc..1850caf249d 100644 --- a/cms/models/pagemodel.py +++ b/cms/models/pagemodel.py @@ -474,8 +474,10 @@ def get_absolute_url(self, language=None, fallback=True): except NoHomeFound: pass ancestors = self.get_cached_ancestors(ascending=True) - if self.parent_id and ancestors[-1].pk == home_pk and not self.get_title_obj_attribute("has_url_overwrite", language, fallback) and path: - path = "/".join(path.split("/")[1:]) + # sometimes there are no ancestors + if len(ancestors)!=0: + if self.parent_id and ancestors[-1].pk == home_pk and not self.get_title_obj_attribute("has_url_overwrite", language, fallback) and path: + path = "/".join(path.split("/")[1:]) if settings.CMS_DBGETTEXT and settings.CMS_DBGETTEXT_SLUGS: path = '/'.join([ugettext(p) for p in path.split('/')]) From c02eaf7f9d41cc10c1464fb77c1b57ef0a23b3d5 Mon Sep 17 00:00:00 2001 From: Tobias von Klipstein Date: Sat, 10 Jul 2010 18:37:28 +0200 Subject: [PATCH 007/689] fixing minor bug within permission caching (using the right var) --- cms/admin/change_list.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cms/admin/change_list.py b/cms/admin/change_list.py index 200464860ec..66f64d693ca 100644 --- a/cms/admin/change_list.py +++ b/cms/admin/change_list.py @@ -124,7 +124,7 @@ def set_items(self, request): # caching the permissions page.permission_edit_cache = perm_edit_ids == Page.permissions.GRANT_ALL or page.pk in perm_edit_ids page.permission_publish_cache = perm_publish_ids == Page.permissions.GRANT_ALL or page.pk in perm_publish_ids - page.permission_advanced_settings_cache = perm_publish_ids == Page.permissions.GRANT_ALL or page.pk in perm_advanced_settings_ids + page.permission_advanced_settings_cache = perm_advanced_settings_ids == Page.permissions.GRANT_ALL or page.pk in perm_advanced_settings_ids page.permission_user_cache = request.user if settings.CMS_MODERATOR: From 06de1354bd9fc3e478bf353df6754fadabb8e521 Mon Sep 17 00:00:00 2001 From: Jannis Leidel Date: Mon, 29 Nov 2010 12:00:35 +0100 Subject: [PATCH 008/689] Don't overwrite the globally imported permissions module with a local variable. --- cms/admin/pageadmin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py index 6b4dadde7f4..8b78838b4ec 100644 --- a/cms/admin/pageadmin.py +++ b/cms/admin/pageadmin.py @@ -772,13 +772,13 @@ def get_permissions(self, request, page_id): global_page_permissions = GlobalPagePermission.objects.filter(sites__in=[page.site_id]) page_permissions = PagePermission.objects.for_page(page) - permissions = list(global_page_permissions) + list(page_permissions) + all_permissions = list(global_page_permissions) + list(page_permissions) # does he can change global permissions ? has_global = permissions.has_global_change_permissions_permission(request.user) permission_set = [] - for permission in permissions: + for permission in all_permissions: if isinstance(permission, GlobalPagePermission): if has_global: permission_set.append([(True, True), permission]) From 5899843801bc7972548c2a26044c312892b1a097 Mon Sep 17 00:00:00 2001 From: jalaziz Date: Wed, 12 Jan 2011 03:05:21 -0800 Subject: [PATCH 009/689] Updated mptt support to 0.4.2+. Django-cms no longer needs to maintain mptt. (cherry-picking from commit b2e96e73f02316e48908aa18cff0625c83930067) --- cms/models/metaclasses.py | 17 +---- cms/models/pagemodel.py | 8 +- cms/models/pluginmodel.py | 7 +- cms/tests/base.py | 2 +- cms/tests/page.py | 4 +- cms/tests/permmod.py | 3 + cms/tests/plugins.py | 14 ++-- cms/tests/rendering.py | 6 +- publisher/__init__.py | 5 +- publisher/mptt_support.py | 151 -------------------------------------- 10 files changed, 29 insertions(+), 188 deletions(-) delete mode 100644 publisher/mptt_support.py diff --git a/cms/models/metaclasses.py b/cms/models/metaclasses.py index e6f552fb596..20e7708ad15 100644 --- a/cms/models/metaclasses.py +++ b/cms/models/metaclasses.py @@ -1,18 +1,15 @@ from django.conf import settings from django.db.models.base import ModelBase from publisher.manager import PublisherManager -from publisher.mptt_support import install_mptt, finish_mptt +from mptt.models import MPTTModelBase from publisher.options import PublisherOptions -class PageMetaClass(ModelBase): +class PageMetaClass(MPTTModelBase): def __new__(cls, name, bases, attrs): super_new = super(PageMetaClass, cls).__new__ if not settings.CMS_MODERATOR: - attrs = install_mptt(cls, name, bases, attrs) - new_class = super_new(cls, name, bases, attrs) - finish_mptt(new_class) - return new_class + return super_new(cls, name, bases, attrs) if 'objects' in attrs: if not isinstance(attrs['objects'], PublisherManager): @@ -27,11 +24,5 @@ def __new__(cls, name, bases, attrs): # build meta object publisher_meta = attrs.pop('PublisherMeta', None) attrs['_publisher_meta'] = PublisherOptions(name, bases, publisher_meta) - - # take care of mptt, if required - attrs = install_mptt(cls, name, bases, attrs) - - new_class = super_new(cls, name, bases, attrs) - finish_mptt(new_class) - return new_class \ No newline at end of file + return super_new(cls, name, bases, attrs) diff --git a/cms/models/pagemodel.py b/cms/models/pagemodel.py index fa4cca0fc30..ed94c85f4d7 100644 --- a/cms/models/pagemodel.py +++ b/cms/models/pagemodel.py @@ -21,11 +21,11 @@ from menus.menu_pool import menu_pool from os.path import join from publisher.errors import MpttPublisherCantPublish -from publisher.mptt_support import Mptt +from mptt.models import MPTTModel import copy -class Page(Mptt): +class Page(MPTTModel): """ A simple hierarchical page model """ @@ -1050,14 +1050,14 @@ def _publisher_save_public(self, obj): if not self.publisher_public_id: # is there anybody on left side? if prev_sibling: - obj.insert_at(prev_sibling.publisher_public, position='right', commit=False) + obj.insert_at(prev_sibling.publisher_public, position='right', save=False) else: # it is a first time published object, perform insert_at: parent, public_parent = self.parent, None if parent: public_parent = parent.publisher_public if public_parent: - obj.insert_at(public_parent, commit=False) + obj.insert_at(public_parent, save=False) else: # check if object was moved / structural tree change prev_public_sibling = obj.get_previous_fitlered_sibling() diff --git a/cms/models/pluginmodel.py b/cms/models/pluginmodel.py index 3b0f3f9f6ca..b5ec6a36fb0 100644 --- a/cms/models/pluginmodel.py +++ b/cms/models/pluginmodel.py @@ -12,10 +12,10 @@ from django.db.models.query_utils import DeferredAttribute from django.utils.translation import ugettext_lazy as _ from os.path import join -from publisher.mptt_support import Mptt, install_mptt +from mptt.models import MPTTModel, MPTTModelBase import warnings -class PluginModelBase(ModelBase): +class PluginModelBase(MPTTModelBase): """ Metaclass for all plugins. """ @@ -23,7 +23,6 @@ def __new__(cls, name, bases, attrs): render_meta = attrs.pop('RenderMeta', None) if render_meta is not None: attrs['_render_meta'] = render_meta() - attrs = install_mptt(cls, name, bases, attrs) new_class = super(PluginModelBase, cls).__new__(cls, name, bases, attrs) found = False bbases = bases @@ -41,7 +40,7 @@ def __new__(cls, name, bases, attrs): return new_class -class CMSPlugin(Mptt): +class CMSPlugin(MPTTModel): __metaclass__ = PluginModelBase placeholder = models.ForeignKey(Placeholder, editable=False, null=True) diff --git a/cms/tests/base.py b/cms/tests/base.py index 1e057d560c7..18fa0fd1021 100644 --- a/cms/tests/base.py +++ b/cms/tests/base.py @@ -360,7 +360,7 @@ def add_plugin(self, user=None, page=None, placeholder=None, language='en', body position=1, language=language ) - plugin_base.insert_at(None, position='last-child', commit=False) + plugin_base.insert_at(None, position='last-child', save=False) plugin = Text(body=body) plugin_base.set_base_attr(plugin) diff --git a/cms/tests/page.py b/cms/tests/page.py index 65d035e8aa8..6d05b3de1ad 100644 --- a/cms/tests/page.py +++ b/cms/tests/page.py @@ -326,7 +326,7 @@ def test_16_delete_with_plugins(self): position=1, language=settings.LANGUAGES[0][0] ) - plugin_base.insert_at(None, position='last-child', commit=False) + plugin_base.insert_at(None, position='last-child', save=False) plugin = Text(body='') plugin_base.set_base_attr(plugin) @@ -411,4 +411,4 @@ def tearDown(self): def test_01_get_page_from_request_fakeadmin_nopage(self): request = self.get_request('/admin/') page = get_page_from_request(request) - self.assertEqual(page, None) \ No newline at end of file + self.assertEqual(page, None) diff --git a/cms/tests/permmod.py b/cms/tests/permmod.py index b135126f095..c2340c247b5 100644 --- a/cms/tests/permmod.py +++ b/cms/tests/permmod.py @@ -439,6 +439,9 @@ def test_17_patricks_move(self): # perform movings under slave... self.login_user(self.user_slave) pg = self.move_page(pg, pc) + # We have to reload pe when using mptt >= 0.4.2, + # so that mptt realized that pg is no longer a child of pe + pe = self.reload_page(pe) pe = self.move_page(pe, pg) # reload all - moving has changed some attributes diff --git a/cms/tests/plugins.py b/cms/tests/plugins.py index 0dc9ae3ce20..49093b6b50c 100644 --- a/cms/tests/plugins.py +++ b/cms/tests/plugins.py @@ -337,7 +337,7 @@ def test_09_iheritplugin_media(self): placeholder=body, position=1, language=settings.LANGUAGE_CODE, lat=1, lng=1) - plugin.insert_at(None, position='last-child', commit=True) + plugin.insert_at(None, position='last-child', save=True) page = self.create_page(title='inherit from page') @@ -350,7 +350,7 @@ def test_09_iheritplugin_media(self): language=settings.LANGUAGE_CODE, from_page=inheritfrompage, from_language=settings.LANGUAGE_CODE) - inherit_plugin.insert_at(None, position='last-child', commit=True) + inherit_plugin.insert_at(None, position='last-child', save=True) request = self.get_request() context = RequestContext(request, {}) @@ -367,7 +367,7 @@ def test_10_fileplugin_icon_uppercase(self): language=settings.LANGUAGE_CODE, ) plugin.file.save("UPPERCASE.JPG", SimpleUploadedFile("UPPERCASE.jpg", "content"), False) - plugin.insert_at(None, position='last-child', commit=True) + plugin.insert_at(None, position='last-child', save=True) self.assertNotEquals(plugin.get_icon_url().find('jpg'), -1) response = self.client.get(plugin.get_icon_url(), follow=True) @@ -388,7 +388,7 @@ def test_11_copy_textplugin(self): placeholder=placeholder, position=1, language=self.FIRST_LANG) - plugin_base.insert_at(None, position='last-child', commit=False) + plugin_base.insert_at(None, position='last-child', save=False) plugin = Text(body='') plugin_base.set_base_attr(plugin) @@ -399,7 +399,7 @@ def test_11_copy_textplugin(self): placeholder=placeholder, position=1, language=self.FIRST_LANG) - plugin_ref_1_base.insert_at(plugin_base, position='last-child', commit=False) + plugin_ref_1_base.insert_at(plugin_base, position='last-child', save=False) plugin_ref_1 = Text(body='') plugin_ref_1_base.set_base_attr(plugin_ref_1) @@ -410,7 +410,7 @@ def test_11_copy_textplugin(self): placeholder=placeholder, position=2, language=self.FIRST_LANG) - plugin_ref_2_base.insert_at(plugin_base, position='last-child', commit=False) + plugin_ref_2_base.insert_at(plugin_base, position='last-child', save=False) plugin_ref_2 = Text(body='') plugin_ref_2_base.set_base_attr(plugin_ref_2) @@ -570,7 +570,7 @@ def test_03_copy_plugin_with_m2m(self): placeholder=placeholder, position=1, language=self.FIRST_LANG) - plugin.insert_at(None, position='last-child', commit=True) + plugin.insert_at(None, position='last-child', save=True) edit_url = URL_CMS_PLUGIN_EDIT + str(plugin.pk) + "/" diff --git a/cms/tests/rendering.py b/cms/tests/rendering.py index b42f8baf008..6c8c2aa6bdb 100644 --- a/cms/tests/rendering.py +++ b/cms/tests/rendering.py @@ -63,9 +63,9 @@ def insert_test_content(self): t2.save() # Insert some test Text plugins pl = Text(plugin_type='TextPlugin', page=p, language=settings.LANGUAGES[0][0], placeholder=self.test_placeholders['main'], position=0, body=self.test_data['text_main']) - pl.insert_at(None, commit=True) + pl.insert_at(None, save=True) pl = Text(plugin_type='TextPlugin', page=p, language=settings.LANGUAGES[0][0], placeholder=self.test_placeholders['sub'], position=0, body=self.test_data['text_sub']) - pl.insert_at(None, commit=True) + pl.insert_at(None, save=True) # Insert another page that is not the home page p3 = Page(parent=p2, site=Site.objects.get_current(), reverse_id=self.test_data3['reverse_id'], template=TEMPLATE_NAME, published=True, publisher_state=1, publisher_is_draft=False) @@ -78,7 +78,7 @@ def insert_test_content(self): self.test_placeholders3[placeholder.slot] = placeholder # # Insert some test Text plugins pl = Text(plugin_type='TextPlugin', page=p3, language=settings.LANGUAGES[0][0], placeholder=self.test_placeholders3['sub'], position=0, body=self.test_data3['text_sub']) - pl.insert_at(None, commit=True) + pl.insert_at(None, save=True) # Reload test pages self.test_page = Page.objects.get(pk=p.pk) diff --git a/publisher/__init__.py b/publisher/__init__.py index efd75208ff4..1f47d0a573d 100644 --- a/publisher/__init__.py +++ b/publisher/__init__.py @@ -1,7 +1,6 @@ from django.conf import settings -from mptt_support import Mptt from manager import PublisherManager -__all__ = ('PublisherManager', 'Mptt', 'VERSION') +__all__ = ('PublisherManager', 'VERSION') -VERSION = (0, 4, 'sintab') \ No newline at end of file +VERSION = (0, 4, 'sintab') diff --git a/publisher/mptt_support.py b/publisher/mptt_support.py deleted file mode 100644 index 1abc34f3c1e..00000000000 --- a/publisher/mptt_support.py +++ /dev/null @@ -1,151 +0,0 @@ -""" -Mptt registering (modified) -========================== - -Registering now takes place in metaclass. Mptt is registered if model contains -attribute Meta, which is subclass of Mptt. - -Basic usage:: - - class MyModel(models.Model): - ... - - class Mptt(Mptt): - pass - -Requirements: -- requires mptt installed on pythonpath -""" - -from django.db.models import signals -from django.db import models - - -class Mptt(models.Model): - """Abstract class which have to be extended for putting model under mptt. - For changing attributes see MpttMeta - """ - class Meta: - abstract = True - - -class MpttMeta: - """Basic mptt configuration class - something like Meta in model - """ - - META_ATTRIBUTES = ('parent_attr', 'left_attr', 'right_attr', - 'tree_id_attr', 'level_attr', 'tree_manager_attr', 'order_insertion_by') - - parent_attr = 'parent' - left_attr = 'lft' - right_attr = 'rght' - tree_id_attr = 'tree_id' - level_attr = 'level' - tree_manager_attr = 'tree' - order_insertion_by = None - - @classmethod - def contribute_to_class(cls, main_cls, name): - # install rest of mptt, class was build - - signals.class_prepared.connect(cls.finish_mptt_class, - sender=main_cls, weak=False) - - from mptt.signals import pre_save - - # Set up signal receiver to manage the tree when instances of the - # model are about to be saved. - signals.pre_save.connect(pre_save, sender=main_cls) - - @classmethod - def finish_mptt_class(cls, *args, **kwargs): - main_cls = kwargs['sender'] - try: - from functools import wraps - except ImportError: - from django.utils.functional import wraps # Python 2.3, 2.4 fallback - - from mptt.managers import TreeManager - - # jsut copy attributes to meta - for attr in MpttMeta.META_ATTRIBUTES: - setattr(main_cls._meta, attr, getattr(cls, attr)) - - meta = main_cls._meta - - # Instanciate tree manager - TreeManager(meta.parent_attr, meta.left_attr, meta.right_attr, - meta.tree_id_attr, meta.level_attr).contribute_to_class(main_cls, meta.tree_manager_attr) - - # Add a custom tree manager - #setattr(main_cls, meta.tree_manager_attr, tree_manager) - setattr(main_cls, '_tree_manager', getattr(main_cls, meta.tree_manager_attr)) - - # Wrap the model's delete method to manage the tree structure before - # deletion. This is icky, but the pre_delete signal doesn't currently - # provide a way to identify which model delete was called on and we - # only want to manage the tree based on the topmost node which is - # being deleted. - def wrap_delete(delete): - def _wrapped_delete(self): - opts = self._meta - tree_width = (getattr(self, opts.right_attr) - - getattr(self, opts.left_attr) + 1) - target_right = getattr(self, opts.right_attr) - tree_id = getattr(self, opts.tree_id_attr) - self._tree_manager._close_gap(tree_width, target_right, tree_id) - delete(self) - return wraps(delete)(_wrapped_delete) - main_cls.delete = wrap_delete(main_cls.delete) - - -def install_mptt(cls, name, bases, attrs): - """Installs mptt - modifies class attrs, and adds required stuff to them. - """ - if not Mptt in bases: - return attrs - - if 'MpttMeta' in attrs and not issubclass(attrs['MpttMeta'], MpttMeta): - raise ValueError, ("%s.Mptt must be a subclass " - + " of publisher.Mptt.") % (name,) - - attrs['MpttMeta'] = MpttMeta - - # import required stuff here, so we will have import errors only when mptt - # is really in use - from mptt import models as mptt_models - - attrs['_is_mptt_model'] = lambda self: True - - mptt_meta = attrs['MpttMeta'] - - assert mptt_meta.parent_attr in attrs, ("Mppt model must define parent " - "field!") - - # add mptt fields - fields = (mptt_meta.left_attr, mptt_meta.right_attr, - mptt_meta.tree_id_attr, mptt_meta.level_attr) - - for attr in fields: - if not attr in attrs: - attrs[attr] = models.PositiveIntegerField(db_index=True, editable=False) - - methods = ('get_ancestors', 'get_children', 'get_descendants', - 'get_descendant_count', 'get_next_sibling', - 'get_previous_sibling', 'get_root', 'get_siblings', 'insert_at', - 'is_child_node', 'is_leaf_node', 'is_root_node', 'move_to') - - # Add tree methods for model instances - for method_name in methods: - attrs[method_name] = getattr(mptt_models, method_name) - - return attrs - - -def finish_mptt(cls): - if not hasattr(cls, '_is_mptt_model'): - return - - from mptt import registry - if not cls in registry: - registry.append(cls) \ No newline at end of file From 2c1297500b4ba9cd25e9c5f2c512a041c247986f Mon Sep 17 00:00:00 2001 From: Tom V Date: Fri, 28 Jan 2011 13:29:27 +0000 Subject: [PATCH 010/689] Couple of spelling fixes in docs/getting_started/tutorial.rst --- docs/getting_started/tutorial.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/getting_started/tutorial.rst b/docs/getting_started/tutorial.rst index a968a36bce2..e8c7cba9589 100644 --- a/docs/getting_started/tutorial.rst +++ b/docs/getting_started/tutorial.rst @@ -139,7 +139,7 @@ translations for, this is way too many so we'll limit it to English for now:: ] Finally, setup the ``DATABASES`` part of the file to reflect your database -deployement. If you just want to try out things locally, sqlite3 is the easiest +deployment. If you just want to try out things locally, sqlite3 is the easiest database to set up, however it should not be used in production. If you still wish to use it for now, this is what your ``DATABASES`` setting should look like:: @@ -329,14 +329,14 @@ By default, pages are "invisible". To let people access them you should mark the Menus ----- -Another option this view lets you tweak is wether or not the page should appear in -your site's navigation (that is, wether there should be a menu entry to reach it +Another option this view lets you tweak is whether or not the page should appear in +your site's navigation (that is, whether there should be a menu entry to reach it or not) Adding content to a page ======================== -So far, our page doesn't do much. Make sure it's marked as "published", the click on the page's +So far, our page doesn't do much. Make sure it's marked as "published", then click on the page's "edit" button. Ignore most of the interface for now, and click the "view on site" button on the From 31a9c8d212507e17250e59cad966ba512fd04d57 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Fri, 28 Jan 2011 15:45:02 +0100 Subject: [PATCH 011/689] added tomviner to AUTHORS --- AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS b/AUTHORS index 687d2696386..a04dfefd5b2 100644 --- a/AUTHORS +++ b/AUTHORS @@ -151,3 +151,4 @@ In no particular order: * Simon Hedberg * Jameel Al-Aziz * Javi Nievas +* tomviner \ No newline at end of file From cd9dae527bd46a1e44bf7410e73149821cf27391 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Sun, 30 Jan 2011 18:53:28 +0100 Subject: [PATCH 012/689] Fixed some issues caused by the switch away from a shipped MPTT to django-mptt 0.4.2. Removed the shipped mptt --- cms/admin/pageadmin.py | 2 +- cms/models/pluginmodel.py | 2 +- cms/test/testcases.py | 2 +- mptt/__init__.py | 94 --- mptt/exceptions.py | 11 - mptt/forms.py | 129 --- mptt/managers--with rebuild.py | 797 ------------------- mptt/managers.py | 719 ----------------- mptt/models.py | 186 ----- mptt/signals.py | 127 --- mptt/templatetags/__init__.py | 0 mptt/templatetags/mptt_tags.py | 197 ----- mptt/tests/__init__.py | 0 mptt/tests/doctests.py | 1139 --------------------------- mptt/tests/fixtures/categories.json | 122 --- mptt/tests/fixtures/genres.json | 134 ---- mptt/tests/models.py | 54 -- mptt/tests/settings.py | 27 - mptt/tests/testcases.py | 309 -------- mptt/tests/tests.py | 11 - mptt/utils.py | 134 ---- setup.py | 1 + tests/buildout.cfg | 1 + 23 files changed, 5 insertions(+), 4193 deletions(-) delete mode 100644 mptt/__init__.py delete mode 100644 mptt/exceptions.py delete mode 100644 mptt/forms.py delete mode 100644 mptt/managers--with rebuild.py delete mode 100644 mptt/managers.py delete mode 100644 mptt/models.py delete mode 100644 mptt/signals.py delete mode 100644 mptt/templatetags/__init__.py delete mode 100644 mptt/templatetags/mptt_tags.py delete mode 100644 mptt/tests/__init__.py delete mode 100644 mptt/tests/doctests.py delete mode 100644 mptt/tests/fixtures/categories.json delete mode 100644 mptt/tests/fixtures/genres.json delete mode 100644 mptt/tests/models.py delete mode 100644 mptt/tests/settings.py delete mode 100644 mptt/tests/testcases.py delete mode 100644 mptt/tests/tests.py delete mode 100644 mptt/utils.py diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py index afb61656a88..0d12727d008 100644 --- a/cms/admin/pageadmin.py +++ b/cms/admin/pageadmin.py @@ -221,7 +221,7 @@ def save_model(self, request, obj, form, change): obj.tree_id = 0 obj.level = 0 obj.pk = None - obj.insert_at(parent, commit=False) + obj.insert_at(parent, save=False) obj.pk = pk obj.save(no_signals=True) obj.save() diff --git a/cms/models/pluginmodel.py b/cms/models/pluginmodel.py index ea136e18ae2..286f27d46de 100644 --- a/cms/models/pluginmodel.py +++ b/cms/models/pluginmodel.py @@ -41,7 +41,7 @@ def __new__(cls, name, bases, attrs): return new_class -class CMSPlugin(MpttModel): +class CMSPlugin(MPTTModel): ''' The base class for a CMS plugin model. When defining a new custom plugin, you should store plugin-instance specific information on a subclass of this class. diff --git a/cms/test/testcases.py b/cms/test/testcases.py index 63bb233081a..e08e5450461 100644 --- a/cms/test/testcases.py +++ b/cms/test/testcases.py @@ -368,7 +368,7 @@ def add_plugin(self, user=None, page=None, placeholder=None, language='en', body position=1, language=language ) - plugin_base.insert_at(None, position='last-child', commit=False) + plugin_base.insert_at(None, position='last-child', save=False) plugin = Text(body=body) plugin_base.set_base_attr(plugin) diff --git a/mptt/__init__.py b/mptt/__init__.py deleted file mode 100644 index 51c62d09e25..00000000000 --- a/mptt/__init__.py +++ /dev/null @@ -1,94 +0,0 @@ -VERSION = (0, 3, 'pre') - -__all__ = ('register',) - -class AlreadyRegistered(Exception): - """ - An attempt was made to register a model for MPTT more than once. - """ - pass - -registry = [] - -def register(model, parent_attr='parent', left_attr='lft', right_attr='rght', - tree_id_attr='tree_id', level_attr='level', - tree_manager_attr='tree', order_insertion_by=None): - """ - Sets the given model class up for Modified Preorder Tree Traversal. - """ - try: - from functools import wraps - except ImportError: - from django.utils.functional import wraps # Python 2.3, 2.4 fallback - - from django.db.models import signals as model_signals - from django.db.models import FieldDoesNotExist, PositiveIntegerField - from django.utils.translation import ugettext as _ - - from mptt import models - from mptt.signals import pre_save - from mptt.managers import TreeManager - - if model in registry: - raise AlreadyRegistered( - _('The model %s has already been registered.') % model.__name__) - registry.append(model) - - # Add tree options to the model's Options - opts = model._meta - opts.parent_attr = parent_attr - opts.right_attr = right_attr - opts.left_attr = left_attr - opts.tree_id_attr = tree_id_attr - opts.level_attr = level_attr - opts.tree_manager_attr = tree_manager_attr - opts.order_insertion_by = order_insertion_by - - # Add tree fields if they do not exist - for attr in [left_attr, right_attr, tree_id_attr, level_attr]: - try: - opts.get_field(attr) - except FieldDoesNotExist: - PositiveIntegerField( - db_index=True, editable=False).contribute_to_class(model, attr) - - # Add tree methods for model instances - setattr(model, 'get_ancestors', models.get_ancestors) - setattr(model, 'get_children', models.get_children) - setattr(model, 'get_descendants', models.get_descendants) - setattr(model, 'get_descendant_count', models.get_descendant_count) - setattr(model, 'get_next_sibling', models.get_next_sibling) - setattr(model, 'get_previous_sibling', models.get_previous_sibling) - setattr(model, 'get_root', models.get_root) - setattr(model, 'get_siblings', models.get_siblings) - setattr(model, 'insert_at', models.insert_at) - setattr(model, 'is_child_node', models.is_child_node) - setattr(model, 'is_leaf_node', models.is_leaf_node) - setattr(model, 'is_root_node', models.is_root_node) - setattr(model, 'move_to', models.move_to) - - # Add a custom tree manager - TreeManager(parent_attr, left_attr, right_attr, tree_id_attr, - level_attr).contribute_to_class(model, tree_manager_attr) - setattr(model, '_tree_manager', getattr(model, tree_manager_attr)) - - # Set up signal receiver to manage the tree when instances of the - # model are about to be saved. - model_signals.pre_save.connect(pre_save, sender=model) - - # Wrap the model's delete method to manage the tree structure before - # deletion. This is icky, but the pre_delete signal doesn't currently - # provide a way to identify which model delete was called on and we - # only want to manage the tree based on the topmost node which is - # being deleted. - def wrap_delete(delete): - def _wrapped_delete(self): - opts = self._meta - tree_width = (getattr(self, opts.right_attr) - - getattr(self, opts.left_attr) + 1) - target_right = getattr(self, opts.right_attr) - tree_id = getattr(self, opts.tree_id_attr) - self._tree_manager._close_gap(tree_width, target_right, tree_id) - delete(self) - return wraps(delete)(_wrapped_delete) - model.delete = wrap_delete(model.delete) diff --git a/mptt/exceptions.py b/mptt/exceptions.py deleted file mode 100644 index e390b2cb872..00000000000 --- a/mptt/exceptions.py +++ /dev/null @@ -1,11 +0,0 @@ -""" -MPTT exceptions. -""" - -class InvalidMove(Exception): - """ - An invalid node move was attempted. - - For example, attempting to make a node a child of itself. - """ - pass diff --git a/mptt/forms.py b/mptt/forms.py deleted file mode 100644 index 0b9a6d9fac0..00000000000 --- a/mptt/forms.py +++ /dev/null @@ -1,129 +0,0 @@ -""" -Form components for working with trees. -""" -from django import forms -from django.forms.forms import NON_FIELD_ERRORS -from django.forms.util import ErrorList -from django.utils.encoding import smart_unicode -from django.utils.translation import ugettext_lazy as _ - -from mptt.exceptions import InvalidMove - -__all__ = ('TreeNodeChoiceField', 'TreeNodePositionField', 'MoveNodeForm') - -# Fields ###################################################################### - -class TreeNodeChoiceField(forms.ModelChoiceField): - """A ModelChoiceField for tree nodes.""" - def __init__(self, level_indicator=u'---', *args, **kwargs): - self.level_indicator = level_indicator - kwargs['empty_label'] = None - super(TreeNodeChoiceField, self).__init__(*args, **kwargs) - - def label_from_instance(self, obj): - """ - Creates labels which represent the tree level of each node when - generating option labels. - """ - return u'%s %s' % (self.level_indicator * getattr(obj, - obj._meta.level_attr), - smart_unicode(obj)) - -class TreeNodePositionField(forms.ChoiceField): - """A ChoiceField for specifying position relative to another node.""" - FIRST_CHILD = 'first-child' - LAST_CHILD = 'last-child' - LEFT = 'left' - RIGHT = 'right' - - DEFAULT_CHOICES = ( - (FIRST_CHILD, _('First child')), - (LAST_CHILD, _('Last child')), - (LEFT, _('Left sibling')), - (RIGHT, _('Right sibling')), - ) - - def __init__(self, *args, **kwargs): - if 'choices' not in kwargs: - kwargs['choices'] = self.DEFAULT_CHOICES - super(TreeNodePositionField, self).__init__(*args, **kwargs) - -# Forms ####################################################################### - -class MoveNodeForm(forms.Form): - """ - A form which allows the user to move a given node from one location - in its tree to another, with optional restriction of the nodes which - are valid target nodes for the move. - """ - target = TreeNodeChoiceField(queryset=None) - position = TreeNodePositionField() - - def __init__(self, node, *args, **kwargs): - """ - The ``node`` to be moved must be provided. The following keyword - arguments are also accepted:: - - ``valid_targets`` - Specifies a ``QuerySet`` of valid targets for the move. If - not provided, valid targets will consist of everything other - node of the same type, apart from the node itself and any - descendants. - - For example, if you want to restrict the node to moving - within its own tree, pass a ``QuerySet`` containing - everything in the node's tree except itself and its - descendants (to prevent invalid moves) and the root node (as - a user could choose to make the node a sibling of the root - node). - - ``target_select_size`` - The size of the select element used for the target node. - Defaults to ``10``. - - ``position_choices`` - A tuple of allowed position choices and their descriptions. - Defaults to ``TreeNodePositionField.DEFAULT_CHOICES``. - - ``level_indicator`` - A string which will be used to represent a single tree level - in the target options. - """ - self.node = node - valid_targets = kwargs.pop('valid_targets', None) - target_select_size = kwargs.pop('target_select_size', 10) - position_choices = kwargs.pop('position_choices', None) - level_indicator = kwargs.pop('level_indicator', None) - super(MoveNodeForm, self).__init__(*args, **kwargs) - opts = node._meta - if valid_targets is None: - valid_targets = node._tree_manager.exclude(**{ - opts.tree_id_attr: getattr(node, opts.tree_id_attr), - '%s__gte' % opts.left_attr: getattr(node, opts.left_attr), - '%s__lte' % opts.right_attr: getattr(node, opts.right_attr), - }) - self.fields['target'].queryset = valid_targets - self.fields['target'].widget.attrs['size'] = target_select_size - if level_indicator: - self.fields['target'].level_indicator = level_indicator - if position_choices: - self.fields['position_choices'].choices = position_choices - - def save(self): - """ - Attempts to move the node using the selected target and - position. - - If an invalid move is attempted, the related error message will - be added to the form's non-field errors and the error will be - re-raised. Callers should attempt to catch ``InvalidNode`` to - redisplay the form with the error, should it occur. - """ - try: - self.node.move_to(self.cleaned_data['target'], - self.cleaned_data['position']) - return self.node - except InvalidMove, e: - self.errors[NON_FIELD_ERRORS] = ErrorList(e) - raise - diff --git a/mptt/managers--with rebuild.py b/mptt/managers--with rebuild.py deleted file mode 100644 index ea0f7cab928..00000000000 --- a/mptt/managers--with rebuild.py +++ /dev/null @@ -1,797 +0,0 @@ -""" -A custom manager for working with trees of objects. -""" -from django.db import connection, models, transaction -from django.utils.translation import ugettext as _ - -from mptt.exceptions import InvalidMove - -__all__ = ('TreeManager',) - -qn = connection.ops.quote_name - -COUNT_SUBQUERY = """( - SELECT COUNT(*) - FROM %(rel_table)s - WHERE %(mptt_fk)s = %(mptt_table)s.%(mptt_pk)s -)""" - -CUMULATIVE_COUNT_SUBQUERY = """( - SELECT COUNT(*) - FROM %(rel_table)s - WHERE %(mptt_fk)s IN - ( - SELECT m2.%(mptt_pk)s - FROM %(mptt_table)s m2 - WHERE m2.%(tree_id)s = %(mptt_table)s.%(tree_id)s - AND m2.%(left)s BETWEEN %(mptt_table)s.%(left)s - AND %(mptt_table)s.%(right)s - ) -)""" - -class TreeManager(models.Manager): - """ - A manager for working with trees of objects. - """ - def __init__(self, parent_attr, left_attr, right_attr, tree_id_attr, - level_attr): - """ - Tree attributes for the model being managed are held as - attributes of this manager for later use, since it will be using - them a **lot**. - """ - super(TreeManager, self).__init__() - self.parent_attr = parent_attr - self.left_attr = left_attr - self.right_attr = right_attr - self.tree_id_attr = tree_id_attr - self.level_attr = level_attr - - def add_related_count(self, queryset, rel_model, rel_field, count_attr, - cumulative=False): - """ - Adds a related item count to a given ``QuerySet`` using its - ``extra`` method, for a ``Model`` class which has a relation to - this ``Manager``'s ``Model`` class. - - Arguments: - - ``rel_model`` - A ``Model`` class which has a relation to this `Manager``'s - ``Model`` class. - - ``rel_field`` - The name of the field in ``rel_model`` which holds the - relation. - - ``count_attr`` - The name of an attribute which should be added to each item in - this ``QuerySet``, containing a count of how many instances - of ``rel_model`` are related to it through ``rel_field``. - - ``cumulative`` - If ``True``, the count will be for each item and all of its - descendants, otherwise it will be for each item itself. - """ - opts = self.model._meta - if cumulative: - subquery = CUMULATIVE_COUNT_SUBQUERY % { - 'rel_table': qn(rel_model._meta.db_table), - 'mptt_fk': qn(rel_model._meta.get_field(rel_field).column), - 'mptt_table': qn(opts.db_table), - 'mptt_pk': qn(opts.pk.column), - 'tree_id': qn(opts.get_field(self.tree_id_attr).column), - 'left': qn(opts.get_field(self.left_attr).column), - 'right': qn(opts.get_field(self.right_attr).column), - } - else: - subquery = COUNT_SUBQUERY % { - 'rel_table': qn(rel_model._meta.db_table), - 'mptt_fk': qn(rel_model._meta.get_field(rel_field).column), - 'mptt_table': qn(opts.db_table), - 'mptt_pk': qn(opts.pk.column), - } - return queryset.extra(select={count_attr: subquery}) - - def get_query_set(self): - """ - Returns a ``QuerySet`` which contains all tree items, ordered in - such a way that that root nodes appear in tree id order and - their subtrees appear in depth-first order. - """ - return super(TreeManager, self).get_query_set().order_by( - self.tree_id_attr, self.left_attr) - - def insert_node(self, node, target, position='last-child', - commit=False): - """ - Sets up the tree state for ``node`` (which has not yet been - inserted into in the database) so it will be positioned relative - to a given ``target`` node as specified by ``position`` (when - appropriate) it is inserted, with any neccessary space already - having been made for it. - - A ``target`` of ``None`` indicates that ``node`` should be - the last root node. - - If ``commit`` is ``True``, ``node``'s ``save()`` method will be - called before it is returned. - """ - if node.pk: - raise ValueError(_('Cannot insert a node which has already been saved.')) - - if target is None: - setattr(node, self.left_attr, 1) - setattr(node, self.right_attr, 2) - setattr(node, self.level_attr, 0) - setattr(node, self.tree_id_attr, self._get_next_tree_id()) - setattr(node, self.parent_attr, None) - elif target.is_root_node() and position in ['left', 'right']: - target_tree_id = getattr(target, self.tree_id_attr) - if position == 'left': - tree_id = target_tree_id - space_target = target_tree_id - 1 - else: - tree_id = target_tree_id + 1 - space_target = target_tree_id - - self._create_tree_space(space_target) - - setattr(node, self.left_attr, 1) - setattr(node, self.right_attr, 2) - setattr(node, self.level_attr, 0) - setattr(node, self.tree_id_attr, tree_id) - setattr(node, self.parent_attr, None) - else: - setattr(node, self.left_attr, 0) - setattr(node, self.level_attr, 0) - - space_target, level, left, parent = \ - self._calculate_inter_tree_move_values(node, target, position) - tree_id = getattr(parent, self.tree_id_attr) - - self._create_space(2, space_target, tree_id) - - setattr(node, self.left_attr, -left) - setattr(node, self.right_attr, -left + 1) - setattr(node, self.level_attr, -level) - setattr(node, self.tree_id_attr, tree_id) - setattr(node, self.parent_attr, parent) - - if commit: - node.save() - return node - - def move_node(self, node, target, position='last-child'): - """ - Moves ``node`` relative to a given ``target`` node as specified - by ``position`` (when appropriate), by examining both nodes and - calling the appropriate method to perform the move. - - A ``target`` of ``None`` indicates that ``node`` should be - turned into a root node. - - Valid values for ``position`` are ``'first-child'``, - ``'last-child'``, ``'left'`` or ``'right'``. - - ``node`` will be modified to reflect its new tree state in the - database. - - This method explicitly checks for ``node`` being made a sibling - of a root node, as this is a special case due to our use of tree - ids to order root nodes. - """ - if target is None: - if node.is_child_node(): - self._make_child_root_node(node) - elif target.is_root_node() and position in ['left', 'right']: - self._make_sibling_of_root_node(node, target, position) - else: - if node.is_root_node(): - self._move_root_node(node, target, position) - else: - self._move_child_node(node, target, position) - transaction.commit_unless_managed() - - def root_node(self, tree_id): - """ - Returns the root node of the tree with the given id. - """ - return self.get(**{ - self.tree_id_attr: tree_id, - '%s__isnull' % self.parent_attr: True, - }) - - def root_nodes(self): - """ - Creates a ``QuerySet`` containing root nodes. - """ - return self.filter(**{'%s__isnull' % self.parent_attr: True}) - - def rebuild(self): - """ - Rebuilds whole tree in database using `parent` link. - """ - opts = self.model._meta - - cursor = connection.cursor() - cursor.execute('UPDATE %(table)s SET %(left)s = 0, %(right)s = 0, %(level)s = 0, %(tree_id)s = 0' % { - 'table': qn(opts.db_table), - 'left': qn(opts.get_field(self.left_attr).column), - 'right': qn(opts.get_field(self.right_attr).column), - 'level': qn(opts.get_field(self.level_attr).column), - 'tree_id': qn(opts.get_field(self.tree_id_attr).column) - }) - - cursor.execute('SELECT %(id_col)s FROM %(table)s WHERE %(parent_col)s is NULL %(orderby)s' % { - 'id_col': qn(opts.pk.column), - 'table': qn(opts.db_table), - 'parent_col': qn(opts.get_field(self.parent_attr).column), - 'orderby': 'ORDER BY ' + ', '.join([qn(field) for field in opts.order_insertion_by]) if opts.order_insertion_by else '' - }) - - idx = 0 - for (pk, ) in cursor.fetchall(): - idx += 1 - self._rebuild_helper(pk, 1, idx) - transaction.commit_unless_managed() - - def _rebuild_helper(self, pk, left, tree_id, level=0): - opts = self.model._meta - right = left + 1 - - cursor = connection.cursor() - cursor.execute('SELECT %(id_col)s FROM %(table)s WHERE %(parent_col)s = %(parent)d %(orderby)s' % { - 'id_col': qn(opts.pk.column), - 'table': qn(opts.db_table), - 'parent_col': qn(opts.get_field(self.parent_attr).column), - 'parent': pk, - 'orderby': 'ORDER BY ' + ', '.join([qn(field) for field in opts.order_insertion_by]) if opts.order_insertion_by else '' - }) - - for (child_id, ) in cursor.fetchall(): - right = self._rebuild_helper(child_id, right, tree_id, level+1) - - cursor.execute(""" - UPDATE %(table)s - SET - %(left_col)s = %(left)d, - %(right_col)s = %(right)d, - %(level_col)s = %(level)d, - %(tree_id_col)s = %(tree_id)d - WHERE - %(pk_col)s = %(pk)s - """ % { - 'table': qn(opts.db_table), - 'pk_col': qn(opts.pk.column), - 'left_col': qn(opts.get_field(self.left_attr).column), - 'right_col': qn(opts.get_field(self.right_attr).column), - 'level_col': qn(opts.get_field(self.level_attr).column), - 'tree_id_col': qn(opts.get_field(self.tree_id_attr).column), - 'pk': pk, - 'left': left, - 'right': right, - 'level': level, - 'tree_id': tree_id - }) - - return right + 1 - - - def _calculate_inter_tree_move_values(self, node, target, position): - """ - Calculates values required when moving ``node`` relative to - ``target`` as specified by ``position``. - """ - left = getattr(node, self.left_attr) - level = getattr(node, self.level_attr) - target_left = getattr(target, self.left_attr) - target_right = getattr(target, self.right_attr) - target_level = getattr(target, self.level_attr) - - if position == 'last-child' or position == 'first-child': - if position == 'last-child': - space_target = target_right - 1 - else: - space_target = target_left - level_change = level - target_level - 1 - parent = target - elif position == 'left' or position == 'right': - if position == 'left': - space_target = target_left - 1 - else: - space_target = target_right - level_change = level - target_level - parent = getattr(target, self.parent_attr) - else: - raise ValueError(_('An invalid position was given: %s.') % position) - - left_right_change = left - space_target - 1 - return space_target, level_change, left_right_change, parent - - def _close_gap(self, size, target, tree_id): - """ - Closes a gap of a certain ``size`` after the given ``target`` - point in the tree identified by ``tree_id``. - """ - self._manage_space(-size, target, tree_id) - - def _create_space(self, size, target, tree_id): - """ - Creates a space of a certain ``size`` after the given ``target`` - point in the tree identified by ``tree_id``. - """ - self._manage_space(size, target, tree_id) - - def _create_tree_space(self, target_tree_id): - """ - Creates space for a new tree by incrementing all tree ids - greater than ``target_tree_id``. - """ - opts = self.model._meta - cursor = connection.cursor() - cursor.execute(""" - UPDATE %(table)s - SET %(tree_id)s = %(tree_id)s + 1 - WHERE %(tree_id)s > %%s""" % { - 'table': qn(opts.db_table), - 'tree_id': qn(opts.get_field(self.tree_id_attr).column), - }, [target_tree_id]) - - def _get_next_tree_id(self): - """ - Determines the next largest unused tree id for the tree managed - by this manager. - """ - opts = self.model._meta - cursor = connection.cursor() - cursor.execute('SELECT MAX(%s) FROM %s' % ( - qn(opts.get_field(self.tree_id_attr).column), - qn(opts.db_table))) - row = cursor.fetchone() - return row[0] and (row[0] + 1) or 1 - - def _inter_tree_move_and_close_gap(self, node, level_change, - left_right_change, new_tree_id, parent_pk=None): - """ - Removes ``node`` from its current tree, with the given set of - changes being applied to ``node`` and its descendants, closing - the gap left by moving ``node`` as it does so. - - If ``parent_pk`` is ``None``, this indicates that ``node`` is - being moved to a brand new tree as its root node, and will thus - have its parent field set to ``NULL``. Otherwise, ``node`` will - have ``parent_pk`` set for its parent field. - """ - opts = self.model._meta - inter_tree_move_query = """ - UPDATE %(table)s - SET %(level)s = CASE - WHEN %(left)s >= %%s AND %(left)s <= %%s - THEN %(level)s - %%s - ELSE %(level)s END, - %(tree_id)s = CASE - WHEN %(left)s >= %%s AND %(left)s <= %%s - THEN %%s - ELSE %(tree_id)s END, - %(left)s = CASE - WHEN %(left)s >= %%s AND %(left)s <= %%s - THEN %(left)s - %%s - WHEN %(left)s > %%s - THEN %(left)s - %%s - ELSE %(left)s END, - %(right)s = CASE - WHEN %(right)s >= %%s AND %(right)s <= %%s - THEN %(right)s - %%s - WHEN %(right)s > %%s - THEN %(right)s - %%s - ELSE %(right)s END, - %(parent)s = CASE - WHEN %(pk)s = %%s - THEN %(new_parent)s - ELSE %(parent)s END - WHERE %(tree_id)s = %%s""" % { - 'table': qn(opts.db_table), - 'level': qn(opts.get_field(self.level_attr).column), - 'left': qn(opts.get_field(self.left_attr).column), - 'tree_id': qn(opts.get_field(self.tree_id_attr).column), - 'right': qn(opts.get_field(self.right_attr).column), - 'parent': qn(opts.get_field(self.parent_attr).column), - 'pk': qn(opts.pk.column), - 'new_parent': parent_pk is None and 'NULL' or '%s', - } - - left = getattr(node, self.left_attr) - right = getattr(node, self.right_attr) - gap_size = right - left + 1 - gap_target_left = left - 1 - params = [ - left, right, level_change, - left, right, new_tree_id, - left, right, left_right_change, - gap_target_left, gap_size, - left, right, left_right_change, - gap_target_left, gap_size, - node.pk, - getattr(node, self.tree_id_attr) - ] - if parent_pk is not None: - params.insert(-1, parent_pk) - cursor = connection.cursor() - cursor.execute(inter_tree_move_query, params) - - def _make_child_root_node(self, node, new_tree_id=None): - """ - Removes ``node`` from its tree, making it the root node of a new - tree. - - If ``new_tree_id`` is not specified a new tree id will be - generated. - - ``node`` will be modified to reflect its new tree state in the - database. - """ - left = getattr(node, self.left_attr) - right = getattr(node, self.right_attr) - level = getattr(node, self.level_attr) - tree_id = getattr(node, self.tree_id_attr) - if not new_tree_id: - new_tree_id = self._get_next_tree_id() - left_right_change = left - 1 - - self._inter_tree_move_and_close_gap(node, level, left_right_change, - new_tree_id) - - # Update the node to be consistent with the updated - # tree in the database. - setattr(node, self.left_attr, left - left_right_change) - setattr(node, self.right_attr, right - left_right_change) - setattr(node, self.level_attr, 0) - setattr(node, self.tree_id_attr, new_tree_id) - setattr(node, self.parent_attr, None) - - def _make_sibling_of_root_node(self, node, target, position): - """ - Moves ``node``, making it a sibling of the given ``target`` root - node as specified by ``position``. - - ``node`` will be modified to reflect its new tree state in the - database. - - Since we use tree ids to reduce the number of rows affected by - tree mangement during insertion and deletion, root nodes are not - true siblings; thus, making an item a sibling of a root node is - a special case which involves shuffling tree ids around. - """ - if node == target: - raise InvalidMove(_('A node may not be made a sibling of itself.')) - - opts = self.model._meta - tree_id = getattr(node, self.tree_id_attr) - target_tree_id = getattr(target, self.tree_id_attr) - - if node.is_child_node(): - if position == 'left': - space_target = target_tree_id - 1 - new_tree_id = target_tree_id - elif position == 'right': - space_target = target_tree_id - new_tree_id = target_tree_id + 1 - else: - raise ValueError(_('An invalid position was given: %s.') % position) - - self._create_tree_space(space_target) - if tree_id > space_target: - # The node's tree id has been incremented in the - # database - this change must be reflected in the node - # object for the method call below to operate on the - # correct tree. - setattr(node, self.tree_id_attr, tree_id + 1) - self._make_child_root_node(node, new_tree_id) - else: - if position == 'left': - if target_tree_id > tree_id: - left_sibling = target.get_previous_sibling() - if node == left_sibling: - return - new_tree_id = getattr(left_sibling, self.tree_id_attr) - lower_bound, upper_bound = tree_id, new_tree_id - shift = -1 - else: - new_tree_id = target_tree_id - lower_bound, upper_bound = new_tree_id, tree_id - shift = 1 - elif position == 'right': - if target_tree_id > tree_id: - new_tree_id = target_tree_id - lower_bound, upper_bound = tree_id, target_tree_id - shift = -1 - else: - right_sibling = target.get_next_sibling() - if node == right_sibling: - return - new_tree_id = getattr(right_sibling, self.tree_id_attr) - lower_bound, upper_bound = new_tree_id, tree_id - shift = 1 - else: - raise ValueError(_('An invalid position was given: %s.') % position) - - root_sibling_query = """ - UPDATE %(table)s - SET %(tree_id)s = CASE - WHEN %(tree_id)s = %%s - THEN %%s - ELSE %(tree_id)s + %%s END - WHERE %(tree_id)s >= %%s AND %(tree_id)s <= %%s""" % { - 'table': qn(opts.db_table), - 'tree_id': qn(opts.get_field(self.tree_id_attr).column), - } - cursor = connection.cursor() - cursor.execute(root_sibling_query, [tree_id, new_tree_id, shift, - lower_bound, upper_bound]) - setattr(node, self.tree_id_attr, new_tree_id) - - def _manage_space(self, size, target, tree_id): - """ - Manages spaces in the tree identified by ``tree_id`` by changing - the values of the left and right columns by ``size`` after the - given ``target`` point. - """ - opts = self.model._meta - space_query = """ - UPDATE %(table)s - SET %(left)s = CASE - WHEN %(left)s > %%s - THEN %(left)s + %%s - ELSE %(left)s END, - %(right)s = CASE - WHEN %(right)s > %%s - THEN %(right)s + %%s - ELSE %(right)s END - WHERE %(tree_id)s = %%s - AND (%(left)s > %%s OR %(right)s > %%s)""" % { - 'table': qn(opts.db_table), - 'left': qn(opts.get_field(self.left_attr).column), - 'right': qn(opts.get_field(self.right_attr).column), - 'tree_id': qn(opts.get_field(self.tree_id_attr).column), - } - cursor = connection.cursor() - cursor.execute(space_query, [target, size, target, size, tree_id, - target, target]) - - def _move_child_node(self, node, target, position): - """ - Calls the appropriate method to move child node ``node`` - relative to the given ``target`` node as specified by - ``position``. - """ - tree_id = getattr(node, self.tree_id_attr) - target_tree_id = getattr(target, self.tree_id_attr) - - if (getattr(node, self.tree_id_attr) == - getattr(target, self.tree_id_attr)): - self._move_child_within_tree(node, target, position) - else: - self._move_child_to_new_tree(node, target, position) - - def _move_child_to_new_tree(self, node, target, position): - """ - Moves child node ``node`` to a different tree, inserting it - relative to the given ``target`` node in the new tree as - specified by ``position``. - - ``node`` will be modified to reflect its new tree state in the - database. - """ - left = getattr(node, self.left_attr) - right = getattr(node, self.right_attr) - level = getattr(node, self.level_attr) - target_left = getattr(target, self.left_attr) - target_right = getattr(target, self.right_attr) - target_level = getattr(target, self.level_attr) - tree_id = getattr(node, self.tree_id_attr) - new_tree_id = getattr(target, self.tree_id_attr) - - space_target, level_change, left_right_change, parent = \ - self._calculate_inter_tree_move_values(node, target, position) - - tree_width = right - left + 1 - - # Make space for the subtree which will be moved - self._create_space(tree_width, space_target, new_tree_id) - # Move the subtree - self._inter_tree_move_and_close_gap(node, level_change, - left_right_change, new_tree_id, parent.pk) - - # Update the node to be consistent with the updated - # tree in the database. - setattr(node, self.left_attr, left - left_right_change) - setattr(node, self.right_attr, right - left_right_change) - setattr(node, self.level_attr, level - level_change) - setattr(node, self.tree_id_attr, new_tree_id) - setattr(node, self.parent_attr, parent) - - def _move_child_within_tree(self, node, target, position): - """ - Moves child node ``node`` within its current tree relative to - the given ``target`` node as specified by ``position``. - - ``node`` will be modified to reflect its new tree state in the - database. - """ - left = getattr(node, self.left_attr) - right = getattr(node, self.right_attr) - level = getattr(node, self.level_attr) - width = right - left + 1 - tree_id = getattr(node, self.tree_id_attr) - target_left = getattr(target, self.left_attr) - target_right = getattr(target, self.right_attr) - target_level = getattr(target, self.level_attr) - - if position == 'last-child' or position == 'first-child': - if node == target: - raise InvalidMove(_('A node may not be made a child of itself.')) - elif left < target_left < right: - raise InvalidMove(_('A node may not be made a child of any of its descendants.')) - if position == 'last-child': - if target_right > right: - new_left = target_right - width - new_right = target_right - 1 - else: - new_left = target_right - new_right = target_right + width - 1 - else: - if target_left > left: - new_left = target_left - width + 1 - new_right = target_left - else: - new_left = target_left + 1 - new_right = target_left + width - level_change = level - target_level - 1 - parent = target - elif position == 'left' or position == 'right': - if node == target: - raise InvalidMove(_('A node may not be made a sibling of itself.')) - elif left < target_left < right: - raise InvalidMove(_('A node may not be made a sibling of any of its descendants.')) - if position == 'left': - if target_left > left: - new_left = target_left - width - new_right = target_left - 1 - else: - new_left = target_left - new_right = target_left + width - 1 - else: - if target_right > right: - new_left = target_right - width + 1 - new_right = target_right - else: - new_left = target_right + 1 - new_right = target_right + width - level_change = level - target_level - parent = getattr(target, self.parent_attr) - else: - raise ValueError(_('An invalid position was given: %s.') % position) - - left_boundary = min(left, new_left) - right_boundary = max(right, new_right) - left_right_change = new_left - left - gap_size = width - if left_right_change > 0: - gap_size = -gap_size - - opts = self.model._meta - # The level update must come before the left update to keep - # MySQL happy - left seems to refer to the updated value - # immediately after its update has been specified in the query - # with MySQL, but not with SQLite or Postgres. - move_subtree_query = """ - UPDATE %(table)s - SET %(level)s = CASE - WHEN %(left)s >= %%s AND %(left)s <= %%s - THEN %(level)s - %%s - ELSE %(level)s END, - %(left)s = CASE - WHEN %(left)s >= %%s AND %(left)s <= %%s - THEN %(left)s + %%s - WHEN %(left)s >= %%s AND %(left)s <= %%s - THEN %(left)s + %%s - ELSE %(left)s END, - %(right)s = CASE - WHEN %(right)s >= %%s AND %(right)s <= %%s - THEN %(right)s + %%s - WHEN %(right)s >= %%s AND %(right)s <= %%s - THEN %(right)s + %%s - ELSE %(right)s END, - %(parent)s = CASE - WHEN %(pk)s = %%s - THEN %%s - ELSE %(parent)s END - WHERE %(tree_id)s = %%s""" % { - 'table': qn(opts.db_table), - 'level': qn(opts.get_field(self.level_attr).column), - 'left': qn(opts.get_field(self.left_attr).column), - 'right': qn(opts.get_field(self.right_attr).column), - 'parent': qn(opts.get_field(self.parent_attr).column), - 'pk': qn(opts.pk.column), - 'tree_id': qn(opts.get_field(self.tree_id_attr).column), - } - - cursor = connection.cursor() - cursor.execute(move_subtree_query, [ - left, right, level_change, - left, right, left_right_change, - left_boundary, right_boundary, gap_size, - left, right, left_right_change, - left_boundary, right_boundary, gap_size, - node.pk, parent.pk, - tree_id]) - - # Update the node to be consistent with the updated - # tree in the database. - setattr(node, self.left_attr, new_left) - setattr(node, self.right_attr, new_right) - setattr(node, self.level_attr, level - level_change) - setattr(node, self.parent_attr, parent) - - def _move_root_node(self, node, target, position): - """ - Moves root node``node`` to a different tree, inserting it - relative to the given ``target`` node as specified by - ``position``. - - ``node`` will be modified to reflect its new tree state in the - database. - """ - left = getattr(node, self.left_attr) - right = getattr(node, self.right_attr) - level = getattr(node, self.level_attr) - tree_id = getattr(node, self.tree_id_attr) - new_tree_id = getattr(target, self.tree_id_attr) - width = right - left + 1 - - if node == target: - raise InvalidMove(_('A node may not be made a child of itself.')) - elif tree_id == new_tree_id: - raise InvalidMove(_('A node may not be made a child of any of its descendants.')) - - space_target, level_change, left_right_change, parent = \ - self._calculate_inter_tree_move_values(node, target, position) - - # Create space for the tree which will be inserted - self._create_space(width, space_target, new_tree_id) - - # Move the root node, making it a child node - opts = self.model._meta - move_tree_query = """ - UPDATE %(table)s - SET %(level)s = %(level)s - %%s, - %(left)s = %(left)s - %%s, - %(right)s = %(right)s - %%s, - %(tree_id)s = %%s, - %(parent)s = CASE - WHEN %(pk)s = %%s - THEN %%s - ELSE %(parent)s END - WHERE %(left)s >= %%s AND %(left)s <= %%s - AND %(tree_id)s = %%s""" % { - 'table': qn(opts.db_table), - 'level': qn(opts.get_field(self.level_attr).column), - 'left': qn(opts.get_field(self.left_attr).column), - 'right': qn(opts.get_field(self.right_attr).column), - 'tree_id': qn(opts.get_field(self.tree_id_attr).column), - 'parent': qn(opts.get_field(self.parent_attr).column), - 'pk': qn(opts.pk.column), - } - cursor = connection.cursor() - cursor.execute(move_tree_query, [level_change, left_right_change, - left_right_change, new_tree_id, node.pk, parent.pk, left, right, - tree_id]) - - # Update the former root node to be consistent with the updated - # tree in the database. - setattr(node, self.left_attr, left - left_right_change) - setattr(node, self.right_attr, right - left_right_change) - setattr(node, self.level_attr, level - level_change) - setattr(node, self.tree_id_attr, new_tree_id) - setattr(node, self.parent_attr, parent) diff --git a/mptt/managers.py b/mptt/managers.py deleted file mode 100644 index bf7156b8fd2..00000000000 --- a/mptt/managers.py +++ /dev/null @@ -1,719 +0,0 @@ -""" -A custom manager for working with trees of objects. -""" -from django.db import connection, models, transaction -from django.utils.translation import ugettext as _ - -from mptt.exceptions import InvalidMove - -__all__ = ('TreeManager',) - -qn = connection.ops.quote_name - -COUNT_SUBQUERY = """( - SELECT COUNT(*) - FROM %(rel_table)s - WHERE %(mptt_fk)s = %(mptt_table)s.%(mptt_pk)s -)""" - -CUMULATIVE_COUNT_SUBQUERY = """( - SELECT COUNT(*) - FROM %(rel_table)s - WHERE %(mptt_fk)s IN - ( - SELECT m2.%(mptt_pk)s - FROM %(mptt_table)s m2 - WHERE m2.%(tree_id)s = %(mptt_table)s.%(tree_id)s - AND m2.%(left)s BETWEEN %(mptt_table)s.%(left)s - AND %(mptt_table)s.%(right)s - ) -)""" - -class TreeManager(models.Manager): - """ - A manager for working with trees of objects. - """ - def __init__(self, parent_attr, left_attr, right_attr, tree_id_attr, - level_attr): - """ - Tree attributes for the model being managed are held as - attributes of this manager for later use, since it will be using - them a **lot**. - """ - super(TreeManager, self).__init__() - self.parent_attr = parent_attr - self.left_attr = left_attr - self.right_attr = right_attr - self.tree_id_attr = tree_id_attr - self.level_attr = level_attr - - def add_related_count(self, queryset, rel_model, rel_field, count_attr, - cumulative=False): - """ - Adds a related item count to a given ``QuerySet`` using its - ``extra`` method, for a ``Model`` class which has a relation to - this ``Manager``'s ``Model`` class. - - Arguments: - - ``rel_model`` - A ``Model`` class which has a relation to this `Manager``'s - ``Model`` class. - - ``rel_field`` - The name of the field in ``rel_model`` which holds the - relation. - - ``count_attr`` - The name of an attribute which should be added to each item in - this ``QuerySet``, containing a count of how many instances - of ``rel_model`` are related to it through ``rel_field``. - - ``cumulative`` - If ``True``, the count will be for each item and all of its - descendants, otherwise it will be for each item itself. - """ - opts = self.model._meta - if cumulative: - subquery = CUMULATIVE_COUNT_SUBQUERY % { - 'rel_table': qn(rel_model._meta.db_table), - 'mptt_fk': qn(rel_model._meta.get_field(rel_field).column), - 'mptt_table': qn(opts.db_table), - 'mptt_pk': qn(opts.pk.column), - 'tree_id': qn(opts.get_field(self.tree_id_attr).column), - 'left': qn(opts.get_field(self.left_attr).column), - 'right': qn(opts.get_field(self.right_attr).column), - } - else: - subquery = COUNT_SUBQUERY % { - 'rel_table': qn(rel_model._meta.db_table), - 'mptt_fk': qn(rel_model._meta.get_field(rel_field).column), - 'mptt_table': qn(opts.db_table), - 'mptt_pk': qn(opts.pk.column), - } - return queryset.extra(select={count_attr: subquery}) - - def get_query_set(self): - """ - Returns a ``QuerySet`` which contains all tree items, ordered in - such a way that that root nodes appear in tree id order and - their subtrees appear in depth-first order. - """ - return super(TreeManager, self).get_query_set().order_by( - self.tree_id_attr, self.left_attr) - - def insert_node(self, node, target, position='last-child', - commit=False): - """ - Sets up the tree state for ``node`` (which has not yet been - inserted into in the database) so it will be positioned relative - to a given ``target`` node as specified by ``position`` (when - appropriate) it is inserted, with any neccessary space already - having been made for it. - - A ``target`` of ``None`` indicates that ``node`` should be - the last root node. - - If ``commit`` is ``True``, ``node``'s ``save()`` method will be - called before it is returned. - """ - if node.pk: - raise ValueError(_('Cannot insert a node which has already been saved.')) - - if target is None: - setattr(node, self.left_attr, 1) - setattr(node, self.right_attr, 2) - setattr(node, self.level_attr, 0) - setattr(node, self.tree_id_attr, self._get_next_tree_id()) - setattr(node, self.parent_attr, None) - elif target.is_root_node() and position in ['left', 'right']: - target_tree_id = getattr(target, self.tree_id_attr) - if position == 'left': - tree_id = target_tree_id - space_target = target_tree_id - 1 - else: - tree_id = target_tree_id + 1 - space_target = target_tree_id - - self._create_tree_space(space_target) - - setattr(node, self.left_attr, 1) - setattr(node, self.right_attr, 2) - setattr(node, self.level_attr, 0) - setattr(node, self.tree_id_attr, tree_id) - setattr(node, self.parent_attr, None) - else: - setattr(node, self.left_attr, 0) - setattr(node, self.level_attr, 0) - - space_target, level, left, parent = \ - self._calculate_inter_tree_move_values(node, target, position) - tree_id = getattr(parent, self.tree_id_attr) - - self._create_space(2, space_target, tree_id) - - setattr(node, self.left_attr, -left) - setattr(node, self.right_attr, -left + 1) - setattr(node, self.level_attr, -level) - setattr(node, self.tree_id_attr, tree_id) - setattr(node, self.parent_attr, parent) - - if commit: - node.save() - return node - - def move_node(self, node, target, position='last-child'): - """ - Moves ``node`` relative to a given ``target`` node as specified - by ``position`` (when appropriate), by examining both nodes and - calling the appropriate method to perform the move. - - A ``target`` of ``None`` indicates that ``node`` should be - turned into a root node. - - Valid values for ``position`` are ``'first-child'``, - ``'last-child'``, ``'left'`` or ``'right'``. - - ``node`` will be modified to reflect its new tree state in the - database. - - This method explicitly checks for ``node`` being made a sibling - of a root node, as this is a special case due to our use of tree - ids to order root nodes. - """ - if target is None: - if node.is_child_node(): - self._make_child_root_node(node) - elif target.is_root_node() and position in ['left', 'right']: - self._make_sibling_of_root_node(node, target, position) - else: - if node.is_root_node(): - self._move_root_node(node, target, position) - else: - self._move_child_node(node, target, position) - transaction.commit_unless_managed() - - def root_node(self, tree_id): - """ - Returns the root node of the tree with the given id. - """ - return self.get(**{ - self.tree_id_attr: tree_id, - '%s__isnull' % self.parent_attr: True, - }) - - def root_nodes(self): - """ - Creates a ``QuerySet`` containing root nodes. - """ - return self.filter(**{'%s__isnull' % self.parent_attr: True}) - - def _calculate_inter_tree_move_values(self, node, target, position): - """ - Calculates values required when moving ``node`` relative to - ``target`` as specified by ``position``. - """ - left = getattr(node, self.left_attr) - level = getattr(node, self.level_attr) - target_left = getattr(target, self.left_attr) - target_right = getattr(target, self.right_attr) - target_level = getattr(target, self.level_attr) - - if position == 'last-child' or position == 'first-child': - if position == 'last-child': - space_target = target_right - 1 - else: - space_target = target_left - level_change = level - target_level - 1 - parent = target - elif position == 'left' or position == 'right': - if position == 'left': - space_target = target_left - 1 - else: - space_target = target_right - level_change = level - target_level - parent = getattr(target, self.parent_attr) - else: - raise ValueError(_('An invalid position was given: %s.') % position) - - left_right_change = left - space_target - 1 - return space_target, level_change, left_right_change, parent - - def _close_gap(self, size, target, tree_id): - """ - Closes a gap of a certain ``size`` after the given ``target`` - point in the tree identified by ``tree_id``. - """ - self._manage_space(-size, target, tree_id) - - def _create_space(self, size, target, tree_id): - """ - Creates a space of a certain ``size`` after the given ``target`` - point in the tree identified by ``tree_id``. - """ - self._manage_space(size, target, tree_id) - - def _create_tree_space(self, target_tree_id): - """ - Creates space for a new tree by incrementing all tree ids - greater than ``target_tree_id``. - """ - opts = self.model._meta - cursor = connection.cursor() - cursor.execute(""" - UPDATE %(table)s - SET %(tree_id)s = %(tree_id)s + 1 - WHERE %(tree_id)s > %%s""" % { - 'table': qn(opts.db_table), - 'tree_id': qn(opts.get_field(self.tree_id_attr).column), - }, [target_tree_id]) - - def _get_next_tree_id(self): - """ - Determines the next largest unused tree id for the tree managed - by this manager. - """ - opts = self.model._meta - cursor = connection.cursor() - cursor.execute('SELECT MAX(%s) FROM %s' % ( - qn(opts.get_field(self.tree_id_attr).column), - qn(opts.db_table))) - row = cursor.fetchone() - return row[0] and (row[0] + 1) or 1 - - def _inter_tree_move_and_close_gap(self, node, level_change, - left_right_change, new_tree_id, parent_pk=None): - """ - Removes ``node`` from its current tree, with the given set of - changes being applied to ``node`` and its descendants, closing - the gap left by moving ``node`` as it does so. - - If ``parent_pk`` is ``None``, this indicates that ``node`` is - being moved to a brand new tree as its root node, and will thus - have its parent field set to ``NULL``. Otherwise, ``node`` will - have ``parent_pk`` set for its parent field. - """ - opts = self.model._meta - inter_tree_move_query = """ - UPDATE %(table)s - SET %(level)s = CASE - WHEN %(left)s >= %%s AND %(left)s <= %%s - THEN %(level)s - %%s - ELSE %(level)s END, - %(tree_id)s = CASE - WHEN %(left)s >= %%s AND %(left)s <= %%s - THEN %%s - ELSE %(tree_id)s END, - %(left)s = CASE - WHEN %(left)s >= %%s AND %(left)s <= %%s - THEN %(left)s - %%s - WHEN %(left)s > %%s - THEN %(left)s - %%s - ELSE %(left)s END, - %(right)s = CASE - WHEN %(right)s >= %%s AND %(right)s <= %%s - THEN %(right)s - %%s - WHEN %(right)s > %%s - THEN %(right)s - %%s - ELSE %(right)s END, - %(parent)s = CASE - WHEN %(pk)s = %%s - THEN %(new_parent)s - ELSE %(parent)s END - WHERE %(tree_id)s = %%s""" % { - 'table': qn(opts.db_table), - 'level': qn(opts.get_field(self.level_attr).column), - 'left': qn(opts.get_field(self.left_attr).column), - 'tree_id': qn(opts.get_field(self.tree_id_attr).column), - 'right': qn(opts.get_field(self.right_attr).column), - 'parent': qn(opts.get_field(self.parent_attr).column), - 'pk': qn(opts.pk.column), - 'new_parent': parent_pk is None and 'NULL' or '%s', - } - - left = getattr(node, self.left_attr) - right = getattr(node, self.right_attr) - gap_size = right - left + 1 - gap_target_left = left - 1 - params = [ - left, right, level_change, - left, right, new_tree_id, - left, right, left_right_change, - gap_target_left, gap_size, - left, right, left_right_change, - gap_target_left, gap_size, - node.pk, - getattr(node, self.tree_id_attr) - ] - if parent_pk is not None: - params.insert(-1, parent_pk) - cursor = connection.cursor() - cursor.execute(inter_tree_move_query, params) - - def _make_child_root_node(self, node, new_tree_id=None): - """ - Removes ``node`` from its tree, making it the root node of a new - tree. - - If ``new_tree_id`` is not specified a new tree id will be - generated. - - ``node`` will be modified to reflect its new tree state in the - database. - """ - left = getattr(node, self.left_attr) - right = getattr(node, self.right_attr) - level = getattr(node, self.level_attr) - if not new_tree_id: - new_tree_id = self._get_next_tree_id() - left_right_change = left - 1 - - self._inter_tree_move_and_close_gap(node, level, left_right_change, - new_tree_id) - - # Update the node to be consistent with the updated - # tree in the database. - setattr(node, self.left_attr, left - left_right_change) - setattr(node, self.right_attr, right - left_right_change) - setattr(node, self.level_attr, 0) - setattr(node, self.tree_id_attr, new_tree_id) - setattr(node, self.parent_attr, None) - - def _make_sibling_of_root_node(self, node, target, position): - """ - Moves ``node``, making it a sibling of the given ``target`` root - node as specified by ``position``. - - ``node`` will be modified to reflect its new tree state in the - database. - - Since we use tree ids to reduce the number of rows affected by - tree mangement during insertion and deletion, root nodes are not - true siblings; thus, making an item a sibling of a root node is - a special case which involves shuffling tree ids around. - """ - if node == target: - raise InvalidMove(_('A node may not be made a sibling of itself.')) - - opts = self.model._meta - tree_id = getattr(node, self.tree_id_attr) - target_tree_id = getattr(target, self.tree_id_attr) - - if node.is_child_node(): - if position == 'left': - space_target = target_tree_id - 1 - new_tree_id = target_tree_id - elif position == 'right': - space_target = target_tree_id - new_tree_id = target_tree_id + 1 - else: - raise ValueError(_('An invalid position was given: %s.') % position) - - self._create_tree_space(space_target) - if tree_id > space_target: - # The node's tree id has been incremented in the - # database - this change must be reflected in the node - # object for the method call below to operate on the - # correct tree. - setattr(node, self.tree_id_attr, tree_id + 1) - self._make_child_root_node(node, new_tree_id) - else: - if position == 'left': - if target_tree_id > tree_id: - left_sibling = target.get_previous_sibling() - if node == left_sibling: - return - new_tree_id = getattr(left_sibling, self.tree_id_attr) - lower_bound, upper_bound = tree_id, new_tree_id - shift = -1 - else: - new_tree_id = target_tree_id - lower_bound, upper_bound = new_tree_id, tree_id - shift = 1 - elif position == 'right': - if target_tree_id > tree_id: - new_tree_id = target_tree_id - lower_bound, upper_bound = tree_id, target_tree_id - shift = -1 - else: - right_sibling = target.get_next_sibling() - if node == right_sibling: - return - new_tree_id = getattr(right_sibling, self.tree_id_attr) - lower_bound, upper_bound = new_tree_id, tree_id - shift = 1 - else: - raise ValueError(_('An invalid position was given: %s.') % position) - - root_sibling_query = """ - UPDATE %(table)s - SET %(tree_id)s = CASE - WHEN %(tree_id)s = %%s - THEN %%s - ELSE %(tree_id)s + %%s END - WHERE %(tree_id)s >= %%s AND %(tree_id)s <= %%s""" % { - 'table': qn(opts.db_table), - 'tree_id': qn(opts.get_field(self.tree_id_attr).column), - } - cursor = connection.cursor() - cursor.execute(root_sibling_query, [tree_id, new_tree_id, shift, - lower_bound, upper_bound]) - setattr(node, self.tree_id_attr, new_tree_id) - - def _manage_space(self, size, target, tree_id): - """ - Manages spaces in the tree identified by ``tree_id`` by changing - the values of the left and right columns by ``size`` after the - given ``target`` point. - """ - opts = self.model._meta - space_query = """ - UPDATE %(table)s - SET %(left)s = CASE - WHEN %(left)s > %%s - THEN %(left)s + %%s - ELSE %(left)s END, - %(right)s = CASE - WHEN %(right)s > %%s - THEN %(right)s + %%s - ELSE %(right)s END - WHERE %(tree_id)s = %%s - AND (%(left)s > %%s OR %(right)s > %%s)""" % { - 'table': qn(opts.db_table), - 'left': qn(opts.get_field(self.left_attr).column), - 'right': qn(opts.get_field(self.right_attr).column), - 'tree_id': qn(opts.get_field(self.tree_id_attr).column), - } - cursor = connection.cursor() - cursor.execute(space_query, [target, size, target, size, tree_id, - target, target]) - - def _move_child_node(self, node, target, position): - """ - Calls the appropriate method to move child node ``node`` - relative to the given ``target`` node as specified by - ``position``. - """ - if (getattr(node, self.tree_id_attr) == - getattr(target, self.tree_id_attr)): - self._move_child_within_tree(node, target, position) - else: - self._move_child_to_new_tree(node, target, position) - - def _move_child_to_new_tree(self, node, target, position): - """ - Moves child node ``node`` to a different tree, inserting it - relative to the given ``target`` node in the new tree as - specified by ``position``. - - ``node`` will be modified to reflect its new tree state in the - database. - """ - left = getattr(node, self.left_attr) - right = getattr(node, self.right_attr) - level = getattr(node, self.level_attr) - new_tree_id = getattr(target, self.tree_id_attr) - - space_target, level_change, left_right_change, parent = \ - self._calculate_inter_tree_move_values(node, target, position) - - tree_width = right - left + 1 - - # Make space for the subtree which will be moved - self._create_space(tree_width, space_target, new_tree_id) - # Move the subtree - self._inter_tree_move_and_close_gap(node, level_change, - left_right_change, new_tree_id, parent.pk) - - # Update the node to be consistent with the updated - # tree in the database. - setattr(node, self.left_attr, left - left_right_change) - setattr(node, self.right_attr, right - left_right_change) - setattr(node, self.level_attr, level - level_change) - setattr(node, self.tree_id_attr, new_tree_id) - setattr(node, self.parent_attr, parent) - - def _move_child_within_tree(self, node, target, position): - """ - Moves child node ``node`` within its current tree relative to - the given ``target`` node as specified by ``position``. - - ``node`` will be modified to reflect its new tree state in the - database. - """ - left = getattr(node, self.left_attr) - right = getattr(node, self.right_attr) - level = getattr(node, self.level_attr) - width = right - left + 1 - tree_id = getattr(node, self.tree_id_attr) - target_left = getattr(target, self.left_attr) - target_right = getattr(target, self.right_attr) - target_level = getattr(target, self.level_attr) - - if position == 'last-child' or position == 'first-child': - if node == target: - raise InvalidMove(_('A node may not be made a child of itself.')) - elif left < target_left < right: - raise InvalidMove(_('A node may not be made a child of any of its descendants.')) - if position == 'last-child': - if target_right > right: - new_left = target_right - width - new_right = target_right - 1 - else: - new_left = target_right - new_right = target_right + width - 1 - else: - if target_left > left: - new_left = target_left - width + 1 - new_right = target_left - else: - new_left = target_left + 1 - new_right = target_left + width - level_change = level - target_level - 1 - parent = target - elif position == 'left' or position == 'right': - if node == target: - raise InvalidMove(_('A node may not be made a sibling of itself.')) - elif left < target_left < right: - raise InvalidMove(_('A node may not be made a sibling of any of its descendants.')) - if position == 'left': - if target_left > left: - new_left = target_left - width - new_right = target_left - 1 - else: - new_left = target_left - new_right = target_left + width - 1 - else: - if target_right > right: - new_left = target_right - width + 1 - new_right = target_right - else: - new_left = target_right + 1 - new_right = target_right + width - level_change = level - target_level - parent = getattr(target, self.parent_attr) - else: - raise ValueError(_('An invalid position was given: %s.') % position) - - left_boundary = min(left, new_left) - right_boundary = max(right, new_right) - left_right_change = new_left - left - gap_size = width - if left_right_change > 0: - gap_size = -gap_size - - opts = self.model._meta - # The level update must come before the left update to keep - # MySQL happy - left seems to refer to the updated value - # immediately after its update has been specified in the query - # with MySQL, but not with SQLite or Postgres. - move_subtree_query = """ - UPDATE %(table)s - SET %(level)s = CASE - WHEN %(left)s >= %%s AND %(left)s <= %%s - THEN %(level)s - %%s - ELSE %(level)s END, - %(left)s = CASE - WHEN %(left)s >= %%s AND %(left)s <= %%s - THEN %(left)s + %%s - WHEN %(left)s >= %%s AND %(left)s <= %%s - THEN %(left)s + %%s - ELSE %(left)s END, - %(right)s = CASE - WHEN %(right)s >= %%s AND %(right)s <= %%s - THEN %(right)s + %%s - WHEN %(right)s >= %%s AND %(right)s <= %%s - THEN %(right)s + %%s - ELSE %(right)s END, - %(parent)s = CASE - WHEN %(pk)s = %%s - THEN %%s - ELSE %(parent)s END - WHERE %(tree_id)s = %%s""" % { - 'table': qn(opts.db_table), - 'level': qn(opts.get_field(self.level_attr).column), - 'left': qn(opts.get_field(self.left_attr).column), - 'right': qn(opts.get_field(self.right_attr).column), - 'parent': qn(opts.get_field(self.parent_attr).column), - 'pk': qn(opts.pk.column), - 'tree_id': qn(opts.get_field(self.tree_id_attr).column), - } - - cursor = connection.cursor() - cursor.execute(move_subtree_query, [ - left, right, level_change, - left, right, left_right_change, - left_boundary, right_boundary, gap_size, - left, right, left_right_change, - left_boundary, right_boundary, gap_size, - node.pk, parent.pk, - tree_id]) - - # Update the node to be consistent with the updated - # tree in the database. - setattr(node, self.left_attr, new_left) - setattr(node, self.right_attr, new_right) - setattr(node, self.level_attr, level - level_change) - setattr(node, self.parent_attr, parent) - - def _move_root_node(self, node, target, position): - """ - Moves root node``node`` to a different tree, inserting it - relative to the given ``target`` node as specified by - ``position``. - - ``node`` will be modified to reflect its new tree state in the - database. - """ - left = getattr(node, self.left_attr) - right = getattr(node, self.right_attr) - level = getattr(node, self.level_attr) - tree_id = getattr(node, self.tree_id_attr) - new_tree_id = getattr(target, self.tree_id_attr) - width = right - left + 1 - - if node == target: - raise InvalidMove(_('A node may not be made a child of itself.')) - elif tree_id == new_tree_id: - raise InvalidMove(_('A node may not be made a child of any of its descendants.')) - - space_target, level_change, left_right_change, parent = \ - self._calculate_inter_tree_move_values(node, target, position) - - # Create space for the tree which will be inserted - self._create_space(width, space_target, new_tree_id) - - # Move the root node, making it a child node - opts = self.model._meta - move_tree_query = """ - UPDATE %(table)s - SET %(level)s = %(level)s - %%s, - %(left)s = %(left)s - %%s, - %(right)s = %(right)s - %%s, - %(tree_id)s = %%s, - %(parent)s = CASE - WHEN %(pk)s = %%s - THEN %%s - ELSE %(parent)s END - WHERE %(left)s >= %%s AND %(left)s <= %%s - AND %(tree_id)s = %%s""" % { - 'table': qn(opts.db_table), - 'level': qn(opts.get_field(self.level_attr).column), - 'left': qn(opts.get_field(self.left_attr).column), - 'right': qn(opts.get_field(self.right_attr).column), - 'tree_id': qn(opts.get_field(self.tree_id_attr).column), - 'parent': qn(opts.get_field(self.parent_attr).column), - 'pk': qn(opts.pk.column), - } - cursor = connection.cursor() - cursor.execute(move_tree_query, [level_change, left_right_change, - left_right_change, new_tree_id, node.pk, parent.pk, left, right, - tree_id]) - - # Update the former root node to be consistent with the updated - # tree in the database. - setattr(node, self.left_attr, left - left_right_change) - setattr(node, self.right_attr, right - left_right_change) - setattr(node, self.level_attr, level - level_change) - setattr(node, self.tree_id_attr, new_tree_id) - setattr(node, self.parent_attr, parent) diff --git a/mptt/models.py b/mptt/models.py deleted file mode 100644 index cdfc2e4c45e..00000000000 --- a/mptt/models.py +++ /dev/null @@ -1,186 +0,0 @@ -""" -New instance methods for Django models which are set up for Modified -Preorder Tree Traversal. -""" - -def get_ancestors(self, ascending=False): - """ - Creates a ``QuerySet`` containing the ancestors of this model - instance. - - This defaults to being in descending order (root ancestor first, - immediate parent last); passing ``True`` for the ``ascending`` - argument will reverse the ordering (immediate parent first, root - ancestor last). - """ - if self.is_root_node(): - return self._tree_manager.none() - - opts = self._meta - return self._default_manager.filter(**{ - '%s__lt' % opts.left_attr: getattr(self, opts.left_attr), - '%s__gt' % opts.right_attr: getattr(self, opts.right_attr), - opts.tree_id_attr: getattr(self, opts.tree_id_attr), - }).order_by('%s%s' % ({True: '-', False: ''}[ascending], opts.left_attr)) - -def get_children(self): - """ - Creates a ``QuerySet`` containing the immediate children of this - model instance, in tree order. - - The benefit of using this method over the reverse relation - provided by the ORM to the instance's children is that a - database query can be avoided in the case where the instance is - a leaf node (it has no children). - """ - if self.is_leaf_node(): - return self._tree_manager.none() - - return self._tree_manager.filter(**{ - self._meta.parent_attr: self, - }) - -def get_descendants(self, include_self=False): - """ - Creates a ``QuerySet`` containing descendants of this model - instance, in tree order. - - If ``include_self`` is ``True``, the ``QuerySet`` will also - include this model instance. - """ - if not include_self and self.is_leaf_node(): - return self._tree_manager.none() - - opts = self._meta - filters = {opts.tree_id_attr: getattr(self, opts.tree_id_attr)} - if include_self: - filters['%s__range' % opts.left_attr] = (getattr(self, opts.left_attr), - getattr(self, opts.right_attr)) - else: - filters['%s__gt' % opts.left_attr] = getattr(self, opts.left_attr) - filters['%s__lt' % opts.left_attr] = getattr(self, opts.right_attr) - return self._tree_manager.filter(**filters) - -def get_descendant_count(self): - """ - Returns the number of descendants this model instance has. - """ - return (getattr(self, self._meta.right_attr) - - getattr(self, self._meta.left_attr) - 1) / 2 - -def get_next_sibling(self): - """ - Returns this model instance's next sibling in the tree, or - ``None`` if it doesn't have a next sibling. - """ - opts = self._meta - if self.is_root_node(): - filters = { - '%s__isnull' % opts.parent_attr: True, - '%s__gt' % opts.tree_id_attr: getattr(self, opts.tree_id_attr), - } - else: - filters = { - opts.parent_attr: getattr(self, '%s_id' % opts.parent_attr), - '%s__gt' % opts.left_attr: getattr(self, opts.right_attr), - } - - sibling = None - try: - sibling = self._tree_manager.filter(**filters)[0] - except IndexError: - pass - return sibling - -def get_previous_sibling(self): - """ - Returns this model instance's previous sibling in the tree, or - ``None`` if it doesn't have a previous sibling. - """ - opts = self._meta - if self.is_root_node(): - filters = { - '%s__isnull' % opts.parent_attr: True, - '%s__lt' % opts.tree_id_attr: getattr(self, opts.tree_id_attr), - } - order_by = '-%s' % opts.tree_id_attr - else: - filters = { - opts.parent_attr: getattr(self, '%s_id' % opts.parent_attr), - '%s__lt' % opts.right_attr: getattr(self, opts.left_attr), - } - order_by = '-%s' % opts.right_attr - - sibling = None - try: - sibling = self._tree_manager.filter(**filters).order_by(order_by)[0] - except IndexError: - pass - return sibling - -def get_root(self): - """ - Returns the root node of this model instance's tree. - """ - if self.is_root_node(): - return self - - opts = self._meta - return self._default_manager.get(**{ - opts.tree_id_attr: getattr(self, opts.tree_id_attr), - '%s__isnull' % opts.parent_attr: True, - }) - -def get_siblings(self, include_self=False): - """ - Creates a ``QuerySet`` containing siblings of this model - instance. Root nodes are considered to be siblings of other root - nodes. - - If ``include_self`` is ``True``, the ``QuerySet`` will also - include this model instance. - """ - opts = self._meta - if self.is_root_node(): - filters = {'%s__isnull' % opts.parent_attr: True} - else: - filters = {opts.parent_attr: getattr(self, '%s_id' % opts.parent_attr)} - queryset = self._tree_manager.filter(**filters) - if not include_self: - queryset = queryset.exclude(pk=self.pk) - return queryset - -def insert_at(self, target, position='first-child', commit=False): - """ - Convenience method for calling ``TreeManager.insert_node`` with this - model instance. - """ - self._tree_manager.insert_node(self, target, position, commit) - -def is_child_node(self): - """ - Returns ``True`` if this model instance is a child node, ``False`` - otherwise. - """ - return not self.is_root_node() - -def is_leaf_node(self): - """ - Returns ``True`` if this model instance is a leaf node (it has no - children), ``False`` otherwise. - """ - return not self.get_descendant_count() - -def is_root_node(self): - """ - Returns ``True`` if this model instance is a root node, - ``False`` otherwise. - """ - return getattr(self, '%s_id' % self._meta.parent_attr) is None - -def move_to(self, target, position='first-child'): - """ - Convenience method for calling ``TreeManager.move_node`` with this - model instance. - """ - self._tree_manager.move_node(self, target, position) diff --git a/mptt/signals.py b/mptt/signals.py deleted file mode 100644 index f9c0d6f5fda..00000000000 --- a/mptt/signals.py +++ /dev/null @@ -1,127 +0,0 @@ -""" -Signal receiving functions which handle Modified Preorder Tree Traversal -related logic when model instances are about to be saved or deleted. -""" -import operator - -from django.db.models.query import Q - -__all__ = ('pre_save',) - -def _insertion_target_filters(node, order_insertion_by): - """ - Creates a filter which matches suitable right siblings for ``node``, - where insertion should maintain ordering according to the list of - fields in ``order_insertion_by``. - - For example, given an ``order_insertion_by`` of - ``['field1', 'field2', 'field3']``, the resulting filter should - correspond to the following SQL:: - - field1 > %s - OR (field1 = %s AND field2 > %s) - OR (field1 = %s AND field2 = %s AND field3 > %s) - - """ - fields = [] - filters = [] - for field in order_insertion_by: - value = getattr(node, field) - filters.append(reduce(operator.and_, [Q(**{f: v}) for f, v in fields] + - [Q(**{'%s__gt' % field: value})])) - fields.append((field, value)) - return reduce(operator.or_, filters) - -def _get_ordered_insertion_target(node, parent): - """ - Attempts to retrieve a suitable right sibling for ``node`` - underneath ``parent`` (which may be ``None`` in the case of root - nodes) so that ordering by the fields specified by the node's class' - ``order_insertion_by`` option is maintained. - - Returns ``None`` if no suitable sibling can be found. - """ - right_sibling = None - # Optimisation - if the parent doesn't have descendants, - # the node will always be its last child. - if parent is None or parent.get_descendant_count() > 0: - opts = node._meta - order_by = opts.order_insertion_by[:] - filters = _insertion_target_filters(node, order_by) - if parent: - filters = filters & Q(**{opts.parent_attr: parent}) - # Fall back on tree ordering if multiple child nodes have - # the same values. - order_by.append(opts.left_attr) - else: - filters = filters & Q(**{'%s__isnull' % opts.parent_attr: True}) - # Fall back on tree id ordering if multiple root nodes have - # the same values. - order_by.append(opts.tree_id_attr) - try: - right_sibling = \ - node._default_manager.filter(filters).order_by(*order_by)[0] - except IndexError: - # No suitable right sibling could be found - pass - return right_sibling - -def pre_save(instance, **kwargs): - """ - If this is a new node, sets tree fields up before it is inserted - into the database, making room in the tree structure as neccessary, - defaulting to making the new node the last child of its parent. - - It the node's left and right edge indicators already been set, we - take this as indication that the node has already been set up for - insertion, so its tree fields are left untouched. - - If this is an existing node and its parent has been changed, - performs reparenting in the tree structure, defaulting to making the - node the last child of its new parent. - - In either case, if the node's class has its ``order_insertion_by`` - tree option set, the node will be inserted or moved to the - appropriate position to maintain ordering by the specified field. - """ - if kwargs.get('raw'): - return - - opts = instance._meta - parent = getattr(instance, opts.parent_attr) - if not instance.pk: - if (getattr(instance, opts.left_attr) and - getattr(instance, opts.right_attr)): - # This node has already been set up for insertion. - return - - if opts.order_insertion_by: - right_sibling = _get_ordered_insertion_target(instance, parent) - if right_sibling: - instance.insert_at(right_sibling, 'left') - return - - # Default insertion - instance.insert_at(parent, position='last-child') - else: - # TODO Is it possible to track the original parent so we - # don't have to look it up again on each save after the - # first? - old_parent = getattr(instance._default_manager.get(pk=instance.pk), - opts.parent_attr) - if parent != old_parent: - setattr(instance, opts.parent_attr, old_parent) - try: - if opts.order_insertion_by: - right_sibling = _get_ordered_insertion_target(instance, - parent) - if right_sibling: - instance.move_to(right_sibling, 'left') - return - - # Default movement - instance.move_to(parent, position='last-child') - finally: - # Make sure the instance's new parent is always - # restored on the way out in case of errors. - setattr(instance, opts.parent_attr, parent) \ No newline at end of file diff --git a/mptt/templatetags/__init__.py b/mptt/templatetags/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/mptt/templatetags/mptt_tags.py b/mptt/templatetags/mptt_tags.py deleted file mode 100644 index cd947bb4e93..00000000000 --- a/mptt/templatetags/mptt_tags.py +++ /dev/null @@ -1,197 +0,0 @@ -""" -Template tags for working with lists of model instances which represent -trees. -""" -from django import template -from django.db.models import get_model -from django.db.models.fields import FieldDoesNotExist -from django.utils.encoding import force_unicode -from django.utils.translation import ugettext as _ - -from mptt.utils import tree_item_iterator, drilldown_tree_for_node - -register = template.Library() - -class FullTreeForModelNode(template.Node): - def __init__(self, model, context_var): - self.model = model - self.context_var = context_var - - def render(self, context): - cls = get_model(*self.model.split('.')) - if cls is None: - raise template.TemplateSyntaxError(_('full_tree_for_model tag was given an invalid model: %s') % self.model) - context[self.context_var] = cls._tree_manager.all() - return '' - -class DrilldownTreeForNodeNode(template.Node): - def __init__(self, node, context_var, foreign_key=None, count_attr=None, - cumulative=False): - self.node = template.Variable(node) - self.context_var = context_var - self.foreign_key = foreign_key - self.count_attr = count_attr - self.cumulative = cumulative - - def render(self, context): - # Let any VariableDoesNotExist raised bubble up - args = [self.node.resolve(context)] - - if self.foreign_key is not None: - app_label, model_name, fk_attr = self.foreign_key.split('.') - cls = get_model(app_label, model_name) - if cls is None: - raise template.TemplateSyntaxError(_('drilldown_tree_for_node tag was given an invalid model: %s') % '.'.join([app_label, model_name])) - try: - cls._meta.get_field(fk_attr) - except FieldDoesNotExist: - raise template.TemplateSyntaxError(_('drilldown_tree_for_node tag was given an invalid model field: %s') % fk_attr) - args.extend([cls, fk_attr, self.count_attr, self.cumulative]) - - context[self.context_var] = drilldown_tree_for_node(*args) - return '' - -def do_full_tree_for_model(parser, token): - """ - Populates a template variable with a ``QuerySet`` containing the - full tree for a given model. - - Usage:: - - {% full_tree_for_model [model] as [varname] %} - - The model is specified in ``[appname].[modelname]`` format. - - Example:: - - {% full_tree_for_model tests.Genre as genres %} - - """ - bits = token.contents.split() - if len(bits) != 4: - raise template.TemplateSyntaxError(_('%s tag requires three arguments') % bits[0]) - if bits[2] != 'as': - raise template.TemplateSyntaxError(_("second argument to %s tag must be 'as'") % bits[0]) - return FullTreeForModelNode(bits[1], bits[3]) - -def do_drilldown_tree_for_node(parser, token): - """ - Populates a template variable with the drilldown tree for a given - node, optionally counting the number of items associated with its - children. - - A drilldown tree consists of a node's ancestors, itself and its - immediate children. For example, a drilldown tree for a book - category "Personal Finance" might look something like:: - - Books - Business, Finance & Law - Personal Finance - Budgeting (220) - Financial Planning (670) - - Usage:: - - {% drilldown_tree_for_node [node] as [varname] %} - - Extended usage:: - - {% drilldown_tree_for_node [node] as [varname] count [foreign_key] in [count_attr] %} - {% drilldown_tree_for_node [node] as [varname] cumulative count [foreign_key] in [count_attr] %} - - The foreign key is specified in ``[appname].[modelname].[fieldname]`` - format, where ``fieldname`` is the name of a field in the specified - model which relates it to the given node's model. - - When this form is used, a ``count_attr`` attribute on each child of - the given node in the drilldown tree will contain a count of the - number of items associated with it through the given foreign key. - - If cumulative is also specified, this count will be for items - related to the child node and all of its descendants. - - Examples:: - - {% drilldown_tree_for_node genre as drilldown %} - {% drilldown_tree_for_node genre as drilldown count tests.Game.genre in game_count %} - {% drilldown_tree_for_node genre as drilldown cumulative count tests.Game.genre in game_count %} - - """ - bits = token.contents.split() - len_bits = len(bits) - if len_bits not in (4, 8, 9): - raise TemplateSyntaxError(_('%s tag requires either three, seven or eight arguments') % bits[0]) - if bits[2] != 'as': - raise TemplateSyntaxError(_("second argument to %s tag must be 'as'") % bits[0]) - if len_bits == 8: - if bits[4] != 'count': - raise TemplateSyntaxError(_("if seven arguments are given, fourth argument to %s tag must be 'with'") % bits[0]) - if bits[6] != 'in': - raise TemplateSyntaxError(_("if seven arguments are given, sixth argument to %s tag must be 'in'") % bits[0]) - return DrilldownTreeForNodeNode(bits[1], bits[3], bits[5], bits[7]) - elif len_bits == 9: - if bits[4] != 'cumulative': - raise TemplateSyntaxError(_("if eight arguments are given, fourth argument to %s tag must be 'cumulative'") % bits[0]) - if bits[5] != 'count': - raise TemplateSyntaxError(_("if eight arguments are given, fifth argument to %s tag must be 'count'") % bits[0]) - if bits[7] != 'in': - raise TemplateSyntaxError(_("if eight arguments are given, seventh argument to %s tag must be 'in'") % bits[0]) - return DrilldownTreeForNodeNode(bits[1], bits[3], bits[6], bits[8], cumulative=True) - else: - return DrilldownTreeForNodeNode(bits[1], bits[3]) - -def tree_info(items, features=None): - """ - Given a list of tree items, produces doubles of a tree item and a - ``dict`` containing information about the tree structure around the - item, with the following contents: - - new_level - ``True`` if the current item is the start of a new level in - the tree, ``False`` otherwise. - - closed_levels - A list of levels which end after the current item. This will - be an empty list if the next item is at the same level as the - current item. - - Using this filter with unpacking in a ``{% for %}`` tag, you should - have enough information about the tree structure to create a - hierarchical representation of the tree. - - Example:: - - {% for genre,structure in genres|tree_info %} - {% if tree.new_level %}
  • {% else %}
  • {% endif %} - {{ genre.name }} - {% for level in tree.closed_levels %}
{% endfor %} - {% endfor %} - - """ - kwargs = {} - if features: - feature_names = features.split(',') - if 'ancestors' in feature_names: - kwargs['ancestors'] = True - return tree_item_iterator(items, **kwargs) - -def tree_path(items, separator=' :: '): - """ - Creates a tree path represented by a list of ``items`` by joining - the items with a ``separator``. - - Each path item will be coerced to unicode, so a list of model - instances may be given if required. - - Example:: - - {{ some_list|tree_path }} - {{ some_node.get_ancestors|tree_path:" > " }} - - """ - return separator.join([force_unicode(i) for i in items]) - -register.tag('full_tree_for_model', do_full_tree_for_model) -register.tag('drilldown_tree_for_node', do_drilldown_tree_for_node) -register.filter('tree_info', tree_info) -register.filter('tree_path', tree_path) diff --git a/mptt/tests/__init__.py b/mptt/tests/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/mptt/tests/doctests.py b/mptt/tests/doctests.py deleted file mode 100644 index c154b5a3138..00000000000 --- a/mptt/tests/doctests.py +++ /dev/null @@ -1,1139 +0,0 @@ -r""" ->>> from datetime import date ->>> from mptt.exceptions import InvalidMove ->>> from mptt.tests.models import Genre, Insert, MultiOrder, Node, OrderedInsertion, Tree - ->>> def print_tree_details(nodes): -... opts = nodes[0]._meta -... print '\n'.join(['%s %s %s %s %s %s' % \ -... (n.pk, getattr(n, '%s_id' % opts.parent_attr) or '-', -... getattr(n, opts.tree_id_attr), getattr(n, opts.level_attr), -... getattr(n, opts.left_attr), getattr(n, opts.right_attr)) \ -... for n in nodes]) - ->>> import mptt ->>> mptt.register(Genre) -Traceback (most recent call last): - ... -AlreadyRegistered: The model Genre has already been registered. - -# Creation #################################################################### ->>> action = Genre.objects.create(name='Action') ->>> platformer = Genre.objects.create(name='Platformer', parent=action) ->>> platformer_2d = Genre.objects.create(name='2D Platformer', parent=platformer) ->>> platformer = Genre.objects.get(pk=platformer.pk) ->>> platformer_3d = Genre.objects.create(name='3D Platformer', parent=platformer) ->>> platformer = Genre.objects.get(pk=platformer.pk) ->>> platformer_4d = Genre.objects.create(name='4D Platformer', parent=platformer) ->>> rpg = Genre.objects.create(name='Role-playing Game') ->>> arpg = Genre.objects.create(name='Action RPG', parent=rpg) ->>> rpg = Genre.objects.get(pk=rpg.pk) ->>> trpg = Genre.objects.create(name='Tactical RPG', parent=rpg) ->>> print_tree_details(Genre.tree.all()) -1 - 1 0 1 10 -2 1 1 1 2 9 -3 2 1 2 3 4 -4 2 1 2 5 6 -5 2 1 2 7 8 -6 - 2 0 1 6 -7 6 2 1 2 3 -8 6 2 1 4 5 - -# Utilities ################################################################### ->>> from mptt.utils import previous_current_next, tree_item_iterator, drilldown_tree_for_node - ->>> for p,c,n in previous_current_next(Genre.tree.all()): -... print (p,c,n) -(None, , ) -(, , ) -(, , ) -(, , ) -(, , ) -(, , ) -(, , ) -(, , None) - ->>> for i,s in tree_item_iterator(Genre.tree.all()): -... print (i, s['new_level'], s['closed_levels']) -(, True, []) -(, True, []) -(, True, []) -(, False, []) -(, False, [2, 1]) -(, False, []) -(, True, []) -(, False, [1, 0]) - ->>> for i,s in tree_item_iterator(Genre.tree.all(), ancestors=True): -... print (i, s['new_level'], s['ancestors'], s['closed_levels']) -(, True, [], []) -(, True, [u'Action'], []) -(, True, [u'Action', u'Platformer'], []) -(, False, [u'Action', u'Platformer'], []) -(, False, [u'Action', u'Platformer'], [2, 1]) -(, False, [], []) -(, True, [u'Role-playing Game'], []) -(, False, [u'Role-playing Game'], [1, 0]) - ->>> action = Genre.objects.get(pk=action.pk) ->>> [item.name for item in drilldown_tree_for_node(action)] -[u'Action', u'Platformer'] - ->>> platformer = Genre.objects.get(pk=platformer.pk) ->>> [item.name for item in drilldown_tree_for_node(platformer)] -[u'Action', u'Platformer', u'2D Platformer', u'3D Platformer', u'4D Platformer'] - ->>> platformer_3d = Genre.objects.get(pk=platformer_3d.pk) ->>> [item.name for item in drilldown_tree_for_node(platformer_3d)] -[u'Action', u'Platformer', u'3D Platformer'] - -# TreeManager Methods ######################################################### - ->>> Genre.tree.root_node(action.tree_id) - ->>> Genre.tree.root_node(rpg.tree_id) - ->>> Genre.tree.root_node(3) -Traceback (most recent call last): - ... -DoesNotExist: Genre matching query does not exist. - ->>> [g.name for g in Genre.tree.root_nodes()] -[u'Action', u'Role-playing Game'] - -# Model Instance Methods ###################################################### ->>> action = Genre.objects.get(pk=action.pk) ->>> [g.name for g in action.get_ancestors()] -[] ->>> [g.name for g in action.get_ancestors(ascending=True)] -[] ->>> [g.name for g in action.get_children()] -[u'Platformer'] ->>> [g.name for g in action.get_descendants()] -[u'Platformer', u'2D Platformer', u'3D Platformer', u'4D Platformer'] ->>> [g.name for g in action.get_descendants(include_self=True)] -[u'Action', u'Platformer', u'2D Platformer', u'3D Platformer', u'4D Platformer'] ->>> action.get_descendant_count() -4 ->>> action.get_previous_sibling() ->>> action.get_next_sibling() - ->>> action.get_root() - ->>> [g.name for g in action.get_siblings()] -[u'Role-playing Game'] ->>> [g.name for g in action.get_siblings(include_self=True)] -[u'Action', u'Role-playing Game'] ->>> action.is_root_node() -True ->>> action.is_child_node() -False ->>> action.is_leaf_node() -False - ->>> platformer = Genre.objects.get(pk=platformer.pk) ->>> [g.name for g in platformer.get_ancestors()] -[u'Action'] ->>> [g.name for g in platformer.get_ancestors(ascending=True)] -[u'Action'] ->>> [g.name for g in platformer.get_children()] -[u'2D Platformer', u'3D Platformer', u'4D Platformer'] ->>> [g.name for g in platformer.get_descendants()] -[u'2D Platformer', u'3D Platformer', u'4D Platformer'] ->>> [g.name for g in platformer.get_descendants(include_self=True)] -[u'Platformer', u'2D Platformer', u'3D Platformer', u'4D Platformer'] ->>> platformer.get_descendant_count() -3 ->>> platformer.get_previous_sibling() ->>> platformer.get_next_sibling() ->>> platformer.get_root() - ->>> [g.name for g in platformer.get_siblings()] -[] ->>> [g.name for g in platformer.get_siblings(include_self=True)] -[u'Platformer'] ->>> platformer.is_root_node() -False ->>> platformer.is_child_node() -True ->>> platformer.is_leaf_node() -False - ->>> platformer_3d = Genre.objects.get(pk=platformer_3d.pk) ->>> [g.name for g in platformer_3d.get_ancestors()] -[u'Action', u'Platformer'] ->>> [g.name for g in platformer_3d.get_ancestors(ascending=True)] -[u'Platformer', u'Action'] ->>> [g.name for g in platformer_3d.get_children()] -[] ->>> [g.name for g in platformer_3d.get_descendants()] -[] ->>> [g.name for g in platformer_3d.get_descendants(include_self=True)] -[u'3D Platformer'] ->>> platformer_3d.get_descendant_count() -0 ->>> platformer_3d.get_previous_sibling() - ->>> platformer_3d.get_next_sibling() - ->>> platformer_3d.get_root() - ->>> [g.name for g in platformer_3d.get_siblings()] -[u'2D Platformer', u'4D Platformer'] ->>> [g.name for g in platformer_3d.get_siblings(include_self=True)] -[u'2D Platformer', u'3D Platformer', u'4D Platformer'] ->>> platformer_3d.is_root_node() -False ->>> platformer_3d.is_child_node() -True ->>> platformer_3d.is_leaf_node() -True - -# The move_to method will be used in other tests to verify that it calls the -# TreeManager correctly. - -####################### -# Intra-Tree Movement # -####################### - ->>> root = Node.objects.create() ->>> c_1 = Node.objects.create(parent=root) ->>> c_1_1 = Node.objects.create(parent=c_1) ->>> c_1 = Node.objects.get(pk=c_1.pk) ->>> c_1_2 = Node.objects.create(parent=c_1) ->>> root = Node.objects.get(pk=root.pk) ->>> c_2 = Node.objects.create(parent=root) ->>> c_2_1 = Node.objects.create(parent=c_2) ->>> c_2 = Node.objects.get(pk=c_2.pk) ->>> c_2_2 = Node.objects.create(parent=c_2) ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 7 -3 2 1 2 3 4 -4 2 1 2 5 6 -5 1 1 1 8 13 -6 5 1 2 9 10 -7 5 1 2 11 12 - -# Validate exceptions are raised appropriately ->>> root = Node.objects.get(pk=root.pk) ->>> Node.tree.move_node(root, root, position='first-child') -Traceback (most recent call last): - ... -InvalidMove: A node may not be made a child of itself. ->>> c_1 = Node.objects.get(pk=c_1.pk) ->>> c_1_1 = Node.objects.get(pk=c_1_1.pk) ->>> Node.tree.move_node(c_1, c_1_1, position='last-child') -Traceback (most recent call last): - ... -InvalidMove: A node may not be made a child of any of its descendants. ->>> Node.tree.move_node(root, root, position='right') -Traceback (most recent call last): - ... -InvalidMove: A node may not be made a sibling of itself. ->>> c_2 = Node.objects.get(pk=c_2.pk) ->>> Node.tree.move_node(c_1, c_1_1, position='left') -Traceback (most recent call last): - ... -InvalidMove: A node may not be made a sibling of any of its descendants. ->>> Node.tree.move_node(c_1, c_2, position='cheese') -Traceback (most recent call last): - ... -ValueError: An invalid position was given: cheese. - -# Move up the tree using first-child ->>> c_2_2 = Node.objects.get(pk=c_2_2.pk) ->>> c_1 = Node.objects.get(pk=c_1.pk) ->>> Node.tree.move_node(c_2_2, c_1, 'first-child') ->>> print_tree_details([c_2_2]) -7 2 1 2 3 4 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 9 -7 2 1 2 3 4 -3 2 1 2 5 6 -4 2 1 2 7 8 -5 1 1 1 10 13 -6 5 1 2 11 12 - -# Undo the move using right ->>> c_2_1 = Node.objects.get(pk=c_2_1.pk) ->>> c_2_2.move_to(c_2_1, 'right') ->>> print_tree_details([c_2_2]) -7 5 1 2 11 12 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 7 -3 2 1 2 3 4 -4 2 1 2 5 6 -5 1 1 1 8 13 -6 5 1 2 9 10 -7 5 1 2 11 12 - -# Move up the tree with descendants using first-child ->>> c_2 = Node.objects.get(pk=c_2.pk) ->>> c_1 = Node.objects.get(pk=c_1.pk) ->>> Node.tree.move_node(c_2, c_1, 'first-child') ->>> print_tree_details([c_2]) -5 2 1 2 3 8 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 13 -5 2 1 2 3 8 -6 5 1 3 4 5 -7 5 1 3 6 7 -3 2 1 2 9 10 -4 2 1 2 11 12 - -# Undo the move using right ->>> c_1 = Node.objects.get(pk=c_1.pk) ->>> Node.tree.move_node(c_2, c_1, 'right') ->>> print_tree_details([c_2]) -5 1 1 1 8 13 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 7 -3 2 1 2 3 4 -4 2 1 2 5 6 -5 1 1 1 8 13 -6 5 1 2 9 10 -7 5 1 2 11 12 - -COVERAGE | U1 | U> | D1 | D> -------------+----+----+----+---- -first-child | Y | Y | | -last-child | | | | -left | | | | -right | | | Y | Y - -# Move down the tree using first-child ->>> c_1_2 = Node.objects.get(pk=c_1_2.pk) ->>> c_2 = Node.objects.get(pk=c_2.pk) ->>> Node.tree.move_node(c_1_2, c_2, 'first-child') ->>> print_tree_details([c_1_2]) -4 5 1 2 7 8 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 5 -3 2 1 2 3 4 -5 1 1 1 6 13 -4 5 1 2 7 8 -6 5 1 2 9 10 -7 5 1 2 11 12 - -# Undo the move using last-child ->>> c_1 = Node.objects.get(pk=c_1.pk) ->>> Node.tree.move_node(c_1_2, c_1, 'last-child') ->>> print_tree_details([c_1_2]) -4 2 1 2 5 6 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 7 -3 2 1 2 3 4 -4 2 1 2 5 6 -5 1 1 1 8 13 -6 5 1 2 9 10 -7 5 1 2 11 12 - -# Move down the tree with descendants using first-child ->>> c_1 = Node.objects.get(pk=c_1.pk) ->>> c_2 = Node.objects.get(pk=c_2.pk) ->>> Node.tree.move_node(c_1, c_2, 'first-child') ->>> print_tree_details([c_1]) -2 5 1 2 3 8 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -5 1 1 1 2 13 -2 5 1 2 3 8 -3 2 1 3 4 5 -4 2 1 3 6 7 -6 5 1 2 9 10 -7 5 1 2 11 12 - -# Undo the move using left ->>> c_2 = Node.objects.get(pk=c_2.pk) ->>> Node.tree.move_node(c_1, c_2, 'left') ->>> print_tree_details([c_1]) -2 1 1 1 2 7 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 7 -3 2 1 2 3 4 -4 2 1 2 5 6 -5 1 1 1 8 13 -6 5 1 2 9 10 -7 5 1 2 11 12 - -COVERAGE | U1 | U> | D1 | D> -------------+----+----+----+---- -first-child | Y | Y | Y | Y -last-child | Y | | | -left | | Y | | -right | | | Y | Y - -# Move up the tree using right ->>> c_2_2 = Node.objects.get(pk=c_2_2.pk) ->>> c_1_1 = Node.objects.get(pk=c_1_1.pk) ->>> Node.tree.move_node(c_2_2, c_1_1, 'right') ->>> print_tree_details([c_2_2]) -7 2 1 2 5 6 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 9 -3 2 1 2 3 4 -7 2 1 2 5 6 -4 2 1 2 7 8 -5 1 1 1 10 13 -6 5 1 2 11 12 - -# Undo the move using last-child ->>> c_2 = Node.objects.get(pk=c_2.pk) ->>> Node.tree.move_node(c_2_2, c_2, 'last-child') ->>> print_tree_details([c_2_2]) -7 5 1 2 11 12 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 7 -3 2 1 2 3 4 -4 2 1 2 5 6 -5 1 1 1 8 13 -6 5 1 2 9 10 -7 5 1 2 11 12 - -# Move up the tree with descendants using right ->>> c_2 = Node.objects.get(pk=c_2.pk) ->>> c_1_1 = Node.objects.get(pk=c_1_1.pk) ->>> Node.tree.move_node(c_2, c_1_1, 'right') ->>> print_tree_details([c_2]) -5 2 1 2 5 10 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 13 -3 2 1 2 3 4 -5 2 1 2 5 10 -6 5 1 3 6 7 -7 5 1 3 8 9 -4 2 1 2 11 12 - -# Undo the move using last-child ->>> root = Node.objects.get(pk=root.pk) ->>> Node.tree.move_node(c_2, root, 'last-child') ->>> print_tree_details([c_2]) -5 1 1 1 8 13 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 7 -3 2 1 2 3 4 -4 2 1 2 5 6 -5 1 1 1 8 13 -6 5 1 2 9 10 -7 5 1 2 11 12 - -COVERAGE | U1 | U> | D1 | D> -------------+----+----+----+---- -first-child | Y | Y | Y | Y -last-child | Y | | Y | Y -left | | Y | | -right | Y | Y | Y | Y - -# Move down the tree with descendants using left ->>> c_1 = Node.objects.get(pk=c_1.pk) ->>> c_2_2 = Node.objects.get(pk=c_2_2.pk) ->>> Node.tree.move_node(c_1, c_2_2, 'left') ->>> print_tree_details([c_1]) -2 5 1 2 5 10 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -5 1 1 1 2 13 -6 5 1 2 3 4 -2 5 1 2 5 10 -3 2 1 3 6 7 -4 2 1 3 8 9 -7 5 1 2 11 12 - -# Undo the move using first-child ->>> root = Node.objects.get(pk=root.pk) ->>> Node.tree.move_node(c_1, root, 'first-child') ->>> print_tree_details([c_1]) -2 1 1 1 2 7 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 7 -3 2 1 2 3 4 -4 2 1 2 5 6 -5 1 1 1 8 13 -6 5 1 2 9 10 -7 5 1 2 11 12 - -# Move down the tree using left ->>> c_1_1 = Node.objects.get(pk=c_1_1.pk) ->>> c_2_2 = Node.objects.get(pk=c_2_2.pk) ->>> Node.tree.move_node(c_1_1, c_2_2, 'left') ->>> print_tree_details([c_1_1]) -3 5 1 2 9 10 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 5 -4 2 1 2 3 4 -5 1 1 1 6 13 -6 5 1 2 7 8 -3 5 1 2 9 10 -7 5 1 2 11 12 - -# Undo the move using left ->>> c_1_2 = Node.objects.get(pk=c_1_2.pk) ->>> Node.tree.move_node(c_1_1, c_1_2, 'left') ->>> print_tree_details([c_1_1]) -3 2 1 2 3 4 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 7 -3 2 1 2 3 4 -4 2 1 2 5 6 -5 1 1 1 8 13 -6 5 1 2 9 10 -7 5 1 2 11 12 - -COVERAGE | U1 | U> | D1 | D> -------------+----+----+----+---- -first-child | Y | Y | Y | Y -last-child | Y | Y | Y | Y -left | Y | Y | Y | Y -right | Y | Y | Y | Y - -I guess we're covered :) - -####################### -# Inter-Tree Movement # -####################### - ->>> new_root = Node.objects.create() ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 7 -3 2 1 2 3 4 -4 2 1 2 5 6 -5 1 1 1 8 13 -6 5 1 2 9 10 -7 5 1 2 11 12 -8 - 2 0 1 2 - -# Moving child nodes between trees ############################################ - -# Move using default (last-child) ->>> c_2 = Node.objects.get(pk=c_2.pk) ->>> c_2.move_to(new_root) ->>> print_tree_details([c_2]) -5 8 2 1 2 7 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 8 -2 1 1 1 2 7 -3 2 1 2 3 4 -4 2 1 2 5 6 -8 - 2 0 1 8 -5 8 2 1 2 7 -6 5 2 2 3 4 -7 5 2 2 5 6 - -# Move using left ->>> c_1_1 = Node.objects.get(pk=c_1_1.pk) ->>> c_2 = Node.objects.get(pk=c_2.pk) ->>> Node.tree.move_node(c_1_1, c_2, position='left') ->>> print_tree_details([c_1_1]) -3 8 2 1 2 3 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 6 -2 1 1 1 2 5 -4 2 1 2 3 4 -8 - 2 0 1 10 -3 8 2 1 2 3 -5 8 2 1 4 9 -6 5 2 2 5 6 -7 5 2 2 7 8 - -# Move using first-child ->>> c_1_2 = Node.objects.get(pk=c_1_2.pk) ->>> c_2 = Node.objects.get(pk=c_2.pk) ->>> Node.tree.move_node(c_1_2, c_2, position='first-child') ->>> print_tree_details([c_1_2]) -4 5 2 2 5 6 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 4 -2 1 1 1 2 3 -8 - 2 0 1 12 -3 8 2 1 2 3 -5 8 2 1 4 11 -4 5 2 2 5 6 -6 5 2 2 7 8 -7 5 2 2 9 10 - -# Move using right ->>> c_2 = Node.objects.get(pk=c_2.pk) ->>> c_1 = Node.objects.get(pk=c_1.pk) ->>> Node.tree.move_node(c_2, c_1, position='right') ->>> print_tree_details([c_2]) -5 1 1 1 4 11 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 12 -2 1 1 1 2 3 -5 1 1 1 4 11 -4 5 1 2 5 6 -6 5 1 2 7 8 -7 5 1 2 9 10 -8 - 2 0 1 4 -3 8 2 1 2 3 - -# Move using last-child ->>> c_1_1 = Node.objects.get(pk=c_1_1.pk) ->>> Node.tree.move_node(c_1_1, c_2, position='last-child') ->>> print_tree_details([c_1_1]) -3 5 1 2 11 12 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 14 -2 1 1 1 2 3 -5 1 1 1 4 13 -4 5 1 2 5 6 -6 5 1 2 7 8 -7 5 1 2 9 10 -3 5 1 2 11 12 -8 - 2 0 1 2 - -# Moving a root node into another tree as a child node ######################## - -# Validate exceptions are raised appropriately ->>> Node.tree.move_node(root, c_1, position='first-child') -Traceback (most recent call last): - ... -InvalidMove: A node may not be made a child of any of its descendants. ->>> Node.tree.move_node(new_root, c_1, position='cheese') -Traceback (most recent call last): - ... -ValueError: An invalid position was given: cheese. - ->>> new_root = Node.objects.get(pk=new_root.pk) ->>> c_2 = Node.objects.get(pk=c_2.pk) ->>> new_root.move_to(c_2, position='first-child') ->>> print_tree_details([new_root]) -8 5 1 2 5 6 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 16 -2 1 1 1 2 3 -5 1 1 1 4 15 -8 5 1 2 5 6 -4 5 1 2 7 8 -6 5 1 2 9 10 -7 5 1 2 11 12 -3 5 1 2 13 14 - ->>> new_root = Node.objects.create() ->>> root = Node.objects.get(pk=root.pk) ->>> Node.tree.move_node(new_root, root, position='last-child') ->>> print_tree_details([new_root]) -9 1 1 1 16 17 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 18 -2 1 1 1 2 3 -5 1 1 1 4 15 -8 5 1 2 5 6 -4 5 1 2 7 8 -6 5 1 2 9 10 -7 5 1 2 11 12 -3 5 1 2 13 14 -9 1 1 1 16 17 - ->>> new_root = Node.objects.create() ->>> c_2_1 = Node.objects.get(pk=c_2_1.pk) ->>> Node.tree.move_node(new_root, c_2_1, position='left') ->>> print_tree_details([new_root]) -10 5 1 2 9 10 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 20 -2 1 1 1 2 3 -5 1 1 1 4 17 -8 5 1 2 5 6 -4 5 1 2 7 8 -10 5 1 2 9 10 -6 5 1 2 11 12 -7 5 1 2 13 14 -3 5 1 2 15 16 -9 1 1 1 18 19 - ->>> new_root = Node.objects.create() ->>> c_1 = Node.objects.get(pk=c_1.pk) ->>> Node.tree.move_node(new_root, c_1, position='right') ->>> print_tree_details([new_root]) -11 1 1 1 4 5 ->>> print_tree_details(Node.tree.all()) -1 - 1 0 1 22 -2 1 1 1 2 3 -11 1 1 1 4 5 -5 1 1 1 6 19 -8 5 1 2 7 8 -4 5 1 2 9 10 -10 5 1 2 11 12 -6 5 1 2 13 14 -7 5 1 2 15 16 -3 5 1 2 17 18 -9 1 1 1 20 21 - -# Making nodes siblings of root nodes ######################################### - -# Validate exceptions are raised appropriately ->>> root = Node.objects.get(pk=root.pk) ->>> Node.tree.move_node(root, root, position='left') -Traceback (most recent call last): - ... -InvalidMove: A node may not be made a sibling of itself. ->>> Node.tree.move_node(root, root, position='right') -Traceback (most recent call last): - ... -InvalidMove: A node may not be made a sibling of itself. - ->>> r1 = Tree.objects.create() ->>> c1_1 = Tree.objects.create(parent=r1) ->>> c1_1_1 = Tree.objects.create(parent=c1_1) ->>> r2 = Tree.objects.create() ->>> c2_1 = Tree.objects.create(parent=r2) ->>> c2_1_1 = Tree.objects.create(parent=c2_1) ->>> r3 = Tree.objects.create() ->>> c3_1 = Tree.objects.create(parent=r3) ->>> c3_1_1 = Tree.objects.create(parent=c3_1) ->>> print_tree_details(Tree.tree.all()) -1 - 1 0 1 6 -2 1 1 1 2 5 -3 2 1 2 3 4 -4 - 2 0 1 6 -5 4 2 1 2 5 -6 5 2 2 3 4 -7 - 3 0 1 6 -8 7 3 1 2 5 -9 8 3 2 3 4 - -# Target < root node, left sibling ->>> r1 = Tree.objects.get(pk=r1.pk) ->>> r2 = Tree.objects.get(pk=r2.pk) ->>> r2.move_to(r1, 'left') ->>> print_tree_details([r2]) -4 - 1 0 1 6 ->>> print_tree_details(Tree.tree.all()) -4 - 1 0 1 6 -5 4 1 1 2 5 -6 5 1 2 3 4 -1 - 2 0 1 6 -2 1 2 1 2 5 -3 2 2 2 3 4 -7 - 3 0 1 6 -8 7 3 1 2 5 -9 8 3 2 3 4 - -# Target > root node, left sibling ->>> r3 = Tree.objects.get(pk=r3.pk) ->>> r2.move_to(r3, 'left') ->>> print_tree_details([r2]) -4 - 2 0 1 6 ->>> print_tree_details(Tree.tree.all()) -1 - 1 0 1 6 -2 1 1 1 2 5 -3 2 1 2 3 4 -4 - 2 0 1 6 -5 4 2 1 2 5 -6 5 2 2 3 4 -7 - 3 0 1 6 -8 7 3 1 2 5 -9 8 3 2 3 4 - -# Target < root node, right sibling ->>> r1 = Tree.objects.get(pk=r1.pk) ->>> r3 = Tree.objects.get(pk=r3.pk) ->>> r3.move_to(r1, 'right') ->>> print_tree_details([r3]) -7 - 2 0 1 6 ->>> print_tree_details(Tree.tree.all()) -1 - 1 0 1 6 -2 1 1 1 2 5 -3 2 1 2 3 4 -7 - 2 0 1 6 -8 7 2 1 2 5 -9 8 2 2 3 4 -4 - 3 0 1 6 -5 4 3 1 2 5 -6 5 3 2 3 4 - -# Target > root node, right sibling ->>> r1 = Tree.objects.get(pk=r1.pk) ->>> r2 = Tree.objects.get(pk=r2.pk) ->>> r1.move_to(r2, 'right') ->>> print_tree_details([r1]) -1 - 3 0 1 6 ->>> print_tree_details(Tree.tree.all()) -7 - 1 0 1 6 -8 7 1 1 2 5 -9 8 1 2 3 4 -4 - 2 0 1 6 -5 4 2 1 2 5 -6 5 2 2 3 4 -1 - 3 0 1 6 -2 1 3 1 2 5 -3 2 3 2 3 4 - -# No-op, root left sibling ->>> r2 = Tree.objects.get(pk=r2.pk) ->>> r2.move_to(r1, 'left') ->>> print_tree_details([r2]) -4 - 2 0 1 6 ->>> print_tree_details(Tree.tree.all()) -7 - 1 0 1 6 -8 7 1 1 2 5 -9 8 1 2 3 4 -4 - 2 0 1 6 -5 4 2 1 2 5 -6 5 2 2 3 4 -1 - 3 0 1 6 -2 1 3 1 2 5 -3 2 3 2 3 4 - -# No-op, root right sibling ->>> r1.move_to(r2, 'right') ->>> print_tree_details([r1]) -1 - 3 0 1 6 ->>> print_tree_details(Tree.tree.all()) -7 - 1 0 1 6 -8 7 1 1 2 5 -9 8 1 2 3 4 -4 - 2 0 1 6 -5 4 2 1 2 5 -6 5 2 2 3 4 -1 - 3 0 1 6 -2 1 3 1 2 5 -3 2 3 2 3 4 - -# Child node, left sibling ->>> c3_1 = Tree.objects.get(pk=c3_1.pk) ->>> c3_1.move_to(r1, 'left') ->>> print_tree_details([c3_1]) -8 - 3 0 1 4 ->>> print_tree_details(Tree.tree.all()) -7 - 1 0 1 2 -4 - 2 0 1 6 -5 4 2 1 2 5 -6 5 2 2 3 4 -8 - 3 0 1 4 -9 8 3 1 2 3 -1 - 4 0 1 6 -2 1 4 1 2 5 -3 2 4 2 3 4 - -# Child node, right sibling ->>> r3 = Tree.objects.get(pk=r3.pk) ->>> c1_1 = Tree.objects.get(pk=c1_1.pk) ->>> c1_1.move_to(r3, 'right') ->>> print_tree_details([c1_1]) -2 - 2 0 1 4 ->>> print_tree_details(Tree.tree.all()) -7 - 1 0 1 2 -2 - 2 0 1 4 -3 2 2 1 2 3 -4 - 3 0 1 6 -5 4 3 1 2 5 -6 5 3 2 3 4 -8 - 4 0 1 4 -9 8 4 1 2 3 -1 - 5 0 1 2 - -# Insertion of positioned nodes ############################################### ->>> r1 = Insert.objects.create() ->>> r2 = Insert.objects.create() ->>> r3 = Insert.objects.create() ->>> print_tree_details(Insert.tree.all()) -1 - 1 0 1 2 -2 - 2 0 1 2 -3 - 3 0 1 2 - ->>> r2 = Insert.objects.get(pk=r2.pk) ->>> c1 = Insert() ->>> c1 = Insert.tree.insert_node(c1, r2, commit=True) ->>> print_tree_details([c1]) -4 2 2 1 2 3 ->>> print_tree_details(Insert.tree.all()) -1 - 1 0 1 2 -2 - 2 0 1 4 -4 2 2 1 2 3 -3 - 3 0 1 2 - ->>> c1.insert_at(r2) -Traceback (most recent call last): - ... -ValueError: Cannot insert a node which has already been saved. - -# First child ->>> r2 = Insert.objects.get(pk=r2.pk) ->>> c2 = Insert() ->>> c2 = Insert.tree.insert_node(c2, r2, position='first-child', commit=True) ->>> print_tree_details([c2]) -5 2 2 1 2 3 ->>> print_tree_details(Insert.tree.all()) -1 - 1 0 1 2 -2 - 2 0 1 6 -5 2 2 1 2 3 -4 2 2 1 4 5 -3 - 3 0 1 2 - -# Left ->>> c1 = Insert.objects.get(pk=c1.pk) ->>> c3 = Insert() ->>> c3 = Insert.tree.insert_node(c3, c1, position='left', commit=True) ->>> print_tree_details([c3]) -6 2 2 1 4 5 ->>> print_tree_details(Insert.tree.all()) -1 - 1 0 1 2 -2 - 2 0 1 8 -5 2 2 1 2 3 -6 2 2 1 4 5 -4 2 2 1 6 7 -3 - 3 0 1 2 - -# Right ->>> c4 = Insert() ->>> c4 = Insert.tree.insert_node(c4, c3, position='right', commit=True) ->>> print_tree_details([c4]) -7 2 2 1 6 7 ->>> print_tree_details(Insert.tree.all()) -1 - 1 0 1 2 -2 - 2 0 1 10 -5 2 2 1 2 3 -6 2 2 1 4 5 -7 2 2 1 6 7 -4 2 2 1 8 9 -3 - 3 0 1 2 - -# Last child ->>> r2 = Insert.objects.get(pk=r2.pk) ->>> c5 = Insert() ->>> c5 = Insert.tree.insert_node(c5, r2, position='last-child', commit=True) ->>> print_tree_details([c5]) -8 2 2 1 10 11 ->>> print_tree_details(Insert.tree.all()) -1 - 1 0 1 2 -2 - 2 0 1 12 -5 2 2 1 2 3 -6 2 2 1 4 5 -7 2 2 1 6 7 -4 2 2 1 8 9 -8 2 2 1 10 11 -3 - 3 0 1 2 - -# Left sibling of root ->>> r2 = Insert.objects.get(pk=r2.pk) ->>> r4 = Insert() ->>> r4 = Insert.tree.insert_node(r4, r2, position='left', commit=True) ->>> print_tree_details([r4]) -9 - 2 0 1 2 ->>> print_tree_details(Insert.tree.all()) -1 - 1 0 1 2 -9 - 2 0 1 2 -2 - 3 0 1 12 -5 2 3 1 2 3 -6 2 3 1 4 5 -7 2 3 1 6 7 -4 2 3 1 8 9 -8 2 3 1 10 11 -3 - 4 0 1 2 - -# Right sibling of root ->>> r2 = Insert.objects.get(pk=r2.pk) ->>> r5 = Insert() ->>> r5 = Insert.tree.insert_node(r5, r2, position='right', commit=True) ->>> print_tree_details([r5]) -10 - 4 0 1 2 ->>> print_tree_details(Insert.tree.all()) -1 - 1 0 1 2 -9 - 2 0 1 2 -2 - 3 0 1 12 -5 2 3 1 2 3 -6 2 3 1 4 5 -7 2 3 1 6 7 -4 2 3 1 8 9 -8 2 3 1 10 11 -10 - 4 0 1 2 -3 - 5 0 1 2 - -# Last root ->>> r6 = Insert() ->>> r6 = Insert.tree.insert_node(r6, None, commit=True) ->>> print_tree_details([r6]) -11 - 6 0 1 2 ->>> print_tree_details(Insert.tree.all()) -1 - 1 0 1 2 -9 - 2 0 1 2 -2 - 3 0 1 12 -5 2 3 1 2 3 -6 2 3 1 4 5 -7 2 3 1 6 7 -4 2 3 1 8 9 -8 2 3 1 10 11 -10 - 4 0 1 2 -3 - 5 0 1 2 -11 - 6 0 1 2 - -# order_insertion_by with single criterion #################################### ->>> r1 = OrderedInsertion.objects.create(name='games') - -# Root ordering ->>> r2 = OrderedInsertion.objects.create(name='food') ->>> print_tree_details(OrderedInsertion.tree.all()) -2 - 1 0 1 2 -1 - 2 0 1 2 - -# Same name - insert after ->>> r3 = OrderedInsertion.objects.create(name='food') ->>> print_tree_details(OrderedInsertion.tree.all()) -2 - 1 0 1 2 -3 - 2 0 1 2 -1 - 3 0 1 2 - ->>> c1 = OrderedInsertion.objects.create(name='zoo', parent=r3) ->>> print_tree_details(OrderedInsertion.tree.all()) -2 - 1 0 1 2 -3 - 2 0 1 4 -4 3 2 1 2 3 -1 - 3 0 1 2 - ->>> r3 = OrderedInsertion.objects.get(pk=r3.pk) ->>> c2 = OrderedInsertion.objects.create(name='monkey', parent=r3) ->>> print_tree_details(OrderedInsertion.tree.all()) -2 - 1 0 1 2 -3 - 2 0 1 6 -5 3 2 1 2 3 -4 3 2 1 4 5 -1 - 3 0 1 2 - ->>> r3 = OrderedInsertion.objects.get(pk=r3.pk) ->>> c3 = OrderedInsertion.objects.create(name='animal', parent=r3) ->>> print_tree_details(OrderedInsertion.tree.all()) -2 - 1 0 1 2 -3 - 2 0 1 8 -6 3 2 1 2 3 -5 3 2 1 4 5 -4 3 2 1 6 7 -1 - 3 0 1 2 - -# order_insertion_by reparenting with single criterion ######################## - -# Root -> child ->>> r1 = OrderedInsertion.objects.get(pk=r1.pk) ->>> r3 = OrderedInsertion.objects.get(pk=r3.pk) ->>> r1.parent = r3 ->>> r1.save() ->>> print_tree_details(OrderedInsertion.tree.all()) -2 - 1 0 1 2 -3 - 2 0 1 10 -6 3 2 1 2 3 -1 3 2 1 4 5 -5 3 2 1 6 7 -4 3 2 1 8 9 - -# Child -> root ->>> c3 = OrderedInsertion.objects.get(pk=c3.pk) ->>> c3.parent = None ->>> c3.save() ->>> print_tree_details(OrderedInsertion.tree.all()) -6 - 1 0 1 2 -2 - 2 0 1 2 -3 - 3 0 1 8 -1 3 3 1 2 3 -5 3 3 1 4 5 -4 3 3 1 6 7 - -# Child -> child ->>> c1 = OrderedInsertion.objects.get(pk=c1.pk) ->>> c1.parent = c3 ->>> c1.save() ->>> print_tree_details(OrderedInsertion.tree.all()) -6 - 1 0 1 4 -4 6 1 1 2 3 -2 - 2 0 1 2 -3 - 3 0 1 6 -1 3 3 1 2 3 -5 3 3 1 4 5 ->>> c3 = OrderedInsertion.objects.get(pk=c3.pk) ->>> c2 = OrderedInsertion.objects.get(pk=c2.pk) ->>> c2.parent = c3 ->>> c2.save() ->>> print_tree_details(OrderedInsertion.tree.all()) -6 - 1 0 1 6 -5 6 1 1 2 3 -4 6 1 1 4 5 -2 - 2 0 1 2 -3 - 3 0 1 4 -1 3 3 1 2 3 - -# Insertion of positioned nodes, multiple ordering criteria ################### ->>> r1 = MultiOrder.objects.create(name='fff', size=20, date=date(2008, 1, 1)) - -# Root nodes - ordering by subsequent fields ->>> r2 = MultiOrder.objects.create(name='fff', size=10, date=date(2009, 1, 1)) ->>> print_tree_details(MultiOrder.tree.all()) -2 - 1 0 1 2 -1 - 2 0 1 2 - ->>> r3 = MultiOrder.objects.create(name='fff', size=20, date=date(2007, 1, 1)) ->>> print_tree_details(MultiOrder.tree.all()) -2 - 1 0 1 2 -3 - 2 0 1 2 -1 - 3 0 1 2 - ->>> r4 = MultiOrder.objects.create(name='fff', size=20, date=date(2008, 1, 1)) ->>> print_tree_details(MultiOrder.tree.all()) -2 - 1 0 1 2 -3 - 2 0 1 2 -1 - 3 0 1 2 -4 - 4 0 1 2 - ->>> r5 = MultiOrder.objects.create(name='fff', size=20, date=date(2007, 1, 1)) ->>> print_tree_details(MultiOrder.tree.all()) -2 - 1 0 1 2 -3 - 2 0 1 2 -5 - 3 0 1 2 -1 - 4 0 1 2 -4 - 5 0 1 2 - ->>> r6 = MultiOrder.objects.create(name='aaa', size=999, date=date(2010, 1, 1)) ->>> print_tree_details(MultiOrder.tree.all()) -6 - 1 0 1 2 -2 - 2 0 1 2 -3 - 3 0 1 2 -5 - 4 0 1 2 -1 - 5 0 1 2 -4 - 6 0 1 2 - -# Child nodes ->>> r1 = MultiOrder.objects.get(pk=r1.pk) ->>> c1 = MultiOrder.objects.create(parent=r1, name='hhh', size=10, date=date(2009, 1, 1)) ->>> print_tree_details(MultiOrder.tree.filter(tree_id=r1.tree_id)) -1 - 5 0 1 4 -7 1 5 1 2 3 - ->>> r1 = MultiOrder.objects.get(pk=r1.pk) ->>> c2 = MultiOrder.objects.create(parent=r1, name='hhh', size=20, date=date(2008, 1, 1)) ->>> print_tree_details(MultiOrder.tree.filter(tree_id=r1.tree_id)) -1 - 5 0 1 6 -7 1 5 1 2 3 -8 1 5 1 4 5 - ->>> r1 = MultiOrder.objects.get(pk=r1.pk) ->>> c3 = MultiOrder.objects.create(parent=r1, name='hhh', size=15, date=date(2008, 1, 1)) ->>> print_tree_details(MultiOrder.tree.filter(tree_id=r1.tree_id)) -1 - 5 0 1 8 -7 1 5 1 2 3 -9 1 5 1 4 5 -8 1 5 1 6 7 - ->>> r1 = MultiOrder.objects.get(pk=r1.pk) ->>> c4 = MultiOrder.objects.create(parent=r1, name='hhh', size=15, date=date(2008, 1, 1)) ->>> print_tree_details(MultiOrder.tree.filter(tree_id=r1.tree_id)) -1 - 5 0 1 10 -7 1 5 1 2 3 -9 1 5 1 4 5 -10 1 5 1 6 7 -8 1 5 1 8 9 -""" diff --git a/mptt/tests/fixtures/categories.json b/mptt/tests/fixtures/categories.json deleted file mode 100644 index 6e984c030f9..00000000000 --- a/mptt/tests/fixtures/categories.json +++ /dev/null @@ -1,122 +0,0 @@ -[ - { - "pk": 1, - "model": "tests.category", - "fields": { - "rght": 20, - "name": "PC & Video Games", - "parent": null, - "level": 0, - "lft": 1, - "tree_id": 1 - } - }, - { - "pk": 2, - "model": "tests.category", - "fields": { - "rght": 7, - "name": "Nintendo Wii", - "parent": 1, - "level": 1, - "lft": 2, - "tree_id": 1 - } - }, - { - "pk": 3, - "model": "tests.category", - "fields": { - "rght": 4, - "name": "Games", - "parent": 2, - "level": 2, - "lft": 3, - "tree_id": 1 - } - }, - { - "pk": 4, - "model": "tests.category", - "fields": { - "rght": 6, - "name": "Hardware & Accessories", - "parent": 2, - "level": 2, - "lft": 5, - "tree_id": 1 - } - }, - { - "pk": 5, - "model": "tests.category", - "fields": { - "rght": 13, - "name": "Xbox 360", - "parent": 1, - "level": 1, - "lft": 8, - "tree_id": 1 - } - }, - { - "pk": 6, - "model": "tests.category", - "fields": { - "rght": 10, - "name": "Games", - "parent": 5, - "level": 2, - "lft": 9, - "tree_id": 1 - } - }, - { - "pk": 7, - "model": "tests.category", - "fields": { - "rght": 12, - "name": "Hardware & Accessories", - "parent": 5, - "level": 2, - "lft": 11, - "tree_id": 1 - } - }, - { - "pk": 8, - "model": "tests.category", - "fields": { - "rght": 19, - "name": "PlayStation 3", - "parent": 1, - "level": 1, - "lft": 14, - "tree_id": 1 - } - }, - { - "pk": 9, - "model": "tests.category", - "fields": { - "rght": 16, - "name": "Games", - "parent": 8, - "level": 2, - "lft": 15, - "tree_id": 1 - } - }, - { - "pk": 10, - "model": "tests.category", - "fields": { - "rght": 18, - "name": "Hardware & Accessories", - "parent": 8, - "level": 2, - "lft": 17, - "tree_id": 1 - } - } -] diff --git a/mptt/tests/fixtures/genres.json b/mptt/tests/fixtures/genres.json deleted file mode 100644 index 48702a4f7f0..00000000000 --- a/mptt/tests/fixtures/genres.json +++ /dev/null @@ -1,134 +0,0 @@ -[ - { - "pk": 1, - "model": "tests.genre", - "fields": { - "rght": 16, - "name": "Action", - "parent": null, - "level": 0, - "lft": 1, - "tree_id": 1 - } - }, - { - "pk": 2, - "model": "tests.genre", - "fields": { - "rght": 9, - "name": "Platformer", - "parent": 1, - "level": 1, - "lft": 2, - "tree_id": 1 - } - }, - { - "pk": 3, - "model": "tests.genre", - "fields": { - "rght": 4, - "name": "2D Platformer", - "parent": 2, - "level": 2, - "lft": 3, - "tree_id": 1 - } - }, - { - "pk": 4, - "model": "tests.genre", - "fields": { - "rght": 6, - "name": "3D Platformer", - "parent": 2, - "level": 2, - "lft": 5, - "tree_id": 1 - } - }, - { - "pk": 5, - "model": "tests.genre", - "fields": { - "rght": 8, - "name": "4D Platformer", - "parent": 2, - "level": 2, - "lft": 7, - "tree_id": 1 - } - }, - { - "pk": 6, - "model": "tests.genre", - "fields": { - "rght": 15, - "name": "Shootemup", - "parent": 1, - "level": 1, - "lft": 10, - "tree_id": 1 - } - }, - { - "pk": 7, - "model": "tests.genre", - "fields": { - "rght": 12, - "name": "Vertical Scrolling Shootemup", - "parent": 6, - "level": 2, - "lft": 11, - "tree_id": 1 - } - }, - { - "pk": 8, - "model": "tests.genre", - "fields": { - "rght": 14, - "name": "Horizontal Scrolling Shootemup", - "parent": 6, - "level": 2, - "lft": 13, - "tree_id": 1 - } - }, - { - "pk": 9, - "model": "tests.genre", - "fields": { - "rght": 6, - "name": "Role-playing Game", - "parent": null, - "level": 0, - "lft": 1, - "tree_id": 2 - } - }, - { - "pk": 10, - "model": "tests.genre", - "fields": { - "rght": 3, - "name": "Action RPG", - "parent": 9, - "level": 1, - "lft": 2, - "tree_id": 2 - } - }, - { - "pk": 11, - "model": "tests.genre", - "fields": { - "rght": 5, - "name": "Tactical RPG", - "parent": 9, - "level": 1, - "lft": 4, - "tree_id": 2 - } - } -] diff --git a/mptt/tests/models.py b/mptt/tests/models.py deleted file mode 100644 index 6a771516ff5..00000000000 --- a/mptt/tests/models.py +++ /dev/null @@ -1,54 +0,0 @@ -from django.db import models - -import mptt - -class Category(models.Model): - name = models.CharField(max_length=50) - parent = models.ForeignKey('self', null=True, blank=True, related_name='children') - - def __unicode__(self): - return self.name - - def delete(self): - super(Category, self).delete() - -class Genre(models.Model): - name = models.CharField(max_length=50, unique=True) - parent = models.ForeignKey('self', null=True, blank=True, related_name='children') - - def __unicode__(self): - return self.name - -class Insert(models.Model): - parent = models.ForeignKey('self', null=True, blank=True, related_name='children') - -class MultiOrder(models.Model): - name = models.CharField(max_length=50) - size = models.PositiveIntegerField() - date = models.DateField() - parent = models.ForeignKey('self', null=True, blank=True, related_name='children') - - def __unicode__(self): - return self.name - -class Node(models.Model): - parent = models.ForeignKey('self', null=True, blank=True, related_name='children') - -class OrderedInsertion(models.Model): - name = models.CharField(max_length=50) - parent = models.ForeignKey('self', null=True, blank=True, related_name='children') - - def __unicode__(self): - return self.name - -class Tree(models.Model): - parent = models.ForeignKey('self', null=True, blank=True, related_name='children') - -mptt.register(Category) -mptt.register(Genre) -mptt.register(Insert) -mptt.register(MultiOrder, order_insertion_by=['name', 'size', 'date']) -mptt.register(Node, left_attr='does', right_attr='zis', level_attr='madness', - tree_id_attr='work') -mptt.register(OrderedInsertion, order_insertion_by=['name']) -mptt.register(Tree) diff --git a/mptt/tests/settings.py b/mptt/tests/settings.py deleted file mode 100644 index e11c1ddc075..00000000000 --- a/mptt/tests/settings.py +++ /dev/null @@ -1,27 +0,0 @@ -import os - -DIRNAME = os.path.dirname(__file__) - -DEBUG = True - -DATABASE_ENGINE = 'sqlite3' -DATABASE_NAME = os.path.join(DIRNAME, 'mptt.db') - -#DATABASE_ENGINE = 'mysql' -#DATABASE_NAME = 'mptt_test' -#DATABASE_USER = 'root' -#DATABASE_PASSWORD = '' -#DATABASE_HOST = 'localhost' -#DATABASE_PORT = '3306' - -#DATABASE_ENGINE = 'postgresql_psycopg2' -#DATABASE_NAME = 'mptt_test' -#DATABASE_USER = 'postgres' -#DATABASE_PASSWORD = '' -#DATABASE_HOST = 'localhost' -#DATABASE_PORT = '5432' - -INSTALLED_APPS = ( - 'mptt', - 'mptt.tests', -) diff --git a/mptt/tests/testcases.py b/mptt/tests/testcases.py deleted file mode 100644 index f1287172328..00000000000 --- a/mptt/tests/testcases.py +++ /dev/null @@ -1,309 +0,0 @@ -import re - -from django.test import TestCase - -from mptt.exceptions import InvalidMove -from mptt.tests import doctests -from mptt.tests.models import Category, Genre - -def get_tree_details(nodes): - """Creates pertinent tree details for the given list of nodes.""" - opts = nodes[0]._meta - return '\n'.join(['%s %s %s %s %s %s' % - (n.pk, getattr(n, '%s_id' % opts.parent_attr) or '-', - getattr(n, opts.tree_id_attr), getattr(n, opts.level_attr), - getattr(n, opts.left_attr), getattr(n, opts.right_attr)) - for n in nodes]) - -leading_whitespace_re = re.compile(r'^\s+', re.MULTILINE) - -def tree_details(text): - """ - Trims leading whitespace from the given text specifying tree details - so triple-quoted strings can be used to provide tree details in a - readable format (says who?), to be compared with the result of using - the ``get_tree_details`` function. - """ - return leading_whitespace_re.sub('', text) - -# genres.json defines the following tree structure -# -# 1 - 1 0 1 16 action -# 2 1 1 1 2 9 +-- platformer -# 3 2 1 2 3 4 | |-- platformer_2d -# 4 2 1 2 5 6 | |-- platformer_3d -# 5 2 1 2 7 8 | +-- platformer_4d -# 6 1 1 1 10 15 +-- shmup -# 7 6 1 2 11 12 |-- shmup_vertical -# 8 6 1 2 13 14 +-- shmup_horizontal -# 9 - 2 0 1 6 rpg -# 10 9 2 1 2 3 |-- arpg -# 11 9 2 1 4 5 +-- trpg - -class ReparentingTestCase(TestCase): - """ - Test that trees are in the appropriate state after reparenting and - that reparented items have the correct tree attributes defined, - should they be required for use after a save. - """ - fixtures = ['genres.json'] - - def test_new_root_from_subtree(self): - shmup = Genre.objects.get(id=6) - shmup.parent = None - shmup.save() - self.assertEqual(get_tree_details([shmup]), '6 - 3 0 1 6') - self.assertEqual(get_tree_details(Genre.tree.all()), - tree_details("""1 - 1 0 1 10 - 2 1 1 1 2 9 - 3 2 1 2 3 4 - 4 2 1 2 5 6 - 5 2 1 2 7 8 - 9 - 2 0 1 6 - 10 9 2 1 2 3 - 11 9 2 1 4 5 - 6 - 3 0 1 6 - 7 6 3 1 2 3 - 8 6 3 1 4 5""")) - - def test_new_root_from_leaf_with_siblings(self): - platformer_2d = Genre.objects.get(id=3) - platformer_2d.parent = None - platformer_2d.save() - self.assertEqual(get_tree_details([platformer_2d]), '3 - 3 0 1 2') - self.assertEqual(get_tree_details(Genre.tree.all()), - tree_details("""1 - 1 0 1 14 - 2 1 1 1 2 7 - 4 2 1 2 3 4 - 5 2 1 2 5 6 - 6 1 1 1 8 13 - 7 6 1 2 9 10 - 8 6 1 2 11 12 - 9 - 2 0 1 6 - 10 9 2 1 2 3 - 11 9 2 1 4 5 - 3 - 3 0 1 2""")) - - def test_new_child_from_root(self): - action = Genre.objects.get(id=1) - rpg = Genre.objects.get(id=9) - action.parent = rpg - action.save() - self.assertEqual(get_tree_details([action]), '1 9 2 1 6 21') - self.assertEqual(get_tree_details(Genre.tree.all()), - tree_details("""9 - 2 0 1 22 - 10 9 2 1 2 3 - 11 9 2 1 4 5 - 1 9 2 1 6 21 - 2 1 2 2 7 14 - 3 2 2 3 8 9 - 4 2 2 3 10 11 - 5 2 2 3 12 13 - 6 1 2 2 15 20 - 7 6 2 3 16 17 - 8 6 2 3 18 19""")) - - def test_move_leaf_to_other_tree(self): - shmup_horizontal = Genre.objects.get(id=8) - rpg = Genre.objects.get(id=9) - shmup_horizontal.parent = rpg - shmup_horizontal.save() - self.assertEqual(get_tree_details([shmup_horizontal]), '8 9 2 1 6 7') - self.assertEqual(get_tree_details(Genre.tree.all()), - tree_details("""1 - 1 0 1 14 - 2 1 1 1 2 9 - 3 2 1 2 3 4 - 4 2 1 2 5 6 - 5 2 1 2 7 8 - 6 1 1 1 10 13 - 7 6 1 2 11 12 - 9 - 2 0 1 8 - 10 9 2 1 2 3 - 11 9 2 1 4 5 - 8 9 2 1 6 7""")) - - def test_move_subtree_to_other_tree(self): - shmup = Genre.objects.get(id=6) - trpg = Genre.objects.get(id=11) - shmup.parent = trpg - shmup.save() - self.assertEqual(get_tree_details([shmup]), '6 11 2 2 5 10') - self.assertEqual(get_tree_details(Genre.tree.all()), - tree_details("""1 - 1 0 1 10 - 2 1 1 1 2 9 - 3 2 1 2 3 4 - 4 2 1 2 5 6 - 5 2 1 2 7 8 - 9 - 2 0 1 12 - 10 9 2 1 2 3 - 11 9 2 1 4 11 - 6 11 2 2 5 10 - 7 6 2 3 6 7 - 8 6 2 3 8 9""")) - - def test_move_child_up_level(self): - shmup_horizontal = Genre.objects.get(id=8) - action = Genre.objects.get(id=1) - shmup_horizontal.parent = action - shmup_horizontal.save() - self.assertEqual(get_tree_details([shmup_horizontal]), '8 1 1 1 14 15') - self.assertEqual(get_tree_details(Genre.tree.all()), - tree_details("""1 - 1 0 1 16 - 2 1 1 1 2 9 - 3 2 1 2 3 4 - 4 2 1 2 5 6 - 5 2 1 2 7 8 - 6 1 1 1 10 13 - 7 6 1 2 11 12 - 8 1 1 1 14 15 - 9 - 2 0 1 6 - 10 9 2 1 2 3 - 11 9 2 1 4 5""")) - - def test_move_subtree_down_level(self): - shmup = Genre.objects.get(id=6) - platformer = Genre.objects.get(id=2) - shmup.parent = platformer - shmup.save() - self.assertEqual(get_tree_details([shmup]), '6 2 1 2 9 14') - self.assertEqual(get_tree_details(Genre.tree.all()), - tree_details("""1 - 1 0 1 16 - 2 1 1 1 2 15 - 3 2 1 2 3 4 - 4 2 1 2 5 6 - 5 2 1 2 7 8 - 6 2 1 2 9 14 - 7 6 1 3 10 11 - 8 6 1 3 12 13 - 9 - 2 0 1 6 - 10 9 2 1 2 3 - 11 9 2 1 4 5""")) - - def test_invalid_moves(self): - # A node may not be made a child of itself - action = Genre.objects.get(id=1) - action.parent = action - platformer = Genre.objects.get(id=2) - platformer.parent = platformer - self.assertRaises(InvalidMove, action.save) - self.assertRaises(InvalidMove, platformer.save) - - # A node may not be made a child of any of its descendants - platformer_4d = Genre.objects.get(id=5) - action.parent = platformer_4d - platformer.parent = platformer_4d - self.assertRaises(InvalidMove, action.save) - self.assertRaises(InvalidMove, platformer.save) - - # New parent is still set when an error occurs - self.assertEquals(action.parent, platformer_4d) - self.assertEquals(platformer.parent, platformer_4d) - -# categories.json defines the following tree structure: -# -# 1 - 1 0 1 20 games -# 2 1 1 1 2 7 +-- wii -# 3 2 1 2 3 4 | |-- wii_games -# 4 2 1 2 5 6 | +-- wii_hardware -# 5 1 1 1 8 13 +-- xbox360 -# 6 5 1 2 9 10 | |-- xbox360_games -# 7 5 1 2 11 12 | +-- xbox360_hardware -# 8 1 1 1 14 19 +-- ps3 -# 9 8 1 2 15 16 |-- ps3_games -# 10 8 1 2 17 18 +-- ps3_hardware - -class DeletionTestCase(TestCase): - """ - Tests that the tree structure is maintained appropriately in various - deletion scenrios. - """ - fixtures = ['categories.json'] - - def test_delete_root_node(self): - # Add a few other roots to verify that they aren't affected - Category(name='Preceding root').insert_at(Category.objects.get(id=1), - 'left', commit=True) - Category(name='Following root').insert_at(Category.objects.get(id=1), - 'right', commit=True) - self.assertEqual(get_tree_details(Category.tree.all()), - tree_details("""11 - 1 0 1 2 - 1 - 2 0 1 20 - 2 1 2 1 2 7 - 3 2 2 2 3 4 - 4 2 2 2 5 6 - 5 1 2 1 8 13 - 6 5 2 2 9 10 - 7 5 2 2 11 12 - 8 1 2 1 14 19 - 9 8 2 2 15 16 - 10 8 2 2 17 18 - 12 - 3 0 1 2"""), - 'Setup for test produced unexpected result') - - Category.objects.get(id=1).delete() - self.assertEqual(get_tree_details(Category.tree.all()), - tree_details("""11 - 1 0 1 2 - 12 - 3 0 1 2""")) - - def test_delete_last_node_with_siblings(self): - Category.objects.get(id=9).delete() - self.assertEqual(get_tree_details(Category.tree.all()), - tree_details("""1 - 1 0 1 18 - 2 1 1 1 2 7 - 3 2 1 2 3 4 - 4 2 1 2 5 6 - 5 1 1 1 8 13 - 6 5 1 2 9 10 - 7 5 1 2 11 12 - 8 1 1 1 14 17 - 10 8 1 2 15 16""")) - - def test_delete_last_node_with_descendants(self): - Category.objects.get(id=8).delete() - self.assertEqual(get_tree_details(Category.tree.all()), - tree_details("""1 - 1 0 1 14 - 2 1 1 1 2 7 - 3 2 1 2 3 4 - 4 2 1 2 5 6 - 5 1 1 1 8 13 - 6 5 1 2 9 10 - 7 5 1 2 11 12""")) - - def test_delete_node_with_siblings(self): - Category.objects.get(id=6).delete() - self.assertEqual(get_tree_details(Category.tree.all()), - tree_details("""1 - 1 0 1 18 - 2 1 1 1 2 7 - 3 2 1 2 3 4 - 4 2 1 2 5 6 - 5 1 1 1 8 11 - 7 5 1 2 9 10 - 8 1 1 1 12 17 - 9 8 1 2 13 14 - 10 8 1 2 15 16""")) - - def test_delete_node_with_descendants_and_siblings(self): - """ - Regression test for Issue 23 - we used to use pre_delete, which - resulted in tree cleanup being performed for every node being - deleted, rather than just the node on which ``delete()`` was - called. - """ - Category.objects.get(id=5).delete() - self.assertEqual(get_tree_details(Category.tree.all()), - tree_details("""1 - 1 0 1 14 - 2 1 1 1 2 7 - 3 2 1 2 3 4 - 4 2 1 2 5 6 - 8 1 1 1 8 13 - 9 8 1 2 9 10 - 10 8 1 2 11 12""")) - -class IntraTreeMovementTestCase(TestCase): - pass - -class InterTreeMovementTestCase(TestCase): - pass - -class PositionedInsertionTestCase(TestCase): - pass diff --git a/mptt/tests/tests.py b/mptt/tests/tests.py deleted file mode 100644 index b89a53b567f..00000000000 --- a/mptt/tests/tests.py +++ /dev/null @@ -1,11 +0,0 @@ -import doctest -import unittest - -from mptt.tests import doctests -from mptt.tests import testcases - -def suite(): - s = unittest.TestSuite() - s.addTest(doctest.DocTestSuite(doctests)) - s.addTest(unittest.defaultTestLoader.loadTestsFromModule(testcases)) - return s diff --git a/mptt/utils.py b/mptt/utils.py deleted file mode 100644 index 2a5dc8f008d..00000000000 --- a/mptt/utils.py +++ /dev/null @@ -1,134 +0,0 @@ -""" -Utilities for working with lists of model instances which represent -trees. -""" -import copy -import itertools - -__all__ = ('previous_current_next', 'tree_item_iterator', - 'drilldown_tree_for_node') - -def previous_current_next(items): - """ - From http://www.wordaligned.org/articles/zippy-triples-served-with-python - - Creates an iterator which returns (previous, current, next) triples, - with ``None`` filling in when there is no previous or next - available. - """ - extend = itertools.chain([None], items, [None]) - previous, current, next = itertools.tee(extend, 3) - try: - current.next() - next.next() - next.next() - except StopIteration: - pass - return itertools.izip(previous, current, next) - -def tree_item_iterator(items, ancestors=False): - """ - Given a list of tree items, iterates over the list, generating - two-tuples of the current tree item and a ``dict`` containing - information about the tree structure around the item, with the - following keys: - - ``'new_level'` - ``True`` if the current item is the start of a new level in - the tree, ``False`` otherwise. - - ``'closed_levels'`` - A list of levels which end after the current item. This will - be an empty list if the next item is at the same level as the - current item. - - If ``ancestors`` is ``True``, the following key will also be - available: - - ``'ancestors'`` - A list of unicode representations of the ancestors of the - current node, in descending order (root node first, immediate - parent last). - - For example: given the sample tree below, the contents of the - list which would be available under the ``'ancestors'`` key - are given on the right:: - - Books -> [] - Sci-fi -> [u'Books'] - Dystopian Futures -> [u'Books', u'Sci-fi'] - - """ - structure = {} - opts = None - for previous, current, next in previous_current_next(items): - if opts is None: - opts = current._meta - - current_level = getattr(current, opts.level_attr) - if previous: - structure['new_level'] = (getattr(previous, - opts.level_attr) < current_level) - if ancestors: - # If the previous node was the end of any number of - # levels, remove the appropriate number of ancestors - # from the list. - if structure['closed_levels']: - structure['ancestors'] = \ - structure['ancestors'][:-len(structure['closed_levels'])] - # If the current node is the start of a new level, add its - # parent to the ancestors list. - if structure['new_level']: - structure['ancestors'].append(unicode(previous)) - else: - structure['new_level'] = True - if ancestors: - # Set up the ancestors list on the first item - structure['ancestors'] = [] - - if next: - structure['closed_levels'] = range(current_level, - getattr(next, - opts.level_attr), -1) - else: - # All remaining levels need to be closed - structure['closed_levels'] = range(current_level, -1, -1) - - # Return a deep copy of the structure dict so this function can - # be used in situations where the iterator is consumed - # immediately. - yield current, copy.deepcopy(structure) - -def drilldown_tree_for_node(node, rel_cls=None, rel_field=None, count_attr=None, - cumulative=False): - """ - Creates a drilldown tree for the given node. A drilldown tree - consists of a node's ancestors, itself and its immediate children, - all in tree order. - - Optional arguments may be given to specify a ``Model`` class which - is related to the node's class, for the purpose of adding related - item counts to the node's children: - - ``rel_cls`` - A ``Model`` class which has a relation to the node's class. - - ``rel_field`` - The name of the field in ``rel_cls`` which holds the relation - to the node's class. - - ``count_attr`` - The name of an attribute which should be added to each child in - the drilldown tree, containing a count of how many instances - of ``rel_cls`` are related through ``rel_field``. - - ``cumulative`` - If ``True``, the count will be for each child and all of its - descendants, otherwise it will be for each child itself. - """ - if rel_cls and rel_field and count_attr: - children = node._tree_manager.add_related_count( - node.get_children(), rel_cls, rel_field, count_attr, cumulative) - else: - children = node.get_children() - return itertools.chain(node.get_ancestors(), [node], children) diff --git a/setup.py b/setup.py index 571e9dbc9c5..2997cc109c8 100644 --- a/setup.py +++ b/setup.py @@ -50,6 +50,7 @@ 'django-classy-tags>=0.2.2', 'PIL>=1.1.6', 'south>=0.7.2', + 'django-mptt>=0.4.2', ], packages=find_packages(exclude=["example", "example.*","testdata","testdata.*"]), package_data={ diff --git a/tests/buildout.cfg b/tests/buildout.cfg index 11870cd93a5..38d0858523a 100644 --- a/tests/buildout.cfg +++ b/tests/buildout.cfg @@ -8,6 +8,7 @@ eggs = unittest-xml-reporting django-reversion django-classy-tags + django-mptt django South sphinx From d1b644bebf7616fb6c65d0b90d046b8f06fca6d7 Mon Sep 17 00:00:00 2001 From: Chris Glass Date: Tue, 1 Feb 2011 19:03:15 +0100 Subject: [PATCH 013/689] Added cleaning of *.pyc files to the runtests.sh file --- runtests.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/runtests.sh b/runtests.sh index 66dec6f7179..29c913874ae 100755 --- a/runtests.sh +++ b/runtests.sh @@ -88,6 +88,9 @@ else echo "Running cms test $suite." fi +# Clean the tree for .pyc files +find . -name '*.pyc' -delete + if [ $disable_coverage == false ]; then ./bin/coverage run --rcfile=.coveragerc testapp/manage.py test $suite $failfast retcode=$? From a8f40d08bfc086b6c2681fa1a1d104fe51c371b2 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Tue, 1 Feb 2011 21:03:32 +0100 Subject: [PATCH 014/689] remove django-dbgettext support --- cms/admin/pageadmin.py | 8 +--- cms/conf/global_settings.py | 9 ----- cms/conf/patch.py | 14 ------- cms/dbgettext_registration.py | 15 ------- cms/models/pagemodel.py | 8 ---- cms/plugins/file/cms_plugins.py | 1 - cms/plugins/file/dbgettext_registration.py | 8 ---- cms/plugins/link/cms_plugins.py | 12 +++--- cms/plugins/link/dbgettext_registration.py | 8 ---- cms/plugins/picture/cms_plugins.py | 9 ++--- cms/plugins/picture/dbgettext_registration.py | 8 ---- cms/plugins/text/cms_plugins.py | 3 -- cms/plugins/text/dbgettext_registration.py | 39 ------------------- cms/tests/rendering.py | 4 -- cms/tests/settings.py | 7 +--- cms/utils/__init__.py | 2 - cms/utils/page_resolver.py | 12 ------ 17 files changed, 13 insertions(+), 154 deletions(-) delete mode 100644 cms/dbgettext_registration.py delete mode 100644 cms/plugins/file/dbgettext_registration.py delete mode 100644 cms/plugins/link/dbgettext_registration.py delete mode 100644 cms/plugins/picture/dbgettext_registration.py delete mode 100644 cms/plugins/text/dbgettext_registration.py diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py index 0d12727d008..77a7b77d535 100644 --- a/cms/admin/pageadmin.py +++ b/cms/admin/pageadmin.py @@ -71,9 +71,6 @@ class PageAdmin(model_admin): top_fields = [] general_fields = ['title', 'slug', ('published', 'in_navigation')] add_general_fields = ['title', 'slug', 'language', 'template'] - if settings.CMS_DBGETTEXT: - # no need to select language for page - add_general_fields.remove('language') advanced_fields = ['reverse_id', 'overwrite_url', 'redirect', 'login_required', 'limit_visibility_in_menu'] template_fields = ['template'] change_list_template = "admin/cms/page/change_list.html" @@ -438,7 +435,7 @@ def get_form(self, request, obj=None, **kwargs): copy_languages[plugin.language] = dict_cms_languages[plugin.language] language = get_language_from_request(request, obj) - if copy_languages and not settings.CMS_DBGETTEXT and len(settings.CMS_LANGUAGES) > 1: + if copy_languages and len(settings.CMS_LANGUAGES) > 1: show_copy = True widget = PluginEditor(attrs={ 'installed': installed_plugins, @@ -580,8 +577,7 @@ def update_language_tab_context(self, request, obj, context=None): context.update({ 'language': language, 'language_tabs': languages, - 'show_language_tabs': len(languages) > 1 and \ - not settings.CMS_DBGETTEXT, + 'show_language_tabs': len(languages) > 1, }) return context diff --git a/cms/conf/global_settings.py b/cms/conf/global_settings.py index ef1261c68e6..769945084f3 100644 --- a/cms/conf/global_settings.py +++ b/cms/conf/global_settings.py @@ -105,15 +105,6 @@ # Defines what character will be used for the __unicode__ handling of cms pages CMS_TITLE_CHARACTER = '+' -# gettext translation mode -- exports database content for parsing by -# makemessages, and uses django's normal i18n framework instead of having to -# create multiple copies of pages for each language. -# requires 'dbgettext' -- http://bitbucket.org/drmeers/django-dbgettext/ -CMS_DBGETTEXT = 'dbgettext' in settings.INSTALLED_APPS - -# Allow gettext translation of slugs (only relevant if CMS_DBGETTEXT used) -CMS_DBGETTEXT_SLUGS = False # (still experimental) - # Enable non-cms placeholder frontend editing PLACEHOLDER_FRONTEND_EDITING = True diff --git a/cms/conf/patch.py b/cms/conf/patch.py index d6da99f6aa3..fb09bfef50a 100644 --- a/cms/conf/patch.py +++ b/cms/conf/patch.py @@ -27,20 +27,6 @@ def post_patch(): (settings.CMS_TEMPLATE_INHERITANCE_MAGIC, _('Inherit the template of the nearest ancestor')), ) - if settings.CMS_DBGETTEXT: - # untranslated titles are translated using gettext anyway - settings.CMS_HIDE_UNTRANSLATED = False - settings.dbgettext = _ - else: - # dummy translation - settings.dbgettext = lambda x: x - if settings.CMS_DBGETTEXT_SLUGS: - warn( - "CMS_DBGETTEXT_SLUGS (and general support for django-dbggettext " - "for CMS contents) will be deprecated in django CMS 2.2.", - DeprecationWarning - ) - def post_patch_check(): """Post patch check, just make sure there isn't any misconfiguration. All diff --git a/cms/dbgettext_registration.py b/cms/dbgettext_registration.py deleted file mode 100644 index f463c47f3b2..00000000000 --- a/cms/dbgettext_registration.py +++ /dev/null @@ -1,15 +0,0 @@ -# -*- coding: utf-8 -*- -from dbgettext.registry import registry, Options -from models import Page -from django.conf import settings - -class PageOptions(Options): - attributes = ('get_title', 'get_slug') - translate_if = {'published' : True,} - def get_path_identifier(self, obj): - return obj.get_path() - -if settings.CMS_MODERATOR: - PageOptions.translate_if['publisher_is_draft'] = False - -registry.register(Page, PageOptions) diff --git a/cms/models/pagemodel.py b/cms/models/pagemodel.py index c1d9a0f8823..1d6b5fc5e98 100644 --- a/cms/models/pagemodel.py +++ b/cms/models/pagemodel.py @@ -548,9 +548,6 @@ def get_absolute_url(self, language=None, fallback=True): ancestors = self.get_cached_ancestors(ascending=True) if self.parent_id and ancestors[-1].pk == home_pk and not self.get_title_obj_attribute("has_url_overwrite", language, fallback) and path: path = "/".join(path.split("/")[1:]) - - if settings.CMS_DBGETTEXT and settings.CMS_DBGETTEXT_SLUGS: - path = '/'.join([ugettext(p) for p in path.split('/')]) return urljoin(reverse('pages-root'), path) @@ -581,11 +578,6 @@ def get_title_obj_attribute(self, attrname, language=None, fallback=True, versio try: attribute = getattr(self.get_title_obj( language, fallback, version_id, force_reload), attrname) - if attribute and settings.CMS_DBGETTEXT: - if attrname in ('slug', 'path') and \ - not settings.CMS_DBGETTEXT_SLUGS: - return attribute - return ugettext(attribute) return attribute except AttributeError: return None diff --git a/cms/plugins/file/cms_plugins.py b/cms/plugins/file/cms_plugins.py index eca5f70d1c3..4f4cbc9fc1a 100644 --- a/cms/plugins/file/cms_plugins.py +++ b/cms/plugins/file/cms_plugins.py @@ -11,7 +11,6 @@ class FilePlugin(CMSPluginBase): text_enabled = True def render(self, context, instance, placeholder): - instance.title = settings.dbgettext(instance.title) context.update({ 'object':instance, 'placeholder':placeholder diff --git a/cms/plugins/file/dbgettext_registration.py b/cms/plugins/file/dbgettext_registration.py deleted file mode 100644 index d4782bdcb0e..00000000000 --- a/cms/plugins/file/dbgettext_registration.py +++ /dev/null @@ -1,8 +0,0 @@ -from dbgettext.registry import registry, Options -from models import File - -class FileOptions(Options): - attributes = ('title',) - parent = 'page' - -registry.register(File, FileOptions) diff --git a/cms/plugins/link/cms_plugins.py b/cms/plugins/link/cms_plugins.py index 9dc0e79e835..3cc4414dcbc 100644 --- a/cms/plugins/link/cms_plugins.py +++ b/cms/plugins/link/cms_plugins.py @@ -15,18 +15,18 @@ class LinkPlugin(CMSPluginBase): def render(self, context, instance, placeholder): if instance.mailto: - link = u"mailto:%s" % settings.dbgettext(instance.mailto) + link = u"mailto:%s" % instance.mailto elif instance.url: - link = settings.dbgettext(instance.url) + link = instance.url elif instance.page_link: link = instance.page_link.get_absolute_url() else: link = "" context.update({ - 'name':settings.dbgettext(instance.name), - 'link':link, - 'placeholder':placeholder, - 'object':instance + 'name': instance.name, + 'link': link, + 'placeholder': placeholder, + 'object': instance }) return context diff --git a/cms/plugins/link/dbgettext_registration.py b/cms/plugins/link/dbgettext_registration.py deleted file mode 100644 index 7adb838d950..00000000000 --- a/cms/plugins/link/dbgettext_registration.py +++ /dev/null @@ -1,8 +0,0 @@ -from dbgettext.registry import registry, Options -from models import Link - -class LinkOptions(Options): - attributes = ('name', 'url', 'mailto') - parent = 'page' - -registry.register(Link, LinkOptions) diff --git a/cms/plugins/picture/cms_plugins.py b/cms/plugins/picture/cms_plugins.py index 554e4aa4d64..a447baf625a 100644 --- a/cms/plugins/picture/cms_plugins.py +++ b/cms/plugins/picture/cms_plugins.py @@ -12,16 +12,15 @@ class PicturePlugin(CMSPluginBase): def render(self, context, instance, placeholder): if instance.url: - link = settings.dbgettext(instance.url) + link = instance.url elif instance.page_link: link = instance.page_link.get_absolute_url() else: link = "" - instance.alt = settings.dbgettext(instance.alt) context.update({ - 'picture':instance, - 'link':link, - 'placeholder':placeholder + 'picture': instance, + 'link': link, + 'placeholder': placeholder }) return context diff --git a/cms/plugins/picture/dbgettext_registration.py b/cms/plugins/picture/dbgettext_registration.py deleted file mode 100644 index e71b780567c..00000000000 --- a/cms/plugins/picture/dbgettext_registration.py +++ /dev/null @@ -1,8 +0,0 @@ -from dbgettext.registry import registry, Options -from models import Picture - -class PictureOptions(Options): - attributes = ('url', 'alt') - parent = 'page' - -registry.register(Picture, PictureOptions) diff --git a/cms/plugins/text/cms_plugins.py b/cms/plugins/text/cms_plugins.py index 3111ad66b4e..967650775b1 100644 --- a/cms/plugins/text/cms_plugins.py +++ b/cms/plugins/text/cms_plugins.py @@ -46,9 +46,6 @@ def get_form(self, request, obj=None, **kwargs): return super(TextPlugin, self).get_form(request, obj, **kwargs) def render(self, context, instance, placeholder): - if settings.CMS_DBGETTEXT: - from dbgettext.parser import parsed_gettext - instance.body = parsed_gettext(instance, 'body') context.update({ 'body': plugin_tags_to_user_html(instance.body, context, placeholder), 'placeholder': placeholder, diff --git a/cms/plugins/text/dbgettext_registration.py b/cms/plugins/text/dbgettext_registration.py deleted file mode 100644 index d81bbfa83e0..00000000000 --- a/cms/plugins/text/dbgettext_registration.py +++ /dev/null @@ -1,39 +0,0 @@ -from dbgettext.registry import registry, Options -from models import CMSPlugin -from dbgettext.parser import Token -from dbgettext.lexicons import html -from models import Text -import re - -class PluginToken(Token): - """ A CMSPlugin placeholder """ - - def __init__(self, raw, obj): - super(PluginToken, self).__init__('plugin', raw) - self.obj = obj - - def is_translatable(self): - return Token.ALWAYS_TRANSLATE - - def get_key(self): - obj, cls = self.obj.get_plugin_instance() - return '%s-%d:%s' % (repr(cls), obj.id, re.sub('\W', '_', str(obj))) - - -class TextOptions(Options): - parsed_attributes = {'body': html.lexicon} - parent = 'page' - - from cms.plugins.text.utils import OBJ_ADMIN_RE_PATTERN - - def plugin(scanner, token): - try: - obj = CMSPlugin.objects.get(pk=scanner.match.groups()[0]) - except CMSPlugin.DoesNotExist: - obj = None - return PluginToken(token, obj) - - custom_lexicon_rules = [(OBJ_ADMIN_RE_PATTERN, plugin),] - - -registry.register(Text, TextOptions) diff --git a/cms/tests/rendering.py b/cms/tests/rendering.py index 8b9d841c49d..2a9ff4971bc 100644 --- a/cms/tests/rendering.py +++ b/cms/tests/rendering.py @@ -238,8 +238,6 @@ def test_09_inherit_placeholder(self): def test_10_detail_view_404_when_no_language_is_found(self): with SettingsOverride(TEMPLATE_CONTEXT_PROCESSORS=[], - CMS_LANGUAGE_FALLBACK=True, - CMS_DBGETTEXT=False, CMS_LANGUAGES=[( 'klingon', 'Klingon' ), ( 'elvish', 'Elvish' )]): from cms.views import details @@ -265,8 +263,6 @@ def test_11_detail_view_fallsback_language(self): to English ''' with SettingsOverride(TEMPLATE_CONTEXT_PROCESSORS=[], - CMS_LANGUAGE_FALLBACK=True, - CMS_DBGETTEXT=False, CMS_LANGUAGE_CONF={ 'elvish': ['klingon', 'en',] }, diff --git a/cms/tests/settings.py b/cms/tests/settings.py index ac6862211a3..c1372b5d0d1 100644 --- a/cms/tests/settings.py +++ b/cms/tests/settings.py @@ -6,9 +6,4 @@ class SettingsTests(CMSTestCase): - def test_01_dbgettext_deprecation(self): - with SettingsOverride(CMS_DBGETTEXT_SLUGS=True): - self.assertWarns(DeprecationWarning, - "CMS_DBGETTEXT_SLUGS (and general support for django-dbggettext " - "for CMS contents) will be deprecated in django CMS 2.2.", - post_patch) \ No newline at end of file + pass \ No newline at end of file diff --git a/cms/utils/__init__.py b/cms/utils/__init__.py index e8f51825868..1a5f1790a76 100644 --- a/cms/utils/__init__.py +++ b/cms/utils/__init__.py @@ -39,8 +39,6 @@ def get_language_from_request(request, current_page=None): """ Return the most obvious language according the request """ - if settings.CMS_DBGETTEXT: - return get_default_language() language = request.REQUEST.get('language', None) if language: if not language in dict(settings.CMS_LANGUAGES).keys(): diff --git a/cms/utils/page_resolver.py b/cms/utils/page_resolver.py index 8e482a0f738..645930a3e31 100644 --- a/cms/utils/page_resolver.py +++ b/cms/utils/page_resolver.py @@ -99,18 +99,6 @@ def get_page_from_request(request, use_path=None): q2 = Q(title_set__path='%s/%s' % (home.get_slug(), path)) q2 &= Q(tree_id=home.tree_id) q |= q2 - - if settings.CMS_DBGETTEXT and settings.CMS_DBGETTEXT_SLUGS: # pragma: no cover - #======================================================================= - # WARNING: CMS_DBGETTEXT WILL BE DEPRECATED IN 2.2! - #======================================================================= - from django.utils.translation import ugettext - from cms.models import Title - for t in Title.objects.all(): - tpath = '/'.join([ugettext(x) for x in t.path.split('/')]) - if path == tpath: - q = Q(title_set__path=t.path) - break try: page = pages.filter(q).distinct().get() except Page.DoesNotExist: From 8dcb4e3fc824b863327d174ccffe142cc42b95ce Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Wed, 2 Feb 2011 21:54:35 +0100 Subject: [PATCH 015/689] fixed some py2.5 issues with the tests --- cms/tests/toolbar.py | 3 ++- cms/tests/views.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/cms/tests/toolbar.py b/cms/tests/toolbar.py index ebaa8dbc1e9..2ad15a10e78 100644 --- a/cms/tests/toolbar.py +++ b/cms/tests/toolbar.py @@ -1,3 +1,4 @@ +from __future__ import with_statement from cms.test.testcases import SettingsOverrideTestCase from cms.test.util.context_managers import UserLoginContext from django.conf import settings @@ -13,4 +14,4 @@ def test_01_static_html(self): response = self.client.get('%sstatic.html?edit' % settings.MEDIA_URL) self.assertTemplateNotUsed(response, 'cms/toolbar/toolbar.html') response = self.client.get('%s?edit' % page.get_absolute_url()) - self.assertTemplateUsed(response, 'cms/toolbar/toolbar.html') \ No newline at end of file + self.assertTemplateUsed(response, 'cms/toolbar/toolbar.html') diff --git a/cms/tests/views.py b/cms/tests/views.py index a60ec694127..c947a7478b4 100644 --- a/cms/tests/views.py +++ b/cms/tests/views.py @@ -1,3 +1,4 @@ +from __future__ import with_statement from cms.apphook_pool import apphook_pool from cms.test.testcases import SettingsOverrideTestCase from cms.test.util.context_managers import SettingsOverride @@ -117,4 +118,4 @@ def test_05_login_required(self): request = self.get_request('/') response = details(request, '') self.assertEqual(response.status_code, 302) - self.assertEqual(response['Location'], '%s?next=/' % settings.LOGIN_URL) \ No newline at end of file + self.assertEqual(response['Location'], '%s?next=/' % settings.LOGIN_URL) From f778a1fc0f261261594da550c8e3806fd718a030 Mon Sep 17 00:00:00 2001 From: Chris Glass Date: Thu, 3 Feb 2011 10:17:47 +0100 Subject: [PATCH 016/689] Fixed bug in the contextmanager helper --- cms/test/util/context_managers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cms/test/util/context_managers.py b/cms/test/util/context_managers.py index 2aa51eaea09..1054942e901 100644 --- a/cms/test/util/context_managers.py +++ b/cms/test/util/context_managers.py @@ -34,7 +34,7 @@ def __exit__(self, type, value, traceback): if value is not NULL: setattr(settings, key, value) else: - del settings[key] # do not pollute the context! + delattr(settings,key) # do not pollute the context! class StdoutOverride(object): From f8ae59d41151340ce43d9998a7887590b126b482 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Wed, 2 Feb 2011 15:12:32 +0100 Subject: [PATCH 017/689] moved test project/apps --- .../testapp => cms/test/apps/fakemlng}/__init__.py | 0 .../test/apps}/fakemlng/fixtures/fakemlng.json | 0 {tests/testapp => cms/test/apps}/fakemlng/models.py | 0 .../test/apps/placeholderapp}/__init__.py | 0 .../test/apps}/placeholderapp/admin.py | 0 .../test/apps}/placeholderapp/models.py | 0 .../test/apps/pluginapp}/__init__.py | 0 .../testapp => cms/test/apps}/pluginapp/models.py | 0 .../test/apps/pluginapp/plugins}/__init__.py | 0 .../pluginapp/plugins/manytomany_rel}/__init__.py | 0 .../pluginapp/plugins/manytomany_rel/cms_plugins.py | 0 .../pluginapp/plugins/manytomany_rel/models.py | 0 .../test/apps/sampleapp}/__init__.py | 0 {tests/testapp => cms/test/apps}/sampleapp/admin.py | 0 .../testapp => cms/test/apps}/sampleapp/cms_app.py | 0 .../apps}/sampleapp/media/sampleapp/img/gift.jpg | Bin {tests/testapp => cms/test/apps}/sampleapp/menu.py | 0 .../testapp => cms/test/apps}/sampleapp/models.py | 0 .../templates/sampleapp/category_view.html | 0 .../apps}/sampleapp/templates/sampleapp/home.html | 0 {tests/testapp => cms/test/apps}/sampleapp/urls.py | 0 {tests/testapp => cms/test/apps}/sampleapp/views.py | 0 .../sampleapp => cms/test/project}/__init__.py | 0 .../test/project}/cms_urls_for_apphook_tests.py | 0 .../test/project}/fixtures/menus.json | 0 {tests/testapp => cms/test/project}/manage.py | 0 {tests/testapp => cms/test/project}/models.py | 0 {tests/testapp => cms/test/project}/noadmin_urls.py | 0 {tests/testapp => cms/test/project}/nonroot_urls.py | 0 .../project}/second_cms_urls_for_apphook_tests.py | 0 .../test/project}/second_urls_for_apphook_tests.py | 0 {tests/testapp => cms/test/project}/settings.py | 0 .../testapp => cms/test/project}/templates/404.html | 0 .../test/project}/templates/add_placeholder.html | 0 .../test/project}/templates/base.html | 0 .../test/project}/templates/col_three.html | 0 .../test/project}/templates/col_two.html | 0 .../test/project}/templates/extra_context.html | 0 .../test/project}/templates/menu/breadcrumb.html | 0 .../project}/templates/menu/language_chooser.html | 0 .../test/project}/templates/menu/menu.html | 0 .../test/project}/templates/menu/sub_menu.html | 0 .../templates/menu/test_language_chooser.html | 0 .../test/project}/templates/nav_playground.html | 0 .../project}/templates/placeholder_tests/base.html | 0 .../project}/templates/placeholder_tests/child.html | 0 .../templates/placeholder_tests/outside.html | 0 .../templates/placeholder_tests/outside_base.html | 0 .../templates/placeholder_tests/test_eleven.html | 0 .../templates/placeholder_tests/test_five.html | 0 .../templates/placeholder_tests/test_four.html | 0 .../templates/placeholder_tests/test_one.html | 0 .../templates/placeholder_tests/test_seven.html | 0 .../templates/placeholder_tests/test_six.html | 0 .../templates/placeholder_tests/test_three.html | 0 .../templates/placeholder_tests/test_two.html | 0 .../test/project}/templates/sidebar_submenu.html | 0 .../project}/templates/sidebar_submenu_root.html | 0 {tests/testapp => cms/test/project}/testrunner.py | 0 {tests/testapp => cms/test/project}/urls.py | 0 .../test/project}/urls_for_apphook_tests.py | 0 61 files changed, 0 insertions(+), 0 deletions(-) rename {tests/testapp => cms/test/apps/fakemlng}/__init__.py (100%) rename {tests/testapp => cms/test/apps}/fakemlng/fixtures/fakemlng.json (100%) rename {tests/testapp => cms/test/apps}/fakemlng/models.py (100%) rename {tests/testapp/fakemlng => cms/test/apps/placeholderapp}/__init__.py (100%) rename {tests/testapp => cms/test/apps}/placeholderapp/admin.py (100%) rename {tests/testapp => cms/test/apps}/placeholderapp/models.py (100%) rename {tests/testapp/placeholderapp => cms/test/apps/pluginapp}/__init__.py (100%) rename {tests/testapp => cms/test/apps}/pluginapp/models.py (100%) rename {tests/testapp/pluginapp => cms/test/apps/pluginapp/plugins}/__init__.py (100%) rename {tests/testapp/pluginapp/plugins => cms/test/apps/pluginapp/plugins/manytomany_rel}/__init__.py (100%) rename {tests/testapp => cms/test/apps}/pluginapp/plugins/manytomany_rel/cms_plugins.py (100%) rename {tests/testapp => cms/test/apps}/pluginapp/plugins/manytomany_rel/models.py (100%) rename {tests/testapp/pluginapp/plugins/manytomany_rel => cms/test/apps/sampleapp}/__init__.py (100%) rename {tests/testapp => cms/test/apps}/sampleapp/admin.py (100%) rename {tests/testapp => cms/test/apps}/sampleapp/cms_app.py (100%) rename {tests/testapp => cms/test/apps}/sampleapp/media/sampleapp/img/gift.jpg (100%) rename {tests/testapp => cms/test/apps}/sampleapp/menu.py (100%) rename {tests/testapp => cms/test/apps}/sampleapp/models.py (100%) rename {tests/testapp => cms/test/apps}/sampleapp/templates/sampleapp/category_view.html (100%) rename {tests/testapp => cms/test/apps}/sampleapp/templates/sampleapp/home.html (100%) rename {tests/testapp => cms/test/apps}/sampleapp/urls.py (100%) rename {tests/testapp => cms/test/apps}/sampleapp/views.py (100%) rename {tests/testapp/sampleapp => cms/test/project}/__init__.py (100%) rename {tests/testapp => cms/test/project}/cms_urls_for_apphook_tests.py (100%) rename {tests/testapp => cms/test/project}/fixtures/menus.json (100%) rename {tests/testapp => cms/test/project}/manage.py (100%) rename {tests/testapp => cms/test/project}/models.py (100%) rename {tests/testapp => cms/test/project}/noadmin_urls.py (100%) rename {tests/testapp => cms/test/project}/nonroot_urls.py (100%) rename {tests/testapp => cms/test/project}/second_cms_urls_for_apphook_tests.py (100%) rename {tests/testapp => cms/test/project}/second_urls_for_apphook_tests.py (100%) rename {tests/testapp => cms/test/project}/settings.py (100%) rename {tests/testapp => cms/test/project}/templates/404.html (100%) rename {tests/testapp => cms/test/project}/templates/add_placeholder.html (100%) rename {tests/testapp => cms/test/project}/templates/base.html (100%) rename {tests/testapp => cms/test/project}/templates/col_three.html (100%) rename {tests/testapp => cms/test/project}/templates/col_two.html (100%) rename {tests/testapp => cms/test/project}/templates/extra_context.html (100%) rename {tests/testapp => cms/test/project}/templates/menu/breadcrumb.html (100%) rename {tests/testapp => cms/test/project}/templates/menu/language_chooser.html (100%) rename {tests/testapp => cms/test/project}/templates/menu/menu.html (100%) rename {tests/testapp => cms/test/project}/templates/menu/sub_menu.html (100%) rename {tests/testapp => cms/test/project}/templates/menu/test_language_chooser.html (100%) rename {tests/testapp => cms/test/project}/templates/nav_playground.html (100%) rename {tests/testapp => cms/test/project}/templates/placeholder_tests/base.html (100%) rename {tests/testapp => cms/test/project}/templates/placeholder_tests/child.html (100%) rename {tests/testapp => cms/test/project}/templates/placeholder_tests/outside.html (100%) rename {tests/testapp => cms/test/project}/templates/placeholder_tests/outside_base.html (100%) rename {tests/testapp => cms/test/project}/templates/placeholder_tests/test_eleven.html (100%) rename {tests/testapp => cms/test/project}/templates/placeholder_tests/test_five.html (100%) rename {tests/testapp => cms/test/project}/templates/placeholder_tests/test_four.html (100%) rename {tests/testapp => cms/test/project}/templates/placeholder_tests/test_one.html (100%) rename {tests/testapp => cms/test/project}/templates/placeholder_tests/test_seven.html (100%) rename {tests/testapp => cms/test/project}/templates/placeholder_tests/test_six.html (100%) rename {tests/testapp => cms/test/project}/templates/placeholder_tests/test_three.html (100%) rename {tests/testapp => cms/test/project}/templates/placeholder_tests/test_two.html (100%) rename {tests/testapp => cms/test/project}/templates/sidebar_submenu.html (100%) rename {tests/testapp => cms/test/project}/templates/sidebar_submenu_root.html (100%) rename {tests/testapp => cms/test/project}/testrunner.py (100%) rename {tests/testapp => cms/test/project}/urls.py (100%) rename {tests/testapp => cms/test/project}/urls_for_apphook_tests.py (100%) diff --git a/tests/testapp/__init__.py b/cms/test/apps/fakemlng/__init__.py similarity index 100% rename from tests/testapp/__init__.py rename to cms/test/apps/fakemlng/__init__.py diff --git a/tests/testapp/fakemlng/fixtures/fakemlng.json b/cms/test/apps/fakemlng/fixtures/fakemlng.json similarity index 100% rename from tests/testapp/fakemlng/fixtures/fakemlng.json rename to cms/test/apps/fakemlng/fixtures/fakemlng.json diff --git a/tests/testapp/fakemlng/models.py b/cms/test/apps/fakemlng/models.py similarity index 100% rename from tests/testapp/fakemlng/models.py rename to cms/test/apps/fakemlng/models.py diff --git a/tests/testapp/fakemlng/__init__.py b/cms/test/apps/placeholderapp/__init__.py similarity index 100% rename from tests/testapp/fakemlng/__init__.py rename to cms/test/apps/placeholderapp/__init__.py diff --git a/tests/testapp/placeholderapp/admin.py b/cms/test/apps/placeholderapp/admin.py similarity index 100% rename from tests/testapp/placeholderapp/admin.py rename to cms/test/apps/placeholderapp/admin.py diff --git a/tests/testapp/placeholderapp/models.py b/cms/test/apps/placeholderapp/models.py similarity index 100% rename from tests/testapp/placeholderapp/models.py rename to cms/test/apps/placeholderapp/models.py diff --git a/tests/testapp/placeholderapp/__init__.py b/cms/test/apps/pluginapp/__init__.py similarity index 100% rename from tests/testapp/placeholderapp/__init__.py rename to cms/test/apps/pluginapp/__init__.py diff --git a/tests/testapp/pluginapp/models.py b/cms/test/apps/pluginapp/models.py similarity index 100% rename from tests/testapp/pluginapp/models.py rename to cms/test/apps/pluginapp/models.py diff --git a/tests/testapp/pluginapp/__init__.py b/cms/test/apps/pluginapp/plugins/__init__.py similarity index 100% rename from tests/testapp/pluginapp/__init__.py rename to cms/test/apps/pluginapp/plugins/__init__.py diff --git a/tests/testapp/pluginapp/plugins/__init__.py b/cms/test/apps/pluginapp/plugins/manytomany_rel/__init__.py similarity index 100% rename from tests/testapp/pluginapp/plugins/__init__.py rename to cms/test/apps/pluginapp/plugins/manytomany_rel/__init__.py diff --git a/tests/testapp/pluginapp/plugins/manytomany_rel/cms_plugins.py b/cms/test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py similarity index 100% rename from tests/testapp/pluginapp/plugins/manytomany_rel/cms_plugins.py rename to cms/test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py diff --git a/tests/testapp/pluginapp/plugins/manytomany_rel/models.py b/cms/test/apps/pluginapp/plugins/manytomany_rel/models.py similarity index 100% rename from tests/testapp/pluginapp/plugins/manytomany_rel/models.py rename to cms/test/apps/pluginapp/plugins/manytomany_rel/models.py diff --git a/tests/testapp/pluginapp/plugins/manytomany_rel/__init__.py b/cms/test/apps/sampleapp/__init__.py similarity index 100% rename from tests/testapp/pluginapp/plugins/manytomany_rel/__init__.py rename to cms/test/apps/sampleapp/__init__.py diff --git a/tests/testapp/sampleapp/admin.py b/cms/test/apps/sampleapp/admin.py similarity index 100% rename from tests/testapp/sampleapp/admin.py rename to cms/test/apps/sampleapp/admin.py diff --git a/tests/testapp/sampleapp/cms_app.py b/cms/test/apps/sampleapp/cms_app.py similarity index 100% rename from tests/testapp/sampleapp/cms_app.py rename to cms/test/apps/sampleapp/cms_app.py diff --git a/tests/testapp/sampleapp/media/sampleapp/img/gift.jpg b/cms/test/apps/sampleapp/media/sampleapp/img/gift.jpg similarity index 100% rename from tests/testapp/sampleapp/media/sampleapp/img/gift.jpg rename to cms/test/apps/sampleapp/media/sampleapp/img/gift.jpg diff --git a/tests/testapp/sampleapp/menu.py b/cms/test/apps/sampleapp/menu.py similarity index 100% rename from tests/testapp/sampleapp/menu.py rename to cms/test/apps/sampleapp/menu.py diff --git a/tests/testapp/sampleapp/models.py b/cms/test/apps/sampleapp/models.py similarity index 100% rename from tests/testapp/sampleapp/models.py rename to cms/test/apps/sampleapp/models.py diff --git a/tests/testapp/sampleapp/templates/sampleapp/category_view.html b/cms/test/apps/sampleapp/templates/sampleapp/category_view.html similarity index 100% rename from tests/testapp/sampleapp/templates/sampleapp/category_view.html rename to cms/test/apps/sampleapp/templates/sampleapp/category_view.html diff --git a/tests/testapp/sampleapp/templates/sampleapp/home.html b/cms/test/apps/sampleapp/templates/sampleapp/home.html similarity index 100% rename from tests/testapp/sampleapp/templates/sampleapp/home.html rename to cms/test/apps/sampleapp/templates/sampleapp/home.html diff --git a/tests/testapp/sampleapp/urls.py b/cms/test/apps/sampleapp/urls.py similarity index 100% rename from tests/testapp/sampleapp/urls.py rename to cms/test/apps/sampleapp/urls.py diff --git a/tests/testapp/sampleapp/views.py b/cms/test/apps/sampleapp/views.py similarity index 100% rename from tests/testapp/sampleapp/views.py rename to cms/test/apps/sampleapp/views.py diff --git a/tests/testapp/sampleapp/__init__.py b/cms/test/project/__init__.py similarity index 100% rename from tests/testapp/sampleapp/__init__.py rename to cms/test/project/__init__.py diff --git a/tests/testapp/cms_urls_for_apphook_tests.py b/cms/test/project/cms_urls_for_apphook_tests.py similarity index 100% rename from tests/testapp/cms_urls_for_apphook_tests.py rename to cms/test/project/cms_urls_for_apphook_tests.py diff --git a/tests/testapp/fixtures/menus.json b/cms/test/project/fixtures/menus.json similarity index 100% rename from tests/testapp/fixtures/menus.json rename to cms/test/project/fixtures/menus.json diff --git a/tests/testapp/manage.py b/cms/test/project/manage.py similarity index 100% rename from tests/testapp/manage.py rename to cms/test/project/manage.py diff --git a/tests/testapp/models.py b/cms/test/project/models.py similarity index 100% rename from tests/testapp/models.py rename to cms/test/project/models.py diff --git a/tests/testapp/noadmin_urls.py b/cms/test/project/noadmin_urls.py similarity index 100% rename from tests/testapp/noadmin_urls.py rename to cms/test/project/noadmin_urls.py diff --git a/tests/testapp/nonroot_urls.py b/cms/test/project/nonroot_urls.py similarity index 100% rename from tests/testapp/nonroot_urls.py rename to cms/test/project/nonroot_urls.py diff --git a/tests/testapp/second_cms_urls_for_apphook_tests.py b/cms/test/project/second_cms_urls_for_apphook_tests.py similarity index 100% rename from tests/testapp/second_cms_urls_for_apphook_tests.py rename to cms/test/project/second_cms_urls_for_apphook_tests.py diff --git a/tests/testapp/second_urls_for_apphook_tests.py b/cms/test/project/second_urls_for_apphook_tests.py similarity index 100% rename from tests/testapp/second_urls_for_apphook_tests.py rename to cms/test/project/second_urls_for_apphook_tests.py diff --git a/tests/testapp/settings.py b/cms/test/project/settings.py similarity index 100% rename from tests/testapp/settings.py rename to cms/test/project/settings.py diff --git a/tests/testapp/templates/404.html b/cms/test/project/templates/404.html similarity index 100% rename from tests/testapp/templates/404.html rename to cms/test/project/templates/404.html diff --git a/tests/testapp/templates/add_placeholder.html b/cms/test/project/templates/add_placeholder.html similarity index 100% rename from tests/testapp/templates/add_placeholder.html rename to cms/test/project/templates/add_placeholder.html diff --git a/tests/testapp/templates/base.html b/cms/test/project/templates/base.html similarity index 100% rename from tests/testapp/templates/base.html rename to cms/test/project/templates/base.html diff --git a/tests/testapp/templates/col_three.html b/cms/test/project/templates/col_three.html similarity index 100% rename from tests/testapp/templates/col_three.html rename to cms/test/project/templates/col_three.html diff --git a/tests/testapp/templates/col_two.html b/cms/test/project/templates/col_two.html similarity index 100% rename from tests/testapp/templates/col_two.html rename to cms/test/project/templates/col_two.html diff --git a/tests/testapp/templates/extra_context.html b/cms/test/project/templates/extra_context.html similarity index 100% rename from tests/testapp/templates/extra_context.html rename to cms/test/project/templates/extra_context.html diff --git a/tests/testapp/templates/menu/breadcrumb.html b/cms/test/project/templates/menu/breadcrumb.html similarity index 100% rename from tests/testapp/templates/menu/breadcrumb.html rename to cms/test/project/templates/menu/breadcrumb.html diff --git a/tests/testapp/templates/menu/language_chooser.html b/cms/test/project/templates/menu/language_chooser.html similarity index 100% rename from tests/testapp/templates/menu/language_chooser.html rename to cms/test/project/templates/menu/language_chooser.html diff --git a/tests/testapp/templates/menu/menu.html b/cms/test/project/templates/menu/menu.html similarity index 100% rename from tests/testapp/templates/menu/menu.html rename to cms/test/project/templates/menu/menu.html diff --git a/tests/testapp/templates/menu/sub_menu.html b/cms/test/project/templates/menu/sub_menu.html similarity index 100% rename from tests/testapp/templates/menu/sub_menu.html rename to cms/test/project/templates/menu/sub_menu.html diff --git a/tests/testapp/templates/menu/test_language_chooser.html b/cms/test/project/templates/menu/test_language_chooser.html similarity index 100% rename from tests/testapp/templates/menu/test_language_chooser.html rename to cms/test/project/templates/menu/test_language_chooser.html diff --git a/tests/testapp/templates/nav_playground.html b/cms/test/project/templates/nav_playground.html similarity index 100% rename from tests/testapp/templates/nav_playground.html rename to cms/test/project/templates/nav_playground.html diff --git a/tests/testapp/templates/placeholder_tests/base.html b/cms/test/project/templates/placeholder_tests/base.html similarity index 100% rename from tests/testapp/templates/placeholder_tests/base.html rename to cms/test/project/templates/placeholder_tests/base.html diff --git a/tests/testapp/templates/placeholder_tests/child.html b/cms/test/project/templates/placeholder_tests/child.html similarity index 100% rename from tests/testapp/templates/placeholder_tests/child.html rename to cms/test/project/templates/placeholder_tests/child.html diff --git a/tests/testapp/templates/placeholder_tests/outside.html b/cms/test/project/templates/placeholder_tests/outside.html similarity index 100% rename from tests/testapp/templates/placeholder_tests/outside.html rename to cms/test/project/templates/placeholder_tests/outside.html diff --git a/tests/testapp/templates/placeholder_tests/outside_base.html b/cms/test/project/templates/placeholder_tests/outside_base.html similarity index 100% rename from tests/testapp/templates/placeholder_tests/outside_base.html rename to cms/test/project/templates/placeholder_tests/outside_base.html diff --git a/tests/testapp/templates/placeholder_tests/test_eleven.html b/cms/test/project/templates/placeholder_tests/test_eleven.html similarity index 100% rename from tests/testapp/templates/placeholder_tests/test_eleven.html rename to cms/test/project/templates/placeholder_tests/test_eleven.html diff --git a/tests/testapp/templates/placeholder_tests/test_five.html b/cms/test/project/templates/placeholder_tests/test_five.html similarity index 100% rename from tests/testapp/templates/placeholder_tests/test_five.html rename to cms/test/project/templates/placeholder_tests/test_five.html diff --git a/tests/testapp/templates/placeholder_tests/test_four.html b/cms/test/project/templates/placeholder_tests/test_four.html similarity index 100% rename from tests/testapp/templates/placeholder_tests/test_four.html rename to cms/test/project/templates/placeholder_tests/test_four.html diff --git a/tests/testapp/templates/placeholder_tests/test_one.html b/cms/test/project/templates/placeholder_tests/test_one.html similarity index 100% rename from tests/testapp/templates/placeholder_tests/test_one.html rename to cms/test/project/templates/placeholder_tests/test_one.html diff --git a/tests/testapp/templates/placeholder_tests/test_seven.html b/cms/test/project/templates/placeholder_tests/test_seven.html similarity index 100% rename from tests/testapp/templates/placeholder_tests/test_seven.html rename to cms/test/project/templates/placeholder_tests/test_seven.html diff --git a/tests/testapp/templates/placeholder_tests/test_six.html b/cms/test/project/templates/placeholder_tests/test_six.html similarity index 100% rename from tests/testapp/templates/placeholder_tests/test_six.html rename to cms/test/project/templates/placeholder_tests/test_six.html diff --git a/tests/testapp/templates/placeholder_tests/test_three.html b/cms/test/project/templates/placeholder_tests/test_three.html similarity index 100% rename from tests/testapp/templates/placeholder_tests/test_three.html rename to cms/test/project/templates/placeholder_tests/test_three.html diff --git a/tests/testapp/templates/placeholder_tests/test_two.html b/cms/test/project/templates/placeholder_tests/test_two.html similarity index 100% rename from tests/testapp/templates/placeholder_tests/test_two.html rename to cms/test/project/templates/placeholder_tests/test_two.html diff --git a/tests/testapp/templates/sidebar_submenu.html b/cms/test/project/templates/sidebar_submenu.html similarity index 100% rename from tests/testapp/templates/sidebar_submenu.html rename to cms/test/project/templates/sidebar_submenu.html diff --git a/tests/testapp/templates/sidebar_submenu_root.html b/cms/test/project/templates/sidebar_submenu_root.html similarity index 100% rename from tests/testapp/templates/sidebar_submenu_root.html rename to cms/test/project/templates/sidebar_submenu_root.html diff --git a/tests/testapp/testrunner.py b/cms/test/project/testrunner.py similarity index 100% rename from tests/testapp/testrunner.py rename to cms/test/project/testrunner.py diff --git a/tests/testapp/urls.py b/cms/test/project/urls.py similarity index 100% rename from tests/testapp/urls.py rename to cms/test/project/urls.py diff --git a/tests/testapp/urls_for_apphook_tests.py b/cms/test/project/urls_for_apphook_tests.py similarity index 100% rename from tests/testapp/urls_for_apphook_tests.py rename to cms/test/project/urls_for_apphook_tests.py From 2f8773f01dd176b989fd8cf7a4886bb4ac9fc1bc Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Wed, 2 Feb 2011 15:17:06 +0100 Subject: [PATCH 018/689] removed tests dir --- {tests => cms/test}/.coveragerc | 0 tests/bootstrap.py | 121 -------------------------------- tests/buildout.cfg | 36 ---------- tests/django-svn.cfg | 9 --- 4 files changed, 166 deletions(-) rename {tests => cms/test}/.coveragerc (100%) delete mode 100644 tests/bootstrap.py delete mode 100644 tests/buildout.cfg delete mode 100644 tests/django-svn.cfg diff --git a/tests/.coveragerc b/cms/test/.coveragerc similarity index 100% rename from tests/.coveragerc rename to cms/test/.coveragerc diff --git a/tests/bootstrap.py b/tests/bootstrap.py deleted file mode 100644 index 2ad879701a6..00000000000 --- a/tests/bootstrap.py +++ /dev/null @@ -1,121 +0,0 @@ -############################################################################## -# -# Copyright (c) 2006 Zope Corporation and Contributors. -# All Rights Reserved. -# -# This software is subject to the provisions of the Zope Public License, -# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. -# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED -# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS -# FOR A PARTICULAR PURPOSE. -# -############################################################################## -"""Bootstrap a buildout-based project - -Simply run this script in a directory containing a buildout.cfg. -The script accepts buildout command-line options, so you can -use the -c option to specify an alternate configuration file. - -$Id: bootstrap.py 105417 2009-11-01 15:15:20Z tarek $ -""" - -import os, shutil, sys, tempfile, urllib2 -from optparse import OptionParser - -tmpeggs = tempfile.mkdtemp() - -is_jython = sys.platform.startswith('java') - -# parsing arguments -parser = OptionParser() -parser.add_option("-v", "--version", dest="version", - help="use a specific zc.buildout version") -parser.add_option("-d", "--distribute", - action="store_true", dest="distribute", default=False, - help="Use Disribute rather than Setuptools.") - -parser.add_option("-c", None, action="store", dest="config_file", - help=("Specify the path to the buildout configuration " - "file to be used.")) - -options, args = parser.parse_args() - -# if -c was provided, we push it back into args for buildout' main function -if options.config_file is not None: - args += ['-c', options.config_file] - -if options.version is not None: - VERSION = '==%s' % options.version -else: - VERSION = '' - -USE_DISTRIBUTE = options.distribute -args = args + ['bootstrap'] - -to_reload = False -try: - import pkg_resources - if not hasattr(pkg_resources, '_distribute'): - to_reload = True - raise ImportError -except ImportError: - ez = {} - if USE_DISTRIBUTE: - exec urllib2.urlopen('http://python-distribute.org/distribute_setup.py' - ).read() in ez - ez['use_setuptools'](to_dir=tmpeggs, download_delay=0, no_fake=True) - else: - exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py' - ).read() in ez - ez['use_setuptools'](to_dir=tmpeggs, download_delay=0) - - if to_reload: - reload(pkg_resources) - else: - import pkg_resources - -if sys.platform == 'win32': - def quote(c): - if ' ' in c: - return '"%s"' % c # work around spawn lamosity on windows - else: - return c -else: - def quote (c): - return c - -cmd = 'from setuptools.command.easy_install import main; main()' -ws = pkg_resources.working_set - -if USE_DISTRIBUTE: - requirement = 'distribute' -else: - requirement = 'setuptools' - -if is_jython: - import subprocess - - assert subprocess.Popen([sys.executable] + ['-c', quote(cmd), '-mqNxd', - quote(tmpeggs), 'zc.buildout' + VERSION], - env=dict(os.environ, - PYTHONPATH= - ws.find(pkg_resources.Requirement.parse(requirement)).location - ), - ).wait() == 0 - -else: - assert os.spawnle( - os.P_WAIT, sys.executable, quote (sys.executable), - '-c', quote (cmd), '-mqNxd', quote (tmpeggs), 'zc.buildout' + VERSION, - dict(os.environ, - PYTHONPATH= - ws.find(pkg_resources.Requirement.parse(requirement)).location - ), - ) == 0 - -ws.add_entry(tmpeggs) -ws.require('zc.buildout' + VERSION) -import zc.buildout.buildout -zc.buildout.buildout.main(args) -shutil.rmtree(tmpeggs) diff --git a/tests/buildout.cfg b/tests/buildout.cfg deleted file mode 100644 index 38d0858523a..00000000000 --- a/tests/buildout.cfg +++ /dev/null @@ -1,36 +0,0 @@ -[buildout] -parts = - python - django -eggs = - django-cms - coverage - unittest-xml-reporting - django-reversion - django-classy-tags - django-mptt - django - South - sphinx -develop = - ../ -versions = versions - -[python] -recipe = zc.recipe.egg -interpreter = python -eggs = ${buildout:eggs} -scripts = - coverage - - -[django] -recipe = djangorecipe -version = 1.2.4 -project = testapp -settings = settings -eggs = ${buildout:eggs} - -[versions] -coverage = 3.4 -unittest-xml-reporting = 1.0.3 diff --git a/tests/django-svn.cfg b/tests/django-svn.cfg deleted file mode 100644 index 8626c3da1b2..00000000000 --- a/tests/django-svn.cfg +++ /dev/null @@ -1,9 +0,0 @@ -[buildout] -extends = buildout.cfg - -[django] -recipe = djangorecipe -version = trunk -project = testapp -settings = settings -eggs = ${buildout:eggs} \ No newline at end of file From 89e9c7e0e82529afdddd8945073cb25323a8449d Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Wed, 2 Feb 2011 15:18:04 +0100 Subject: [PATCH 019/689] removed runtests.sh --- runtests.sh | 107 ---------------------------------------------------- 1 file changed, 107 deletions(-) delete mode 100755 runtests.sh diff --git a/runtests.sh b/runtests.sh deleted file mode 100755 index 29c913874ae..00000000000 --- a/runtests.sh +++ /dev/null @@ -1,107 +0,0 @@ -#!/bin/bash -cd tests - -args=("$@") -num_args=${#args[@]} -index=0 - -reuse_env=true -disable_coverage=true -django_trunk=false -python="python" # to ensure this script works if no python option is specified -while [ "$index" -lt "$num_args" ] -do - case "${args[$index]}" in - "--failfast") - failfast="--failfast" - ;; - - "--rebuild-env") - reuse_env=false - ;; - - "--with-coverage") - disable_coverage=false - ;; - - "--django-trunk") - django_trunk=true - ;; - - "--python") - let "index = $index + 1" - python="${args[$index]}" - ;; - - "--help") - echo "" - echo "usage:" - echo " runtests.sh" - echo " or runtests.sh [testcase]" - echo " or runtests.sh [flags] [testcase]" - echo "" - echo "flags:" - echo " --failfast - abort at first failing test" - echo " --with-coverage - enables coverage" - echo " --rebuild-env - run buildout before the tests" - echo " --django-trunk - run tests against django trunk" - echo " --python /path/to/python - python version to use to run the tests" - exit 1 - ;; - - *) - suite="cms.${args[$index]}" - esac - let "index = $index + 1" -done - -echo "using python at: $python" - -if [ $reuse_env == false ]; then - echo "setting up test environment (this might take a while)..." - $python bootstrap.py - if [ $? != 0 ]; then - echo "bootstrap.py failed" - exit 1 - fi - if [ $django_trunk == true ]; then - ./bin/buildout -c django-svn.cfg - else - ./bin/buildout - fi - if [ $? != 0 ]; then - echo "bin/buildout failed" - exit 1 - fi -else - echo "reusing current buildout environment" -fi - -if [ "$failfast" ]; then - echo "--failfast supplied, not using xmlrunner." -fi - -if [ ! "$suite" ]; then - suite="cms" - echo "Running complete cms testsuite." -else - echo "Running cms test $suite." -fi - -# Clean the tree for .pyc files -find . -name '*.pyc' -delete - -if [ $disable_coverage == false ]; then - ./bin/coverage run --rcfile=.coveragerc testapp/manage.py test $suite $failfast - retcode=$? - - echo "Post test actions..." - ./bin/coverage xml - ./bin/coverage html -else - ./bin/django test $suite $failfast - retcode=$? -fi -cd .. -echo "done" -exit $retcode From 6d69bc574ba58dbec2415056d6f3fcb562959824 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Wed, 2 Feb 2011 18:36:47 +0100 Subject: [PATCH 020/689] almost there --- cms/test/apps/fakemlng/models.py | 2 +- cms/test/apps/placeholderapp/admin.py | 2 +- cms/test/apps/pluginapp/models.py | 2 +- .../plugins/manytomany_rel/cms_plugins.py | 6 +++--- .../pluginapp/plugins/manytomany_rel/models.py | 4 ++-- cms/test/apps/sampleapp/admin.py | 4 ++-- cms/test/apps/sampleapp/cms_app.py | 6 +++--- cms/test/apps/sampleapp/menu.py | 2 +- cms/test/apps/sampleapp/models.py | 2 +- cms/test/apps/sampleapp/urls.py | 2 +- cms/test/apps/sampleapp/views.py | 4 ++-- cms/test/js_testcases.py | 2 +- cms/test/project/cms_urls_for_apphook_tests.py | 2 +- cms/test/project/noadmin_urls.py | 2 +- cms/test/project/nonroot_urls.py | 2 +- .../project/second_cms_urls_for_apphook_tests.py | 2 +- .../project/second_urls_for_apphook_tests.py | 4 ++-- cms/test/project/settings.py | 16 ++++++++-------- cms/test/project/testrunner.py | 2 +- cms/test/project/urls.py | 2 +- cms/test/project/urls_for_apphook_tests.py | 4 ++-- cms/test/util/context_managers.py | 2 +- cms/test/util/mock.py | 2 +- cms/tests/__init__.py | 2 +- cms/tests/admin.py | 2 +- cms/tests/apphooks.py | 12 ++++++------ cms/tests/docs.py | 2 +- cms/tests/forms.py | 2 +- cms/tests/javascript.py | 2 +- cms/tests/mail.py | 2 +- cms/tests/menu.py | 2 +- cms/tests/middleware.py | 2 +- cms/tests/multilingual.py | 2 +- cms/tests/nonroot.py | 2 +- cms/tests/page.py | 2 +- cms/tests/placeholder.py | 6 +++--- cms/tests/plugins.py | 4 ++-- cms/tests/settings.py | 2 +- cms/tests/urlutils.py | 2 +- cms/tests/views.py | 4 ++-- setup.py | 1 + 41 files changed, 66 insertions(+), 65 deletions(-) diff --git a/cms/test/apps/fakemlng/models.py b/cms/test/apps/fakemlng/models.py index 2d8f368d6b5..a00d7717869 100644 --- a/cms/test/apps/fakemlng/models.py +++ b/cms/test/apps/fakemlng/models.py @@ -11,4 +11,4 @@ class Translations(models.Model): placeholder = PlaceholderField('translated', null=True) class Meta: - unique_together = [('master', 'language_code')] \ No newline at end of file + unique_together = [('master', 'language_code')] diff --git a/cms/test/apps/placeholderapp/admin.py b/cms/test/apps/placeholderapp/admin.py index 618d1ba9b01..7e0fb1fe281 100644 --- a/cms/test/apps/placeholderapp/admin.py +++ b/cms/test/apps/placeholderapp/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin from cms.admin.placeholderadmin import PlaceholderAdmin -from testapp.placeholderapp.models import * +from cms.test.apps.placeholderapp.models import * class MixinAdmin(admin.ModelAdmin): diff --git a/cms/test/apps/pluginapp/models.py b/cms/test/apps/pluginapp/models.py index c36f2c148a1..ebd7bda4f0a 100644 --- a/cms/test/apps/pluginapp/models.py +++ b/cms/test/apps/pluginapp/models.py @@ -12,4 +12,4 @@ class Article(models.Model): section = models.ForeignKey(Section) def __unicode__(self): - return u"%s -- %s" % (self.title, self.section) \ No newline at end of file + return u"%s -- %s" % (self.title, self.section) diff --git a/cms/test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py b/cms/test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py index 86ba94fa724..8320cbf9682 100644 --- a/cms/test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py +++ b/cms/test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py @@ -3,8 +3,8 @@ from cms.plugin_base import CMSPluginBase from cms.plugin_pool import plugin_pool -from testapp.pluginapp.plugins.manytomany_rel.models import ArticlePluginModel -from testapp.pluginapp.models import Article +from cms.test.apps.pluginapp.plugins.manytomany_rel.models import ArticlePluginModel +from cms.test.apps.pluginapp.models import Article @@ -21,4 +21,4 @@ def render(self, context, instance, placeholder): 'placeholder':placeholder}) return context -plugin_pool.register_plugin(ArticlePlugin) \ No newline at end of file +plugin_pool.register_plugin(ArticlePlugin) diff --git a/cms/test/apps/pluginapp/plugins/manytomany_rel/models.py b/cms/test/apps/pluginapp/plugins/manytomany_rel/models.py index be32d3d4e30..b25d01a727b 100644 --- a/cms/test/apps/pluginapp/plugins/manytomany_rel/models.py +++ b/cms/test/apps/pluginapp/plugins/manytomany_rel/models.py @@ -2,7 +2,7 @@ from cms.models import CMSPlugin -from testapp.pluginapp.models import Section +from cms.test.apps.pluginapp.models import Section class ArticlePluginModel(CMSPlugin): @@ -13,4 +13,4 @@ def __unicode__(self): return self.title def copy_relations(self, oldinstance): - self.sections = oldinstance.sections.all() \ No newline at end of file + self.sections = oldinstance.sections.all() diff --git a/cms/test/apps/sampleapp/admin.py b/cms/test/apps/sampleapp/admin.py index 199aa94b4c6..f0ad981eaac 100644 --- a/cms/test/apps/sampleapp/admin.py +++ b/cms/test/apps/sampleapp/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from testapp.sampleapp.models import Picture, Category +from cms.test.apps.sampleapp.models import Picture, Category class PictureInline(admin.StackedInline): model = Picture @@ -7,4 +7,4 @@ class PictureInline(admin.StackedInline): class CategoryAdmin(admin.ModelAdmin): inlines = [PictureInline] -admin.site.register(Category, CategoryAdmin) \ No newline at end of file +admin.site.register(Category, CategoryAdmin) diff --git a/cms/test/apps/sampleapp/cms_app.py b/cms/test/apps/sampleapp/cms_app.py index f596111e7b5..3f8c62f18c4 100644 --- a/cms/test/apps/sampleapp/cms_app.py +++ b/cms/test/apps/sampleapp/cms_app.py @@ -1,11 +1,11 @@ from cms.app_base import CMSApp -from testapp.sampleapp.menu import SampleAppMenu +from cms.test.apps.sampleapp.menu import SampleAppMenu from cms.apphook_pool import apphook_pool from django.utils.translation import ugettext_lazy as _ class SampleApp(CMSApp): name = _("Sample App") - urls = ["testapp.sampleapp.urls"] + urls = ["cms.test.apps.sampleapp.urls"] menus = [SampleAppMenu] -apphook_pool.register(SampleApp) \ No newline at end of file +apphook_pool.register(SampleApp) diff --git a/cms/test/apps/sampleapp/menu.py b/cms/test/apps/sampleapp/menu.py index c77fe40a6e6..400f935fec1 100644 --- a/cms/test/apps/sampleapp/menu.py +++ b/cms/test/apps/sampleapp/menu.py @@ -4,7 +4,7 @@ from django.utils.translation import ugettext_lazy as _ from menus.base import Menu, NavigationNode from menus.menu_pool import menu_pool -from testapp.sampleapp.models import Category +from cms.test.apps.sampleapp.models import Category class SampleAppMenu(Menu): diff --git a/cms/test/apps/sampleapp/models.py b/cms/test/apps/sampleapp/models.py index 6242a87bc2a..5790cc89218 100644 --- a/cms/test/apps/sampleapp/models.py +++ b/cms/test/apps/sampleapp/models.py @@ -24,4 +24,4 @@ class Meta: class Picture(models.Model): image = models.ImageField(upload_to="pictures") - category = models.ForeignKey(Category) \ No newline at end of file + category = models.ForeignKey(Category) diff --git a/cms/test/apps/sampleapp/urls.py b/cms/test/apps/sampleapp/urls.py index 3c511e3096b..bbb3cfc5542 100644 --- a/cms/test/apps/sampleapp/urls.py +++ b/cms/test/apps/sampleapp/urls.py @@ -4,7 +4,7 @@ Also used in cms.tests.ApphooksTestCase """ -urlpatterns = patterns('testapp.sampleapp.views', +urlpatterns = patterns('cms.test.apps.sampleapp.views', url(r'^$', 'sample_view', {'message': 'sample root page',}, name='sample-root'), url(r'^settings/$', 'sample_view', kwargs={'message': 'sample settings page'}, name='sample-settings'), url(r'^account/$', 'sample_view', {'message': 'sample account page'}, name='sample-account'), diff --git a/cms/test/apps/sampleapp/views.py b/cms/test/apps/sampleapp/views.py index faed9fd22fd..9a7668b4a7c 100644 --- a/cms/test/apps/sampleapp/views.py +++ b/cms/test/apps/sampleapp/views.py @@ -2,7 +2,7 @@ from django.http import Http404 from django.shortcuts import render_to_response from django.template.context import RequestContext -from testapp.sampleapp.models import Category +from cms.test.apps.sampleapp.models import Category def sample_view(request, **kw): context = RequestContext(request, kw) @@ -12,4 +12,4 @@ def category_view(request, id): return render_to_response('sampleapp/category_view.html', RequestContext(request, {'category':Category.objects.get(pk=id)})) def notfound(request): - raise Http404 \ No newline at end of file + raise Http404 diff --git a/cms/test/js_testcases.py b/cms/test/js_testcases.py index 8f0cf113c63..8e436ba7cbd 100644 --- a/cms/test/js_testcases.py +++ b/cms/test/js_testcases.py @@ -24,4 +24,4 @@ def _run_javascript(self, files, snippet): with open(filename, 'r') as fobj: lib = fobj.read() ctx.execute(lib) - return ctx.execute(snippet) \ No newline at end of file + return ctx.execute(snippet) diff --git a/cms/test/project/cms_urls_for_apphook_tests.py b/cms/test/project/cms_urls_for_apphook_tests.py index 9f9907bd24f..a36dd4635e6 100644 --- a/cms/test/project/cms_urls_for_apphook_tests.py +++ b/cms/test/project/cms_urls_for_apphook_tests.py @@ -22,4 +22,4 @@ urlpatterns = get_app_patterns() + urlpatterns #urlpatterns = (dynamic_app_regex_url_resolver, ) + urlpatterns -urlpatterns = patterns('', *urlpatterns) \ No newline at end of file +urlpatterns = patterns('', *urlpatterns) diff --git a/cms/test/project/noadmin_urls.py b/cms/test/project/noadmin_urls.py index 3c0d493d42e..b0328253ad9 100644 --- a/cms/test/project/noadmin_urls.py +++ b/cms/test/project/noadmin_urls.py @@ -10,4 +10,4 @@ url(r'^media/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), url(r'^', include('cms.urls')), -) \ No newline at end of file +) diff --git a/cms/test/project/nonroot_urls.py b/cms/test/project/nonroot_urls.py index 1ec171f6944..2892e930a5f 100644 --- a/cms/test/project/nonroot_urls.py +++ b/cms/test/project/nonroot_urls.py @@ -11,4 +11,4 @@ url(r'^media/cms/(?P.*)$', 'django.views.static.serve', {'document_root': settings.CMS_MEDIA_ROOT, 'show_indexes': True}), url(r'^media/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), url(r'^content/', include('cms.urls')), -) \ No newline at end of file +) diff --git a/cms/test/project/second_cms_urls_for_apphook_tests.py b/cms/test/project/second_cms_urls_for_apphook_tests.py index 9f9907bd24f..a36dd4635e6 100644 --- a/cms/test/project/second_cms_urls_for_apphook_tests.py +++ b/cms/test/project/second_cms_urls_for_apphook_tests.py @@ -22,4 +22,4 @@ urlpatterns = get_app_patterns() + urlpatterns #urlpatterns = (dynamic_app_regex_url_resolver, ) + urlpatterns -urlpatterns = patterns('', *urlpatterns) \ No newline at end of file +urlpatterns = patterns('', *urlpatterns) diff --git a/cms/test/project/second_urls_for_apphook_tests.py b/cms/test/project/second_urls_for_apphook_tests.py index 668a3257ee6..6898de26e39 100644 --- a/cms/test/project/second_urls_for_apphook_tests.py +++ b/cms/test/project/second_urls_for_apphook_tests.py @@ -12,5 +12,5 @@ {'document_root': settings.CMS_MEDIA_ROOT, 'show_indexes': True}), url(r'^media/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), - url(r'^', include('testapp.second_cms_urls_for_apphook_tests')), -) \ No newline at end of file + url(r'^', include('cms.test.project.second_cms_urls_for_apphook_tests')), +) diff --git a/cms/test/project/settings.py b/cms/test/project/settings.py index ddcd811e49a..33abfb3135a 100644 --- a/cms/test/project/settings.py +++ b/cms/test/project/settings.py @@ -71,7 +71,7 @@ ) -ROOT_URLCONF = 'testapp.urls' +ROOT_URLCONF = 'cms.test.project.urls' TEMPLATE_DIRS = ( @@ -99,11 +99,11 @@ 'cms.plugins.twitter', 'cms.plugins.inherit', 'mptt', - 'testapp.sampleapp', - 'testapp.placeholderapp', - 'testapp.pluginapp', - 'testapp.pluginapp.plugins.manytomany_rel', - 'testapp.fakemlng', + 'cms.test.project.sampleapp', + 'cms.test.project.placeholderapp', + 'cms.test.project.pluginapp', + 'cms.test.project.pluginapp.plugins.manytomany_rel', + 'cms.test.project.fakemlng', 'south', 'reversion', ) @@ -183,7 +183,7 @@ SOUTH_TESTS_MIGRATE = False CMS_NAVIGATION_EXTENDERS = ( - ('testapp.sampleapp.menu_extender.get_nodes', 'SampleApp Menu'), + ('cms.test.project.sampleapp.menu_extender.get_nodes', 'SampleApp Menu'), ) try: @@ -191,4 +191,4 @@ except ImportError: pass -TEST_RUNNER = 'testapp.testrunner.CMSTestSuiteRunner' +TEST_RUNNER = 'cms.test.project.testrunner.CMSTestSuiteRunner' diff --git a/cms/test/project/testrunner.py b/cms/test/project/testrunner.py index 84802a86658..6f0096e0657 100644 --- a/cms/test/project/testrunner.py +++ b/cms/test/project/testrunner.py @@ -12,4 +12,4 @@ def run_suite(self, suite, **kwargs): if self.use_runner and not self.failfast: return self.use_runner().run(suite) else: - return super(CMSTestSuiteRunner, self).run_suite(suite, **kwargs) \ No newline at end of file + return super(CMSTestSuiteRunner, self).run_suite(suite, **kwargs) diff --git a/cms/test/project/urls.py b/cms/test/project/urls.py index 315b3487b27..0038cb20381 100644 --- a/cms/test/project/urls.py +++ b/cms/test/project/urls.py @@ -13,4 +13,4 @@ url(r'^media/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), url(r'^', include('cms.urls')), -) \ No newline at end of file +) diff --git a/cms/test/project/urls_for_apphook_tests.py b/cms/test/project/urls_for_apphook_tests.py index 36dd377f0ab..1f7b3fc7ee1 100644 --- a/cms/test/project/urls_for_apphook_tests.py +++ b/cms/test/project/urls_for_apphook_tests.py @@ -12,5 +12,5 @@ {'document_root': settings.CMS_MEDIA_ROOT, 'show_indexes': True}), url(r'^media/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), - url(r'^', include('testapp.cms_urls_for_apphook_tests')), -) \ No newline at end of file + url(r'^', include('cms.test.project.cms_urls_for_apphook_tests')), +) diff --git a/cms/test/util/context_managers.py b/cms/test/util/context_managers.py index 1054942e901..a69842ac4a7 100644 --- a/cms/test/util/context_managers.py +++ b/cms/test/util/context_managers.py @@ -135,4 +135,4 @@ def __exit__(self, exc, value, tb): delattr(self.instance, key) else: setattr(self.instance, key, old_value) - self.instance.save() \ No newline at end of file + self.instance.save() diff --git a/cms/test/util/mock.py b/cms/test/util/mock.py index 4e7f0a1f15c..3e2c6a2de98 100644 --- a/cms/test/util/mock.py +++ b/cms/test/util/mock.py @@ -11,4 +11,4 @@ def __init__(self, **kwargs): class DefaultAttributeObject(AttributeObject): def __init__(self, default, **kwargs): self.__default = default - super(DefaultAttributeObject, self).__init__(**kwargs) \ No newline at end of file + super(DefaultAttributeObject, self).__init__(**kwargs) diff --git a/cms/tests/__init__.py b/cms/tests/__init__.py index aede333dc51..cced1e74723 100644 --- a/cms/tests/__init__.py +++ b/cms/tests/__init__.py @@ -29,4 +29,4 @@ import traceback exc = traceback.format_exc() warnings.warn("JavascriptTestCase cannot be run: %s" % exc) - \ No newline at end of file + diff --git a/cms/tests/admin.py b/cms/tests/admin.py index 21c3b49a707..dcd628234bc 100644 --- a/cms/tests/admin.py +++ b/cms/tests/admin.py @@ -160,4 +160,4 @@ def test_06_search_fields(self): url = reverse('admin:cms_%s_changelist' % model._meta.module_name) response = self.client.get('%s?q=1' % url) errmsg = response.content - self.assertEqual(response.status_code, 200, errmsg) \ No newline at end of file + self.assertEqual(response.status_code, 200, errmsg) diff --git a/cms/tests/apphooks.py b/cms/tests/apphooks.py index 09f4dc07b39..4506fa07299 100644 --- a/cms/tests/apphooks.py +++ b/cms/tests/apphooks.py @@ -12,7 +12,7 @@ APP_NAME = 'SampleApp' -APP_MODULE = "testapp.sampleapp.cms_app" +APP_MODULE = "cms.test.apps.sampleapp.cms_app" class ApphooksTestCase(CMSTestCase): @@ -46,8 +46,8 @@ def test_02_implicit_apphooks(self): if APP_MODULE in sys.modules: del sys.modules[APP_MODULE] - apps = ['testapp.sampleapp'] - with SettingsOverride(INSTALLED_APPS=apps, ROOT_URLCONF='testapp.urls_for_apphook_tests'): + apps = ['cms.test.apps.sampleapp'] + with SettingsOverride(INSTALLED_APPS=apps, ROOT_URLCONF='cms.test.project.urls_for_apphook_tests'): apphook_pool.clear() hooks = apphook_pool.get_apphooks() app_names = [hook[0] for hook in hooks] @@ -60,7 +60,7 @@ def test_03_apphook_on_root(self): if APP_MODULE in sys.modules: del sys.modules[APP_MODULE] - with SettingsOverride(ROOT_URLCONF='testapp.urls_for_apphook_tests'): + with SettingsOverride(ROOT_URLCONF='cms.test.project.urls_for_apphook_tests'): apphook_pool.clear() superuser = User.objects.create_superuser('admin', 'admin@admin.com', 'admin') page = self.create_page(user=superuser, published=True) @@ -85,7 +85,7 @@ def test_04_get_page_for_apphook(self): if APP_MODULE in sys.modules: del sys.modules[APP_MODULE] - with SettingsOverride(ROOT_URLCONF='testapp.second_urls_for_apphook_tests'): + with SettingsOverride(ROOT_URLCONF='cms.test.project.second_urls_for_apphook_tests'): apphook_pool.clear() superuser = User.objects.create_superuser('admin', 'admin@admin.com', 'admin') @@ -131,4 +131,4 @@ def test_04_get_page_for_apphook(self): self.assertTemplateUsed(response, 'sampleapp/home.html') self.assertContains(response, de_title.title) - apphook_pool.clear() \ No newline at end of file + apphook_pool.clear() diff --git a/cms/tests/docs.py b/cms/tests/docs.py index 7dd66a594e9..e821c9f4bb9 100644 --- a/cms/tests/docs.py +++ b/cms/tests/docs.py @@ -10,7 +10,7 @@ except ImportError: from StringIO import StringIO -ROOT_DIR = os.path.join(settings.PROJECT_DIR, '..', '..') +ROOT_DIR = os.path.join(settings.PROJECT_DIR, '..', '..', '..') DOCS_DIR = os.path.join(ROOT_DIR, 'docs') diff --git a/cms/tests/forms.py b/cms/tests/forms.py index f417a22bc9a..667b99c2ff3 100644 --- a/cms/tests/forms.py +++ b/cms/tests/forms.py @@ -104,4 +104,4 @@ def test_09_page_user_form_initial(self): 'can_delete_pageuser', 'can_add_pagepermission', 'can_change_pagepermission', 'can_delete_pagepermission'] for name in names: - self.assertTrue(puf.initial.get(name, False)) \ No newline at end of file + self.assertTrue(puf.initial.get(name, False)) diff --git a/cms/tests/javascript.py b/cms/tests/javascript.py index 3229e82b786..44dbd9a23b3 100644 --- a/cms/tests/javascript.py +++ b/cms/tests/javascript.py @@ -54,4 +54,4 @@ def test_02_remove_from_url(self): ] for arg1, arg2, expected in tests: output = self._run_javascript(files, base_snippet % (arg1, arg2)) - self.assertEqual(output, expected) \ No newline at end of file + self.assertEqual(output, expected) diff --git a/cms/tests/mail.py b/cms/tests/mail.py index 06e8e61e62e..e8c5f132714 100644 --- a/cms/tests/mail.py +++ b/cms/tests/mail.py @@ -11,4 +11,4 @@ def setUp(self): def test_01_mail_page_user_change(self): user = self.create_page_user("username", grant_all=True) mail_page_user_change(user) - self.assertEqual(len(mail.outbox), 1) \ No newline at end of file + self.assertEqual(len(mail.outbox), 1) diff --git a/cms/tests/menu.py b/cms/tests/menu.py index 553ba2ec3c6..3ea391a587a 100644 --- a/cms/tests/menu.py +++ b/cms/tests/menu.py @@ -716,4 +716,4 @@ def test_02_top_in_nav(self): AttributeObject(title='bbb', level=1, children=[]) ]) ] - self.assertTreeQuality(soft_root, mock_tree, 'title', 'level') \ No newline at end of file + self.assertTreeQuality(soft_root, mock_tree, 'title', 'level') diff --git a/cms/tests/middleware.py b/cms/tests/middleware.py index 82ec1b2bc1d..a1ae2d8f14c 100644 --- a/cms/tests/middleware.py +++ b/cms/tests/middleware.py @@ -106,4 +106,4 @@ class Mock: # Now the following should revert to the default language (en) setattr(request,'COOKIES', {'django_language':'elvish'}) result = middle.get_language_from_request(request) - self.assertEqual(result, 'en') # The default \ No newline at end of file + self.assertEqual(result, 'en') # The default diff --git a/cms/tests/multilingual.py b/cms/tests/multilingual.py index 9ad9b8b2c48..02f32bcb600 100644 --- a/cms/tests/multilingual.py +++ b/cms/tests/multilingual.py @@ -61,4 +61,4 @@ def test_02_multilingual_page(self): public = page.publisher_public placeholder = public.placeholders.all()[0] self.assertEqual(placeholder.cmsplugin_set.filter(language='de').count(), 1) - self.assertEqual(placeholder.cmsplugin_set.filter(language='en').count(), 1) \ No newline at end of file + self.assertEqual(placeholder.cmsplugin_set.filter(language='en').count(), 1) diff --git a/cms/tests/nonroot.py b/cms/tests/nonroot.py index b4da65e0d71..10348e7d823 100644 --- a/cms/tests/nonroot.py +++ b/cms/tests/nonroot.py @@ -10,7 +10,7 @@ class NonRootCase(CMSTestCase): - urls = 'testapp.nonroot_urls' + urls = 'cms.test.project.nonroot_urls' def setUp(self): with SettingsOverride(CMS_MODERATOR = False): diff --git a/cms/tests/page.py b/cms/tests/page.py index 94eecfebab7..b53bc3fa112 100644 --- a/cms/tests/page.py +++ b/cms/tests/page.py @@ -397,7 +397,7 @@ def test_23_get_page_from_request_with_page_preview(self): class NoAdminPageTests(CMSTestCase): - urls = 'testapp.noadmin_urls' + urls = 'cms.test.project.noadmin_urls' def setUp(self): admin = 'django.contrib.admin' diff --git a/cms/tests/placeholder.py b/cms/tests/placeholder.py index 25b11d56d2a..7942c0f5e31 100644 --- a/cms/tests/placeholder.py +++ b/cms/tests/placeholder.py @@ -10,8 +10,8 @@ from django.core.urlresolvers import reverse from django.template import TemplateSyntaxError, Template from django.template.context import Context, RequestContext -from testapp.fakemlng.models import Translations -from testapp.placeholderapp.models import Example1, Example2, Example3, Example4, \ +from cms.test.apps.fakemlng.models import Translations +from cms.test.apps.placeholderapp.models import Example1, Example2, Example3, Example4, \ Example5 @@ -231,4 +231,4 @@ def test_04_excercise_get_attached_model(self): def test_05_excercise_get_attached_field_name(self): ph = Placeholder.objects.create(slot='test', default_width=300) result = ph._get_attached_field_name() - self.assertEqual(result, None) # Simple PH - no field name \ No newline at end of file + self.assertEqual(result, None) # Simple PH - no field name diff --git a/cms/tests/plugins.py b/cms/tests/plugins.py index 06009fb3442..b853c595b83 100644 --- a/cms/tests/plugins.py +++ b/cms/tests/plugins.py @@ -18,8 +18,8 @@ from django.core.files.uploadedfile import SimpleUploadedFile from django.forms.widgets import Media from django.template import RequestContext -from testapp.pluginapp.models import Article, Section -from testapp.pluginapp.plugins.manytomany_rel.models import ArticlePluginModel +from cms.test.apps.pluginapp.models import Article, Section +from cms.test.apps.pluginapp.plugins.manytomany_rel.models import ArticlePluginModel import os diff --git a/cms/tests/settings.py b/cms/tests/settings.py index ac6862211a3..c46f63a90d0 100644 --- a/cms/tests/settings.py +++ b/cms/tests/settings.py @@ -11,4 +11,4 @@ def test_01_dbgettext_deprecation(self): self.assertWarns(DeprecationWarning, "CMS_DBGETTEXT_SLUGS (and general support for django-dbggettext " "for CMS contents) will be deprecated in django CMS 2.2.", - post_patch) \ No newline at end of file + post_patch) diff --git a/cms/tests/urlutils.py b/cms/tests/urlutils.py index b3a8b42faeb..0d2d4db4393 100644 --- a/cms/tests/urlutils.py +++ b/cms/tests/urlutils.py @@ -29,4 +29,4 @@ def test_03_is_media_url(self): request = self.get_request('/media/') self.assertTrue(urlutils.is_media_request(request)) request = self.get_request('/no-media/') - self.assertFalse(urlutils.is_media_request(request)) \ No newline at end of file + self.assertFalse(urlutils.is_media_request(request)) diff --git a/cms/tests/views.py b/cms/tests/views.py index c947a7478b4..875fbb9e06a 100644 --- a/cms/tests/views.py +++ b/cms/tests/views.py @@ -10,11 +10,11 @@ APP_NAME = 'SampleApp' -APP_MODULE = "testapp.sampleapp.cms_app" +APP_MODULE = "cms.test.apps.sampleapp.cms_app" class ViewTests(SettingsOverrideTestCase): - urls = 'testapp.urls_for_apphook_tests' + urls = 'cms.test.project.urls_for_apphook_tests' settings_overrides = {'CMS_MODERATOR': False} def setUp(self): diff --git a/setup.py b/setup.py index 2997cc109c8..899446483b0 100644 --- a/setup.py +++ b/setup.py @@ -78,5 +78,6 @@ 'templates/menu/*.html', ], }, + test_suite = "cms.test.run_tests.run_tests", zip_safe = False ) From 9fccebe68e3130604de7efc0be0b58d89c2f387b Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Wed, 2 Feb 2011 19:06:04 +0100 Subject: [PATCH 021/689] added tox.ini --- tox.ini | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 tox.ini diff --git a/tox.ini b/tox.ini new file mode 100644 index 00000000000..e7b7a1fe9e3 --- /dev/null +++ b/tox.ini @@ -0,0 +1,77 @@ +[tox] +distribute = False +sitepackages = True +envlist = + py26-1.2.X + +[testenv] +commands = + python setup.py test +deps = + coverage==3.4 + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx + +[testenv:py25-1.1.X] +basepython = python2.5 +deps = + django==1.1.3 + +[testenv:py26-1.1.X] +basepython = python2.6 +deps = + django==1.1.3 + +[testenv:py27-1.1.X] +basepython = python2.7 +deps = + django==1.1.3 + +[testenv:py25-1.2.X] +basepython = python2.5 +deps = + django==1.2.4 + +[testenv:py26-1.2.X] +basepython = python2.6 +deps = + django==1.2.4 + +[testenv:py27-1.2.X] +basepython = python2.7 +deps = + django==1.2.4 + + +[testenv:py25-1.3.X] +basepython = python2.5 +deps = + http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz + +[testenv:py26-1.3.X] +basepython = python2.6 +deps = + http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz + +[testenv:py27-1.3.X] +basepython = python2.7 +deps = + http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz + +[testenv:py25-trunk] +basepython = python2.5 +deps = + -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django + +[testenv:py26-trunk] +basepython = python2.6 +deps = + -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django + +[testenv:py27-trunk] +basepython = python2.7 +deps = + -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django \ No newline at end of file From 486e0c1c7f60cd8d3c537fab0a4e330c18327305 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Wed, 2 Feb 2011 20:24:12 +0100 Subject: [PATCH 022/689] added __init__.py file --- cms/test/apps/__init__.py | 0 tox.ini | 72 +++++++++++++++++++++++++++++++++++---- 2 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 cms/test/apps/__init__.py diff --git a/cms/test/apps/__init__.py b/cms/test/apps/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tox.ini b/tox.ini index e7b7a1fe9e3..d84571effe5 100644 --- a/tox.ini +++ b/tox.ini @@ -1,77 +1,137 @@ [tox] distribute = False -sitepackages = True envlist = py26-1.2.X [testenv] commands = python setup.py test -deps = +sitepackages = True + +[testenv:py25-1.1.X] +basepython = python2.5 +deps = coverage==3.4 unittest-xml-reporting==1.0.3 django-reversion django-classy-tags South sphinx - -[testenv:py25-1.1.X] -basepython = python2.5 -deps = django==1.1.3 [testenv:py26-1.1.X] basepython = python2.6 deps = + coverage==3.4 + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx django==1.1.3 [testenv:py27-1.1.X] basepython = python2.7 deps = + coverage==3.4 + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx django==1.1.3 [testenv:py25-1.2.X] basepython = python2.5 deps = + coverage==3.4 + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx django==1.2.4 [testenv:py26-1.2.X] basepython = python2.6 deps = + coverage==3.4 + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx django==1.2.4 [testenv:py27-1.2.X] basepython = python2.7 deps = + %(testenv:deps) django==1.2.4 [testenv:py25-1.3.X] basepython = python2.5 deps = + coverage==3.4 + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz [testenv:py26-1.3.X] basepython = python2.6 deps = + coverage==3.4 + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz [testenv:py27-1.3.X] basepython = python2.7 deps = + coverage==3.4 + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz [testenv:py25-trunk] basepython = python2.5 deps = + coverage==3.4 + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django [testenv:py26-trunk] basepython = python2.6 deps = + coverage==3.4 + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django [testenv:py27-trunk] basepython = python2.7 deps = + coverage==3.4 + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django \ No newline at end of file From 0e44355f825fcc06d7c780995eb2cd8412029a44 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Wed, 2 Feb 2011 23:19:18 +0100 Subject: [PATCH 023/689] all tests pass --- cms/tests/plugins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cms/tests/plugins.py b/cms/tests/plugins.py index b853c595b83..c574ffc59fb 100644 --- a/cms/tests/plugins.py +++ b/cms/tests/plugins.py @@ -370,7 +370,7 @@ def test_10_fileplugin_icon_uppercase(self): ) plugin.file.save("UPPERCASE.JPG", SimpleUploadedFile("UPPERCASE.jpg", "content"), False) plugin.insert_at(None, position='last-child', save=True) - + print plugin.get_icon_url() self.assertNotEquals(plugin.get_icon_url().find('jpg'), -1) response = self.client.get(plugin.get_icon_url(), follow=True) self.assertEqual(response.status_code, 200) From 2739b5080249e4c4cf390e52f163918accbd0c0e Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Wed, 2 Feb 2011 23:45:25 +0100 Subject: [PATCH 024/689] added new runtests.sh --- runtests.sh | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 runtests.sh diff --git a/runtests.sh b/runtests.sh new file mode 100644 index 00000000000..bf910dcd8dd --- /dev/null +++ b/runtests.sh @@ -0,0 +1,85 @@ +#!/bin/bash + +args=("$@") +num_args=${#args[@]} +index=0 + +quicktest=false +disable_coverage=true + +while [ "$index" -lt "$num_args" ] +do +case "${args[$index]}" in + "--failfast") + failfast="--failfast" + ;; + + "--with-coverage") + disable_coverage=false + ;; + + "--toxenv") + let "index = $index + 1" + toxenv="${args[$index]}" + ;; + + "--quicktest") + quicktest=true + ;; + + "--help") + echo "" + echo "usage:" + echo " runtests.sh" + echo " or runtests.sh [testcase]" + echo " or runtests.sh [flags] [testcase]" + echo "" + echo "flags:" + echo " --toxenv [tox-env]" + echo " eg. runtests.sh --toxenv py26-1.2.X,py26-trunk" + echo " --quicktest - use already built tox env, for running a simple test quickly" + echo " --failfast - abort at first failing test" + echo " --with-coverage - enables coverage" + exit 1 + ;; + + *) + suite="${args[$index]}" + esac +let "index = $index + 1" +done + +echo "using python at: $python" + +if [ ! "$toxenv" ]; then + toxenv='ALL' +fi + +if [ "$failfast" ]; then + echo "--failfast supplied, not using xmlrunner." +fi + +if [ ! "$suite" ]; then + suite="cms" + echo "Running complete cms testsuite." +else + echo "Running cms test $suite." +fi + +if [ ! "$suite" ]; then + suite="cms" + echo "Running complete cms testsuite." +else + echo "Running cms test $suite." +fi + +if [ $quicktest == true ]; then + .tox/$toxenv/bin/python cms/test/run_tests.py --direct $failfast $suite + retcode=$? +else + tox -e $toxenv + retcode=$? +fi + +echo "done" +exit $retcode \ No newline at end of file From db6a7e833387cbe58aa9c14b3cb09cc61ca557f5 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 3 Feb 2011 00:49:29 +0100 Subject: [PATCH 025/689] runs coverage now/ next.. junit --- cms/tests/plugins.py | 1 - runtests.sh | 24 ++++++++++++------------ tox.ini | 15 +++------------ 3 files changed, 15 insertions(+), 25 deletions(-) diff --git a/cms/tests/plugins.py b/cms/tests/plugins.py index c574ffc59fb..99f6bb94828 100644 --- a/cms/tests/plugins.py +++ b/cms/tests/plugins.py @@ -370,7 +370,6 @@ def test_10_fileplugin_icon_uppercase(self): ) plugin.file.save("UPPERCASE.JPG", SimpleUploadedFile("UPPERCASE.jpg", "content"), False) plugin.insert_at(None, position='last-child', save=True) - print plugin.get_icon_url() self.assertNotEquals(plugin.get_icon_url().find('jpg'), -1) response = self.client.get(plugin.get_icon_url(), follow=True) self.assertEqual(response.status_code, 200) diff --git a/runtests.sh b/runtests.sh index bf910dcd8dd..f81a3590457 100644 --- a/runtests.sh +++ b/runtests.sh @@ -37,6 +37,11 @@ case "${args[$index]}" in echo "flags:" echo " --toxenv [tox-env]" echo " eg. runtests.sh --toxenv py26-1.2.X,py26-trunk" + echo " possible envs:" + echo " py25-1.1.X, py25-1.2.X, py25-1.3.X, py25-trunk" + echo " py26-1.1.X, py26-1.2.X, py26-1.3.X, py26-trunk" + echo " py27-1.1.X, py27-1.2.X, py27-1.3.X" + echo "" echo " --quicktest - use already built tox env, for running a simple test quickly" echo " --failfast - abort at first failing test" echo " --with-coverage - enables coverage" @@ -60,26 +65,21 @@ if [ "$failfast" ]; then fi if [ ! "$suite" ]; then - suite="cms" - echo "Running complete cms testsuite." -else - echo "Running cms test $suite." -fi - -if [ ! "$suite" ]; then - suite="cms" echo "Running complete cms testsuite." else echo "Running cms test $suite." fi if [ $quicktest == true ]; then - .tox/$toxenv/bin/python cms/test/run_tests.py --direct $failfast $suite - retcode=$? + IFS="," + tenvs=( $toxenv ) + for tenv in ${tenvs[@]}; do + read -p "Hit any key to run tests in tox env $tenv" + .tox/$tenv/bin/python cms/test/run_tests.py --direct $failfast $suite + retcode=$? + done else tox -e $toxenv retcode=$? fi - -echo "done" exit $retcode \ No newline at end of file diff --git a/tox.ini b/tox.ini index d84571effe5..20fc7ab6652 100644 --- a/tox.ini +++ b/tox.ini @@ -5,7 +5,9 @@ envlist = [testenv] commands = - python setup.py test + coverage run --rcfile=.coveragerc setup.py test + coverage xml + coverage html sitepackages = True [testenv:py25-1.1.X] @@ -116,17 +118,6 @@ deps = [testenv:py26-trunk] basepython = python2.6 -deps = - coverage==3.4 - unittest-xml-reporting==1.0.3 - django-reversion - django-classy-tags - South - sphinx - -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django - -[testenv:py27-trunk] -basepython = python2.7 deps = coverage==3.4 unittest-xml-reporting==1.0.3 From ed80ef97d9141e4392ad4ae40fc4df05d0c3a4dd Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 3 Feb 2011 01:03:59 +0100 Subject: [PATCH 026/689] make settings easier to set --- cms/test/run_tests.py | 243 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 243 insertions(+) create mode 100644 cms/test/run_tests.py diff --git a/cms/test/run_tests.py b/cms/test/run_tests.py new file mode 100644 index 00000000000..0439df12c97 --- /dev/null +++ b/cms/test/run_tests.py @@ -0,0 +1,243 @@ +import sys +import os + +def configure_settings(*test_args): + from cms.test import project + import cms + + PROJECT_DIR = os.path.abspath(os.path.dirname(project.__file__)) + + MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media') + CMS_MEDIA_ROOT = os.path.join(os.path.abspath(os.path.dirname(cms.__file__)), 'media', 'cms') + + FIXTURE_DIRS = [os.path.join(PROJECT_DIR, 'fixtures')] + + TEMPLATE_DIRS = ( + os.path.join(PROJECT_DIR, 'templates'), + ) + + ADMINS = tuple() + DEBUG = True + + gettext = lambda x: x + + from django.conf import settings + + settings.configure( + PROJECT_DIR = PROJECT_DIR, + DEBUG = DEBUG, + TEMPLATE_DEBUG = DEBUG, + + ADMINS = ADMINS, + + CACHE_BACKEND = 'locmem:///', + + MANAGERS = ADMINS, + + DATABASE_ENGINE = 'sqlite3', + DATABASE_NAME = 'cms.sqlite', + + TEST_DATABASE_CHARSET = "utf8", + TEST_DATABASE_COLLATION = "utf8_general_ci", + + DATABASE_SUPPORTS_TRANSACTIONS = True, + + TIME_ZONE = 'America/Chicago', + + SITE_ID = 1, + + USE_I18N = True, + + MEDIA_ROOT = MEDIA_ROOT, + + CMS_MEDIA_ROOT = CMS_MEDIA_ROOT, + + MEDIA_URL = '/media/', + + ADMIN_MEDIA_PREFIX = '/media/admin/', + + EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend', + + FIXTURE_DIRS = FIXTURE_DIRS, + + SECRET_KEY = '*xq7m@)*f2awoj!spa0(jibsrz9%c0d=e(g)v*!17y(vx0ue_3', + + TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', + 'django.template.loaders.eggs.Loader', + ), + + TEMPLATE_CONTEXT_PROCESSORS = ( + "django.core.context_processors.auth", + "django.core.context_processors.i18n", + "django.core.context_processors.debug", + "django.core.context_processors.request", + "django.core.context_processors.media", + 'django.core.context_processors.csrf', + "cms.context_processors.media", + ), + + INTERNAL_IPS = ('127.0.0.1',), + + MIDDLEWARE_CLASSES = ( + 'django.contrib.sessions.middleware.SessionMiddleware', + 'cms.middleware.multilingual.MultilingualURLMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.doc.XViewMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'cms.middleware.media.PlaceholderMediaMiddleware', + 'cms.middleware.user.CurrentUserMiddleware', + 'cms.middleware.page.CurrentPageMiddleware', + 'cms.middleware.toolbar.ToolbarMiddleware', + + ), + + ROOT_URLCONF = 'cms.test.project.urls', + + TEMPLATE_DIRS = TEMPLATE_DIRS, + + INSTALLED_APPS = ( + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.admin', + 'django.contrib.sites', + 'cms', + 'publisher', + 'menus', + 'cms.plugins.text', + 'cms.plugins.picture', + 'cms.plugins.file', + 'cms.plugins.flash', + 'cms.plugins.link', + 'cms.plugins.snippet', + 'cms.plugins.googlemap', + 'cms.plugins.teaser', + 'cms.plugins.video', + 'cms.plugins.twitter', + 'cms.plugins.inherit', + 'mptt', + 'cms.test.apps.sampleapp', + 'cms.test.apps.placeholderapp', + 'cms.test.apps.pluginapp', + 'cms.test.apps.pluginapp.plugins.manytomany_rel', + 'cms.test.apps.fakemlng', + 'reversion', + ), + + gettext = lambda s: s, + + LANGUAGE_CODE = "en", + + LANGUAGES = ( + ('en', gettext('English')), + ('fr', gettext('French')), + ('de', gettext('German')), + ('pt-BR', gettext("Brazil")), + ('nl', gettext("Dutch")), + ), + + CMS_LANGUAGE_CONF = { + 'de':['fr', 'en'], + 'en':['fr', 'de'], + }, + + CMS_SITE_LANGUAGES = { + 1:['en','de','fr','pt-BR'], + 2:['de','fr'], + 3:['nl'], + }, + + APPEND_SLASH = True, + + CMS_TEMPLATES = ( + ('col_two.html', gettext('two columns')), + ('col_three.html', gettext('three columns')), + ('nav_playground.html', gettext('navigation examples')), + ), + + CMS_PLACEHOLDER_CONF = { + 'col_sidebar': { + 'plugins': ('FilePlugin', 'FlashPlugin', 'LinkPlugin', 'PicturePlugin', + 'TextPlugin', 'SnippetPlugin'), + 'name': gettext("sidebar column"), + }, + + 'col_left': { + 'plugins': ('FilePlugin', 'FlashPlugin', 'LinkPlugin', 'PicturePlugin', + 'TextPlugin', 'SnippetPlugin','GoogleMapPlugin',), + 'name': gettext("left column"), + }, + + 'col_right': { + 'plugins': ('FilePlugin', 'FlashPlugin', 'LinkPlugin', 'PicturePlugin', + 'TextPlugin', 'SnippetPlugin','GoogleMapPlugin',), + 'name': gettext("right column"), + }, + 'extra_context': { + "plugins": ('TextPlugin',), + "extra_context": {"width": 250}, + "name": "extra context", + } + }, + + CMS_SOFTROOT = True, + CMS_MODERATOR = True, + CMS_PERMISSION = True, + CMS_REDIRECTS = True, + CMS_SEO_FIELDS = True, + CMS_FLAT_URLS = False, + CMS_MENU_TITLE_OVERWRITE = True, + CMS_HIDE_UNTRANSLATED = False, + CMS_URL_OVERWRITE = True, + + CMS_PLUGIN_PROCESSORS = tuple(), + + CMS_PLUGIN_CONTEXT_PROCESSORS = tuple(), + + SOUTH_TESTS_MIGRATE = False, + + CMS_NAVIGATION_EXTENDERS = ( + ('cms.test.project.sampleapp.menu_extender.get_nodes', 'SampleApp Menu'), + ), + + TEST_RUNNER = 'cms.test.project.testrunner.CMSTestSuiteRunner' + ) + + from cms.conf import patch_settings + patch_settings() + return settings + +def run_tests(*test_args): + + test_args = list(test_args) + if '--direct' in test_args: + test_args.remove('--direct') + sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "..")) + + settings = configure_settings(*test_args) + + from django.test.utils import get_runner + + failfast = False + + test_labels = [] + + if test_args: + if '--failfast' in test_args: + test_args.remove('--failfast') + failfast = True + + for label in test_args: + test_labels.append('cms.%s' % label) + + if not test_labels: + test_labels.append('cms') + + failures = get_runner(settings)().run_tests(test_labels, verbosity=1, interactive=True, failfast=failfast) + sys.exit(failures) + +if __name__ == '__main__': + run_tests(*sys.argv[1:]) From a9803ef4cb82f667f747e76f842a217173e7d6f8 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 3 Feb 2011 02:00:44 +0100 Subject: [PATCH 027/689] now generates junit reports --- cms/test/project/testrunner.py | 5 ++++- cms/test/run_tests.py | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/cms/test/project/testrunner.py b/cms/test/project/testrunner.py index 6f0096e0657..4c01800e859 100644 --- a/cms/test/project/testrunner.py +++ b/cms/test/project/testrunner.py @@ -1,3 +1,4 @@ +from django.conf import settings from django.test.simple import DjangoTestSuiteRunner try: @@ -10,6 +11,8 @@ class CMSTestSuiteRunner(DjangoTestSuiteRunner): def run_suite(self, suite, **kwargs): if self.use_runner and not self.failfast: - return self.use_runner().run(suite) + return self.use_runner( + output=getattr(settings, 'JUNIT_OUTPUT_DIR', '.') + ).run(suite) else: return super(CMSTestSuiteRunner, self).run_suite(suite, **kwargs) diff --git a/cms/test/run_tests.py b/cms/test/run_tests.py index 0439df12c97..01376223916 100644 --- a/cms/test/run_tests.py +++ b/cms/test/run_tests.py @@ -15,6 +15,8 @@ def configure_settings(*test_args): TEMPLATE_DIRS = ( os.path.join(PROJECT_DIR, 'templates'), ) + + JUNIT_OUTPUT_DIR = os.path.join(os.path.abspath(os.path.dirname(cms.__file__)), '..') ADMINS = tuple() DEBUG = True @@ -203,7 +205,8 @@ def configure_settings(*test_args): ('cms.test.project.sampleapp.menu_extender.get_nodes', 'SampleApp Menu'), ), - TEST_RUNNER = 'cms.test.project.testrunner.CMSTestSuiteRunner' + TEST_RUNNER = 'cms.test.project.testrunner.CMSTestSuiteRunner', + JUNIT_OUTPUT_DIR = JUNIT_OUTPUT_DIR ) from cms.conf import patch_settings @@ -236,7 +239,7 @@ def run_tests(*test_args): if not test_labels: test_labels.append('cms') - failures = get_runner(settings)().run_tests(test_labels, verbosity=1, interactive=True, failfast=failfast) + failures = get_runner(settings)(verbosity=1, interactive=True, failfast=failfast).run_tests(test_labels) sys.exit(failures) if __name__ == '__main__': From 0c778ae5742645aa417256e127f61de7437a9ccc Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 3 Feb 2011 02:05:56 +0100 Subject: [PATCH 028/689] validate input to runtests.sh --- runtests.sh | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/runtests.sh b/runtests.sh index f81a3590457..a3e9bda1fdd 100644 --- a/runtests.sh +++ b/runtests.sh @@ -13,10 +13,6 @@ case "${args[$index]}" in "--failfast") failfast="--failfast" ;; - - "--with-coverage") - disable_coverage=false - ;; "--toxenv") let "index = $index + 1" @@ -54,8 +50,6 @@ case "${args[$index]}" in let "index = $index + 1" done -echo "using python at: $python" - if [ ! "$toxenv" ]; then toxenv='ALL' fi @@ -67,6 +61,10 @@ fi if [ ! "$suite" ]; then echo "Running complete cms testsuite." else + if [ $quicktest == false ]; then + echo "Can only run specific suite with --quicktesr" + exit 1 + fi echo "Running cms test $suite." fi From d97a9e01c95e785d28408d8f0116c6f5a1b045df Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 3 Feb 2011 03:57:41 +0100 Subject: [PATCH 029/689] all works as should, validate more user input --- cms/test/run_tests.py | 35 +++++++++++++++++++++-------------- runtests.sh | 9 +++++++-- tox.ini | 5 ++--- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/cms/test/run_tests.py b/cms/test/run_tests.py index 01376223916..b505ed975c2 100644 --- a/cms/test/run_tests.py +++ b/cms/test/run_tests.py @@ -1,7 +1,7 @@ import sys import os -def configure_settings(*test_args): +def configure_settings(env_name): from cms.test import project import cms @@ -16,7 +16,7 @@ def configure_settings(*test_args): os.path.join(PROJECT_DIR, 'templates'), ) - JUNIT_OUTPUT_DIR = os.path.join(os.path.abspath(os.path.dirname(cms.__file__)), '..') + JUNIT_OUTPUT_DIR = os.path.join(os.path.abspath(os.path.dirname(cms.__file__)), '..', 'junit-%s' % env_name) ADMINS = tuple() DEBUG = True @@ -220,25 +220,32 @@ def run_tests(*test_args): test_args.remove('--direct') sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "..")) - settings = configure_settings(*test_args) - - from django.test.utils import get_runner - failfast = False test_labels = [] - if test_args: - if '--failfast' in test_args: - test_args.remove('--failfast') - failfast = True - - for label in test_args: - test_labels.append('cms.%s' % label) + test_args_enum = dict([ (val, idx) for idx, val in enumerate(test_args)]) + + env_name = '' + if '--env-name' in test_args: + env_name = test_args[test_args_enum['--env-name']+1] + test_args.remove('--env-name') + test_args.remove(env_name) + + if '--failfast' in test_args: + test_args.remove('--failfast') + failfast = True + + for label in test_args: + test_labels.append('cms.%s' % label) if not test_labels: test_labels.append('cms') - + + settings = configure_settings(env_name) + + from django.test.utils import get_runner + failures = get_runner(settings)(verbosity=1, interactive=True, failfast=failfast).run_tests(test_labels) sys.exit(failures) diff --git a/runtests.sh b/runtests.sh index a3e9bda1fdd..748618e016e 100644 --- a/runtests.sh +++ b/runtests.sh @@ -62,7 +62,7 @@ if [ ! "$suite" ]; then echo "Running complete cms testsuite." else if [ $quicktest == false ]; then - echo "Can only run specific suite with --quicktesr" + echo "Can only run specific suite with --quicktest" exit 1 fi echo "Running cms test $suite." @@ -72,8 +72,13 @@ if [ $quicktest == true ]; then IFS="," tenvs=( $toxenv ) for tenv in ${tenvs[@]}; do + if [ ! -d ".tox/$tenv" ]; then + echo ".tox/$tenv does not exist, run without --quicktest first" + exit 1 + fi read -p "Hit any key to run tests in tox env $tenv" - .tox/$tenv/bin/python cms/test/run_tests.py --direct $failfast $suite + # running tests without invoking tox to save time + .tox/$tenv/bin/python cms/test/run_tests.py --direct $failfast $suite retcode=$? done else diff --git a/tox.ini b/tox.ini index 20fc7ab6652..e2b7869828f 100644 --- a/tox.ini +++ b/tox.ini @@ -5,9 +5,8 @@ envlist = [testenv] commands = - coverage run --rcfile=.coveragerc setup.py test - coverage xml - coverage html + coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow + coverage xml -o coverage-{envname}.xml sitepackages = True [testenv:py25-1.1.X] From cc475dc3995096d3aae43a60689a2e3a19ea5aff Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 3 Feb 2011 03:59:51 +0100 Subject: [PATCH 030/689] remove unused settings.py --- cms/test/project/settings.py | 194 ----------------------------------- 1 file changed, 194 deletions(-) delete mode 100644 cms/test/project/settings.py diff --git a/cms/test/project/settings.py b/cms/test/project/settings.py deleted file mode 100644 index 33abfb3135a..00000000000 --- a/cms/test/project/settings.py +++ /dev/null @@ -1,194 +0,0 @@ -# Django settings for cms project. -import os -PROJECT_DIR = os.path.abspath(os.path.dirname(__file__)) - -DEBUG = True -TEMPLATE_DEBUG = DEBUG - -ADMINS = ( -) - -CACHE_BACKEND = 'locmem:///' - -MANAGERS = ADMINS - -DATABASE_ENGINE = 'sqlite3' -DATABASE_NAME = 'cms.sqlite' - -TEST_DATABASE_CHARSET = "utf8" -TEST_DATABASE_COLLATION = "utf8_general_ci" - -DATABASE_SUPPORTS_TRANSACTIONS = True - -TIME_ZONE = 'America/Chicago' - -SITE_ID = 1 - -USE_I18N = True - -MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media/') - -CMS_MEDIA_ROOT = os.path.join(PROJECT_DIR, '../../cms/media/cms/') -MEDIA_URL = '/media/' - -ADMIN_MEDIA_PREFIX = '/media/admin/' - -EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend' - -FIXTURE_DIRS = [os.path.join(PROJECT_DIR, 'fixtures')] - -SECRET_KEY = '*xq7m@)*f2awoj!spa0(jibsrz9%c0d=e(g)v*!17y(vx0ue_3' - -TEMPLATE_LOADERS = ( - 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', - 'django.template.loaders.eggs.Loader', -) - -TEMPLATE_CONTEXT_PROCESSORS = ( - "django.core.context_processors.auth", - "django.core.context_processors.i18n", - "django.core.context_processors.debug", - "django.core.context_processors.request", - "django.core.context_processors.media", - 'django.core.context_processors.csrf', - "cms.context_processors.media", -) - -INTERNAL_IPS = ('127.0.0.1',) - -MIDDLEWARE_CLASSES = ( - 'django.contrib.sessions.middleware.SessionMiddleware', - 'cms.middleware.multilingual.MultilingualURLMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.doc.XViewMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'cms.middleware.media.PlaceholderMediaMiddleware', - 'cms.middleware.user.CurrentUserMiddleware', - 'cms.middleware.page.CurrentPageMiddleware', - 'cms.middleware.toolbar.ToolbarMiddleware', - -) - -ROOT_URLCONF = 'cms.test.project.urls' - - -TEMPLATE_DIRS = ( - os.path.join(PROJECT_DIR, 'templates'), -) - -INSTALLED_APPS = ( - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.admin', - 'django.contrib.sites', - 'cms', - 'publisher', - 'menus', - 'cms.plugins.text', - 'cms.plugins.picture', - 'cms.plugins.file', - 'cms.plugins.flash', - 'cms.plugins.link', - 'cms.plugins.snippet', - 'cms.plugins.googlemap', - 'cms.plugins.teaser', - 'cms.plugins.video', - 'cms.plugins.twitter', - 'cms.plugins.inherit', - 'mptt', - 'cms.test.project.sampleapp', - 'cms.test.project.placeholderapp', - 'cms.test.project.pluginapp', - 'cms.test.project.pluginapp.plugins.manytomany_rel', - 'cms.test.project.fakemlng', - 'south', - 'reversion', -) - -gettext = lambda s: s - -LANGUAGE_CODE = "en" - -LANGUAGES = ( - ('en', gettext('English')), - ('fr', gettext('French')), - ('de', gettext('German')), - ('pt-BR', gettext("Brazil")), - ('nl', gettext("Dutch")), -) - -CMS_LANGUAGE_CONF = { - 'de':['fr', 'en'], - 'en':['fr', 'de'], -} - -CMS_SITE_LANGUAGES = { - 1:['en','de','fr','pt-BR'], - 2:['de','fr'], - 3:['nl'], -} - -APPEND_SLASH = True - -CMS_TEMPLATES = ( - ('col_two.html', gettext('two columns')), - ('col_three.html', gettext('three columns')), - ('nav_playground.html', gettext('navigation examples')), -) - - - -CMS_PLACEHOLDER_CONF = { - 'col_sidebar': { - 'plugins': ('FilePlugin', 'FlashPlugin', 'LinkPlugin', 'PicturePlugin', - 'TextPlugin', 'SnippetPlugin'), - 'name': gettext("sidebar column") - }, - - 'col_left': { - 'plugins': ('FilePlugin', 'FlashPlugin', 'LinkPlugin', 'PicturePlugin', - 'TextPlugin', 'SnippetPlugin','GoogleMapPlugin',), - 'name': gettext("left column") - }, - - 'col_right': { - 'plugins': ('FilePlugin', 'FlashPlugin', 'LinkPlugin', 'PicturePlugin', - 'TextPlugin', 'SnippetPlugin','GoogleMapPlugin',), - 'name': gettext("right column") - }, - 'extra_context': { - "plugins": ('TextPlugin',), - "extra_context": {"width": 250}, - "name": "extra context" - }, -} - -CMS_SOFTROOT = True -CMS_MODERATOR = True -CMS_PERMISSION = True -CMS_REDIRECTS = True -CMS_SEO_FIELDS = True -CMS_FLAT_URLS = False -CMS_MENU_TITLE_OVERWRITE = True -CMS_HIDE_UNTRANSLATED = False -CMS_URL_OVERWRITE = True - -CMS_PLUGIN_PROCESSORS = tuple() - -CMS_PLUGIN_CONTEXT_PROCESSORS = tuple() - -SOUTH_TESTS_MIGRATE = False - -CMS_NAVIGATION_EXTENDERS = ( - ('cms.test.project.sampleapp.menu_extender.get_nodes', 'SampleApp Menu'), -) - -try: - from local_settings import * -except ImportError: - pass - -TEST_RUNNER = 'cms.test.project.testrunner.CMSTestSuiteRunner' From 13dcaecd60b11c10f25e6cbeb4c5c05411902000 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 3 Feb 2011 12:25:25 +0100 Subject: [PATCH 031/689] no 1.1.X env --- tox.ini | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/tox.ini b/tox.ini index e2b7869828f..fe04636f9a8 100644 --- a/tox.ini +++ b/tox.ini @@ -8,39 +8,6 @@ commands = coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow coverage xml -o coverage-{envname}.xml sitepackages = True - -[testenv:py25-1.1.X] -basepython = python2.5 -deps = - coverage==3.4 - unittest-xml-reporting==1.0.3 - django-reversion - django-classy-tags - South - sphinx - django==1.1.3 - -[testenv:py26-1.1.X] -basepython = python2.6 -deps = - coverage==3.4 - unittest-xml-reporting==1.0.3 - django-reversion - django-classy-tags - South - sphinx - django==1.1.3 - -[testenv:py27-1.1.X] -basepython = python2.7 -deps = - coverage==3.4 - unittest-xml-reporting==1.0.3 - django-reversion - django-classy-tags - South - sphinx - django==1.1.3 [testenv:py25-1.2.X] basepython = python2.5 From 61e0f8e41ea082dffa304f8668b3e978c80a5817 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 3 Feb 2011 13:34:54 +0100 Subject: [PATCH 032/689] make tests run on ci instantly --- runtests.sh | 32 ++++++++++++++++++++++++++------ tox.ini | 12 +++++++++--- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/runtests.sh b/runtests.sh index 748618e016e..b6b9eceea7e 100644 --- a/runtests.sh +++ b/runtests.sh @@ -34,24 +34,34 @@ case "${args[$index]}" in echo " --toxenv [tox-env]" echo " eg. runtests.sh --toxenv py26-1.2.X,py26-trunk" echo " possible envs:" - echo " py25-1.1.X, py25-1.2.X, py25-1.3.X, py25-trunk" - echo " py26-1.1.X, py26-1.2.X, py26-1.3.X, py26-trunk" - echo " py27-1.1.X, py27-1.2.X, py27-1.3.X" + echo " py25-1.2.X, py25-1.3.X, py25-trunk" + echo " py26-1.2.X, py26-1.3.X, py26-trunk" + echo " py27-1.2.X, py27-1.3.X, ALL" echo "" echo " --quicktest - use already built tox env, for running a simple test quickly" echo " --failfast - abort at first failing test" echo " --with-coverage - enables coverage" exit 1 ;; - + + "--rebuild-env") + # just to make ci run instantly + ;; + + "--with-coverage") + # just to make ci run instantly + ;; + *) suite="${args[$index]}" esac let "index = $index + 1" done + + if [ ! "$toxenv" ]; then - toxenv='ALL' + toxenv='py26-1.2.X' fi if [ "$failfast" ]; then @@ -68,7 +78,17 @@ else echo "Running cms test $suite." fi +if [ ! -f "toxinstall/bin/tox" ]; then + echo "Installing tox" + virtualenv toxinstall + toxinstall/bin/pip install -U tox +fi + if [ $quicktest == true ]; then + if [ "$toxenv" == "ALL"]; then + echo "Cannot use ALL with --quicktest" + exit 1 + fi IFS="," tenvs=( $toxenv ) for tenv in ${tenvs[@]}; do @@ -82,7 +102,7 @@ if [ $quicktest == true ]; then retcode=$? done else - tox -e $toxenv + toxinstall/bin/tox -e $toxenv retcode=$? fi exit $retcode \ No newline at end of file diff --git a/tox.ini b/tox.ini index fe04636f9a8..fb7a099635a 100644 --- a/tox.ini +++ b/tox.ini @@ -72,6 +72,10 @@ deps = http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz [testenv:py25-trunk] +commands = + pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django + coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow + coverage xml -o coverage-{envname}.xml basepython = python2.5 deps = coverage==3.4 @@ -80,9 +84,12 @@ deps = django-classy-tags South sphinx - -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django [testenv:py26-trunk] +commands = + pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django + coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow + coverage xml -o coverage-{envname}.xml basepython = python2.6 deps = coverage==3.4 @@ -90,5 +97,4 @@ deps = django-reversion django-classy-tags South - sphinx - -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django \ No newline at end of file + sphinx \ No newline at end of file From 8fc4fac0a5099a3d0d0dfe787199863aebc9c959 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 3 Feb 2011 13:43:40 +0100 Subject: [PATCH 033/689] execute permission --- runtests.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 runtests.sh diff --git a/runtests.sh b/runtests.sh old mode 100644 new mode 100755 From dbb1e238d1abd453d0f4adbf4d3a9f6fab091316 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 3 Feb 2011 13:50:21 +0100 Subject: [PATCH 034/689] fix coverage --- tox.ini | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/tox.ini b/tox.ini index fb7a099635a..b912df293ce 100644 --- a/tox.ini +++ b/tox.ini @@ -5,6 +5,7 @@ envlist = [testenv] commands = + pip install -U coverage==3.4 coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow coverage xml -o coverage-{envname}.xml sitepackages = True @@ -12,7 +13,6 @@ sitepackages = True [testenv:py25-1.2.X] basepython = python2.5 deps = - coverage==3.4 unittest-xml-reporting==1.0.3 django-reversion django-classy-tags @@ -23,7 +23,6 @@ deps = [testenv:py26-1.2.X] basepython = python2.6 deps = - coverage==3.4 unittest-xml-reporting==1.0.3 django-reversion django-classy-tags @@ -34,14 +33,12 @@ deps = [testenv:py27-1.2.X] basepython = python2.7 deps = - %(testenv:deps) django==1.2.4 [testenv:py25-1.3.X] basepython = python2.5 deps = - coverage==3.4 unittest-xml-reporting==1.0.3 django-reversion django-classy-tags @@ -52,7 +49,6 @@ deps = [testenv:py26-1.3.X] basepython = python2.6 deps = - coverage==3.4 unittest-xml-reporting==1.0.3 django-reversion django-classy-tags @@ -63,7 +59,6 @@ deps = [testenv:py27-1.3.X] basepython = python2.7 deps = - coverage==3.4 unittest-xml-reporting==1.0.3 django-reversion django-classy-tags @@ -73,12 +68,12 @@ deps = [testenv:py25-trunk] commands = + pip install -U coverage==3.4 pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow coverage xml -o coverage-{envname}.xml basepython = python2.5 deps = - coverage==3.4 unittest-xml-reporting==1.0.3 django-reversion django-classy-tags @@ -87,12 +82,12 @@ deps = [testenv:py26-trunk] commands = + pip install -U coverage==3.4 pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow coverage xml -o coverage-{envname}.xml basepython = python2.6 deps = - coverage==3.4 unittest-xml-reporting==1.0.3 django-reversion django-classy-tags From 64ff981798012c8fa2a9e608815e8485013b1701 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Thu, 3 Feb 2011 06:03:45 -0800 Subject: [PATCH 035/689] added py27-trunk tox env --- tox.ini | 202 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 108 insertions(+), 94 deletions(-) diff --git a/tox.ini b/tox.ini index b912df293ce..d89080195c5 100644 --- a/tox.ini +++ b/tox.ini @@ -1,95 +1,109 @@ -[tox] -distribute = False -envlist = - py26-1.2.X - -[testenv] -commands = - pip install -U coverage==3.4 - coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow - coverage xml -o coverage-{envname}.xml -sitepackages = True - -[testenv:py25-1.2.X] -basepython = python2.5 -deps = - unittest-xml-reporting==1.0.3 - django-reversion - django-classy-tags - South - sphinx - django==1.2.4 - -[testenv:py26-1.2.X] -basepython = python2.6 -deps = - unittest-xml-reporting==1.0.3 - django-reversion - django-classy-tags - South - sphinx - django==1.2.4 - -[testenv:py27-1.2.X] -basepython = python2.7 -deps = - django==1.2.4 - - -[testenv:py25-1.3.X] -basepython = python2.5 -deps = - unittest-xml-reporting==1.0.3 - django-reversion - django-classy-tags - South - sphinx - http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz - -[testenv:py26-1.3.X] -basepython = python2.6 -deps = - unittest-xml-reporting==1.0.3 - django-reversion - django-classy-tags - South - sphinx - http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz - -[testenv:py27-1.3.X] -basepython = python2.7 -deps = - unittest-xml-reporting==1.0.3 - django-reversion - django-classy-tags - South - sphinx - http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz - -[testenv:py25-trunk] -commands = - pip install -U coverage==3.4 - pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django - coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow - coverage xml -o coverage-{envname}.xml -basepython = python2.5 -deps = - unittest-xml-reporting==1.0.3 - django-reversion - django-classy-tags - South - sphinx - -[testenv:py26-trunk] -commands = - pip install -U coverage==3.4 - pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django - coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow - coverage xml -o coverage-{envname}.xml -basepython = python2.6 -deps = - unittest-xml-reporting==1.0.3 - django-reversion - django-classy-tags - South +[tox] +distribute = False +envlist = + py26-1.2.X + +[testenv] +commands = + pip install -U coverage==3.4 + coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow + coverage xml -o coverage-{envname}.xml +sitepackages = True + +[testenv:py25-1.2.X] +basepython = python2.5 +deps = + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx + django==1.2.4 + +[testenv:py26-1.2.X] +basepython = python2.6 +deps = + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx + django==1.2.4 + +[testenv:py27-1.2.X] +basepython = python2.7 +deps = + django==1.2.4 + + +[testenv:py25-1.3.X] +basepython = python2.5 +deps = + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx + http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz + +[testenv:py26-1.3.X] +basepython = python2.6 +deps = + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx + http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz + +[testenv:py27-1.3.X] +basepython = python2.7 +deps = + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx + http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz + +[testenv:py25-trunk] +commands = + pip install -U coverage==3.4 + pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django + coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow + coverage xml -o coverage-{envname}.xml +basepython = python2.5 +deps = + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx + +[testenv:py26-trunk] +commands = + pip install -U coverage==3.4 + pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django + coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow + coverage xml -o coverage-{envname}.xml +basepython = python2.6 +deps = + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx + +[testenv:py27-trunk] +commands = + pip install -U coverage==3.4 + pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django + coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow + coverage xml -o coverage-{envname}.xml +basepython = python2.6 +deps = + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South sphinx \ No newline at end of file From 8481f39d82fad81ac1973c4e8d0c9b87d7f6d9ef Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Thu, 3 Feb 2011 06:05:07 -0800 Subject: [PATCH 036/689] disable toxenv using sitepackages --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index d89080195c5..8a079051b19 100644 --- a/tox.ini +++ b/tox.ini @@ -8,7 +8,7 @@ commands = pip install -U coverage==3.4 coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow coverage xml -o coverage-{envname}.xml -sitepackages = True +sitepackages = False [testenv:py25-1.2.X] basepython = python2.5 From ceff139d3d93c79facb1056ba0432ea377e38518 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Thu, 3 Feb 2011 06:23:28 -0800 Subject: [PATCH 037/689] added pysqlite depdencency, fixed 27-1.2x dependenceis --- tox.ini | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/tox.ini b/tox.ini index 8a079051b19..8f90deaf0e9 100644 --- a/tox.ini +++ b/tox.ini @@ -19,6 +19,7 @@ deps = South sphinx django==1.2.4 + pysqlite [testenv:py26-1.2.X] basepython = python2.6 @@ -29,12 +30,18 @@ deps = South sphinx django==1.2.4 + pysqlite [testenv:py27-1.2.X] basepython = python2.7 deps = django==1.2.4 - + unittest-xml-reporting==1.0.3 + django-reversion + django-classy-tags + South + sphinx + pysqlite [testenv:py25-1.3.X] basepython = python2.5 @@ -45,6 +52,7 @@ deps = South sphinx http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz + pysqlite [testenv:py26-1.3.X] basepython = python2.6 @@ -55,6 +63,7 @@ deps = South sphinx http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz + pysqlite [testenv:py27-1.3.X] basepython = python2.7 @@ -65,6 +74,7 @@ deps = South sphinx http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz + pysqlite [testenv:py25-trunk] commands = @@ -79,6 +89,7 @@ deps = django-classy-tags South sphinx + pysqlite [testenv:py26-trunk] commands = @@ -93,6 +104,7 @@ deps = django-classy-tags South sphinx + pysqlite [testenv:py27-trunk] commands = @@ -106,4 +118,5 @@ deps = django-reversion django-classy-tags South - sphinx \ No newline at end of file + sphinx + pysqlite \ No newline at end of file From c631868a1d7ffcd4074d6c5e18e9bc473c6df24a Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Mon, 31 Jan 2011 18:23:42 +0100 Subject: [PATCH 038/689] added erroring testcase, other tests fail aswell --- cms/admin/pageadmin.py | 6 +++++- cms/test/testcases.py | 2 ++ cms/tests/admin.py | 12 +++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py index 0d12727d008..38a51b0ef94 100644 --- a/cms/admin/pageadmin.py +++ b/cms/admin/pageadmin.py @@ -37,6 +37,10 @@ from django.core.exceptions import PermissionDenied, ObjectDoesNotExist from django.core.urlresolvers import reverse from django.db import transaction, models +try: + from django.db import router +except ImportError: + router = False from django.forms import Widget, Textarea, CharField from django.http import HttpResponseRedirect, HttpResponse, Http404, \ HttpResponseBadRequest, HttpResponseForbidden, HttpResponseNotAllowed @@ -962,7 +966,7 @@ def delete_translation(self, request, object_id, extra_context=None): titleobj = get_object_or_404(Title, page__id=object_id, language=language) plugins = CMSPlugin.objects.filter(placeholder__page__id=object_id, language=language) - + deleted_objects, perms_needed = get_deleted_objects([titleobj], titleopts, request.user, self.admin_site) to_delete_plugins, perms_needed_plugins = get_deleted_objects(plugins, pluginopts, request.user, self.admin_site) deleted_objects.append(to_delete_plugins) diff --git a/cms/test/testcases.py b/cms/test/testcases.py index e08e5450461..dbd997331af 100644 --- a/cms/test/testcases.py +++ b/cms/test/testcases.py @@ -30,6 +30,7 @@ URL_CMS_PLUGIN_ADD = URL_CMS_PAGE + "add-plugin/" URL_CMS_PLUGIN_EDIT = URL_CMS_PAGE + "edit-plugin/" URL_CMS_PLUGIN_REMOVE = URL_CMS_PAGE + "remove-plugin/" +URL_CMS_TRANSLATION_DELETE = URL_CMS_PAGE_CHANGE + "delete-translation/" class _Warning(object): def __init__(self, message, category, filename, lineno): @@ -485,3 +486,4 @@ def _post_teardown(self): def _exit_settings_override(self): self._settings_ctx_manager.__exit__(None, None, None) + diff --git a/cms/tests/admin.py b/cms/tests/admin.py index dcd628234bc..1a28f3a80d5 100644 --- a/cms/tests/admin.py +++ b/cms/tests/admin.py @@ -6,7 +6,7 @@ from cms.models.pagemodel import Page from cms.models.permissionmodels import GlobalPagePermission from cms.test import testcases as base -from cms.test.testcases import CMSTestCase, URL_CMS_PAGE_DELETE, URL_CMS_PAGE +from cms.test.testcases import CMSTestCase, URL_CMS_PAGE_DELETE, URL_CMS_PAGE, URL_CMS_TRANSLATION_DELETE from cms.test.util.context_managers import SettingsOverride from django.contrib.auth.models import User, Permission from django.contrib.sites.models import Site @@ -161,3 +161,13 @@ def test_06_search_fields(self): response = self.client.get('%s?q=1' % url) errmsg = response.content self.assertEqual(response.status_code, 200, errmsg) + + def test_07_delete_translation(self): + admin = self._get_guys(True) + page = self.create_page(user=admin, title="delete-page-ranslation", published=True) + title = self.create_title("delete-page-ranslation-2", "delete-page-ranslation-2", 'nb', page) + self.login_user(admin) + response = self.client.get(URL_CMS_TRANSLATION_DELETE % page.pk, {'language': 'nb'}) + self.assertEqual(response.status_code, 200) + response = self.client.post(URL_CMS_TRANSLATION_DELETE % page.pk, {'language': 'nb'}) + self.assertRedirects(response, URL_CMS_PAGE) From 8d10ac67112e1dedf57ec54e7893468063a1deb1 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Tue, 1 Feb 2011 12:54:23 +0100 Subject: [PATCH 039/689] fixed delete translition in django trunk --- cms/admin/pageadmin.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py index 38a51b0ef94..b63bd7db818 100644 --- a/cms/admin/pageadmin.py +++ b/cms/admin/pageadmin.py @@ -966,9 +966,13 @@ def delete_translation(self, request, object_id, extra_context=None): titleobj = get_object_or_404(Title, page__id=object_id, language=language) plugins = CMSPlugin.objects.filter(placeholder__page__id=object_id, language=language) - - deleted_objects, perms_needed = get_deleted_objects([titleobj], titleopts, request.user, self.admin_site) - to_delete_plugins, perms_needed_plugins = get_deleted_objects(plugins, pluginopts, request.user, self.admin_site) + using = [] + if router: + using = [router.db_for_read(self.model)] + ret = get_deleted_objects([titleobj], titleopts, request.user, self.admin_site, *using) + deleted_objects, perms_needed = ret[0], ret[1] + ret = get_deleted_objects(plugins, pluginopts, request.user, self.admin_site, *using) + to_delete_plugins, perms_needed_plugins = ret[0], ret[1] deleted_objects.append(to_delete_plugins) perms_needed = set( list(perms_needed) + list(perms_needed_plugins) ) From 02741c1527e24ea3b3cc78bc62483f8f7c3b57c0 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Tue, 1 Feb 2011 13:22:10 +0100 Subject: [PATCH 040/689] fixed more issues for django trunk --- cms/admin/pageadmin.py | 4 ++-- cms/test/testcases.py | 3 +++ cms/tests/plugins.py | 8 ++++++-- cms/tests/toolbar.py | 13 +++++++------ 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py index b63bd7db818..e4f35c0a67e 100644 --- a/cms/admin/pageadmin.py +++ b/cms/admin/pageadmin.py @@ -1375,9 +1375,9 @@ def change_moderation(self, request, page_id): return render_admin_menu_item(request, page) raise Http404 - def lookup_allowed(self, key): + def lookup_allowed(self, key, *args): if key == 'site__exact': return True - return super(PageAdmin, self).lookup_allowed(key) + return super(PageAdmin, self).lookup_allowed(key, *args) admin.site.register(Page, PageAdmin) diff --git a/cms/test/testcases.py b/cms/test/testcases.py index dbd997331af..de019492c44 100644 --- a/cms/test/testcases.py +++ b/cms/test/testcases.py @@ -1,3 +1,4 @@ +<<<<<<< HEAD # -*- coding: utf-8 -*- from cms.admin.forms import save_permissions from cms.models import Title, Page @@ -271,6 +272,7 @@ def get_request(self, path=None, language=settings.LANGUAGES[0][0]): 'wsgi.multiprocess': True, 'wsgi.multithread': False, 'wsgi.run_once': False, + 'wsgi.input': '' } request = WSGIRequest(environ) request.session = self.client.session @@ -487,3 +489,4 @@ def _post_teardown(self): def _exit_settings_override(self): self._settings_ctx_manager.__exit__(None, None, None) + diff --git a/cms/tests/plugins.py b/cms/tests/plugins.py index 99f6bb94828..b1e8e448dab 100644 --- a/cms/tests/plugins.py +++ b/cms/tests/plugins.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +from __future__ import with_statement from cms.exceptions import PluginAlreadyRegistered, PluginNotRegistered from cms.models import Page, Placeholder from cms.models.pluginmodel import CMSPlugin @@ -13,6 +14,8 @@ from cms.test.testcases import CMSTestCase, URL_CMS_PAGE, URL_CMS_PAGE_ADD, \ URL_CMS_PLUGIN_ADD, URL_CMS_PLUGIN_EDIT, URL_CMS_PAGE_CHANGE, \ URL_CMS_PLUGIN_REMOVE +from cms.test.util.context_managers import SettingsOverride + from django.conf import settings from django.contrib.auth.models import User from django.core.files.uploadedfile import SimpleUploadedFile @@ -371,8 +374,9 @@ def test_10_fileplugin_icon_uppercase(self): plugin.file.save("UPPERCASE.JPG", SimpleUploadedFile("UPPERCASE.jpg", "content"), False) plugin.insert_at(None, position='last-child', save=True) self.assertNotEquals(plugin.get_icon_url().find('jpg'), -1) - response = self.client.get(plugin.get_icon_url(), follow=True) - self.assertEqual(response.status_code, 200) + with SettingsOverride(DEBUG=True): + response = self.client.get(plugin.get_icon_url(), follow=True) + self.assertEqual(response.status_code, 200) # Nuke everything in the storage location directory (since removing just # our file would still leave a useless directory structure) # diff --git a/cms/tests/toolbar.py b/cms/tests/toolbar.py index 2ad15a10e78..4bccc503d2b 100644 --- a/cms/tests/toolbar.py +++ b/cms/tests/toolbar.py @@ -1,6 +1,6 @@ from __future__ import with_statement from cms.test.testcases import SettingsOverrideTestCase -from cms.test.util.context_managers import UserLoginContext +from cms.test.util.context_managers import UserLoginContext, SettingsOverride from django.conf import settings @@ -10,8 +10,9 @@ class ToolbarTests(SettingsOverrideTestCase): def test_01_static_html(self): page = self.create_page(published=True) superuser = self.get_superuser() - with UserLoginContext(self, superuser): - response = self.client.get('%sstatic.html?edit' % settings.MEDIA_URL) - self.assertTemplateNotUsed(response, 'cms/toolbar/toolbar.html') - response = self.client.get('%s?edit' % page.get_absolute_url()) - self.assertTemplateUsed(response, 'cms/toolbar/toolbar.html') + with SettingsOverride(DEBUG=True): + with UserLoginContext(self, superuser): + response = self.client.get('%sstatic.html?edit' % settings.MEDIA_URL) + self.assertTemplateNotUsed(response, 'cms/toolbar/toolbar.html') + response = self.client.get('%s?edit' % page.get_absolute_url()) + self.assertTemplateUsed(response, 'cms/toolbar/toolbar.html') From cbf8dbddd11cbcfd5e34cc9e08af076c94b42f08 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Tue, 1 Feb 2011 20:57:51 +0100 Subject: [PATCH 041/689] tests pass using django trunk and 1.2.4 --- cms/admin/pageadmin.py | 25 ++++++++++++++++--------- cms/test/testcases.py | 3 --- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py index e4f35c0a67e..58426173db1 100644 --- a/cms/admin/pageadmin.py +++ b/cms/admin/pageadmin.py @@ -37,10 +37,7 @@ from django.core.exceptions import PermissionDenied, ObjectDoesNotExist from django.core.urlresolvers import reverse from django.db import transaction, models -try: - from django.db import router -except ImportError: - router = False + from django.forms import Widget, Textarea, CharField from django.http import HttpResponseRedirect, HttpResponse, Http404, \ HttpResponseBadRequest, HttpResponseForbidden, HttpResponseNotAllowed @@ -52,6 +49,13 @@ from menus.menu_pool import menu_pool import os +# silly hack to test features/ fixme +import inspect +if inspect.getargspec(get_deleted_objects)[0][-1] == 'using': + from django.db import router +else: + router = False + model_admin = admin.ModelAdmin create_on_success = lambda x: x @@ -966,13 +970,16 @@ def delete_translation(self, request, object_id, extra_context=None): titleobj = get_object_or_404(Title, page__id=object_id, language=language) plugins = CMSPlugin.objects.filter(placeholder__page__id=object_id, language=language) + using = [] if router: - using = [router.db_for_read(self.model)] - ret = get_deleted_objects([titleobj], titleopts, request.user, self.admin_site, *using) - deleted_objects, perms_needed = ret[0], ret[1] - ret = get_deleted_objects(plugins, pluginopts, request.user, self.admin_site, *using) - to_delete_plugins, perms_needed_plugins = ret[0], ret[1] + using = router.db_for_read(self.model) + deleted_objects, perms_needed, protected = get_deleted_objects([titleobj], titleopts, request.user, self.admin_site, using) + to_delete_plugins, perms_needed_plugins, protected = get_deleted_objects(plugins, pluginopts, request.user, self.admin_site, using) + else: + deleted_objects, perms_needed = get_deleted_objects([titleobj], titleopts, request.user, self.admin_site, 4) + to_delete_plugins, perms_needed_plugins = get_deleted_objects(plugins, pluginopts, request.user, self.admin_site, 4) + deleted_objects.append(to_delete_plugins) perms_needed = set( list(perms_needed) + list(perms_needed_plugins) ) diff --git a/cms/test/testcases.py b/cms/test/testcases.py index de019492c44..ec2f5d93b34 100644 --- a/cms/test/testcases.py +++ b/cms/test/testcases.py @@ -1,4 +1,3 @@ -<<<<<<< HEAD # -*- coding: utf-8 -*- from cms.admin.forms import save_permissions from cms.models import Title, Page @@ -488,5 +487,3 @@ def _post_teardown(self): def _exit_settings_override(self): self._settings_ctx_manager.__exit__(None, None, None) - - From 2d8f46de97acbaf835dc903401408c0edd42e890 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 3 Feb 2011 16:07:23 +0100 Subject: [PATCH 042/689] test pass in trunk and 1.3.X --- cms/admin/pageadmin.py | 4 ++-- runtests.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) mode change 100755 => 100644 runtests.sh diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py index 58426173db1..530c5c0341a 100644 --- a/cms/admin/pageadmin.py +++ b/cms/admin/pageadmin.py @@ -974,8 +974,8 @@ def delete_translation(self, request, object_id, extra_context=None): using = [] if router: using = router.db_for_read(self.model) - deleted_objects, perms_needed, protected = get_deleted_objects([titleobj], titleopts, request.user, self.admin_site, using) - to_delete_plugins, perms_needed_plugins, protected = get_deleted_objects(plugins, pluginopts, request.user, self.admin_site, using) + deleted_objects, perms_needed = get_deleted_objects([titleobj], titleopts, request.user, self.admin_site, using)[:2] + to_delete_plugins, perms_needed_plugins = get_deleted_objects(plugins, pluginopts, request.user, self.admin_site, using)[:2] else: deleted_objects, perms_needed = get_deleted_objects([titleobj], titleopts, request.user, self.admin_site, 4) to_delete_plugins, perms_needed_plugins = get_deleted_objects(plugins, pluginopts, request.user, self.admin_site, 4) diff --git a/runtests.sh b/runtests.sh old mode 100755 new mode 100644 index b6b9eceea7e..5ab993e2e45 --- a/runtests.sh +++ b/runtests.sh @@ -85,7 +85,7 @@ if [ ! -f "toxinstall/bin/tox" ]; then fi if [ $quicktest == true ]; then - if [ "$toxenv" == "ALL"]; then + if [ "$toxenv" == "ALL" ]; then echo "Cannot use ALL with --quicktest" exit 1 fi From 8e017afaa3c91e754d8448408ce40bf8d62429b5 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Thu, 3 Feb 2011 07:15:50 -0800 Subject: [PATCH 043/689] fixed 27-trunk actually using 2.7 --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 8f90deaf0e9..ccd68492b2c 100644 --- a/tox.ini +++ b/tox.ini @@ -112,7 +112,7 @@ commands = pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow coverage xml -o coverage-{envname}.xml -basepython = python2.6 +basepython = python2.7 deps = unittest-xml-reporting==1.0.3 django-reversion From 1d99188764449794e37159041c9fbdb079e4ff7c Mon Sep 17 00:00:00 2001 From: Chris Glass Date: Thu, 3 Feb 2011 16:29:21 +0100 Subject: [PATCH 044/689] Added a new "last modified" (changed_date) field to the Page model. Made created_date an auto_now, and changed created_date to be auto_now_add. --- ..._chg_field_cmsplugin_language__add_fiel.py | 210 ++++++++++++++++++ cms/models/pagemodel.py | 3 +- 2 files changed, 212 insertions(+), 1 deletion(-) create mode 100644 cms/migrations/0034_auto__chg_field_title_language__chg_field_cmsplugin_language__add_fiel.py diff --git a/cms/migrations/0034_auto__chg_field_title_language__chg_field_cmsplugin_language__add_fiel.py b/cms/migrations/0034_auto__chg_field_title_language__chg_field_cmsplugin_language__add_fiel.py new file mode 100644 index 00000000000..496025ed57c --- /dev/null +++ b/cms/migrations/0034_auto__chg_field_title_language__chg_field_cmsplugin_language__add_fiel.py @@ -0,0 +1,210 @@ +# encoding: utf-8 +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + +class Migration(SchemaMigration): + + def forwards(self, orm): + + # Changing field 'Title.language' + db.alter_column('cms_title', 'language', self.gf('django.db.models.fields.CharField')(max_length=15)) + + # Changing field 'CMSPlugin.language' + db.alter_column('cms_cmsplugin', 'language', self.gf('django.db.models.fields.CharField')(max_length=15)) + + # Adding field 'Page.changed_date' + db.add_column('cms_page', 'changed_date', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, default=datetime.datetime(1969, 12, 31, 18, 0), blank=True), keep_default=False) + + # Changing field 'Page.creation_date' + db.alter_column('cms_page', 'creation_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True)) + + + def backwards(self, orm): + + # Changing field 'Title.language' + db.alter_column('cms_title', 'language', self.gf('django.db.models.fields.CharField')(max_length=5)) + + # Changing field 'CMSPlugin.language' + db.alter_column('cms_cmsplugin', 'language', self.gf('django.db.models.fields.CharField')(max_length=5)) + + # Deleting field 'Page.changed_date' + db.delete_column('cms_page', 'changed_date') + + # Changing field 'Page.creation_date' + db.alter_column('cms_page', 'creation_date', self.gf('django.db.models.fields.DateTimeField')()) + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'cms.cmsplugin': { + 'Meta': {'object_name': 'CMSPlugin'}, + 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), + 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), + 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), + 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), + 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), + 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) + }, + 'cms.globalpagepermission': { + 'Meta': {'object_name': 'GlobalPagePermission'}, + 'can_add': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'can_change': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'can_change_advanced_settings': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'can_change_permissions': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'can_delete': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'can_moderate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'can_move_page': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'can_publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'can_recover_page': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['sites.Site']", 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cms.page': { + 'Meta': {'ordering': "('site', 'tree_id', 'lft')", 'object_name': 'Page'}, + 'changed_by': ('django.db.models.fields.CharField', [], {'max_length': '70'}), + 'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'created_by': ('django.db.models.fields.CharField', [], {'max_length': '70'}), + 'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'in_navigation': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), + 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'limit_visibility_in_menu': ('django.db.models.fields.SmallIntegerField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'login_required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'moderator_state': ('django.db.models.fields.SmallIntegerField', [], {'default': '1', 'blank': 'True'}), + 'navigation_extenders': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '80', 'null': 'True', 'blank': 'True'}), + 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.Page']"}), + 'placeholders': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['cms.Placeholder']", 'symmetrical': 'False'}), + 'publication_date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'publication_end_date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'published': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'publisher_is_draft': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), + 'publisher_public': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'publisher_draft'", 'unique': 'True', 'null': 'True', 'to': "orm['cms.Page']"}), + 'publisher_state': ('django.db.models.fields.SmallIntegerField', [], {'default': '0', 'db_index': 'True'}), + 'reverse_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '40', 'null': 'True', 'blank': 'True'}), + 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}), + 'soft_root': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), + 'template': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) + }, + 'cms.pagemoderator': { + 'Meta': {'object_name': 'PageModerator'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'moderate_children': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'moderate_descendants': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'moderate_page': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'page': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Page']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'cms.pagemoderatorstate': { + 'Meta': {'ordering': "('page', 'action', '-created')", 'object_name': 'PageModeratorState'}, + 'action': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True', 'blank': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'message': ('django.db.models.fields.TextField', [], {'default': "''", 'max_length': '1000', 'blank': 'True'}), + 'page': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Page']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}) + }, + 'cms.pagepermission': { + 'Meta': {'object_name': 'PagePermission'}, + 'can_add': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'can_change': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'can_change_advanced_settings': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'can_change_permissions': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'can_delete': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'can_moderate': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'can_move_page': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'can_publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'grant_on': ('django.db.models.fields.IntegerField', [], {'default': '5'}), + 'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'page': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Page']", 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'cms.pageuser': { + 'Meta': {'object_name': 'PageUser', '_ormbases': ['auth.User']}, + 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_users'", 'to': "orm['auth.User']"}), + 'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) + }, + 'cms.pageusergroup': { + 'Meta': {'object_name': 'PageUserGroup', '_ormbases': ['auth.Group']}, + 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_usergroups'", 'to': "orm['auth.User']"}), + 'group_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.Group']", 'unique': 'True', 'primary_key': 'True'}) + }, + 'cms.placeholder': { + 'Meta': {'object_name': 'Placeholder'}, + 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) + }, + 'cms.title': { + 'Meta': {'unique_together': "(('language', 'page'),)", 'object_name': 'Title'}, + 'application_urls': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'has_url_overwrite': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), + 'menu_title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'meta_description': ('django.db.models.fields.TextField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'meta_keywords': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'page': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'title_set'", 'to': "orm['cms.Page']"}), + 'page_title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}), + 'redirect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'sites.site': { + 'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"}, + 'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + } + } + + complete_apps = ['cms'] diff --git a/cms/models/pagemodel.py b/cms/models/pagemodel.py index c1d9a0f8823..20257e7aa8f 100644 --- a/cms/models/pagemodel.py +++ b/cms/models/pagemodel.py @@ -59,7 +59,8 @@ class Page(MPTTModel): created_by = models.CharField(_("created by"), max_length=70, editable=False) changed_by = models.CharField(_("changed by"), max_length=70, editable=False) parent = models.ForeignKey('self', null=True, blank=True, related_name='children', db_index=True) - creation_date = models.DateTimeField(editable=False, default=datetime.now) + creation_date = models.DateTimeField(auto_now_add=True) + changed_date = models.DateTimeField(auto_now=True) publication_date = models.DateTimeField(_("publication date"), null=True, blank=True, help_text=_('When the page should go live. Status must be "Published" for page to go live.'), db_index=True) publication_end_date = models.DateTimeField(_("publication end date"), null=True, blank=True, help_text=_('When to expire the page. Leave empty to never expire.'), db_index=True) in_navigation = models.BooleanField(_("in navigation"), default=True, db_index=True) From 65e94a71073c241e2f9f002206cdcd0dfb060b31 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 3 Feb 2011 20:25:26 +0100 Subject: [PATCH 045/689] moved remnants of publisher --- cms/models/managers.py | 2 +- cms/models/metaclasses.py | 4 ++-- cms/models/moderatormodels.py | 2 +- cms/models/pagemodel.py | 2 +- cms/models/query.py | 2 +- {publisher => cms/publisher}/__init__.py | 0 {publisher => cms/publisher}/errors.py | 2 +- {publisher => cms/publisher}/manager.py | 4 ++-- {publisher => cms/publisher}/models.py | 0 {publisher => cms/publisher}/options.py | 0 {publisher => cms/publisher}/query.py | 2 +- example/settings.py | 3 +-- 12 files changed, 11 insertions(+), 12 deletions(-) rename {publisher => cms/publisher}/__init__.py (100%) rename {publisher => cms/publisher}/errors.py (93%) rename {publisher => cms/publisher}/manager.py (92%) rename {publisher => cms/publisher}/models.py (100%) rename {publisher => cms/publisher}/options.py (100%) rename {publisher => cms/publisher}/query.py (83%) diff --git a/cms/models/managers.py b/cms/models/managers.py index fc99ac808d9..992a35cc822 100644 --- a/cms/models/managers.py +++ b/cms/models/managers.py @@ -4,7 +4,7 @@ from django.contrib.sites.models import Site from django.db.models import Q from cms.exceptions import NoPermissionsException -from publisher import PublisherManager +from cms.publisher import PublisherManager from cms.models.query import PageQuerySet from cms.utils.i18n import get_fallback_languages diff --git a/cms/models/metaclasses.py b/cms/models/metaclasses.py index 588af4324c1..def79391d6f 100644 --- a/cms/models/metaclasses.py +++ b/cms/models/metaclasses.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- from django.conf import settings from django.db.models.base import ModelBase -from publisher.manager import PublisherManager +from cms.publisher.manager import PublisherManager from mptt.models import MPTTModelBase -from publisher.options import PublisherOptions +from cms.publisher.options import PublisherOptions class PageMetaClass(MPTTModelBase): diff --git a/cms/models/moderatormodels.py b/cms/models/moderatormodels.py index 6bb7d38cf4e..3a0046b5a5d 100644 --- a/cms/models/moderatormodels.py +++ b/cms/models/moderatormodels.py @@ -122,4 +122,4 @@ class Meta: __unicode__ = lambda self: "%s: %s" % (unicode(self.page), self.get_action_display()) - \ No newline at end of file + diff --git a/cms/models/pagemodel.py b/cms/models/pagemodel.py index 20257e7aa8f..0f0ea8929b9 100644 --- a/cms/models/pagemodel.py +++ b/cms/models/pagemodel.py @@ -21,7 +21,7 @@ from django.utils.translation import ugettext_lazy as _, get_language, ugettext from menus.menu_pool import menu_pool from os.path import join -from publisher.errors import MpttPublisherCantPublish +from cms.publisher.errors import MpttPublisherCantPublish from mptt.models import MPTTModel import copy diff --git a/cms/models/query.py b/cms/models/query.py index 395bd007ca1..79b3f6f5f91 100644 --- a/cms/models/query.py +++ b/cms/models/query.py @@ -2,7 +2,7 @@ from datetime import datetime from django.db.models import Q from django.contrib.sites.models import Site -from publisher.query import PublisherQuerySet +from cms.publisher.query import PublisherQuerySet from django.conf import settings from cms.exceptions import NoHomeFound diff --git a/publisher/__init__.py b/cms/publisher/__init__.py similarity index 100% rename from publisher/__init__.py rename to cms/publisher/__init__.py diff --git a/publisher/errors.py b/cms/publisher/errors.py similarity index 93% rename from publisher/errors.py rename to cms/publisher/errors.py index e5084cc7d4c..99f87b3a175 100644 --- a/publisher/errors.py +++ b/cms/publisher/errors.py @@ -4,4 +4,4 @@ class PublisherCantPublish(Exception): class MpttPublisherCantPublish(PublisherCantPublish): """Node is under mptt and can't be published because node parent isn't - published.""" \ No newline at end of file + published.""" diff --git a/publisher/manager.py b/cms/publisher/manager.py similarity index 92% rename from publisher/manager.py rename to cms/publisher/manager.py index 836e3c32951..2bd1a56a197 100644 --- a/publisher/manager.py +++ b/cms/publisher/manager.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- from django.db import models -from publisher.query import PublisherQuerySet +from cms.publisher.query import PublisherQuerySet class PublisherManager(models.Manager): """Manager with some support handling publisher. @@ -22,4 +22,4 @@ def all(self): "object is not allowed. Please use drafts() or public() method " "instead. If this isn't accident use get_query_set().all() for " "all instances.") - """ \ No newline at end of file + """ diff --git a/publisher/models.py b/cms/publisher/models.py similarity index 100% rename from publisher/models.py rename to cms/publisher/models.py diff --git a/publisher/options.py b/cms/publisher/options.py similarity index 100% rename from publisher/options.py rename to cms/publisher/options.py diff --git a/publisher/query.py b/cms/publisher/query.py similarity index 83% rename from publisher/query.py rename to cms/publisher/query.py index 08d2822ee23..9f50e33051c 100644 --- a/publisher/query.py +++ b/cms/publisher/query.py @@ -8,4 +8,4 @@ def drafts(self): return self.filter(publisher_is_draft=True) def public(self): - return self.filter(publisher_is_draft=False) \ No newline at end of file + return self.filter(publisher_is_draft=False) diff --git a/example/settings.py b/example/settings.py index a4dc65d8df4..bab2db7689d 100644 --- a/example/settings.py +++ b/example/settings.py @@ -86,7 +86,6 @@ 'django.contrib.admin', 'django.contrib.sites', 'cms', - 'publisher', 'menus', 'cms.plugins.text', 'cms.plugins.picture', @@ -167,4 +166,4 @@ try: from local_settings import * except ImportError: - pass \ No newline at end of file + pass From 25e897c128696e8d8ae7bc3138f69550876899db Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 3 Feb 2011 20:47:36 +0100 Subject: [PATCH 046/689] removed conditional exclude --- cms/models/pagemodel.py | 5 +---- cms/test/run_tests.py | 11 +++++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cms/models/pagemodel.py b/cms/models/pagemodel.py index 0f0ea8929b9..83149061caf 100644 --- a/cms/models/pagemodel.py +++ b/cms/models/pagemodel.py @@ -1117,10 +1117,7 @@ def rescan_placeholders(self): found[placeholder_name] = placeholder def _reversion(): - if 'publisher' in settings.INSTALLED_APPS: - exclude_fields = ['publisher_is_draft', 'publisher_public', 'publisher_state'] - else: - exclude_fields = [] + exclude_fields = ['publisher_is_draft', 'publisher_public', 'publisher_state'] reversion_register( Page, diff --git a/cms/test/run_tests.py b/cms/test/run_tests.py index b505ed975c2..a7e840eb578 100644 --- a/cms/test/run_tests.py +++ b/cms/test/run_tests.py @@ -106,9 +106,9 @@ def configure_settings(env_name): 'django.contrib.sessions', 'django.contrib.admin', 'django.contrib.sites', + 'cms', - 'publisher', - 'menus', + 'cms.plugins.text', 'cms.plugins.picture', 'cms.plugins.file', @@ -120,13 +120,16 @@ def configure_settings(env_name): 'cms.plugins.video', 'cms.plugins.twitter', 'cms.plugins.inherit', - 'mptt', + 'cms.test.apps.sampleapp', 'cms.test.apps.placeholderapp', 'cms.test.apps.pluginapp', 'cms.test.apps.pluginapp.plugins.manytomany_rel', 'cms.test.apps.fakemlng', - 'reversion', + + 'menus', + 'mptt', + 'reversion' ), gettext = lambda s: s, From 32d00eb2c225fddbf27f19f6e574b781402ce9a7 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Thu, 3 Feb 2011 12:07:12 -0800 Subject: [PATCH 047/689] make coverage a dependency, not installing it in run --- tox.ini | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tox.ini b/tox.ini index ccd68492b2c..6027e1f532b 100644 --- a/tox.ini +++ b/tox.ini @@ -5,7 +5,6 @@ envlist = [testenv] commands = - pip install -U coverage==3.4 coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow coverage xml -o coverage-{envname}.xml sitepackages = False @@ -14,6 +13,7 @@ sitepackages = False basepython = python2.5 deps = unittest-xml-reporting==1.0.3 + coverage==3.4 django-reversion django-classy-tags South @@ -25,6 +25,7 @@ deps = basepython = python2.6 deps = unittest-xml-reporting==1.0.3 + coverage==3.4 django-reversion django-classy-tags South @@ -37,6 +38,7 @@ basepython = python2.7 deps = django==1.2.4 unittest-xml-reporting==1.0.3 + coverage==3.4 django-reversion django-classy-tags South @@ -48,6 +50,7 @@ basepython = python2.5 deps = unittest-xml-reporting==1.0.3 django-reversion + coverage==3.4 django-classy-tags South sphinx @@ -59,6 +62,7 @@ basepython = python2.6 deps = unittest-xml-reporting==1.0.3 django-reversion + coverage==3.4 django-classy-tags South sphinx @@ -69,6 +73,7 @@ deps = basepython = python2.7 deps = unittest-xml-reporting==1.0.3 + coverage==3.4 django-reversion django-classy-tags South @@ -78,13 +83,13 @@ deps = [testenv:py25-trunk] commands = - pip install -U coverage==3.4 pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow coverage xml -o coverage-{envname}.xml basepython = python2.5 deps = unittest-xml-reporting==1.0.3 + coverage==3.4 django-reversion django-classy-tags South @@ -93,7 +98,6 @@ deps = [testenv:py26-trunk] commands = - pip install -U coverage==3.4 pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow coverage xml -o coverage-{envname}.xml @@ -101,6 +105,7 @@ basepython = python2.6 deps = unittest-xml-reporting==1.0.3 django-reversion + coverage==3.4 django-classy-tags South sphinx @@ -108,13 +113,13 @@ deps = [testenv:py27-trunk] commands = - pip install -U coverage==3.4 pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow coverage xml -o coverage-{envname}.xml basepython = python2.7 deps = unittest-xml-reporting==1.0.3 + coverage==3.4 django-reversion django-classy-tags South From 7cc033d0e3ed560f80a035fd09a9c97dc249fbd4 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Thu, 3 Feb 2011 21:22:23 +0100 Subject: [PATCH 048/689] fixed some mptt related documentation issue --- docs/extending_cms/app_integration.rst | 10 ---------- docs/getting_started/installation.rst | 6 ++++-- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/docs/extending_cms/app_integration.rst b/docs/extending_cms/app_integration.rst index df42f44edde..068cd287171 100644 --- a/docs/extending_cms/app_integration.rst +++ b/docs/extending_cms/app_integration.rst @@ -121,12 +121,6 @@ you need to define a name. We will do that with the example from above:: Now you can link this Menu to a page in the 'Advanced' tab of the page settings under attached menu. - -It is encouraged to use `django-mptt `_ -(a suitable version is included in the `mptt` directory) for the tree -structure because of performance considerations. The objects provided must -adhere to the following structure: - Each must have a ``get_menu_title`` function, a ``get_absolute_url`` function, and a ``childrens`` array with all of its children inside (the 's' at the end of ``childrens`` is done on purpose because ``children`` is already taken by @@ -250,10 +244,6 @@ the following model:: except mptt.AlreadyRegistered: pass -It is encouraged to use `django-mptt `_ -(a suitable version is included in the `mptt` directory) if you have data that -is organized in a tree. - We would now create a menu out of these categories:: from menus.base import NavigationNode diff --git a/docs/getting_started/installation.rst b/docs/getting_started/installation.rst index a12aeda4963..555525e33cd 100644 --- a/docs/getting_started/installation.rst +++ b/docs/getting_started/installation.rst @@ -14,17 +14,19 @@ Requirements * `South`_ 0.7.2 or higher * `PIL`_ 1.1.6 or higher * `django-classy-tags`_ 0.2.2 or higher +* `django-mptt`_ 0.4.2 or higher * An installed and working instance of one of the databases listed in the `Databases`_ section. -.. note:: When installing the django CMS using pip, both Django and - django-classy-tags will be installed automatically. +.. note:: When installing the django CMS using pip, both Django, django-mptt + django-classy-tags, south and PIL will be installed automatically. .. _Python: http://www.python.org .. _Django: http://www.djangoproject.com .. _PIL: http://www.pythonware.com/products/pil/ .. _South: http://south.aeracode.org/ .. _django-classy-tags: https://github.com/ojii/django-classy-tags +.. _django-mptt: https://github.com/django-mptt/django-mptt On Ubuntu ========= From 0b3a8bf35cfc8fce0f7f2b7c2e67bfa06dd6b102 Mon Sep 17 00:00:00 2001 From: Chris Glass Date: Fri, 4 Feb 2011 09:35:43 +0100 Subject: [PATCH 049/689] Tutorial typo fix. --- docs/getting_started/tutorial.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting_started/tutorial.rst b/docs/getting_started/tutorial.rst index e8c7cba9589..a52bce1c31b 100644 --- a/docs/getting_started/tutorial.rst +++ b/docs/getting_started/tutorial.rst @@ -147,7 +147,7 @@ like:: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(PROJECT_DIR, 'database.sqlite'), + 'NAME': os.path.join(PROJECT_PATH, 'database.sqlite'), } } From c995e8fbba1c9639fc769fbff53573ee3c6468a7 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Mon, 7 Feb 2011 15:08:05 +0100 Subject: [PATCH 050/689] locale updates from transifex --- cms/locale/ar/LC_MESSAGES/django.mo | Bin 0 -> 28696 bytes cms/locale/ar/LC_MESSAGES/django.po | 922 ++++++-------- cms/locale/ar/LC_MESSAGES/djangojs.mo | Bin 0 -> 1061 bytes cms/locale/ar/LC_MESSAGES/djangojs.po | 33 +- cms/locale/bg/LC_MESSAGES/django.mo | Bin 0 -> 28107 bytes cms/locale/bg/LC_MESSAGES/django.po | 1055 +++++++--------- cms/locale/bg/LC_MESSAGES/djangojs.mo | Bin 0 -> 1054 bytes cms/locale/bg/LC_MESSAGES/djangojs.po | 35 +- cms/locale/bn/LC_MESSAGES/django.mo | Bin 0 -> 570 bytes cms/locale/bn/LC_MESSAGES/django.po | 836 ++++++------- cms/locale/bn/LC_MESSAGES/djangojs.mo | Bin 0 -> 459 bytes cms/locale/bn/LC_MESSAGES/djangojs.po | 27 +- cms/locale/ca/LC_MESSAGES/django.mo | Bin 0 -> 26241 bytes cms/locale/ca/LC_MESSAGES/django.po | 957 ++++++-------- cms/locale/ca/LC_MESSAGES/djangojs.mo | Bin 0 -> 902 bytes cms/locale/ca/LC_MESSAGES/djangojs.po | 24 +- cms/locale/cs/LC_MESSAGES/django.mo | Bin 0 -> 19144 bytes cms/locale/cs/LC_MESSAGES/django.po | 886 ++++++------- cms/locale/cs/LC_MESSAGES/djangojs.mo | Bin 0 -> 884 bytes cms/locale/cs/LC_MESSAGES/djangojs.po | 24 +- cms/locale/cy/LC_MESSAGES/django.mo | Bin 0 -> 576 bytes cms/locale/cy/LC_MESSAGES/django.po | 838 ++++++------- cms/locale/cy/LC_MESSAGES/djangojs.mo | Bin 0 -> 465 bytes cms/locale/cy/LC_MESSAGES/djangojs.po | 27 +- cms/locale/da/LC_MESSAGES/django.mo | Bin 0 -> 570 bytes cms/locale/da/LC_MESSAGES/django.po | 836 ++++++------- cms/locale/da/LC_MESSAGES/djangojs.mo | Bin 0 -> 459 bytes cms/locale/da/LC_MESSAGES/djangojs.po | 27 +- cms/locale/de/LC_MESSAGES/django.mo | Bin 28758 -> 26879 bytes cms/locale/de/LC_MESSAGES/django.po | 1085 ++++++---------- cms/locale/de/LC_MESSAGES/djangojs.mo | Bin 1150 -> 930 bytes cms/locale/de/LC_MESSAGES/djangojs.po | 37 +- cms/locale/el/LC_MESSAGES/django.mo | Bin 6647 -> 5753 bytes cms/locale/el/LC_MESSAGES/django.po | 951 ++++++-------- cms/locale/el/LC_MESSAGES/djangojs.mo | Bin 1563 -> 1141 bytes cms/locale/el/LC_MESSAGES/djangojs.po | 43 +- cms/locale/en/LC_MESSAGES/django.mo | Bin 2119 -> 2048 bytes cms/locale/en/LC_MESSAGES/django.po | 760 ++++++----- cms/locale/en/LC_MESSAGES/djangojs.mo | Bin 367 -> 378 bytes cms/locale/en/LC_MESSAGES/djangojs.po | 13 +- cms/locale/es/LC_MESSAGES/django.mo | Bin 367 -> 26488 bytes cms/locale/es/LC_MESSAGES/django.po | 1004 ++++++--------- cms/locale/es/LC_MESSAGES/djangojs.mo | Bin 0 -> 912 bytes cms/locale/es/LC_MESSAGES/djangojs.po | 36 +- cms/locale/es_AR/LC_MESSAGES/django.mo | Bin 0 -> 6458 bytes cms/locale/es_AR/LC_MESSAGES/django.po | 875 ++++++------- cms/locale/es_AR/LC_MESSAGES/djangojs.mo | Bin 0 -> 462 bytes cms/locale/es_AR/LC_MESSAGES/djangojs.po | 27 +- cms/locale/et/LC_MESSAGES/django.mo | Bin 0 -> 5163 bytes cms/locale/et/LC_MESSAGES/django.po | 854 ++++++------- cms/locale/et/LC_MESSAGES/djangojs.mo | Bin 0 -> 459 bytes cms/locale/et/LC_MESSAGES/djangojs.po | 27 +- cms/locale/eu/LC_MESSAGES/django.mo | Bin 0 -> 570 bytes cms/locale/eu/LC_MESSAGES/django.po | 836 ++++++------- cms/locale/eu/LC_MESSAGES/djangojs.mo | Bin 0 -> 459 bytes cms/locale/eu/LC_MESSAGES/djangojs.po | 27 +- cms/locale/fa/LC_MESSAGES/django.mo | Bin 0 -> 30555 bytes cms/locale/fa/LC_MESSAGES/django.po | 905 +++++++------ cms/locale/fa/LC_MESSAGES/djangojs.mo | Bin 0 -> 893 bytes cms/locale/fa/LC_MESSAGES/djangojs.po | 24 +- cms/locale/fi/LC_MESSAGES/django.mo | Bin 0 -> 25623 bytes cms/locale/fi/LC_MESSAGES/django.po | 1058 ++++++---------- cms/locale/fi/LC_MESSAGES/djangojs.mo | Bin 0 -> 894 bytes cms/locale/fi/LC_MESSAGES/djangojs.po | 36 +- cms/locale/fr/LC_MESSAGES/django.mo | Bin 25511 -> 26608 bytes cms/locale/fr/LC_MESSAGES/django.po | 1029 ++++++--------- cms/locale/fr/LC_MESSAGES/djangojs.mo | Bin 1099 -> 898 bytes cms/locale/fr/LC_MESSAGES/djangojs.po | 33 +- cms/locale/gu/LC_MESSAGES/django.mo | Bin 0 -> 533 bytes cms/locale/gu/LC_MESSAGES/django.po | 836 ++++++------- cms/locale/gu/LC_MESSAGES/djangojs.mo | Bin 0 -> 446 bytes cms/locale/gu/LC_MESSAGES/djangojs.po | 31 +- cms/locale/he/LC_MESSAGES/django.mo | Bin 0 -> 570 bytes cms/locale/he/LC_MESSAGES/django.po | 836 ++++++------- cms/locale/he/LC_MESSAGES/djangojs.mo | Bin 0 -> 459 bytes cms/locale/he/LC_MESSAGES/djangojs.po | 27 +- cms/locale/hi/LC_MESSAGES/django.mo | Bin 0 -> 36088 bytes cms/locale/hi/LC_MESSAGES/django.po | 922 ++++++-------- cms/locale/hi/LC_MESSAGES/djangojs.mo | Bin 0 -> 1263 bytes cms/locale/hi/LC_MESSAGES/djangojs.po | 26 +- cms/locale/hu/LC_MESSAGES/django.mo | Bin 0 -> 570 bytes cms/locale/hu/LC_MESSAGES/django.po | 836 ++++++------- cms/locale/hu/LC_MESSAGES/djangojs.mo | Bin 0 -> 459 bytes cms/locale/hu/LC_MESSAGES/djangojs.po | 27 +- cms/locale/it/LC_MESSAGES/django.mo | Bin 367 -> 24822 bytes cms/locale/it/LC_MESSAGES/django.po | 930 +++++++------- cms/locale/it/LC_MESSAGES/djangojs.mo | Bin 367 -> 906 bytes cms/locale/it/LC_MESSAGES/djangojs.po | 37 +- cms/locale/ja/LC_MESSAGES/django.mo | Bin 0 -> 10950 bytes cms/locale/ja/LC_MESSAGES/django.po | 1462 +++++++++------------- cms/locale/ja/LC_MESSAGES/djangojs.mo | Bin 0 -> 891 bytes cms/locale/ja/LC_MESSAGES/djangojs.po | 24 +- cms/locale/nl/LC_MESSAGES/django.mo | Bin 27779 -> 25884 bytes cms/locale/nl/LC_MESSAGES/django.po | 1038 +++++++-------- cms/locale/nl/LC_MESSAGES/djangojs.mo | Bin 1181 -> 926 bytes cms/locale/nl/LC_MESSAGES/djangojs.po | 46 +- cms/locale/no/LC_MESSAGES/django.mo | Bin 0 -> 24412 bytes cms/locale/no/LC_MESSAGES/django.po | 954 +++++++------- cms/locale/no/LC_MESSAGES/djangojs.mo | Bin 0 -> 893 bytes cms/locale/no/LC_MESSAGES/djangojs.po | 20 +- cms/locale/pl/LC_MESSAGES/django.mo | Bin 25209 -> 26497 bytes cms/locale/pl/LC_MESSAGES/django.po | 982 +++++++-------- cms/locale/pl/LC_MESSAGES/djangojs.mo | Bin 1270 -> 946 bytes cms/locale/pl/LC_MESSAGES/djangojs.po | 39 +- cms/locale/pt/LC_MESSAGES/django.mo | Bin 0 -> 22623 bytes cms/locale/pt/LC_MESSAGES/django.po | 1091 +++++++--------- cms/locale/pt/LC_MESSAGES/djangojs.mo | Bin 0 -> 898 bytes cms/locale/pt/LC_MESSAGES/djangojs.po | 43 +- cms/locale/pt_BR/LC_MESSAGES/django.mo | Bin 26184 -> 26146 bytes cms/locale/pt_BR/LC_MESSAGES/django.po | 1012 ++++++--------- cms/locale/pt_BR/LC_MESSAGES/djangojs.mo | Bin 367 -> 943 bytes cms/locale/pt_BR/LC_MESSAGES/djangojs.po | 26 +- cms/locale/ru/LC_MESSAGES/django.mo | Bin 34776 -> 33135 bytes cms/locale/ru/LC_MESSAGES/django.po | 1057 +++++++--------- cms/locale/ru/LC_MESSAGES/djangojs.mo | Bin 1342 -> 1097 bytes cms/locale/ru/LC_MESSAGES/djangojs.po | 38 +- cms/locale/sk/LC_MESSAGES/django.mo | Bin 0 -> 26393 bytes cms/locale/sk/LC_MESSAGES/django.po | 993 ++++++--------- cms/locale/sk/LC_MESSAGES/djangojs.mo | Bin 0 -> 969 bytes cms/locale/sk/LC_MESSAGES/djangojs.po | 38 +- cms/locale/sv/LC_MESSAGES/django.mo | Bin 0 -> 25347 bytes cms/locale/sv/LC_MESSAGES/django.po | 998 +++++++-------- cms/locale/sv/LC_MESSAGES/djangojs.mo | Bin 0 -> 901 bytes cms/locale/sv/LC_MESSAGES/djangojs.po | 19 +- cms/locale/tr/LC_MESSAGES/django.mo | Bin 0 -> 19397 bytes cms/locale/tr/LC_MESSAGES/django.po | 995 +++++++-------- cms/locale/tr/LC_MESSAGES/djangojs.mo | Bin 0 -> 898 bytes cms/locale/tr/LC_MESSAGES/djangojs.po | 39 +- cms/locale/zh_CN/LC_MESSAGES/django.mo | Bin 0 -> 24162 bytes cms/locale/zh_CN/LC_MESSAGES/django.po | 928 ++++++-------- cms/locale/zh_CN/LC_MESSAGES/djangojs.mo | Bin 0 -> 874 bytes cms/locale/zh_CN/LC_MESSAGES/djangojs.po | 30 +- cms/locale/zh_TW/LC_MESSAGES/django.mo | Bin 0 -> 24499 bytes cms/locale/zh_TW/LC_MESSAGES/django.po | 890 ++++++------- cms/locale/zh_TW/LC_MESSAGES/djangojs.mo | Bin 0 -> 864 bytes cms/locale/zh_TW/LC_MESSAGES/djangojs.po | 34 +- cms/test/project/settings.py | 194 +++ 137 files changed, 14852 insertions(+), 18833 deletions(-) create mode 100644 cms/locale/ar/LC_MESSAGES/django.mo create mode 100644 cms/locale/ar/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/bg/LC_MESSAGES/django.mo create mode 100644 cms/locale/bg/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/bn/LC_MESSAGES/django.mo create mode 100644 cms/locale/bn/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/ca/LC_MESSAGES/django.mo create mode 100644 cms/locale/ca/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/cs/LC_MESSAGES/django.mo create mode 100644 cms/locale/cs/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/cy/LC_MESSAGES/django.mo create mode 100644 cms/locale/cy/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/da/LC_MESSAGES/django.mo create mode 100644 cms/locale/da/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/es/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/es_AR/LC_MESSAGES/django.mo create mode 100644 cms/locale/es_AR/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/et/LC_MESSAGES/django.mo create mode 100644 cms/locale/et/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/eu/LC_MESSAGES/django.mo create mode 100644 cms/locale/eu/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/fa/LC_MESSAGES/django.mo create mode 100644 cms/locale/fa/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/fi/LC_MESSAGES/django.mo create mode 100644 cms/locale/fi/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/gu/LC_MESSAGES/django.mo create mode 100644 cms/locale/gu/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/he/LC_MESSAGES/django.mo create mode 100644 cms/locale/he/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/hi/LC_MESSAGES/django.mo create mode 100644 cms/locale/hi/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/hu/LC_MESSAGES/django.mo create mode 100644 cms/locale/hu/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/ja/LC_MESSAGES/django.mo create mode 100644 cms/locale/ja/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/no/LC_MESSAGES/django.mo create mode 100644 cms/locale/no/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/pt/LC_MESSAGES/django.mo create mode 100644 cms/locale/pt/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/sk/LC_MESSAGES/django.mo create mode 100644 cms/locale/sk/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/sv/LC_MESSAGES/django.mo create mode 100644 cms/locale/sv/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/tr/LC_MESSAGES/django.mo create mode 100644 cms/locale/tr/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/zh_CN/LC_MESSAGES/django.mo create mode 100644 cms/locale/zh_CN/LC_MESSAGES/djangojs.mo create mode 100644 cms/locale/zh_TW/LC_MESSAGES/django.mo create mode 100644 cms/locale/zh_TW/LC_MESSAGES/djangojs.mo create mode 100644 cms/test/project/settings.py diff --git a/cms/locale/ar/LC_MESSAGES/django.mo b/cms/locale/ar/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..da416b61cc3bba587b3f1ae55f425804e8cdacd7 GIT binary patch literal 28696 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 z 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, 2010. -# -#, fuzzy +# FIRST AUTHOR , YEAR. +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Beshr Kayali \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:39+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \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-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "خيارات متقدمة" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "العنوان" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "العنوان الإفتراضي" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Slug" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "العنوان الذي سيستخدم في الرابط" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "اللغة" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "اللغة الحالية لحقول المحتوى." -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "توجد صفحة سابقة بنفس الـ Slug" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "عنوان القائمة" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "حرر المعروض في القائمة" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "عنوان الصفحة" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "حرر المعروض في أعلى متصفحك أو في الـ bookmarks." -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "التطبيقات" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "اربط تطبيق بهذه الصفحة" -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "حرر عنوان الـ URL" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "اترك هذا الحقل فارغ اذا أردت استخدام العنوان الإفتراضي" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "إعادة توجيه" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "أعد التوجيه الى عنوان الـ URL هذا" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "معلومات عن هذه الصفحة، تستخدم من قبل محركات البحث" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "قائمة بكلمات مفتاحية مفصولة بفاصلة، تستعمل من قبل محركات البحث" -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "توجد صفحة سابقة بعنوان الـ URL هذا" -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "عنوان الـ URL غير صحيح. مثال: /my/url " -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "مستخدم" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "حقوق إضافة الصفحةات تتطلب إضافة حقوق تعديل الصفحات أيضاً." -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "الرجاء تحديد مستخدم أو مجموعة أولاً" -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "أضف" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "تغيير" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "حذف" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "إسترجع (أي) صفحة" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "أعلم المستخدم" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"بعث رسالة تنبيهية للمسخدم حول تغيير اسم المستخدم أو كلمة المرور. يتطب عنوان " -"البريد الإلكتروني للمستخدم." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "بعث رسالة تنبيهية للمسخدم حول تغيير اسم المستخدم أو كلمة المرور. يتطب عنوان البريد الإلكتروني للمستخدم." -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "كلمة مرور الجديد" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "تأكيد كلمة المرور" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "التنبيه بالبريد الإلكتروني يتطلب بريد إلكتروني صحيح" -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "حقوق إضافة صفحات يتطلب حقوق تغيير الصفحات أولاً!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "حقوق إضافة مستخدمين جدد يتطلب حقوق تغيير مستخدمين أولاً!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "لكي تضيف الحقوق، عليك تعديلها أيضاً." -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "مخفي" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "إعدادات إفتراضية" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "" -"ملاحظة: هذه الصفحة ستقوم بإعادة التحميل عند تغيير المحدد. قم بالحفظ أولاً." +msgstr "ملاحظة: هذه الصفحة ستقوم بإعادة التحميل عند تغيير المحدد. قم بالحفظ أولاً." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "خيارات متقدمة" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "خيارات الإستمثال لمحركات البحث" -# الترجمة العربية هذه مأخوذة من مقال ويكيبيديا العربية -# http://ar.wikipedia.org/wiki/استمثال_محركات_البحث -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "أعلى" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "خطأ في قاعدة البيانات" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "صفحة" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "تم قبول الصفحة بنجاح!" -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "الـ Object %(name)s بالعنوان المفتاحي %(key)r غير موجود." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "يوجد ترجمة واحدة متوفرة لهذه الصفحة" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "تم حذف العنوان والإضافات للغة %(language)s." -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "هل أنت متأكد؟" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "ليس لديك الحقوق لنشر هذه الصفحة" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "لا تملك الحقوق لتغيير حالة تصفح هذه الصفحة" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "لا تملك الحقوق لتغيير هذه الصفحة" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "يجب تحديد لغة مدعومة!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "تمت إضافة الإضافة %(plugin_name)s الى %(placeholder)s" -#: admin/pageadmin.py:1129 -#, fuzzy +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" -msgstr "اللغة يجب أن تكون مختلفة عن لغة النسخة الأصلية" +msgstr "" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "تم نسخ إضافات اللغة %(language)s الى %(placeholder)s" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" -msgstr "" -"تم تعديل الإضافة %(plugin_name)s في %(position)s الموجودة في %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgstr "تم تعديل الإضافة %(plugin_name)s في %(position)s الموجودة في %(placeholder)s" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "تم نقل الإضافات" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." -msgstr "" -"تم حذف الإضافة %(plugin_name)s الموجودة في %(placeholder)s في المكان %" -"(position)s." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." +msgstr "تم حذف الإضافة %(plugin_name)s الموجودة في %(placeholder)s في المكان %(position)s." -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "حقوق الصفخة" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "حقوق المستخدمين والمجموعات" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "إدارة حقوق الصفحة" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "معلومات المستخدم" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "المجموعات" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "كلمة المرور" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "نسخ الحقوق" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "نسخ الإدارة" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "نسخ القالب من أقرب آب" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "معلومات" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Indices and tables:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "جدول المحتويات الكامل" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "قائمة بجميع الأقسام والأقسام الفرعية" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "صفحة البحث" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "ابحث في الملفات التوثيقية" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Global Module Index" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "وصول سريع لجميع الموديولز" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "الفهرس العام" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "all functions, classes, terms" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "الفهرس" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "فهرس كامل في صفحة واحدة" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "فهرس الصفحات بحسب الأحرف" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "من الممكن أن يكون ضخماً" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "التصفح" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "جدول المحتويات" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "الموضوع السابق" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "الفصل السابق" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "الموضوع التالي" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "الفصل التالي" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "هذه الصفحة" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "أظهر الأصل" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "بحث سريع" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "إذهب" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "أدخل مفتاح البحث، الإضافة أو إسم الوظيفة." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "حول هذه الوثائق" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "البحث" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "حقوق النشر" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "بحث" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "نتائج البحث" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "لا يوجد أي نتيجة لما تبحث عنه." - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "حدد هذه الصفحة" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "إضافة آخر" @@ -485,34 +333,34 @@ msgstr "إضافة آخر" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "اللغة" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "الموضع" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "تاريخ الإنشاء" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "slot" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "plugin_name" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -522,7 +370,7 @@ msgstr "العنوان" msgid "path" msgstr "المكان" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "slug" @@ -530,15 +378,15 @@ msgstr "slug" msgid "everybody" msgstr "الجميع" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "يستطيع التعديل" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "مجموعات" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "يستطيع النشر" @@ -560,7 +408,7 @@ msgid "navigation extenders" msgstr "توسيع التصفح" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "يوجد تعديل في عنوان الـ url" @@ -576,325 +424,321 @@ msgstr "الناشر" msgid "reverse url id" msgstr "reverse url id" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "يتطلب تسجيل الدخول" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "soft root" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "تاريخ نهاية النشر" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "القالب" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "تاريخ النشر" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "التصفح" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "التطبيق" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "إعادة توجيه" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "كلمات مفتاحية" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "الشرح" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "الصفحة الحالية" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "أولاد الصفحة (مباشرة)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "الصفحة وأولادها (مباشرة)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "تفرعات الصفحة" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "الصفحة وتفرعاتها" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "الصفحة" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "المستخدم" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "إدارة الصفحة" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "إدارة الأولاد" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "إدارة التفرعات" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "مدير الصفحة" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "تم الإنشاء" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "تم التغيير" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "delete req." -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "move req." -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "publish req." -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "unpublish req." -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "تم القبول" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "حالة مدير الصفحة" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "حالات مدير الصفحة" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "req. app." -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "حذف" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "app. par." -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "منشأ من قبل" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "مغير من قبل" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." -msgstr "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." +msgstr "When the page should go live. Status must be \"Published\" for page to go live." -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "متى ستنتهي صلاحية الصفحة. إترك فارغاً لعدم التحديد" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "لن يتم عرض الآباء في التصفح" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" -msgstr "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" +msgstr "An unique identifier that is used with the page_url templatetag for linking to this page" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "هل تم نشره؟" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "القالب المستعمل لعرض المحتوى." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "الموقع الذي ستتوفر الصفحة عن طريقه" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "الموقع" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "حالة المدير" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "حرر المعروض في القائمة" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "الصفحات" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "تم نسخ الصفحة." -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "الإفتراضي" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "يستطيع الإضافة" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "يستطيع الحذف" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "يستطيع تغيير الخيارات المتقدمة" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "يستطيع تغيير الصلاحيات" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "على مستوى الصفحة" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "يستطيع التحريك" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "يستطيع إدارة" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "يستطيع إسترجاع الصفحات" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "يستطيع إسترجاع أي صفحة محذوفة" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "عند عدم التحديد، سيتم إعطاء المستخدم الصلاحيات لكافة المواقع." -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "المواقع" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "صلاحية الصفحة العامة" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "صلاحيات الصفحة العامة" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "السماح عند" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "صلاحيات الصفحة" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "المستخدم (الصفحة)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "المستخدمين (الصفحة)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "مجموعة المستخدم (الصفحة)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "مجموعات المستخدم (الصفحة)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "العرض" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "تحرير العنوان في القائمة" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "المكان" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "تحرير العنوان في الـ HTML" @@ -902,21 +746,21 @@ msgstr "تحرير العنوان في الـ HTML" msgid "File" msgstr "الملف" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "الملف" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "فلاش" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "استخدم ملف swf" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "الطول" @@ -924,7 +768,7 @@ msgstr "الطول" msgid "Missing flash plugin." msgstr "لا يوجد دعم لفلاش." -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "خرائط غوغل" @@ -980,15 +824,15 @@ msgstr "مخطط الطريق" msgid "Map" msgstr "الخريطة" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "عنوانك" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "احسب الطريق" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "قم بوراثة الإضافات من الصفحة" @@ -997,12 +841,8 @@ msgid "Language or Page must be filled out" msgstr "يجب أن يتم تعبئة اللغة أو الصفحة" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" -msgstr "" -"قم باختيار صفحة ليتم وضع إضافاتها في مكان محدد، سيتم إختيار الصفحة الحالية " -"عند عدم التحديد." +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" +msgstr "قم باختيار صفحة ليتم وضع إضافاتها في مكان محدد، سيتم إختيار الصفحة الحالية عند عدم التحديد." #: plugins/inherit/models.py:11 msgid "Optional: the language of the plugins you want" @@ -1012,70 +852,69 @@ msgstr "غير ضروري: لغة الإضافة التي تريد" msgid "Link" msgstr "الرابط" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "الاسم" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "رابط" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "الرابط الى الصفحة يحمل الأفضلية على رابط نصي." -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "mailto" -#: plugins/link/models.py:14 -#, fuzzy +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." -msgstr "عنوان بريد إلكتروني لديه الأفضلية على رابط نصي." +msgstr "" #: plugins/picture/cms_plugins.py:9 msgid "Picture" msgstr "الصورة" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "يسار" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "يمين" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "صورة" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "هل ستكون الصفحة الظاهرة قابلة للضغط" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "النص الثانوي" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "شرح نصي عن الصورة" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "شرح تفصيلي" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "شرح إضافي عن الصورة" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "جانبي" @@ -1094,23 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "" #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "Snippets" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "معلومات للتشويق" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "هل ستكون الصورة الظاهر قابلة للضغط" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "هل ستكون الصورة الظاهر قابلة للضغط." @@ -1122,7 +960,7 @@ msgstr "المزيد" msgid "Text" msgstr "النص" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "body" @@ -1177,9 +1015,8 @@ msgid "Twitter" msgstr "تويتر" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "حساب مستخدم تويتر" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1202,15 +1039,11 @@ msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "عند التوفر، سيتم عرض شرح الرابط كرابط لحسابك على تويتر." #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "مستخدم" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1221,92 +1054,84 @@ msgstr "فيديو" msgid "Color Settings" msgstr "إعدادات الألوان" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "ملف الفيديو" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "استخدم ملفات .flv أو ملف فيديو منمط بـ h264" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "عنوان url لملف الفيديو" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" -msgstr "" -"عنوان url لفيديو على فيميو أو يوتيوب. مثال http://www.youtube.com/watch?" -"v=YFa59lK-kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" +msgstr "عنوان url لفيديو على فيميو أو يوتيوب. مثال http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "عرض الصورة" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "تشغيل تلقائي" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "إخفاء تلقائي" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "ملئ الشاشة" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "إعاد التشغيل عند الإنتهاء" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "لون الخلفية" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "بنمط ستا عشري، أي ff00cc" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "لون النص" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "لون شريط التنقل" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "لون خلفية شريط التنقل" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "لون شريط التحميل" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "اللون الخارجي للزر" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "اللون الأعلى للزر" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "لون التحديد للزر" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" -msgstr "" -"لم يتم العثور على مشغل فلاش. حمل من هنا" +msgid "Missing flash plugin. Download here" +msgstr "لم يتم العثور على مشغل فلاش. حمل من هنا" #: templates/admin/page_submit_line.html:3 #: templates/admin/cms/page/change_form.html:273 @@ -1333,12 +1158,13 @@ msgid "Save and continue editing" msgstr "إحفظ وأكمل التعديل" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "تحتاج الصفة %(page)s الموافقة منك." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "آخر تعديل" @@ -1347,11 +1173,18 @@ msgstr "آخر تعديل" msgid "Log in to administration here." msgstr "سجل الدخول للإدارة من هنا here." +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "اسم المستخدم:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "كلمة المرور:" @@ -1417,8 +1250,12 @@ msgstr "اعرض على الموقع" #: templates/admin/cms/page/plugin_change_form.html:84 msgid "Please correct the error below." msgid_plural "Please correct the errors below." -msgstr[0] "الرجاء تصحيح الخطأ في الأسفل." -msgstr[1] "الرجاء تصحيح الأخطاء في الأسفل." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" #: templates/admin/cms/page/change_form.html:148 msgid "All permissions" @@ -1436,12 +1273,8 @@ msgstr "حالة الصفحة" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." -msgstr "" -"يجب إدارة الصفحة من مستخدم بمستوى %(moderation_level)s، أرسل رسالة إلى " -"المدير." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." +msgstr "يجب إدارة الصفحة من مستخدم بمستوى %(moderation_level)s، أرسل رسالة إلى المدير." #: templates/admin/cms/page/change_form.html:185 msgid "Request approvemet" @@ -1502,9 +1335,8 @@ msgid "published" msgstr "منشور" #: templates/admin/cms/page/change_list_tree.html:15 -#, fuzzy msgid "start" -msgstr "الوضع" +msgstr "" #: templates/admin/cms/page/change_list_tree.html:16 msgid "end" @@ -1524,8 +1356,8 @@ msgid "edit this page" msgstr "حرر هذه الصفحة" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "حرر" @@ -1581,7 +1413,7 @@ msgid "add" msgstr "أضف" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "قبول مباشر" @@ -1596,6 +1428,7 @@ msgid "Unpublish" msgstr "التراجع عن النشر" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "نشر" @@ -1724,146 +1557,225 @@ msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "لم يتم تحديد أي إضافة. ضع إضافة في هذا المكان." #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "الإضافات المتوفرة" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "قم بالنقل الى %(name)s" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "هل أنت متأكد من أنك تريد حذف هذه الإضافة؟" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "وضع التعديل" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "الحالة" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "اسم المستخدم" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "تسجيل دخول" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "القالب" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "انقل" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "انقل/أضف الصفحات" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "أضف ولداً" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "أضف ولداً للصفحة" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "أضف أخوة" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "أضف صفحة أخت" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "احذف الصفحة" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "إدارة الموقع" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "خيارات الصفحة" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "التاريخ" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "اعرض التاريخ" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "تسجيل خروج" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "اقفل" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "أغلق" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "اعلى" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "اسفل" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "خيارات" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "احذف الإضافة" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "فك الإرتباط مع مدير الصفحة" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "فك إرتباط الأولاد مع الإدارة" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "فك ربط الآباء مع الإدارة" -#: templatetags/cms_tags.py:69 -#, fuzzy, python-format +#: templatetags/cms_tags.py:78 +#, python-format msgid "Page not found on %(domain)s" -msgstr "Reverse ID not found on %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "الأب أولاً" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "قبول" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "نظام ادارة المحتوى - الصفحة %s تحتاج الى الموافقة." @@ -1876,8 +1788,8 @@ msgstr "نظام ادارة المحتوى - تم انشاء المستخدم." msgid "CMS - your user account was changed." msgstr "نظام ادارة المحتوى - تم التغيير على حسابك." -#~ msgid "menu login required" -#~ msgstr "تسجيل الدخول للقائمة مطلوب" +#~ msgid "fgcolor" +#~ msgstr "" -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "اعرض هذه الصفحة في القائمة في حالة تسجيل الدخول من قبل المستخدم" +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/ar/LC_MESSAGES/djangojs.mo b/cms/locale/ar/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..4beb2b4e943664dd5be471930c2fb53a342270f5 GIT binary patch literal 1061 zcmb_a&ubGw6kfF=t!*i!T1)ClkZCgAOx*0OJF~4lc<2w? zTF;&ZrIZ$8^-vN2k{J+>{vEzCVnjhfeDE>foA1r{-t6q>OMNdKj6TF=L>X}&aUWqL zK};bYA?_kh5!VqH&N$8|#314!<`>U7P7~KBxK?oef-6eSS%eMik6Vs2nKD=x8OZEA zS);K6C7|AY^dJcwzVUHx~* z28)=&shV6u5@jKe$DM^#v{+q{xdyq%QprW^L!*V$3sP^(+#*Xvs>r+yd4t@{LP=`E zho(}A^b3U$ua+(6>!Mv~@Kr7fy^{qlWyWM~;ZBWArHm?cCby_!J``QgBW{tn!{844 zMI=M6i-ly7t#UiT?{!|uFAZOFF>+NZ6{)2(mJwAV^+B{ahjN=uSdydwDlEC1S;5^j=SJNW~tjLK0CPkJ;Bu zB~!stZHA2W>g)_FEG5%%T{Q4%eHdBh>PL4UXqsDyvXn+-Mx<@&LyTV?QyC16*#|%x z#6jS~IJkgn5O_$vE-fN0TH5cqZY3zez(ALm1J9l)^)%1>NgN$TaS+8DImhgpZP2gH zjy?wSR39VV(kDpG4(LO(tq-hZHZA|QVV+rW3v(=ZrQhgxpij)6%{pd7f9Re%McUCv z)_D(24$X7@^3T1F^+&UB_N|?5+cBHi@Rz^(zclLTw`Rj^f!Q{@NO!ya4)lBMyP=P8 F&aaY5jeY, 2010. -# -#, fuzzy +# FIRST AUTHOR , YEAR. +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Beshr Kayali \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" "Language-Team: LANGUAGE \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" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "هل أنت متأكد من تغيير الحقل %(field_name)s دون حفظ الصفحة أولاً؟" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -"لم يتم حفظ جميع الإضافات. هل أنت متأكد من حفظ الصفحة؟ ستخسر جميع الإضافات " -"الغير محفوظة." -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "هل أنت متأكد من الإنتقال الى مكان آخر دون حفظ الصفحة أولاً؟" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "هل أنت متأكد من حذفك لهذه الإضافة؟" diff --git a/cms/locale/bg/LC_MESSAGES/django.mo b/cms/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..94eb97fbd98e9da7458e9078407c545edad28f63 GIT binary patch literal 28107 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 literal 0 HcmV?d00001 diff --git a/cms/locale/bg/LC_MESSAGES/django.po b/cms/locale/bg/LC_MESSAGES/django.po index 0370de76177..3881a6838ce 100644 --- a/cms/locale/bg/LC_MESSAGES/django.po +++ b/cms/locale/bg/LC_MESSAGES/django.po @@ -2,485 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: django-cms\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:52+0200\n" -"PO-Revision-Date: 2009-11-10 22:37+0100\n" -"Last-Translator: Benjamin Wohlwend \n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:38+0000\n" +"Last-Translator: ojii \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" "X-Poedit-Language: English\n" -"X-Poedit-Country: SWITZERLAND\n" "X-Poedit-SourceCharset: utf-8\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Разширени опции" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Заглавие" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "Заглавие по подразбиране" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Слъг" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "Часта от заглавието, показваща се в адреса" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Език" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "Настоящия език на полетата със съдържанието." -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Друга страница със този слъг вече съществува" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Заглавие на менюто" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Напишете показаното в менюто" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Заглавие на страницата" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "Напишете показаното отгоре във Вашия браузър или бележки" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Приложение" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Прикачи приложение на тази страница." -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Напиши адрес" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." -msgstr "" -"Оставете това поле празно, ако трябва да бъде използван стандартен път." +msgstr "Оставете това поле празно, ако трябва да бъде използван стандартен път." -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Пренасочване" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Пренасочи до тази страница." -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "Описание на страницата, използвано от търсещите машини." -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "A list of comma separated keywords sometimes used by search engines." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Страница със обратен адрес вече съществува." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "Невалиден адрес, използвайте формат от типа на /моя/адрес" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "потребител" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "Правата за добавяне изискват и права за редактиране." -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Първо изберете потребител или група." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Добави" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Промени" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Изтрий" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Възстанови (които и да е) страници" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Предопреди потребителя" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Изпращането на имейл предупреждение на потребителя изисква неговото добавяне." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Изпращането на имейл предупреждение на потребителя изисква неговото добавяне." -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Нова парола" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Потвърждение на новата парола" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "И-мейл потвърждението изисква валиден имейл адрес." -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "Правото за добавяне изисква и право за редактиране." -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" -msgstr "" -"Правото за добавяне на потребители изисква и правото за тяхното редактиране." +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" +msgstr "Правото за добавяне на потребители изисква и правото за тяхното редактиране." -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "За да можете да добавяте права трябва да можете и да ги редактирате." -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Скрито" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Основни настройки" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "" -"Забележка: страницата презарежда ако промените значението. Запазете " -"промените първо." +msgstr "Забележка: страницата презарежда ако промените значението. Запазете промените първо." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Разширени настройки" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "SEO Настройки" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "по-високо" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Грешка в БД" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "страница" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "Страницата беше успешно удобрена." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "%(name)s обект с основен ключ %(key)r не съществува." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Съществува само един превод за тази страница." -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "Заглавието и плъгините на %(language)s език бяха изтрити" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Сигурен ли сте?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "Нямате права да публикувате тази страница" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "Нямате право да променяте статуса на навигацията на тази страница." -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "Нямате право да променяте тази страница" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "Езика трябва да бъде поддържан!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "%(plugin_name)s плъгин добавен в %(placeholder)s" -#: admin/pageadmin.py:1129 -#, fuzzy +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" -msgstr "Езика трябва да бъде поддържан!" +msgstr "Езикът трябва да е различен от копирания език!" -#: admin/pageadmin.py:1139 -#, fuzzy, python-format +#: admin/pageadmin.py:1179 +#, python-format msgid "Copied %(language)s plugins to %(placeholder)s" -msgstr "%(plugin_name)s плъгин добавен в %(placeholder)s" +msgstr "" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" -msgstr "" -"%(plugin_name)s плъгин беше редактиран в позиция %(position)s на %" -"(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgstr "%(plugin_name)s плъгин беше редактиран в позиция %(position)s на %(placeholder)s" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Плъгините бяха преместени" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." -msgstr "" -"%(plugin_name)s плъгин в позиция %(position)s на %(placeholder)s беше изтрит." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." +msgstr "%(plugin_name)s плъгин в позиция %(position)s на %(placeholder)s беше изтрит." -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Права на страницата" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Права на Потребител и Група" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Управление на правата на страницата" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Потребителска информация" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Групи" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Парола" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Копирай правата" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Копирай модерирането" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Наследи темплейта от най-близкия родител" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Преглед" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Индекси и таблици:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Пълна таблица със съдържанието" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "покажи всички секции и подсекции" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Страница за търсене" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "търси тази документация" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Глобален индекс на модулите" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "бърз достъп до всички модули" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Основен индекс" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "всички функции, класове, термини" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Начало" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Пълен индекс на една страница" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Индексирай страниците по буква" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "може да бъде огромен" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Навигация" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Таблица със съдържанието" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Предишна тема" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "предишна глава" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Следваща тема" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "следваща глава" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Тази страница" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "покажи кода" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Бързо търсене" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Давай" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "Въведете условията за търсене или модул, клас, име на функция." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "Относно тези документи" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Търси" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "търси" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Резултати от търсенето" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "избери тази страница" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "Добави друг" @@ -488,34 +333,34 @@ msgstr "Добави друг" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "език" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "позиция" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "дата на създаване" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "слот" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "plugin name" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -525,7 +370,7 @@ msgstr "заглавие" msgid "path" msgstr "път" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "слъг" @@ -533,15 +378,15 @@ msgstr "слъг" msgid "everybody" msgstr "всеки" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "може да се редактира" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "група" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "може да публикува" @@ -563,7 +408,7 @@ msgid "navigation extenders" msgstr "разширители на навигацията" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "has URL overwrite" @@ -579,324 +424,321 @@ msgstr "автор" msgid "reverse url id" msgstr "обръщане на url по id" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "необходима е оторизация" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "мека-основа" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "крайна дата на публикацията" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "темплейт" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "дата на публикуване" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "в навигацията" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "приложение" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" -msgstr "" +msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "пренасочване" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "ключови думи" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "описание" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" -msgstr "" +msgstr "Текуща страница" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Деца на страницата (непосредствени)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Страница и деца (непосредствени)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Потомци на страницата" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Страница и потомци" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Страница" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Потребител" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Модерирай страницата" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "Модерирай децата" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "Модерирай потомците" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "създадена" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "променена" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "deletion request" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "move request" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "publish request" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "unpublish request" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "одобрена" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "Статус на модератор на страницата" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "Статуси на модератори" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "approval required" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "изтрий" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "създадена от" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "променена от" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "За да се вижда страницата статуса трябва да е \"Публикувана\"" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "Кога да изтече страницата? Остави празно за да не изтича." -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Всички прародители няма да бъдат показвани в навигацията" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" -msgstr "" -"Уникален идентификатор, използван с page_url темплейт тага за създаване на " -"връзка до тази страница." +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" +msgstr "Уникален идентификатор, използван с page_url темплейт тага за създаване на връзка до тази страница." -#: models/pagemodel.py:58 -#, fuzzy +#: models/pagemodel.py:69 msgid "attached menu" -msgstr "флаш меню" +msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "публикувано" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "Шаблон използван за показването на съдържанието." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "Тази страница от сайта е достъпна на." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "сайт" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "статус на модератор" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Напишете показаното в менюто" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "страници" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "Страницата беше копирана." -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "по подразбиране" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "може да добавя" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "може да трие" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "може да променя разширени настройки" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "може да променя разрешения" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "на ниво на страницата" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "може да се движи" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "може да модерира" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "може да възтановява страници" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "може да възтановява всякаква изтрита страница" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "сайтове" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Глобални права на страницата" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Глобални права на страниците" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Права на страницата" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Потребител (страница)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Потребители (страница)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Потребителска група (страница)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Потребителски групи (страница)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "широчина" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "презаписвай заглавието в менюто" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "Път" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "презаписвай заглавието (HTML Title)" @@ -904,21 +746,21 @@ msgstr "презаписвай заглавието (HTML Title)" msgid "File" msgstr "Файл" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "файл" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Флаш" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "използвай swf файл" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "височина" @@ -926,9 +768,9 @@ msgstr "височина" msgid "Missing flash plugin." msgstr "Липсващ flash Плъгин" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" -msgstr "" +msgstr "Google Карта" #: plugins/googlemap/models.py:9 msgid "map title" @@ -956,16 +798,15 @@ msgstr "ниво на увеличаване" #: plugins/googlemap/models.py:18 msgid "latitude" -msgstr "" +msgstr "ширина" #: plugins/googlemap/models.py:19 msgid "Use latitude & longitude to fine tune the map possiton." -msgstr "" -"Използвайте latitude & longitude за да определите позицията на картата." +msgstr "Използвайте latitude & longitude за да определите позицията на картата." #: plugins/googlemap/models.py:20 msgid "longitude" -msgstr "" +msgstr "дължина" #: plugins/googlemap/models.py:22 msgid "route planer title" @@ -983,26 +824,24 @@ msgstr "" msgid "Map" msgstr "Карта" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "Твоя адрес" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" -msgstr "" +msgstr "Изчисли маршрута" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" -msgstr "" +msgstr "Наследяване на плъгини от страница" #: plugins/inherit/forms.py:19 msgid "Language or Page must be filled out" msgstr "" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "" #: plugins/inherit/models.py:11 @@ -1011,30 +850,30 @@ msgstr "" #: plugins/link/cms_plugins.py:12 msgid "Link" -msgstr "" +msgstr "Линк" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "име" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "връзка" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "Линк до страницата има приоритет над текстов линк." -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "email address" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "Имейл адрес има приоритет над текстов линк." @@ -1042,40 +881,40 @@ msgstr "Имейл адрес има приоритет над текстов л msgid "Picture" msgstr "Картинка" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "ляво" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "дясно" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "картинка" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "ако може да се натиска настоящата снимка" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "алтернативен текст" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "текстово описание на снимката" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "дълго описание" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "допълнително описание на снимката" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "страна" @@ -1091,27 +930,25 @@ msgstr "Шаблона %(template)s не съществува." #: plugins/snippet/models.py:13 plugins/snippet/migrations/0001_initial.py:18 msgid "HTML" -msgstr "" +msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "" #: plugins/snippet/models.py:25 -#, fuzzy msgid "Snippets" -msgstr "Снипет" +msgstr "" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "Ако настоящата снимка се натиска" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "Ако снимката ще се натиска" @@ -1123,7 +960,7 @@ msgstr "повече" msgid "Text" msgstr "Текст" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "тяло" @@ -1174,14 +1011,12 @@ msgid "Insert plugin" msgstr "Вмъкни добавка" #: plugins/twitter/cms_plugins.py:10 -#, fuzzy msgid "Twitter" -msgstr "Заглавие" +msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "twitter потребител" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1201,20 +1036,14 @@ msgstr "подсказка на връзката" #: plugins/twitter/models.py:9 msgid "If given, the hint is displayed as link to your Twitter profile." -msgstr "" -"Ако бъде предоставено, подсказката ще бъде показана като линк до Вашия " -"Twitter профил." +msgstr "Ако бъде предоставено, подсказката ще бъде показана като линк до Вашия Twitter профил." #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "потребител" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1222,98 +1051,86 @@ msgid "Video" msgstr "Видео" #: plugins/video/cms_plugins.py:42 -#, fuzzy msgid "Color Settings" -msgstr "SEO Настройки" +msgstr "" -#: plugins/video/models.py:10 -#, fuzzy +#: plugins/video/models.py:9 msgid "movie file" -msgstr "видео" +msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 -#, fuzzy +#: plugins/video/models.py:10 msgid "movie url" -msgstr "видео" +msgstr "" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "" -#: plugins/video/models.py:12 -#, fuzzy +#: plugins/video/models.py:11 msgid "preview image file" -msgstr "използвайте файл със снимка" +msgstr "" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "автоматично започване" -#: plugins/video/models.py:18 -#, fuzzy +#: plugins/video/models.py:17 msgid "auto hide" -msgstr "автоматично зареждане" +msgstr "" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "на цял екран" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "циклично" -#: plugins/video/models.py:23 -#, fuzzy +#: plugins/video/models.py:22 msgid "background color" -msgstr "background color" +msgstr "" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "" -#: plugins/video/models.py:25 -#, fuzzy +#: plugins/video/models.py:24 msgid "seekbar color" -msgstr "background color" +msgstr "" -#: plugins/video/models.py:26 -#, fuzzy +#: plugins/video/models.py:25 msgid "seekbar bg color" -msgstr "background color" +msgstr "" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "" #: templates/admin/page_submit_line.html:3 @@ -1341,14 +1158,13 @@ msgid "Save and continue editing" msgstr "Запази и продължи да редактираш" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." -msgstr "" -"Страницата %(page)s може да изисква " -"потвърждение от Вас." +msgid "Page %(page)s may require approvement by you." +msgstr "Страницата %(page)s може да изисква потвърждение от Вас." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Последни промени" @@ -1357,11 +1173,18 @@ msgstr "Последни промени" msgid "Log in to administration here." msgstr "Влезте в администрацията тук." +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Потребител:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Парола:" @@ -1446,9 +1269,7 @@ msgstr "Статуси на страниците" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "" #: templates/admin/cms/page/change_form.html:185 @@ -1510,13 +1331,12 @@ msgid "published" msgstr "публикувано" #: templates/admin/cms/page/change_list_tree.html:15 -#, fuzzy msgid "start" -msgstr "статус" +msgstr "начало" #: templates/admin/cms/page/change_list_tree.html:16 msgid "end" -msgstr "" +msgstr "край" #: templates/admin/cms/page/change_list_tree.html:18 msgid "last changes" @@ -1532,8 +1352,8 @@ msgid "edit this page" msgstr "редактирай тази страница" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "редактирай" @@ -1554,9 +1374,8 @@ msgid "softroot" msgstr "мека основа" #: templates/admin/cms/page/menu_item.html:23 -#, fuzzy msgid "home" -msgstr "Начало" +msgstr "начало" #: templates/admin/cms/page/menu_item.html:26 #, python-format @@ -1590,7 +1409,7 @@ msgid "add" msgstr "добави" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "Директно одобри" @@ -1605,6 +1424,7 @@ msgid "Unpublish" msgstr "Не публикувай" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Публикувай" @@ -1713,14 +1533,12 @@ msgid "Add Plugin" msgstr "Добави плъгин" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:18 -#, fuzzy msgid "From Language" -msgstr "Език" +msgstr "От език" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:25 -#, fuzzy msgid "Copy Plugins" -msgstr "Добавки" +msgstr "Копирай Плъгини" #: templates/admin/cms/page/widgets/plugin_editor.html:12 msgid "You must save the page first to add plugins." @@ -1735,222 +1553,239 @@ msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "В момента няма плъгини. Добавете за съответния placeholder." #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "Достъпни плъгини" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 -#, fuzzy, python-format +#: templates/cms/toolbar/toolbar.html:33 +#, python-format msgid "Move to %(name)s" -msgstr "Възстановете изтритото %(name)s" +msgstr "" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" -msgstr "" +msgstr "Наистина ли искате да изтриете този плъгин?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "" -#: templates/cms/toolbar/toolbar.html:63 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" -msgstr "статус" +msgstr "Статус" -#: templates/cms/toolbar/toolbar.html:74 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" -msgstr "Потребител:" +msgstr "Потребителско име" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" -msgstr "връзка" +msgstr "влез" + +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" -#: templates/cms/toolbar/toolbar.html:90 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" -msgstr "темплейт" +msgstr "" -#: templates/cms/toolbar/toolbar.html:101 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:195 msgid "move" -msgstr "видео" +msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" -msgstr "Добави дете" +msgstr "" -#: templates/cms/toolbar/toolbar.html:103 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" -msgstr "Добави дете" +msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:106 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" -msgstr "Изтрий" +msgstr "Изтрий страницата" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" -msgstr "" +msgstr "Администрация на сайта" -#: templates/cms/toolbar/toolbar.html:114 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" -msgstr "Основни настройки" +msgstr "Настройки на страницата" -#: templates/cms/toolbar/toolbar.html:116 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:210 msgid "history" -msgstr "История" +msgstr "история" -#: templates/cms/toolbar/toolbar.html:116 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" -msgstr "История" +msgstr "Преглед на историята" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" -msgstr "" +msgstr "Изход" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" -msgstr "" +msgstr "Затвори" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "" -#: templates/cms/toolbar/toolbar.html:139 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:235 msgid "down" -msgstr "включено" +msgstr "" -#: templates/cms/toolbar/toolbar.html:141 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" -msgstr "SEO Настройки" +msgstr "Настройки" -#: templates/cms/toolbar/toolbar.html:143 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" -msgstr "Промени избраната добавка" +msgstr "" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "Развържи страницата за модериране" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "Развържи модерирането на децата" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "Развържи модерирането на потомците" -#: templatetags/cms_tags.py:69 -#, fuzzy, python-format +#: templatetags/cms_tags.py:78 +#, python-format msgid "Page not found on %(domain)s" -msgstr "ID за обръщане не беше намерено на %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 -msgid "parent first" -msgstr "първо родителите" +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" -#: utils/moderator.py:89 -msgid "approve" -msgstr "потвърди" +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" -#: utils/moderator.py:240 -#, python-format -msgid "CMS - Page %s requires approvement." -msgstr "CMS - Страницата %s изисква одобряване." +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" -#: utils/permissions.py:206 -msgid "CMS - your user account was created." -msgstr "CMS — Вашия потребителски профил беше създаден." +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" -#: utils/permissions.py:208 -msgid "CMS - your user account was changed." -msgstr "CMS — Вашия потребителски профил беше променен." +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" -#~ msgid "menu login required" -#~ msgstr "необходима е оторизация от менюто" +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "показвай тази страница в менюто, само ако потребителя е оторизиран" +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" -#~ msgid "Twitter recent entries plugin" -#~ msgstr "Последни вписвания от Twitter" +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" -#~ msgid "overlay" -#~ msgstr "преден слой" +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" -#~ msgid "blank" -#~ msgstr "празно" +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" -#~ msgid "self" -#~ msgstr "самия елемент" +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" -#~ msgid "parent" -#~ msgstr "родител" +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" -#~ msgid "window" -#~ msgstr "прозорец" +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" -#~ msgid "opaque" -#~ msgstr "непрозрачен" +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" -#~ msgid "transparent" -#~ msgstr "прозрачен" +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" -#~ msgid "controller style" -#~ msgstr "стил на контролера" +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" -#~ msgid "mute" -#~ msgstr "заглушаване" +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" -#~ msgid "mute only" -#~ msgstr "само заглуши" +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" -#~ msgid "volume" -#~ msgstr "ниво на звука" +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" -#~ msgid "in range <0, 100>" -#~ msgstr "значение от <0, 100>" +#: utils/moderator.py:83 +msgid "parent first" +msgstr "първо родителите" + +#: utils/moderator.py:90 +msgid "approve" +msgstr "потвърди" + +#: utils/moderator.py:251 +#, python-format +msgid "CMS - Page %s requires approvement." +msgstr "CMS - Страницата %s изисква одобряване." + +#: utils/permissions.py:206 +msgid "CMS - your user account was created." +msgstr "CMS — Вашия потребителски профил беше създаден." + +#: utils/permissions.py:208 +msgid "CMS - your user account was changed." +msgstr "CMS — Вашия потребителски профил беше променен." #~ msgid "fgcolor" #~ msgstr "foreground color" -#~ msgid "Revisions" -#~ msgstr "Ревизии" - #~ msgid "Wanted language has not been translated yet." #~ msgstr "Желания език все още не е преведен.." diff --git a/cms/locale/bg/LC_MESSAGES/djangojs.mo b/cms/locale/bg/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..842bf9cc0d1bfe988da0009998998fec63333edf GIT binary patch literal 1054 zcmb_aPfrs;6dx61vPaJzo(B_%OuH>c$U-TIg^(0MQaqWMX?NHT+0LvpvmiI+K$N>j zzeD}gv=N1GV5VQd&*GcXNTLT5b&_A^?eG2jy*K;)=EPfqX995xv4FUac#7~RL#!a4 zBOW7qh-t))D}=m3+(R7W_t{lKUgKT6M#v`K-|$8kL3(t2eWVCk)*KF14kjNP2TWS9 z3R-O@6AqR&4IBvDR=EYk_JvHqwmD=Box4ICTm5qljK4FvD|i||ldQw1{=Q<&Q*KdJ zTNudFJQ1==wzS&gElby9`h;sEl#C$WL-mTbIwsiWnbMYSm_)?%L7o`eP!Y7P%}i7* zCOBH&EVNXo7>j+OikF#1VNA|Vu(jEsE1ENlmFYufc?9LKRH9*-hO-dPMrAbaham>i zZN4wOg5TpxGttcK-4IVuXU5WoX40h0Djk8^69N`Ge90SyR(lacWRl~GX@j#)1oh=d zYdgzpHCU+Emr_wsI#~=h);DUG6PF5Mu%e{p5^Eo3DAMv5wwR?%$a(*o+HhOhX{^$@ z%Q&xLmup&+EfwR_MljbD_GkA9nn|#g=9;B+Rq2k2K;qW%(^Sgy{sGXeOiH+2fznh! z+&kBGgW;>;ksG+Lt_$we4Zt(*v+E+;1NX_(=fjuo%zbe^j2eu1B)YDT-k#5y2KOGV z{y4mkzVlI;592bv$0)_;A77L_K?42Nf06OaZ|c>Lgu)|3}Ec^+)pz YT<>BVN4TE8?|$x1hbQi%-)EKl09Z%2bN~PV literal 0 HcmV?d00001 diff --git a/cms/locale/bg/LC_MESSAGES/djangojs.po b/cms/locale/bg/LC_MESSAGES/djangojs.po index 0d036e5d28f..c19b2faaaaa 100644 --- a/cms/locale/bg/LC_MESSAGES/djangojs.po +++ b/cms/locale/bg/LC_MESSAGES/djangojs.po @@ -2,36 +2,35 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" -msgstr "" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" +msgstr "Наистина ли искате да промените %(field_name)s и без запазване на страница първа?" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" -msgstr "" +msgstr "Наистина ли искате да промените раздели, без да записвате страница първа?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" -msgstr "" +msgstr "Наистина ли искате да изтриете този плъгин?" diff --git a/cms/locale/bn/LC_MESSAGES/django.mo b/cms/locale/bn/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..7f069de021db0a3c2557a7a54ea2f76e387dd156 GIT binary patch literal 570 zcmZWl%We}f6b+BnELpR-NGw2bGoA>w!ELIxX(~l(AW8>{*g4}{kE0oT@FUO<>F@Ph z@K7~baHQkcJ=Z?R53gR{4-%dwzD|6b_#*LRVvlh@JRb}`r>WQMuyl4qRlvE#@8rC; zhJ)M)qbydf&sNk~7jWT~mUteO$I^1BL+CuubEQKa*Tc%Txzt;2^L=Noy^rLx<<}CY zjzmZ|aU>%2Z zG8@rq12?vAev^@K-05FYNGHOnYK3lkgD0ucs3;U+Nuo_5d&9%3hGR)vYHXL%pFSO) zWQ+M?w*Qf0$g-(5flPY)u1g^T{Rw&32yKp_s)h3uCf~|S9Pf3#$6InZGnJLvC=TPb z4m%$l)+Spv(TN5xt!q68)BW4}$><0kmy>q}-b|o)pZ&n4C8+~G<=`+gs?omQm#%Ge i6-^)QaEReH`Pns2Z8X8%ak##jmp^B#tFtc`+2AjggsmR{ literal 0 HcmV?d00001 diff --git a/cms/locale/bn/LC_MESSAGES/django.po b/cms/locale/bn/LC_MESSAGES/django.po index 306e1f84259..b4d64e9991f 100644 --- a/cms/locale/bn/LC_MESSAGES/django.po +++ b/cms/locale/bn/LC_MESSAGES/django.po @@ -2,470 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"Last-Translator: Benjamin Wohlwend \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: bn\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "" -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "" -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "" -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "" -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." msgstr "" -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "" -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." msgstr "" -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "" -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "" -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "" -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "" - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 +#: forms/fields.py:20 msgid "Select a valid page" msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "" @@ -473,34 +333,34 @@ msgstr "" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -510,7 +370,7 @@ msgstr "" msgid "path" msgstr "" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "" @@ -518,15 +378,15 @@ msgstr "" msgid "everybody" msgstr "" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "" @@ -548,7 +408,7 @@ msgid "navigation extenders" msgstr "" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "" @@ -564,320 +424,321 @@ msgstr "" msgid "reverse url id" msgstr "" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "" @@ -885,21 +746,21 @@ msgstr "" msgid "File" msgstr "" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "" @@ -907,7 +768,7 @@ msgstr "" msgid "Missing flash plugin." msgstr "" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "" @@ -963,15 +824,15 @@ msgstr "" msgid "Map" msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "" @@ -980,9 +841,7 @@ msgid "Language or Page must be filled out" msgstr "" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "" #: plugins/inherit/models.py:11 @@ -993,28 +852,28 @@ msgstr "" msgid "Link" msgstr "" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "" @@ -1022,40 +881,40 @@ msgstr "" msgid "Picture" msgstr "" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "" @@ -1074,23 +933,22 @@ msgid "HTML" msgstr "" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "" #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "" @@ -1102,7 +960,7 @@ msgstr "" msgid "Text" msgstr "" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "" @@ -1185,10 +1043,7 @@ msgid "query" msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1199,87 +1054,83 @@ msgstr "" msgid "Color Settings" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "" #: templates/admin/page_submit_line.html:3 @@ -1307,12 +1158,13 @@ msgid "Save and continue editing" msgstr "" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "" #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "" @@ -1321,11 +1173,18 @@ msgstr "" msgid "Log in to administration here." msgstr "" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "" @@ -1410,9 +1269,7 @@ msgstr "" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "" #: templates/admin/cms/page/change_form.html:185 @@ -1495,8 +1352,8 @@ msgid "edit this page" msgstr "" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "" @@ -1552,7 +1409,7 @@ msgid "add" msgstr "" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "" @@ -1567,6 +1424,7 @@ msgid "Unpublish" msgstr "" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "" @@ -1698,142 +1556,222 @@ msgstr "" msgid "Available plugins" msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "" @@ -1845,3 +1783,9 @@ msgstr "" #: utils/permissions.py:208 msgid "CMS - your user account was changed." msgstr "" + +#~ msgid "fgcolor" +#~ msgstr "" + +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/bn/LC_MESSAGES/djangojs.mo b/cms/locale/bn/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..54c809bd8044444c8d87e7f6f2f74c45afbe3bdf GIT binary patch literal 459 zcmZXPK~KUk6vr`o+R?Lznt0G?S+^L#;)oLlA=!|?@Lsk$N=Cc19np{B!LR3M@l6vr z_)mW6Yx-;7>-YKDR||3iTmVeZ`_yB9;95UBx%QK6oIez8Z2qh`Xw@ela zXFKC8c%`((i77;mpX0)x}B+=n~S|r?(wE8jH$VC<}WE8YR)XY zj7Q9JihSaEnE04<5$RGNiVh(l;sxJ}W`h5ocTY*@mOz}C8H-cRq$!zInxgS4j?pYk zBJ>y~;WT~G1Q_gl2#o=tS3Mb&j@lz?aB%6bf;)7oq1VnR^qYJ ZJ42DIezzv@`{=I>t|ht*kay#>egLwVg7N?W literal 0 HcmV?d00001 diff --git a/cms/locale/bn/LC_MESSAGES/djangojs.po b/cms/locale/bn/LC_MESSAGES/djangojs.po index 0d036e5d28f..cd2e1c58c5e 100644 --- a/cms/locale/bn/LC_MESSAGES/djangojs.po +++ b/cms/locale/bn/LC_MESSAGES/djangojs.po @@ -2,36 +2,35 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 14:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: bn\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "" diff --git a/cms/locale/ca/LC_MESSAGES/django.mo b/cms/locale/ca/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..eec0bc29fb768342f8e345a9b2232a1a46188cc9 GIT binary patch literal 26241 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 OQWp*!QCXehbN?TY9Q?Qd literal 0 HcmV?d00001 diff --git a/cms/locale/ca/LC_MESSAGES/django.po b/cms/locale/ca/LC_MESSAGES/django.po index 1dee53ebe05..543c850d89a 100644 --- a/cms/locale/ca/LC_MESSAGES/django.po +++ b/cms/locale/ca/LC_MESSAGES/django.po @@ -1,493 +1,331 @@ # 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 , 2010. -# +# FIRST AUTHOR , YEAR. +# msgid "" msgstr "" -"Project-Id-Version: DJANGO-CMS\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:52+0200\n" -"PO-Revision-Date: 2010-06-04 10:21+0200\n" -"Last-Translator: antoni aloy \n" -"Language-Team: CATALAN <>\n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:38+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \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-Poedit-Language: Catalan\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Poedit-Language: English\n" "X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Opcions avançades" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Títol" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "El títol per defecte" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Slug" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "La part del títol que s'utilitza en la direcció URL" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Idioma" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "El llenguatge actual dels camps de contingut." -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Una altra pàgina amb aquest slug ja existeix" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Títol del menú" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Sobreescriure el que es mostra al menú" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Títol de la pàgina" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" -msgstr "" -"Sobreescriu el que es mostra a la part superior del navegador o en els seus " -"favorits" +msgstr "Sobreescriu el que es mostra a la part superior del navegador o en els seus favorits" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Aplicació" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Enllaça l'aplicació a aquesta pàgina." -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Sobreescriu URL" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "Manté aquest camp buit si s'ha d'usar la ruta per defecte" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Redirigir" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Redirecciona a aquesta URL." -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "Una descripció de la pàgina a vegades utilitzada pels motors de cerca." -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." -msgstr "" -"Una llista de paraules clau separades per comes a vegades utilitzada pels " -"motors de cerca." +msgstr "Una llista de paraules clau separades per comes a vegades utilitzada pels motors de cerca." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Una pàgina amb una URL que correspon amb aquest id ja existeix." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "URL no vàlida, utilitzeu el format /meu/url. " -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "usuari" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"Afegir el permís pàgina requereix també l'accés als fills, o descendents, en " -"cas contrari la pàgina afegida no podria ser modificada pel seu creador." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "Afegir el permís pàgina requereix també l'accés als fills, o descendents, en cas contrari la pàgina afegida no podria ser modificada pel seu creador." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "El permís Afegir pàgina també requereix permisos d'edició de pàgina." -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Si us plau, seleccioneu l'usuari o el grup primer." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Afegir" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Canviar" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Esborrar" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Recuperar (les pàgines)" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Notificar a l'usuari" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Enviar notificació per correu electrònic a l'usuari sobre el canvi nom " -"d'usuari o contrasenya. Requereix del correu electrònic de l'usuari." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Enviar notificació per correu electrònic a l'usuari sobre el canvi nom d'usuari o contrasenya. Requereix del correu electrònic de l'usuari." -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Nova contrasenya" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Nova confirmació de la contrasenya" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." -msgstr "" -"Notificació per correu electrònic requereix d'una adreça de correu " -"electrònic vàlida." +msgstr "Notificació per correu electrònic requereix d'una adreça de correu electrònic vàlida." -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" -msgstr "" -"El permís per afegir noves pàgines requereix el permís per modificar pàgines!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" +msgstr "El permís per afegir noves pàgines requereix el permís per modificar pàgines!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" -msgstr "" -"El permís per afegir nous usuaris requereix el permís per modificar usuaris!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" +msgstr "El permís per afegir nous usuaris requereix el permís per modificar usuaris!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "Per afegir permisos també és necessari poder editar-los!" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Ocult" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Configuració bàsica" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "" -"Nota: Aquesta plana es torna a carregar si canvia la selecció. Desa-la " -"primer." +msgstr "Nota: Aquesta plana es torna a carregar si canvia la selecció. Desa-la primer." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Configuració avançada" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Ajustaments de SEO" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "major" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Error de la base de dades" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "pàgina" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "La plana ha estat aprovada" -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "L'objecte %(name)s amb la clau primària %(key)r no existeix." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "No només hi ha una traducció per a aquesta pàgina" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "Títol i connectors per %(language)s s'han eliminat" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Estàs segur?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "No tens permís per publicar aquesta pàgina" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "No tens permisos per canviar l'estat d'aquesta pàgina a la navegació" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "No tens permisos per modificar aquesta pàgina" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "El llenguatge ha de ser un dels llenguatges suportats!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "El connector %(plugin_name)s s'ha afegit a %(placeholder)s" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "El llenguatge ha de ser diferent del copiat!" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "El connector %(language)s s'ha copiat a %(placeholder)s" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" -msgstr "" -"El connector %(plugin_name)s s'ha editat a la posició %(position)s de %" -"(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgstr "El connector %(plugin_name)s s'ha editat a la posició %(position)s de %(placeholder)s" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Els connectors s'han mogut" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." -msgstr "" -"El connector %(plugin_name)s a la posició %(position)s de %(placeholder)s " -"s'ha esborrat" +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." +msgstr "El connector %(plugin_name)s a la posició %(position)s de %(placeholder)s s'ha esborrat" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Permisos de pàgina" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Permisos de Usuari i Grup" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Gestió de permisos de la Pàgina" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Detalls de l'usuari" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Grups" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Contrasenya" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Copiar permisos" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Copiar moderació" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Hereta la plantilla del l'ancestre més pròxim" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Visió general" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Índexos y taules" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Taula de continguts completa" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "llista totes les seccions i subseccions" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Cerca pàgina" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "cerca aquesta documentació" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Índex global del mòdul" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "accés ràpid a tots els mòduls" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Índex general" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "totes les funcions, classes i termes" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Índex" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Tot l'index a una plana" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Index de pàgines per lletra" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "pot ser gran" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Navegació" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Taula de continguts" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Tema anterior" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "capítol anterior" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Tema següent" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "proper capítol" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Aquesta pàgina" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Mostra el codi font" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Cerca ràpida" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Ves" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "" -"Introdueix els tremes de cerca, un mòdul o el nom d'una classe o funció" - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "Sobre aquests documents" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Cercar" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Copyright" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Obsolet" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "cercar" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Resultats de la cerca" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "La teva cerca no torna cap resultat." - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "seleccioneu aquesta pàgina" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "Afegir un altre" @@ -495,34 +333,34 @@ msgstr "Afegir un altre" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "llenguatge" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "posició" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "cata de creació" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "espai" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "nom_del_connector" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -532,7 +370,7 @@ msgstr "títol" msgid "path" msgstr "camí" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "slug" @@ -540,15 +378,15 @@ msgstr "slug" msgid "everybody" msgstr "tothom" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "pot editar" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "grup" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "pot publicar" @@ -570,7 +408,7 @@ msgid "navigation extenders" msgstr "extensions a la navegació" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "té sobreescrita la url" @@ -586,324 +424,321 @@ msgstr "autor" msgid "reverse url id" msgstr "inverteix la id de la url" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "necessita identificació" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "arrel tova" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "data final de publicació" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "plantilla" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "data de publicació" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "en la navegació" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "aplicació" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "redirecciona" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "claus" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "descripció" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "Pàgina actual" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Fill de la pàgina (immediats)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Pàgina i fills (immediats)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Descendents de la pàgina" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Pàgina i descendents" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Pàgina" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Usuari" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Modera la pàgina" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "Modera els fills" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "Modera els descendents" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "ModeradorDePagina" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "creat" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "modificat" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "esborrar req." -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "moure req." -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "publicar req." -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "despublicar req." -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "aprovat" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "Estat de moderació de la pàgina" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "Estats de moderació de la pàgina" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "app. req." -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "borra" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "app. par." -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "creat per" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "modificat per" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "Quan la pàgina ha d'anar a producció l'estat ha de ser \"Publicat\"." -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "Quan expira la pàgina. Deixa buit perquè no caduqui mai." -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Tots els avantpassats no es mostraran al menú de navegació" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" -msgstr "" -"Un identificador únic que s'utilitza amb el page_url_templatetag per " -"enllaçar-se a aquesta pàgina" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" +msgstr "Un identificador únic que s'utilitza amb el page_url_templatetag per enllaçar-se a aquesta pàgina" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "publicada" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "La plantilla utilitza per representar el contingut." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "El lloc de la pàgina es pot consultar a." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "lloc" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "estat de moderació" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Sobreescriure el que es mostra al menú" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "pàgines" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "Pàgina copiada" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "defecte" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "pot afegir" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "pot eliminar" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "Pot canviar la configuració avançada" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "pot canviar els permisos" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "al nivell de pàgina" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "pot moure" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "pot moderar" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "pot recuperar pàgines" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "pot recuperar qualsevol pàgina eliminada" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." -msgstr "" -"Si no hi ha res seleccionat, l'usuari tindrà permisos concedits a tot arreu." +msgstr "Si no hi ha res seleccionat, l'usuari tindrà permisos concedits a tot arreu." -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "llocs" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Permisos globals de pàgina" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Permisos globals de pàgines" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "Autoritza a" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Permís de pàgina" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Usuari (pàgina)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Usuaris (pàgina)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Grup d'usuaris (pàgina)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Grups d'usuaris (pàgina)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "ample" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "sobreescriure el títol al menú" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "Camí" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "sobreescriure el títol (title tag html)" @@ -911,21 +746,21 @@ msgstr "sobreescriure el títol (title tag html)" msgid "File" msgstr "Arxiu" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "arxiu" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "utilitzar l'arxiu swf" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "alçada" @@ -933,7 +768,7 @@ msgstr "alçada" msgid "Missing flash plugin." msgstr "Falta el plugin de flash." -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Google Map" @@ -989,15 +824,15 @@ msgstr "planificador de rutes" msgid "Map" msgstr "Mapa" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "La teva adreça" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Calcular ruta" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "Heretar Connectors des de la pàgina" @@ -1006,12 +841,8 @@ msgid "Language or Page must be filled out" msgstr "Es necessari emplenar la llengua o la pàgina" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" -msgstr "" -"Trieu una pàgina per incloure-hi els connectors en aquest marcador de " -"posició, deixant-ho buit triarà la pàgina actual" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" +msgstr "Trieu una pàgina per incloure-hi els connectors en aquest marcador de posició, deixant-ho buit triarà la pàgina actual" #: plugins/inherit/models.py:11 msgid "Optional: the language of the plugins you want" @@ -1021,28 +852,28 @@ msgstr "Opcional: el llenguatge dels connectors que vols" msgid "Link" msgstr "Enllaç" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "nom" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "enllaç" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "Un enllaç a una pàgina té prioritat sobre un enllaç de text." -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "mailto" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "Una adreça de correu electrònic té prioritat sobre un enllaç de text." @@ -1050,40 +881,40 @@ msgstr "Una adreça de correu electrònic té prioritat sobre un enllaç de text msgid "Picture" msgstr "Imatge" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "esquerra" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "dret" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "imatge" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "si hi és la imatge actual es podrà clicar" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "text alternatiu" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "descripció textual de la imatge" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "descripció llarga" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "descripció addicional de la imatge" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "costat" @@ -1102,25 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " -msgstr "" -"Introduex la plantilla (i.e. \"snippets/plugin_xy.html\") que serà " -"renderitzada. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgstr "Introduex la plantilla (i.e. \"snippets/plugin_xy.html\") que serà renderitzada. " #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "Fragments" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "Mostra" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "Si hi hés la imatge serà clicable" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "Si hi hés la imatge serà clicable." @@ -1132,7 +960,7 @@ msgstr "més" msgid "Text" msgstr "Text" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "cos" @@ -1187,9 +1015,8 @@ msgid "Twitter" msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "usuari de twitter" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1209,19 +1036,14 @@ msgstr "ajuda de l'enllaç" #: plugins/twitter/models.py:9 msgid "If given, the hint is displayed as link to your Twitter profile." -msgstr "" -"Si s'indica, l'ajuda es mostrarà com a enllaç al seu perfil de Twitter." +msgstr "Si s'indica, l'ajuda es mostrarà com a enllaç al seu perfil de Twitter." #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "usuari" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1232,92 +1054,84 @@ msgstr "Vídeo" msgid "Color Settings" msgstr "Ajustaments de color" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "arxiu de pel lícula" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "usua un arxiu. flv o fitxer de vídeo codificat en h264 " -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "url de la película" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" -msgstr "" -"vimeo o URL del vídeo youtube. Exemple: http://www.youtube.com/watch?" -"v=YFa59lK-kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" +msgstr "vimeo o URL del vídeo youtube. Exemple: http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "vista prèvia de la imatge" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "reproduir automàticament" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "Amaga automàticament" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "pantalla completa" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "bucle" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "color de fons" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "Hexadecimal, per exemple, ff00cc" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "color del text" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "color barra de cerca" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "color fons barra de cerca" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "color barra de càrrega" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "color de l'exterior del botó" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "color del botó estant a sobre" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "color de ressaltat del botó" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" -msgstr "" -"Falta plugin de flash. Descarregar aquí" +msgid "Missing flash plugin. Download here" +msgstr "Falta plugin de flash. Descarregar aquí" #: templates/admin/page_submit_line.html:3 #: templates/admin/cms/page/change_form.html:273 @@ -1344,13 +1158,13 @@ msgid "Save and continue editing" msgstr "Guardar i continuar editant" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." -msgstr "" -"La pàgina %(page)s pot requerir que l'aprovis." +msgid "Page %(page)s may require approvement by you." +msgstr "La pàgina %(page)s pot requerir que l'aprovis." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Darrers canvis" @@ -1359,11 +1173,18 @@ msgstr "Darrers canvis" msgid "Log in to administration here." msgstr "Entra en l'administració aquí ." +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Nom d'usuari:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Contrasenya:" @@ -1448,12 +1269,8 @@ msgstr "Estat de la pàgina" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." -msgstr "" -"Aquesta pàgina ha de ser moderat en el nivell %(moderation_level)s , envia " -"un missatge per al moderador." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." +msgstr "Aquesta pàgina ha de ser moderat en el nivell %(moderation_level)s , envia un missatge per al moderador." #: templates/admin/cms/page/change_form.html:185 msgid "Request approvemet" @@ -1535,8 +1352,8 @@ msgid "edit this page" msgstr "edita aquesta pàgina" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "edita" @@ -1592,7 +1409,7 @@ msgid "add" msgstr "afegir" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "Aprovar directament" @@ -1607,6 +1424,7 @@ msgid "Unpublish" msgstr "No publicar" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Publicar" @@ -1732,153 +1550,228 @@ msgstr "Ho has seleccionat cap connector. Tria'n un de l'esquerra" #: templates/admin/cms/page/widgets/plugin_editor.html:17 msgid "No Plugins present. Add a plugin to this placeholder-slot." -msgstr "" -"No hi ha connectors. Afegir un connector per aquest marcador de posició." +msgstr "No hi ha connectors. Afegir un connector per aquest marcador de posició." #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "Connectors disponibles" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "Mou a %(name)s " -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "Estàs segur que vols eliminar aquest plugin?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "Mode d'edició" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "Estat" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "Nom d'usuari" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "login" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "Plantilla" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "moure" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "Moure o afegir pàgines" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "afegir fill" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "afegir una pàgina filla" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "afegir un germà" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "Afegir una pàgina germana" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "Eliminar pàgina" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "Administració del lloc" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "Configuració de la pàgina" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "història" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "Veure l'historial" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "Sortir" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "Bloquejar" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "Tancar" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "amunt" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "avall" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "Configuració" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "Borrar plugin" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "Deslligar la moderació de pàgina" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "Deslligar la moderació de fills" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "Deslligar la moderació de descendents" -#: templatetags/cms_tags.py:69 -#, fuzzy, python-format +#: templatetags/cms_tags.py:78 +#, python-format msgid "Page not found on %(domain)s" -msgstr "L'ID invers no es troba al domini %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:70 -#, fuzzy, python-format +#: templatetags/cms_tags.py:79 +#, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"El template tag page_id_url no ha trobat cap plana que es correspongui amb " -"l'identificador %(reverse_id)s \\ nEl url de la pàgina és: http://%(host)s%" -"(path)s" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "primer pare" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "aprovar" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "CMS - La pàgina %s requereix aprovació." @@ -1891,26 +1784,8 @@ msgstr "CMS - el teu compte d'usuari s'ha creat." msgid "CMS - your user account was changed." msgstr "CMS - el teu compte d'usuari ha canviat." -#~ msgid "menu login required" -#~ msgstr "es necessita identificació " - -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "només mostrar aquesta pàgina en el menú si l'usuari està registrat" - -#~ msgid "" -#~ "A show_placeholder_by_id template tag didn't found a page with the " -#~ "reverse_id %(reverse_id)s\n" -#~ "The url of the page was: http://%(host)s%(path)s" +#~ msgid "fgcolor" #~ msgstr "" -#~ "El template tag show_placeholder_by_id_template no ha trobat cap pàgina " -#~ "que es correspongui amb l'identificador %(reverse_id)s\n" -#~ "La url de la plana és: http://%(host)s%(path)s" -#~ msgid "Sublevel" -#~ msgstr "Subnivell" - -#~ msgid "Sublevel3" -#~ msgstr "Subnivell 3" - -#~ msgid "Sublevel 2" -#~ msgstr "Subnivell 2" +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/ca/LC_MESSAGES/djangojs.mo b/cms/locale/ca/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..224f2681191d53f3a6aa1cabfda01ef985ae83d2 GIT binary patch literal 902 zcmbV~&2AGh5XTJ^A?=Yfhv9(K3Y^`fh*aC8X$WamkwBsoO!Lu-1P$IsB#7IBQ*fab0c*kGwZhd5ATf{x0L)<3b61A1YfH)^!5ub@i z#GMWfLv?y@r{}oeI=&7q*Iw)0@N!?=; zYZjPzev(c77ffDG`M{#^q|BcQk1@2OW|K!P9;g!6oAg?37KV`DH2DWOx~VI4G*{D4YyR?#o!QxruEqyCHIv;OfAI-}8{k_}_C zgJ66z9&T>jY(&ApXpfq-FH36D<9i>LN=Ut5Pt!W|-LvTt-`mvHJg%l~3By#nMymkn5MVnGW2`H^B(2`$W(NIP2k6Lamh3e-Q^^4$lwQF4^{;q~f P7Ic^eLCre9eo@~5wpbWZ literal 0 HcmV?d00001 diff --git a/cms/locale/ca/LC_MESSAGES/djangojs.po b/cms/locale/ca/LC_MESSAGES/djangojs.po index c087493b9c4..ed8695eccb8 100644 --- a/cms/locale/ca/LC_MESSAGES/djangojs.po +++ b/cms/locale/ca/LC_MESSAGES/djangojs.po @@ -5,28 +5,32 @@ # msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "Estàs segur que vols canviar el %(field_name) sense guardar primer la plana?" -#: media/cms/js/change_form.js:68 -msgid "Not all plugins are saved. Are you sure you want to save the page? All unsaved plugin content will be lost." -msgstr "No tots els plugins s'han guardat. Estàs segur de que vols guardar la plana? Tot els continguts dels plugins no guardats es perdran." +#: media/cms/js/change_form.js:69 +msgid "" +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." +msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "Estàs segur que voleu canviar de secció sense guardar la primera pàgina?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Estàs segur que vols eliminar aquest plugin?" diff --git a/cms/locale/cs/LC_MESSAGES/django.mo b/cms/locale/cs/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..aabbe4a2f09532aec2d80178946c86ae295aaf0e GIT binary patch literal 19144 zcmb7~3!EHPo$n8C5*{M*6od+oWX5DB6CQ#?5(tw35t7Vi@{qVI)^yiQSNc&+S9K3P zs25pxS5aKo3$ih;I?KMIX3=%Ix=0Y6jHnl771YIbec)?_>&5E@e8IZk-#MqcdjN5_ zKRNTQI(6zi{^$SypZ__PZykH^t%l$71B^Kp-m<`$U0fge66G3GKiL?v%(d`vcs;xb zz8S8C_rm4yke3>BC_En?1Xsc%;U(}0xB;r3tKmXefJeg`ya2udUJvht$G{b*81rIy zDb)QIsCpxKK8)du;QL`8yaNuve}ONDhcXzoy8@0y!6%{0Ej-PbA^38r_Fn^4&+DMt zn}q6T0##2FYP^34HQsml=eI$<_ZLw0{FT4o169vQeEugO|I9xApc>|zQ1X8Ys{S+S zQ~+1NSHR6s?YtG92j2w;;C)bXdJ?L=0|WQ|VNm@$9x6Y8!|-fq#|0&~NvLvVsQ$I! z@$ijM^M4CefBpta{{ILi=Q*f$AA;)tci{^7Yp8Yx7Pb?>LR7-s4^{7v z;S%_BcsV>BZoHlM%CbH+d41J&+67{ISVwfl3ZacEGI^NH|acox+7`=Q3a8cMFOhTCBg>ixT+ z+Mk1Z?_sEZf6G7rA(S3G4v&RT`TPZoog9yadhbFw09QfzuQFT;cSGsNeg65w@Cxn^ zV=~22*avq(z4sY-2>clwguj4?!6g)uyq80@_ev;vtcDubcBt_epxUcL_4h`2IJ_0= z{r5qY`#Y$1?)3Mc^!%LXSK;|Qe*~%@C-ob%4qgt`&zs>gxDTp-kHUlC&)@?16jZRig%eQkS3Reo^zuzm<9-*^`?o>q)%&65|8BStJ_rwo z-+~(FkNo`;Q0+Ve_1=P|PEL!V>bnpwgqJ|IbEW4fl$^Fgm3s|TxdN0u)S$-wdjI?e zsBydn9s&Qup~}xe_4f-t|I0rAUp>F$^M3#}-pBp@ul)0aF)qnx0o1sTf*Q{;Q2yyO zsCHIE^=HK2uZKr)zY%I&JD~Kj0M*YHl%Mz$cqDu;RKNE?mH!x2eRuokpMiSs0jT!A z)|HuZ-A=rpP}0O8dQ7VRz4Ly3ibX^ha8`QvhRf~MqA+}@Iv@*sQMp((x-=@#`{h9 zBKQ-}XQ1SG)H#0rfa|#*f^UV>Q1*WCx#%G5gR;|0pz7Za&w{@XkB4u9OW9^0Ybi#)G~>gS(9>BC<__4hMSe)20&@^}m$4WIJQ51|p2J05Dh zXL}An)pI^n`&*&ve=Sr!2|ON7`}}u8wKD_t{4V$sI0sel!|+)6T`2u}0xpLC0oDH5 zuW)vKKGgUwhgyfX!ajH{)cm{$O0OP-n(uG;`|tSsA3^o^Cs2C-l;?p2#p=h=o+m)f z!)gBhOsMykLe+a7)cg#?0A2&tj~k%Iu?I56=5DwFJ`VNXDmtltj__wWd_9!hJ`DAI zAJlkfJs*S`&-Wl*HIG8cXVEKN|CU0HV+iW~l`w#p!joYEs{S{?6W}|b))W~6|kTDaj0@{hk9?X=RTEuHCaC&94ORYrsP`Z8_uqr+|6@?&dICx=zxMgZ zUgG3%3Y7k?gv;O>h)XgxD82mvwDt#=aQ`rro*uBqm@&8so(^w^sDzn?YVR3%B|P|2 z*S}FHdA}M;FC(b&CGa@-R;cm44@w>%_52c4`;S5C)o-B2ar}szw`K6f+@AwA-nE_^ zAR;u|p!DTdh)I}F!E@m+AXS-VYu)%0D0ya3{rDenF?<)4ANeP!`MVEle2+kt`!Q6z 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 Cy1bMC literal 0 HcmV?d00001 diff --git a/cms/locale/cs/LC_MESSAGES/django.po b/cms/locale/cs/LC_MESSAGES/django.po index 63787e1cfd2..eaf914adf34 100644 --- a/cms/locale/cs/LC_MESSAGES/django.po +++ b/cms/locale/cs/LC_MESSAGES/django.po @@ -2,479 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: django-cms\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:52+0200\n" -"PO-Revision-Date: 2010-03-19 15:56+0100\n" -"Last-Translator: Jiří Suchan \n" -"Language-Team: LANGUAGE \n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:38+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \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" +"Language: cs\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Pokročilé nastavení" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Název" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "Předvolený název" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Identifikátor" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "Část názvu, která je použita v URL" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Jazyk" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "Aktuální jazyk políček s obsahem" -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Už existuje jiná stránka s tímto identifikátorem" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Název menu" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Přepsat to, co se zobrazuje v menu" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Název stránky" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" -msgstr "" -"Přepsat to, co se zobrazuje v horní části vašeho prohlížeče nebo v záložkách" +msgstr "Přepsat to, co se zobrazuje v horní části vašeho prohlížeče nebo v záložkách" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Aplikace" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Připojit aplikaci k této stránce." -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Přepsat URL" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "Ponechejte toto políčko prázdné, pokud se má použít standardní cesta." -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Přesměrování" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Přesměruje se na tuto URL." -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "Popis stránky, který mohou indexovat vyhledávače." -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." -msgstr "" -"Seznam klíčových slov oddělených čárkou, které mohou indexovat vyhledávače." +msgstr "Seznam klíčových slov oddělených čárkou, které mohou indexovat vyhledávače." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Stránka s takovu hodnotou reverse URL id již existuje." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "Neplatná URL, použijte formát /moje/url/adresa." -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "uživatel" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"Právo na přidání stránky vyžaduje také přístup k \"vnořeným\" stránkám, " -"jinak tyto stránky nebude moci editovat jejich autor." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "Právo na přidání stránky vyžaduje také přístup k \"vnořeným\" stránkám, jinak tyto stránky nebude moci editovat jejich autor." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "Právo na přidání stránky vyžaduje také právo na editaci stránky." -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Zvolte nejdřív uživatele nebo skupinu, prosím." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Přidat" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Změnit" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Odstranit" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Obnovit (nějaké) stránky" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Informovat uživatele" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Posílat uživateli informační email o změně uživatelského jména nebo hesla. " -"Vyžaduje uživatelův email." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Posílat uživateli informační email o změně uživatelského jména nebo hesla. Vyžaduje uživatelův email." -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Nové heslo" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Potvrzení nového hesla" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "Emailová notifikace vyžaduje platnou emailovou adresu." -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "Právo na přidávání nových stránek vyžaduje právo na změnu stránek!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "Právo na přidávání nových uživatelů vyžaduje právo na změnu uživatelů!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "Přidávání přístupových práv vyžaduje také právo na jejich změnu" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Skryté" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Základní nastavení" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "" -"Upozornění: Při změně výběru se stránka se znovu načte. Provedené změny " -"nejprve uložte." +msgstr "Upozornění: Při změně výběru se stránka se znovu načte. Provedené změny nejprve uložte." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Rozšířené možnosti" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "SEO nastavení" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "výš" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Databázová chyba" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "stránka" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "Stránka byla úspěšně schválena." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Tato stránka existuje pouze v jedné jazykové variantě" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Jste si jist?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "Nemáte oprávnění k publikování této stránky" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "Nemáte oprávnění měnit tuto vlastno dané stránky." -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "Nemáte oprávnění měnit tuto stránku" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "Zadaný jazyk není podporovaný, zvolte jiný." -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "Jazyk kopie se musí lišit od jazyka původní stránky" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Typy obsahu byly přesunuty" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Práva stránky" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Práva uživatele/skupiny" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Správa práv stránky" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Detaily uživatele" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Skupiny" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Heslo" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Zkopírovat oprávnění" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Podědit šablonu nejbližšího předka" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Přehled" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Prohledat stránku" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "prohledat dokumentaci" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Globální seznam modulů" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "rychlý přístup ke všem modulům" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Index" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Seznam stránek dle písmena" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "může být obrovské" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Navigace" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Tabulka obsahu" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Předchozí téma" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "předchozí kapitola" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Další téma" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "další kapitola" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Tato stránka" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Zobrazit zdroj" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Rychlé hledání" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Přejít" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "Zadejte hledaný termín, název modulu, třídy nebo funkce." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "O těchto dokumentech" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Hledání" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Copyright" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Zavrženo" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "hledat" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Výsledky hledání" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "Zadaným kritériím nevyhovuje žádný záznam." - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "vybrat tuto stránku" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "Přidat další" @@ -482,34 +333,34 @@ msgstr "Přidat další" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "jazyk" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "pozice" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "datum vytvoření" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "pozice" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "nazev_typu_obsahu" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -519,7 +370,7 @@ msgstr "popisek" msgid "path" msgstr "cesta" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "podoba URL" @@ -527,15 +378,15 @@ msgstr "podoba URL" msgid "everybody" msgstr "všichni" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "smí upravovat" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "skupina" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "smí publikovat" @@ -557,7 +408,7 @@ msgid "navigation extenders" msgstr "" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "má předefinovanou url" @@ -573,321 +424,321 @@ msgstr "autor" msgid "reverse url id" msgstr "" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "vyžaduje přihlášení" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "publikováno do" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "šablona" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "datum publikace" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "v navigaci" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "aplikace" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "přesměrování" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "klíčová slova (keywords)" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "popis (description)" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "Aktuální stránka" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Přímí potomci stránky" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Tato stránka + přímí potomci" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Všichni potomci stránky" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Tato stránka ₊ všichni potomci" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Stránka" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Uživatel" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Správa stránky" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "Správa potomků stránky" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "Správce" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "vytvořeno" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "změněno" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "požad. smazání" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "požad. přesunu" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "požad. publikace" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "požad. depublikace" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "smazat" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "vytvořil" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "změnil" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "Doba vypršení stránky. Prázdné pole = neomezená platnost" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Potomci nebudou zobrazeni v navigaci" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "publikováno" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "Šablona pro vykreslení obsahu" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Přepsat to, co se zobrazuje v menu" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "stránky" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "Stránka byla zkopírována." -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "výchozí" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "smí přidávat" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "smí mazat" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "smí měnit Rozšířené možnosti" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "smí měnit oprávnění" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "na úrovni stránky" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "smí přesunovat" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "správa" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "obnova stránky" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "obnova smazané stránky" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Globální oprávnění stránky" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Globální oprávnění stránek" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "Platné pro" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Práva stránky" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Uživatel (stránka)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Uživatelé (stránka)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Skupina uživatel (stránka)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Skupiny uživatel (stránka)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "šírka" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "vlastní popisek v menu" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "Cesta" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "" @@ -895,21 +746,21 @@ msgstr "" msgid "File" msgstr "Soubor" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "soubor" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "použít swf soubor" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "výška" @@ -917,7 +768,7 @@ msgstr "výška" msgid "Missing flash plugin." msgstr "Chybí zásuvný modul pro Flash" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Google mapa" @@ -973,15 +824,15 @@ msgstr "plánovač cesty" msgid "Map" msgstr "Mapa" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "Vaše adresa" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Spočítat cestu" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "Podědit typy obsahu ze stránky" @@ -990,9 +841,7 @@ msgid "Language or Page must be filled out" msgstr "" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "" #: plugins/inherit/models.py:11 @@ -1003,28 +852,28 @@ msgstr "" msgid "Link" msgstr "Odkaz" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "jméno" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "odkaz" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "mailto" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "" @@ -1032,40 +881,40 @@ msgstr "" msgid "Picture" msgstr "Obrázek" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "levá strana" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "pravá strana" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "obrázek" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "alternativní text" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "textový popisek obrázku" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "dlouhý popis" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "dodatečný popis obrázku" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "strana" @@ -1084,23 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "" #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "Snippety" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "" @@ -1112,7 +960,7 @@ msgstr "více" msgid "Text" msgstr "Text" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "tělo" @@ -1167,9 +1015,8 @@ msgid "Twitter" msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "Twitter: uživatelské jméno" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1192,15 +1039,11 @@ msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "" #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "uživatel" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1211,89 +1054,83 @@ msgstr "Video" msgid "Color Settings" msgstr "Nastavení barev" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "video soubor" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "URL videa" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" -msgstr "" -"URL adresa na youtube nebo vimeo. Př.: http://www.youtube.com/watch?" -"v=YFa59lK-kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" +msgstr "URL adresa na youtube nebo vimeo. Př.: http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "náhled obrázku" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "automatické přehrávání" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "automatické skrývání" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "Celoobrazovkový režim" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "nekonečná smyčka" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "barva pozadí" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "barva textu" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "" #: templates/admin/page_submit_line.html:3 @@ -1321,12 +1158,13 @@ msgid "Save and continue editing" msgstr "Uložit a pokračovat v editaci" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "" #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Poslední změny" @@ -1335,11 +1173,18 @@ msgstr "Poslední změny" msgid "Log in to administration here." msgstr "Přihlášení do zázemí" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Uživatelské jméno:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Heslo:" @@ -1405,8 +1250,9 @@ msgstr "Zobrazit" #: templates/admin/cms/page/plugin_change_form.html:84 msgid "Please correct the error below." msgid_plural "Please correct the errors below." -msgstr[0] "Prosím opravte níže uvedenou chybu." -msgstr[1] "Prosím opravte níže uvedené chyby." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" #: templates/admin/cms/page/change_form.html:148 msgid "All permissions" @@ -1424,9 +1270,7 @@ msgstr "" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "" #: templates/admin/cms/page/change_form.html:185 @@ -1509,8 +1353,8 @@ msgid "edit this page" msgstr "upravit tuto stránku" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "upravit" @@ -1566,7 +1410,7 @@ msgid "add" msgstr "přidání" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "" @@ -1581,6 +1425,7 @@ msgid "Unpublish" msgstr "Depublikovat" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Publikovat" @@ -1706,150 +1551,228 @@ msgstr "Není zvolen žádný typ obsahu. Vyberte z nabídky na levé straně." #: templates/admin/cms/page/widgets/plugin_editor.html:17 msgid "No Plugins present. Add a plugin to this placeholder-slot." -msgstr "" -"Není dostupný žádný typ obsahu. Přidejte typ obsahu do placeholderu (TODO)" +msgstr "Není dostupný žádný typ obsahu. Přidejte typ obsahu do placeholderu (TODO)" #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "Dostupné typy obsahu" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "Přesunout do %(name)s" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "Určitě chcete smazat tento typ obsahu" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "Režim úprav" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "Status" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "Uživatelské jmeno" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "přihlášení" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "Šablona" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "přesun" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "Přesun/přidání stránek" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "přidání potomka" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "Přidat potomka" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "přidání stránky ve stejné hloubce" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "Přidat stránku ve stejné hloubce" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "Smazat stránku" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "Správa" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "Nastavení stránky" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "historie" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "Zobrazit historii" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "Odhlásit" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "Zámek" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "Zavřít" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "nahoře" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "dole" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "Nastavení" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "Smazat typ obsahu" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "" @@ -1862,11 +1785,8 @@ msgstr "" msgid "CMS - your user account was changed." msgstr "" -#~ msgid "Sublevel" -#~ msgstr "Podúroveň" - -#~ msgid "Sublevel3" -#~ msgstr "Podúroveň 3" +#~ msgid "fgcolor" +#~ msgstr "" -#~ msgid "Sublevel 2" -#~ msgstr "Podúroveň 2" +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/cs/LC_MESSAGES/djangojs.mo b/cms/locale/cs/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..88ea385a876c84d3e8ff08b9826f42201f157f5e GIT binary patch literal 884 zcmbV~&2AGh5P%I7A?*oq<}eqkRN(9;t(wZsHZ7s8DiT_%loJwicHLd4yY}Lrl;j;a za_R|*D@U$eS{{N6&%!JqA{8VgM*8IOcxF7~@wapW=!~1kFFB&W|QSc8q|T_F(-l<(w-APD7G& zl?iZsY~ftGTzdzWPo>Jhho{n5*ZX%4^ncJem7+*rDPD?||Ie6;LO84{mlmqR zXHxaZkcqp*t9C z7qY2MwiOHyhP#W7Tg@owYvqK(+_MUcbmEN*tAb0lSx?hg;o_6g9^F{@)is<7Lw8l8 zQyeXWjj?pUZ)cET`-L~WpnKYsmVv@o$E}T5H|qhQ8aGrNw^pDB5in?|t+)-#%b>dP zT5W8hu^o^TbM;obs|&0osV6uuuP&5yFu#0X=r5noJdDL0e60(0`SIs@j~rHpPg8$A e>e_GmYv}bGZOP{xzcxOQ1~;ofk1fxAk9-G~Q4^{F literal 0 HcmV?d00001 diff --git a/cms/locale/cs/LC_MESSAGES/djangojs.po b/cms/locale/cs/LC_MESSAGES/djangojs.po index bb93a4873cc..2da68af5350 100644 --- a/cms/locale/cs/LC_MESSAGES/djangojs.po +++ b/cms/locale/cs/LC_MESSAGES/djangojs.po @@ -5,28 +5,32 @@ # msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: 2010-03-19 16:01+0100\n" -"Last-Translator: Jiří Suchan \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: cs\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" #: media/cms/js/change_form.js:31 msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "Opravdu chcete změnit %(field_name)s bez uložení změn?" -#: media/cms/js/change_form.js:68 -msgid "Not all plugins are saved. Are you sure you want to save the page? All unsaved plugin content will be lost." -msgstr "Některé typy obsahu nebyly uloženy. Opravdu chcete uložit stránku? Provedené změny u typů obsahu budou ztraceny." +#: media/cms/js/change_form.js:69 +msgid "" +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." +msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "Určitě chcete změnit záložku bez uložení změn?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Určitě chcete smazat tento typ obsahu?" diff --git a/cms/locale/cy/LC_MESSAGES/django.mo b/cms/locale/cy/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..683bf00998aa5eee8b0650a0ea6080b969f4c573 GIT binary patch literal 576 zcmZWl&2AGh7z|Kx*dym2zC#Zn__E%pYJ=NtOVd<})IgLj6mfHRzj__*+KYbzc@SQ& z&w`h#$$^nZ{+qF9{PMoZ;pw+eyGAH|0%a|%BcFdQu5rB6^%)z|%B;tMh#H4$dJ14lMbO3qzIi_}qrWRLe%W ndUtedf-PzC6pBOe4>8r&I59zcyWwzqH!FTjmp7k2UnPUTc%rUq literal 0 HcmV?d00001 diff --git a/cms/locale/cy/LC_MESSAGES/django.po b/cms/locale/cy/LC_MESSAGES/django.po index 306e1f84259..0ebef486c50 100644 --- a/cms/locale/cy/LC_MESSAGES/django.po +++ b/cms/locale/cy/LC_MESSAGES/django.po @@ -2,470 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"Last-Translator: Benjamin Wohlwend \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: cy\n" +"Plural-Forms: nplurals=4; plural=(n==2) ? 1 : 0\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "" -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "" -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "" -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "" -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." msgstr "" -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "" -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." msgstr "" -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "" -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "" -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "" -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "" - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 +#: forms/fields.py:20 msgid "Select a valid page" msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "" @@ -473,34 +333,34 @@ msgstr "" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -510,7 +370,7 @@ msgstr "" msgid "path" msgstr "" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "" @@ -518,15 +378,15 @@ msgstr "" msgid "everybody" msgstr "" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "" @@ -548,7 +408,7 @@ msgid "navigation extenders" msgstr "" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "" @@ -564,320 +424,321 @@ msgstr "" msgid "reverse url id" msgstr "" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "" @@ -885,21 +746,21 @@ msgstr "" msgid "File" msgstr "" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "" @@ -907,7 +768,7 @@ msgstr "" msgid "Missing flash plugin." msgstr "" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "" @@ -963,15 +824,15 @@ msgstr "" msgid "Map" msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "" @@ -980,9 +841,7 @@ msgid "Language or Page must be filled out" msgstr "" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "" #: plugins/inherit/models.py:11 @@ -993,28 +852,28 @@ msgstr "" msgid "Link" msgstr "" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "" @@ -1022,40 +881,40 @@ msgstr "" msgid "Picture" msgstr "" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "" @@ -1074,23 +933,22 @@ msgid "HTML" msgstr "" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "" #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "" @@ -1102,7 +960,7 @@ msgstr "" msgid "Text" msgstr "" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "" @@ -1185,10 +1043,7 @@ msgid "query" msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1199,87 +1054,83 @@ msgstr "" msgid "Color Settings" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "" #: templates/admin/page_submit_line.html:3 @@ -1307,12 +1158,13 @@ msgid "Save and continue editing" msgstr "" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "" #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "" @@ -1321,11 +1173,18 @@ msgstr "" msgid "Log in to administration here." msgstr "" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "" @@ -1393,6 +1252,8 @@ msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "" msgstr[1] "" +msgstr[2] "" +msgstr[3] "" #: templates/admin/cms/page/change_form.html:148 msgid "All permissions" @@ -1410,9 +1271,7 @@ msgstr "" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "" #: templates/admin/cms/page/change_form.html:185 @@ -1495,8 +1354,8 @@ msgid "edit this page" msgstr "" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "" @@ -1552,7 +1411,7 @@ msgid "add" msgstr "" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "" @@ -1567,6 +1426,7 @@ msgid "Unpublish" msgstr "" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "" @@ -1698,142 +1558,222 @@ msgstr "" msgid "Available plugins" msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "" @@ -1845,3 +1785,9 @@ msgstr "" #: utils/permissions.py:208 msgid "CMS - your user account was changed." msgstr "" + +#~ msgid "fgcolor" +#~ msgstr "" + +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/cy/LC_MESSAGES/djangojs.mo b/cms/locale/cy/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..ef932841f64c35a5602d4f24d7a6e6085be533b1 GIT binary patch literal 465 zcmZXPK~KUk6vs7s+R?LzckrOmvW^(Q>W~S;kZej|crRNWHKSeHj>rcwemg&l4^8CY zKl!Dv>92jSUnj>O2be?T6gfkVkSk=D9`cEYH@NPczf6sO6S*Ukg1iW0rB)1zH?B%e z^0oD5qSnTd)RwX!4^3%FrWvf9t1a{WQo2>MY~_0G7jh%DzrX2AYa3y`>2pSgMsSBO zlM#10CDK)bAsMTb%p$xLkIZi4?_aLs7vl487sTSqd(m94nbhQWA|B=8ia zG2F#zG)V^0Xf%uG^FFGoYh}&(?<5xA0qr=PC@_7jO>&FrePSH`yYDJpcdz literal 0 HcmV?d00001 diff --git a/cms/locale/cy/LC_MESSAGES/djangojs.po b/cms/locale/cy/LC_MESSAGES/djangojs.po index 0d036e5d28f..a1ff44572c0 100644 --- a/cms/locale/cy/LC_MESSAGES/djangojs.po +++ b/cms/locale/cy/LC_MESSAGES/djangojs.po @@ -2,36 +2,35 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 14:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: cy\n" +"Plural-Forms: nplurals=4; plural=(n==2) ? 1 : 0\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "" diff --git a/cms/locale/da/LC_MESSAGES/django.mo b/cms/locale/da/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..a00d31df3d30a2a50be4dfc64acba9794db9baa5 GIT binary patch literal 570 zcmZXQ!EO^V5QYQvv`5YyT&V{TOx7D!ZE%~aZJJ7v8i>+`B5v+_>UFehFZMXl2jTU2 z7Q9qV4vh5MUi%;W`}fc5z2AdWFOuFQ9VER<`jFJuxF22)1|QSZd$zUoZjBYeT)|iL z!8j|JT1%@PRBgys*f~$I2-+yPj51Mc+go2HDQ2-wSKW6+`j5zQk&XW;VxG_D!|Gwf-@T2!URdyo-LFuIpjU?v< zyF|N|t+DLR)y+?|ik)`mN0iD-I@hfVO1@CK$?6huVK9N^^6bbVP-3*jMajT z?+tA^5`xT@P4u#XYvRyP-)uCl>jkJ_yi literal 0 HcmV?d00001 diff --git a/cms/locale/da/LC_MESSAGES/django.po b/cms/locale/da/LC_MESSAGES/django.po index 306e1f84259..a40e1b643d5 100644 --- a/cms/locale/da/LC_MESSAGES/django.po +++ b/cms/locale/da/LC_MESSAGES/django.po @@ -2,470 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"Last-Translator: Benjamin Wohlwend \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "" -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "" -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "" -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "" -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." msgstr "" -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "" -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." msgstr "" -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "" -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "" -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "" -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "" - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 +#: forms/fields.py:20 msgid "Select a valid page" msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "" @@ -473,34 +333,34 @@ msgstr "" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -510,7 +370,7 @@ msgstr "" msgid "path" msgstr "" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "" @@ -518,15 +378,15 @@ msgstr "" msgid "everybody" msgstr "" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "" @@ -548,7 +408,7 @@ msgid "navigation extenders" msgstr "" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "" @@ -564,320 +424,321 @@ msgstr "" msgid "reverse url id" msgstr "" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "" @@ -885,21 +746,21 @@ msgstr "" msgid "File" msgstr "" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "" @@ -907,7 +768,7 @@ msgstr "" msgid "Missing flash plugin." msgstr "" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "" @@ -963,15 +824,15 @@ msgstr "" msgid "Map" msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "" @@ -980,9 +841,7 @@ msgid "Language or Page must be filled out" msgstr "" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "" #: plugins/inherit/models.py:11 @@ -993,28 +852,28 @@ msgstr "" msgid "Link" msgstr "" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "" @@ -1022,40 +881,40 @@ msgstr "" msgid "Picture" msgstr "" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "" @@ -1074,23 +933,22 @@ msgid "HTML" msgstr "" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "" #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "" @@ -1102,7 +960,7 @@ msgstr "" msgid "Text" msgstr "" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "" @@ -1185,10 +1043,7 @@ msgid "query" msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1199,87 +1054,83 @@ msgstr "" msgid "Color Settings" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "" #: templates/admin/page_submit_line.html:3 @@ -1307,12 +1158,13 @@ msgid "Save and continue editing" msgstr "" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "" #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "" @@ -1321,11 +1173,18 @@ msgstr "" msgid "Log in to administration here." msgstr "" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "" @@ -1410,9 +1269,7 @@ msgstr "" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "" #: templates/admin/cms/page/change_form.html:185 @@ -1495,8 +1352,8 @@ msgid "edit this page" msgstr "" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "" @@ -1552,7 +1409,7 @@ msgid "add" msgstr "" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "" @@ -1567,6 +1424,7 @@ msgid "Unpublish" msgstr "" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "" @@ -1698,142 +1556,222 @@ msgstr "" msgid "Available plugins" msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "" @@ -1845,3 +1783,9 @@ msgstr "" #: utils/permissions.py:208 msgid "CMS - your user account was changed." msgstr "" + +#~ msgid "fgcolor" +#~ msgstr "" + +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/da/LC_MESSAGES/djangojs.mo b/cms/locale/da/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..0acc39ece31d44b7c6d07a4c810b28b3d381fb9d GIT binary patch literal 459 zcmZXQK~KUk7=|%=+R?Lznt0G?S+^L#;)oLlA=!|?@Lsk$N=Cc19nqiR!N2Ek@tY=a z@J-(IYx;cs-uCZJ2}RT5Wk|@ifP;TpOVzMfsM= zLg8#@oCU9xwm30`$nkSs7@R7KHr7^#x^5xtre3!*wR3Z^7s@?$y26;68)yEK;-Tiu z!p(TZET_mPo`;E#Nf(hW^`Ynx0w7-Sy=W5r=e&DLI=2Mm#LQTnY9>v|tkM*XS8l{(N?+`ILS1LjxYDx#2G4S zxr7-X6@<0?-MUrDgzTei!?fWxSfyj!J915yH?DCcGnETjP}ExsdzcRY$((svYgXd1 a(mO+utbVs9@cZbm46Y@*43Kx@w0;1vtAghM literal 0 HcmV?d00001 diff --git a/cms/locale/da/LC_MESSAGES/djangojs.po b/cms/locale/da/LC_MESSAGES/djangojs.po index 0d036e5d28f..98679c311bd 100644 --- a/cms/locale/da/LC_MESSAGES/djangojs.po +++ b/cms/locale/da/LC_MESSAGES/djangojs.po @@ -2,36 +2,35 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 14:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "" diff --git a/cms/locale/de/LC_MESSAGES/django.mo b/cms/locale/de/LC_MESSAGES/django.mo index c3eadf8c13cb799481a9ab6282ae3d91b9254e83..fc857158991b3dff7da90b64ddcddd0fba92d60d 100644 GIT binary patch delta 10169 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 D<6%WA delta 12034 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 KER_y9*1rM9JVUqu diff --git a/cms/locale/de/LC_MESSAGES/django.po b/cms/locale/de/LC_MESSAGES/django.po index 4ff2af655c0..ae2f8db9a60 100644 --- a/cms/locale/de/LC_MESSAGES/django.po +++ b/cms/locale/de/LC_MESSAGES/django.po @@ -2,20 +2,21 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: django-cms\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:52+0200\n" -"PO-Revision-Date: 2010-02-10 10:43+0100\n" -"Last-Translator: Patrick Lauber \n" -"Language-Team: divio \n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \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-Poedit-Language: German\n" +"X-Poedit-Language: English\n" "X-Poedit-SourceCharset: utf-8\n" "X-Poedit-Country: SWITZERLAND\n" @@ -23,476 +24,308 @@ msgstr "" msgid "Advanced options" msgstr "Erweiterte Einstellungen" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Titel" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "Der Standardtitel" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Slug" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "Die Kurzform des Titels, die in URLs verwendet wird." -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Sprache" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "Sprachvariante dieser Seite, die bearbeitet werden soll." -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Eine andere Seite mit diesem Slug existiert bereits" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Menütitel" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Überschreiben, was im Menü angezeigt wird" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Seitentitel" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" -msgstr "" -"Überschreiben, was im Titel des Browsers oder in den Lesezeichen erscheint" +msgstr "Überschreiben, was im Titel des Browsers oder in den Lesezeichen erscheint" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Applikation" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Schliessen Sie Applikationen an diese Seite an." -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "URL-Überschreibung" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." -msgstr "" -"Lassen Sie dieses Feld leer, wenn der Standardpfad verwendet werden soll." +msgstr "Lassen Sie dieses Feld leer, wenn der Standardpfad verwendet werden soll." -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Umleiten" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Zu dieser URL umleiten" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "Eine Beschreibung der Seite (wird teilweise von Suchmaschinen genutzt)" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." -msgstr "" -"Eine Liste von mit Kommas getrennten Schlüsselwörtern (wird teilweise von " -"Suchmaschinen genutzt)" +msgstr "Eine Liste von mit Kommas getrennten Schlüsselwörtern (wird teilweise von Suchmaschinen genutzt)" -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Eine andere Seite mit dieser Reverse-URL-ID ist bereits vorhanden." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "Keine korrekte URL. Bitte verwenden sie das Format: /meine/url/" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "Benutzer" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"Zum Hinzufügen von Seiten muss der Zugriff auf Unterseiten ebenfalls " -"ermöglicht werden, sonst können neu erstellte Seiten nach dem ersten " -"Speichervorgang nicht mehr bearbeitet werden." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "Zum Hinzufügen von Seiten muss der Zugriff auf Unterseiten ebenfalls ermöglicht werden, sonst können neu erstellte Seiten nach dem ersten Speichervorgang nicht mehr bearbeitet werden." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." -msgstr "" -"Die \"Seiten hinzufügen\"-Berechtigung benötigt auch die \"Bearbeiten\"-" -"Berechtigung" +msgstr "Die \"Seiten hinzufügen\"-Berechtigung benötigt auch die \"Bearbeiten\"-Berechtigung" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Bitte wählen Sie erst einen Benutzer oder eine Gruppe" -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Hinzufügen" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Ändern" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Löschen" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Kann Seiten wiederherstellen" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Benutzer benachrichtigen" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Benachrichtigung über Änderungen von Benutzername oder Passwort per E-Mail " -"an den Benutzer senden. Benötigt die E-Mail-Adresse des Benutzers." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Benachrichtigung über Änderungen von Benutzername oder Passwort per E-Mail an den Benutzer senden. Benötigt die E-Mail-Adresse des Benutzers." -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Neues Passwort" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Bestätigung des neuen Passworts" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "E-Mail-Benachrichtigung benötigt eine gültige E-Mail-Adresse." -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" -msgstr "" -"Die Berechtigung neue Seiten hinzuzufügen benötigt die Berechtigung Seiten " -"zu ändern." +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" +msgstr "Die Berechtigung neue Seiten hinzuzufügen benötigt die Berechtigung Seiten zu ändern." -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" -msgstr "" -"Die Berechtigung neue Benutzer hinzufügen benötigt die Berechtigung Benutzer " -"zu ändern." +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" +msgstr "Die Berechtigung neue Benutzer hinzufügen benötigt die Berechtigung Benutzer zu ändern." -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "Um Berechtigungen hinzuzufügen, müssen Sie sie auch ändern können." -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Versteckt" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Grundeinstellungen" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "" -"Hinweis: Diese Seite wird neu geladen, wenn Sie die Auswahl ändern. " -"Speichern Sie sie zuerst." +msgstr "Hinweis: Diese Seite wird neu geladen, wenn Sie die Auswahl ändern. Speichern Sie sie zuerst." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Erweiterte Einstellungen" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Einstellungen zur Suchmaschinenoptimierung (SEO)" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "höher" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Datenbankfehler" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "Seite" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "Seite erfolgreich freigegeben" -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "%(name)s Objekt mit Primärschlüssel %(key)r existiert nicht." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Es existiert nur eine Übersetzung für diese Seite" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "Titel und Plugins mit der Sprache %(language)s wurden gelöscht" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Sind Sie sicher?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "Sie haben nicht die Berechtigung, um diese Seite zu veröffentlichen." -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" -msgstr "" -"Sie haben nicht Berechtigung, um den \"im Menü\"-Status dieser Seite zu " -"ändern." +msgstr "Sie haben nicht Berechtigung, um den \"im Menü\"-Status dieser Seite zu ändern." -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "Sie haben nicht die Berechtigung, um diese Seite zu ändern." -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "Die Sprache muss auf eine unterstützte Sprache gesetzt werden." -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "%(plugin_name)s-Plugin wurde in %(placeholder)s eingefügt." -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "Die Sprache muss sich von der kopierten unterscheiden!" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "Plugins von %(language)s wurden nach %(placeholder)s kopiert." -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" -msgstr "" -"%(plugin_name)s-Plugin auf der %(position)s Position in %(placeholder)s " -"wurde geändert." +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgstr "%(plugin_name)s-Plugin auf der %(position)s Position in %(placeholder)s wurde geändert." -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Plugins wurden verschoben." -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." -msgstr "" -"Das %(plugin_name)s-Plugin auf Position %(position)s in %(placeholder)s " -"wurde gelöscht." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." +msgstr "Das %(plugin_name)s-Plugin auf Position %(position)s in %(placeholder)s wurde gelöscht." -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Seiten-Berechtigungen" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Benutzer- und Gruppen-Berechtigungen" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Verwaltung der Benutzer-Berechtigungen" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Benutzer-Details" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Gruppen" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Passwort" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Berechtigungen kopieren" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Moderationen kopieren" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Die Vorlage der nächsten übergeordneten Seite verwenden" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Übersicht" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Tabellen und Indizes" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Ganzes Inhaltsverzeichnis" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "Listet alle Themen und Unterthemen auf" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Suchseite" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "Dieses Dokument durchsuchen" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Globaler Modulindex" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "Schnellzugriff auf alle Module" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Allgemeiner Index" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "Alle Funktionen, Klassen, Begriffe" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Index" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Ganzer Index auf einer Seite" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Indiziert Seiten nach Anfangsbuchstaben" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "kann gross sein" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Navigation" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Inhaltsverzeichnis" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Vorheriges Thema" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "vorheriges Kapitel" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Nächstes Thema" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "nächstes Kapitel" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Nur diese Seite" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Quellcode anzeigen" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Schnellsuche" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Go" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "Geben Sie einen Suchbegriff, Module, Klasse oder Funktionsnamen ein." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "Über diese Dokumente" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Suche" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Copyright" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Veraltet" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "Suche" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Suchresultate" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "Ihre Suche hat keine Resultate ergeben." - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "Diese Seite auswählen" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "Weitere hinzufügen" @@ -500,34 +333,34 @@ msgstr "Weitere hinzufügen" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "Sprache" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "Position" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "erstellt am" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "Slot" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "Name des Plugins" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -537,7 +370,7 @@ msgstr "Titel" msgid "path" msgstr "Pfad" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "Slug" @@ -545,15 +378,15 @@ msgstr "Slug" msgid "everybody" msgstr "alle" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "kann bearbeiten" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "Gruppe" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "kann publizieren" @@ -575,7 +408,7 @@ msgid "navigation extenders" msgstr "Menüerweiterungen" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "Die URL wird überschrieben" @@ -591,327 +424,321 @@ msgstr "Verfasser" msgid "reverse url id" msgstr "Reverse-URL-ID" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "Login erforderlich" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "Softroot" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "Veröffentlicht bis" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "Vorlage" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "Veröffentlicht am" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "im Menü" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "Applikation" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "ID" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "umleiten" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "Schlüsselwörter" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "Beschreibung" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "Aktuelle Seite" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Untergeordnete Seite (direkt)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Aktuelle und untergeordnete Seite (direkt)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Folgeseiten" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Aktuelle Seite und Folgeseiten" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Seite" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Benutzer" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Seite moderieren" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "Untergeordnete Seiten moderieren" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "Nachfolgende Seiten moderieren" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "Seitenmoderator" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "erstellt am" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "geändert" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "Löschung beantragen" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "Verschiebung beantragen" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "Veröffentlichung beantragen" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "unveröffentlichen Anfrage" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "freigegeben" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "Status der Moderierung" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "Status der Moderierung" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "Benötigt Freigabe" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "Löschen" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "Übergeordnete Seite freigeben" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "erstellt von" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "geändert von" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." -msgstr "" -"Ab wann soll die Seite veröffentlicht werden? Der Status der Seite muss dazu " -"auf \"veröffentlicht\" sein. " +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." +msgstr "Ab wann soll die Seite veröffentlicht werden? Der Status der Seite muss dazu auf \"veröffentlicht\" sein. " -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "Ablaufdatum der Seite. Leer lassen, um sie nie ablaufen zu lassen." -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Alle übergeordneten Seiten werden nicht im Menü dargestellt." -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" -msgstr "" -"Ein einzigartiger Identifikator, der benutzt wird, um mit dem page_url " -"templatetag auf diese Seite zu verlinken." +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" +msgstr "Ein einzigartiger Identifikator, der benutzt wird, um mit dem page_url templatetag auf diese Seite zu verlinken." -#: models/pagemodel.py:58 -#, fuzzy +#: models/pagemodel.py:69 msgid "attached menu" -msgstr "Flash-Menü" +msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "veröffentlicht" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "Die benutzte Vorlage um die Seite darzustellen." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "Die Webseite (Domain), wo die Seite verfügbar ist." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "Website" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "Status der Moderierung" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Überschreiben, was im Menü angezeigt wird" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "Seiten" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "Seite wurde kopiert." -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "Standard" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "Kann hinzufügen" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "Kann löschen" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "Kann erweiterte Einstellungen ändern" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "Kann Berechtigungen ändern" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "Auf Seitenebene" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "Kann verschieben" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "Kann moderieren" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "Kann Seiten wiederherstellen" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "Kann alle gelöschten Seiten wiederherstellen" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." -msgstr "" -"Falls keine Auswahl erfolgt, hat der Benutzer Berechtigungen auf alle Seiten." +msgstr "Falls keine Auswahl erfolgt, hat der Benutzer Berechtigungen auf alle Seiten." -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "Website" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Globale Seitenberechtigung" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Globale Seitenberechtigungen" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "Gewähren" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Seitenberechtigung" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Benutzer (Seite)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Benutzer (Seite)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Benutzergruppe (Seite)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Benutzergruppen (Seite)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "Breite" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "Titel im Menü überschreiben" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "Pfad" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "Titel überschreiben (HTML Title Tag)" @@ -919,21 +746,21 @@ msgstr "Titel überschreiben (HTML Title Tag)" msgid "File" msgstr "Datei" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "Datei" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr ".swf Datei (Flash)" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "Höhe" @@ -941,7 +768,7 @@ msgstr "Höhe" msgid "Missing flash plugin." msgstr "Flash-Plugin wurde nicht gefunden." -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Google Map" @@ -997,15 +824,15 @@ msgstr "Routenplaner" msgid "Map" msgstr "Karte" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "Ihre Adresse" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Route berechnen" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "Erbt Plugins von einer Seite" @@ -1014,12 +841,8 @@ msgid "Language or Page must be filled out" msgstr "Sprache oder Seite müssen ausgefüllt sein." #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" -msgstr "" -"Wählen Sie eine Seite von der Sie die Plugins erben wollen. Leer wählt die " -"momentane Seite." +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" +msgstr "Wählen Sie eine Seite von der Sie die Plugins erben wollen. Leer wählt die momentane Seite." #: plugins/inherit/models.py:11 msgid "Optional: the language of the plugins you want" @@ -1029,28 +852,28 @@ msgstr "Optional: Die Sprache der Plugins dies Sie wollen" msgid "Link" msgstr "Link" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "Name" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "Link" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "Ein Link auf eine Seite hat Priorität vor einem Textlink" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "E-Mail-Adresse" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "Eine E-Mail-Adresse hat Priorität vor einem Textlink." @@ -1058,40 +881,40 @@ msgstr "Eine E-Mail-Adresse hat Priorität vor einem Textlink." msgid "Picture" msgstr "Bild" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "links" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "rechts" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "Bild" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "Füllen Sie dieses Feld aus, um aus dem Bild einen Link zu machen." -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "Alternativer Text." -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "Beschreibung des Bildes." -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "Lange Beschreibung" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "Zusätzliche Beschreibung des Bildes." -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "Seite" @@ -1110,25 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " -msgstr "" -"Fügen sie eine Vorlage ein, welche dargestellt werden soll (z.B. \"snippets/" -"plugin_xy.html\")." +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgstr "Fügen sie eine Vorlage ein, welche dargestellt werden soll (z.B. \"snippets/plugin_xy.html\")." #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "Snippet" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "Teaser" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "Füllen Sie dieses Feld aus, um aus dem Bild einen Link zu machen." -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "Füllen Sie dieses Feld aus, um aus dem Bild einen Link zu machen." @@ -1140,7 +960,7 @@ msgstr "mehr" msgid "Text" msgstr "Text" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "Inhalt" @@ -1195,9 +1015,8 @@ msgid "Twitter" msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "Twitter-Benutzer" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1217,19 +1036,14 @@ msgstr "Link Tipp" #: plugins/twitter/models.py:9 msgid "If given, the hint is displayed as link to your Twitter profile." -msgstr "" -"Wenn ausgefüllt, wird der Tipp als Link zu Ihrem Twitter-Profil dargestellt." +msgstr "Wenn ausgefüllt, wird der Tipp als Link zu Ihrem Twitter-Profil dargestellt." #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "Benutzer" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1240,92 +1054,84 @@ msgstr "Video" msgid "Color Settings" msgstr "Farb-Einstellungen" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "Film Datei" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "Benutzen sie .flv oder H264 enkodierte Video Dateien." -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "Film URL" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" -msgstr "" -"Vimeo oder Youtube Video URL. Beispiel: http://www.youtube.com/watch?" -"v=YFa59lK-kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" +msgstr "Vimeo oder Youtube Video URL. Beispiel: http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "Bild Datei Vorschau" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "automatisch starten" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "automatisch ausblenden" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "Vollbild" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "wiederholen" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "Hintergrundfarbe" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "Hexadezimal, z.B. ff00cc" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "Text Farbe" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "Suchbar Farbe" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "Suchbar Hintergrundfarbe" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "Ladebalken Farbe" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "Schalter Mousout Farbe" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "Schalter Mousover Farbe" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "Schalter Highlight Farbe" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" -msgstr "" -"Das Flash Plugin fehlt. Sie können es hier downloaden." +msgid "Missing flash plugin. Download here" +msgstr "Das Flash Plugin fehlt. Sie können es hier downloaden." #: templates/admin/page_submit_line.html:3 #: templates/admin/cms/page/change_form.html:273 @@ -1352,28 +1158,33 @@ msgid "Save and continue editing" msgstr "Speichern und weiter bearbeiten" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." -msgstr "" -"Die Seite %(page)s benötigt Ihre Freigabe." +msgid "Page %(page)s may require approvement by you." +msgstr "Die Seite %(page)s benötigt Ihre Freigabe." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Letzte Änderungen" #: templates/admin/cms/mail/base.html:55 #, python-format msgid "Log in to administration here." +msgstr "Sie können sich hier in die Administration einloggen." + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" msgstr "" -"Sie können sich hier in die Administration " -"einloggen." #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Benutzername:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Passwort:" @@ -1458,12 +1269,8 @@ msgstr "Seitenstatus" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." -msgstr "" -"Diese Seite muss auf der Ebene %(moderation_level)s moderiert werden. Senden " -"Sie eine Nachricht an den Moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." +msgstr "Diese Seite muss auf der Ebene %(moderation_level)s moderiert werden. Senden Sie eine Nachricht an den Moderator." #: templates/admin/cms/page/change_form.html:185 msgid "Request approvemet" @@ -1545,8 +1352,8 @@ msgid "edit this page" msgstr "Diese Seite bearbeiten" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "bearbeiten" @@ -1602,7 +1409,7 @@ msgid "add" msgstr "Hinzufügen" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "Direkt freigeben" @@ -1617,6 +1424,7 @@ msgid "Unpublish" msgstr "Veröffentlichung aufheben" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "veröffentlichen" @@ -1734,8 +1542,7 @@ msgstr "Plugins kopieren" #: templates/admin/cms/page/widgets/plugin_editor.html:12 msgid "You must save the page first to add plugins." -msgstr "" -"Sie müssen die Seite zuerst speichern, um Plugins hinzufügen zu können." +msgstr "Sie müssen die Seite zuerst speichern, um Plugins hinzufügen zu können." #: templates/admin/cms/page/widgets/plugin_editor.html:15 msgid "No Plugin selected. Selected one on the left side" @@ -1743,318 +1550,242 @@ msgstr "Kein Plugin ausgewählt. Wählen Sie eins auf der linken Seite aus." #: templates/admin/cms/page/widgets/plugin_editor.html:17 msgid "No Plugins present. Add a plugin to this placeholder-slot." -msgstr "" -"Keine Plugins vorhanden. Fügen Sie ein Plugin in diesen Platzhalter ein." +msgstr "Keine Plugins vorhanden. Fügen Sie ein Plugin in diesen Platzhalter ein." #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "Vorhandene Plugins" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "Nach %(name)s verschieben" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "Sind Sie sicher dass Sie dieses Plugin löschen wollen?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "Editiermodus" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "Status" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "Benutzername" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "einloggen" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "Vorlage" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "verschieben" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "Seiten verschieben / hinzufügen" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "Unterseite hinzufügen" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "Unterseite hinzufügen" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "Auf gleicher Ebene erstellen" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "Neue Seite auf gleicher Ebene erstellen" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "Seite löschen" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "Seiten Admininstration" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "Grundeinstellungen" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "Verlauf" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "Verlauf anzeigen" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "Abmelden" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "Sperren" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "Schliessen" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "rauf" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "runter" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "Einstellungen" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "Plugin löschen" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "Seitenmoderation lösen" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "Moderation untergeordneter Seiten lösen" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "Moderation von Folgeseiten lösen" -#: templatetags/cms_tags.py:69 -#, fuzzy, python-format +#: templatetags/cms_tags.py:78 +#, python-format msgid "Page not found on %(domain)s" -msgstr "Eine Reverse-ID wurde auf %(domain)s nicht gefunden." +msgstr "" -#: templatetags/cms_tags.py:70 -#, fuzzy, python-format +#: templatetags/cms_tags.py:79 +#, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"Ein page_url template tag hat keine Seite mit der Reverse-ID %(reverse_id)s " -"gefunden.\n" -"Die URL der Seite war: http://%(host)s%(path)s" - -#: utils/moderator.py:82 -msgid "parent first" -msgstr "übergeordnete Seite zuerst" -#: utils/moderator.py:89 -msgid "approve" -msgstr "freigeben" - -#: utils/moderator.py:240 -#, python-format -msgid "CMS - Page %s requires approvement." -msgstr "CMS - Seite %s benötigt Freigabe." +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" -#: utils/permissions.py:206 -msgid "CMS - your user account was created." -msgstr "CMS - Ihr Benutzerkonto wurde erstellt." +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" -#: utils/permissions.py:208 -msgid "CMS - your user account was changed." -msgstr "CMS - Ihr Benutzerkonto wurde verändert." +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" -#~ msgid "menu login required" -#~ msgstr "Menü-Login erforderlich" +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "" -#~ "Diese Seite nur im Menü darstellen, wenn der Benutzer eingeloggt ist." +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" -#~ msgid "" -#~ "A show_placeholder_by_id template tag didn't found a page with the " -#~ "reverse_id %(reverse_id)s\n" -#~ "The url of the page was: http://%(host)s%(path)s" -#~ msgstr "" -#~ "Ein page_url template tag hat keine Seite mit der Reverse-ID %" -#~ "(reverse_id)s gefunden.\n" -#~ "Die URL der Seite war: http://%(host)s%(path)s" +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" -#~ msgid "Sublevel" -#~ msgstr "Sublevel" +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" -#~ msgid "Sublevel3" -#~ msgstr "Sublevel 3" +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" -#~ msgid "Sublevel 2" -#~ msgstr "Sublevel 2" +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" -#~ msgid "dock" -#~ msgstr "andocken" +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" -#~ msgid "overlay" -#~ msgstr "überlagern" +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" -#~ msgid "blank" -#~ msgstr "blank" +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" -#~ msgid "self" -#~ msgstr "self" +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" -#~ msgid "parent" -#~ msgstr "übergeordnet" +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" -#~ msgid "window" -#~ msgstr "Fenster" +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" -#~ msgid "opaque" -#~ msgstr "undurchsichtig" +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" -#~ msgid "transparent" -#~ msgstr "transparent" +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" -#~ msgid "controller style" -#~ msgstr "Stil der Kontrollelemente" +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" -#~ msgid "click_url" -#~ msgstr "Click URL" +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" -#~ msgid "click target" -#~ msgstr "Click Ziel" +#: utils/moderator.py:83 +msgid "parent first" +msgstr "übergeordnete Seite zuerst" -#~ msgid "mute" -#~ msgstr "lautlos" +#: utils/moderator.py:90 +msgid "approve" +msgstr "freigeben" -#~ msgid "mute only" -#~ msgstr "nur lautlos" +#: utils/moderator.py:251 +#, python-format +msgid "CMS - Page %s requires approvement." +msgstr "CMS - Seite %s benötigt Freigabe." -#~ msgid "volume" -#~ msgstr "Lautstärke" +#: utils/permissions.py:206 +msgid "CMS - your user account was created." +msgstr "CMS - Ihr Benutzerkonto wurde erstellt." -#~ msgid "in range <0, 100>" -#~ msgstr "im Bereich 0-100" +#: utils/permissions.py:208 +msgid "CMS - your user account was changed." +msgstr "CMS - Ihr Benutzerkonto wurde verändert." #~ msgid "fgcolor" #~ msgstr "Vordergrundfarbe" -#~ msgid "Hexadecimal, eg 13abec" -#~ msgstr "Hexadezimal, z.B. 13abec" - -#~ msgid "wmode" -#~ msgstr "wmode" - -#~ msgid "Twitter recent entries plugin" -#~ msgstr "\"Neuste Twitter-Nachrichten\"-Plugin" - -#~ msgid "Revisions" -#~ msgstr "Versionen" - #~ msgid "Wanted language has not been translated yet." #~ msgstr "Die gesuchte Sprache wurde noch nicht übersetzt." - -#~ msgid "A programming error occurred - cannot find text editor widgets." -#~ msgstr "" -#~ "Ein Fehler ist aufgetreten: Kann das Text-Editor-Widget nicht finden." - -#~ msgid "Videoplayer" -#~ msgstr "Im Web anzeigen" - -#~ msgid "use video file" -#~ msgstr ".swf datei" - -#~ msgid "splash image" -#~ msgstr "Letzte Änderung" - -#~ msgid "Can add page" -#~ msgstr "Kann Seite hinzufügen" - -#~ msgid "Can change page" -#~ msgstr "Kann Seite bearbeiten" - -#~ msgid "Can delete page" -#~ msgstr "Kann Seite löschen" - -#~ msgid "Can recover pages (any)" -#~ msgstr "Kann alle gelöschten Seiten wiederherstellen." - -#~ msgid "Can change User" -#~ msgstr "Kann Benutzer bearbeiten" - -#~ msgid "Can delete User" -#~ msgstr "Kann Benutzer löschen" - -#~ msgid "Can add page permission" -#~ msgstr "Kann Seiten-Berechtigung hinzufügen" - -#~ msgid "Can change page permission" -#~ msgstr "Kann Seiten-Berechtigung ändern" - -#~ msgid "Can delete page permission" -#~ msgstr "Kann Seiten-Berechtigung löschen" - -#~ msgid "You can add plugins only if you have saved the page." -#~ msgstr "Sie können plugins nur hinzufügen wenn die Seite gespeichert wurde." - -#~ msgid "The parent of this page is not on the site %(site)s" -#~ msgstr "" -#~ "Die Seite, welche dieser Seite übergeordnet ist, ist nicht in der " -#~ "Webseite %(site)s" - -#~ msgid "All pages" -#~ msgstr "alle Seiten" - -#~ msgid "This page and all childrens" -#~ msgstr "Diese Seite und alle Unterseiten" - -#~ msgid "The url that this page has instead. Starts with a \"/\"" -#~ msgstr "Die Url diese Seite anstatt hat. Sollte mit \"/\" beginnen." - -#~ msgid "Default template" -#~ msgstr "Standart Vorlage" - -#~ msgid "Page could not been moved." -#~ msgstr "Die Seite konnte nicht verschoben werden." - -#~ msgid "Top" -#~ msgstr "Oben" - -#~ msgid "Select" -#~ msgstr "Suswählen" diff --git a/cms/locale/de/LC_MESSAGES/djangojs.mo b/cms/locale/de/LC_MESSAGES/djangojs.mo index a6a7e1338896a2ebcbceeccef6a3f21d9d9ff1e8..4b91e9a42c66bad46faa5d8e31c63218396b6661 100644 GIT binary patch delta 396 zcmZXOy-EW?6on^05{cM|rN!7OI_~U7vM^@B7!d`<7=o3}COd3q$?mN46R-+mWhsj< zkka1PN3rxV#JjPu@WRJE_spHc{a#%(=ARq&R|HiDwtx<>0^9**|5y z5PAj5DVxSdI0?j{RI63MWm_vFI>fz5I04qwl3fNxHoo@ zlrgk4t5VxQ$}9-S9UHkU)sDq?6O zk5%N1`blyq(^RH?O82w0|1e3D1W7sNwXR>ko=f&+dPwO()^BsCDnvQ=$_AsN^BD~* zuS3+z(h>U@^6DKu%Kv-4Me98&ba$=YRk!p0>U-z+W~}q7Sr*fz-B!@HppwIq(Zg7e zX0R diff --git a/cms/locale/de/LC_MESSAGES/djangojs.po b/cms/locale/de/LC_MESSAGES/djangojs.po index 1f704da1b90..b261e8a4f39 100644 --- a/cms/locale/de/LC_MESSAGES/djangojs.po +++ b/cms/locale/de/LC_MESSAGES/djangojs.po @@ -2,40 +2,35 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: 2009-06-19 17:22+0100\n" -"Last-Translator: Christian Bertschy \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" "Language-Team: LANGUAGE \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" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" -msgstr "" -"Sind Sie sicher, dass Sie den %(field_name)s ändern möchten, ohne die Seite " -"zuerst zu speichern?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" +msgstr "Sind Sie sicher, dass Sie den %(field_name)s ändern möchten, ohne die Seite zuerst zu speichern?" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -"Nicht alle Plugins sind gespeichert. Sind Sie sicher, dass Sie die Seite " -"speichern wollen? Alle ungespeicherten Plugin-Inhalte gehen dabei verloren." -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" -msgstr "" -"Sind Sie sicher Sie wollen die Sprache ändern ohne vorher zu speichern?" +msgstr "Sind Sie sicher Sie wollen die Sprache ändern ohne vorher zu speichern?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Sind Sie sicher dass Sie dieses Plugin löschen wollen?" diff --git a/cms/locale/el/LC_MESSAGES/django.mo b/cms/locale/el/LC_MESSAGES/django.mo index 9aec6b684dc7d9862ed2e575eb52cc6d5fef2595..edd6c7cbf3165a776fa9c0ea91df4e1f67476f1c 100644 GIT binary patch delta 2350 zcmY+^ZEO@p7{KvqK`BRDOQDn^)vW?8FWbAeK;fWJ?15A(w6vs(7(DNmyCv7#a=VAY zgq#X#`~VW!;3uO-NqmDCawTBIN;E2xuxLy)Cd3yEiJA}-H4=Qo|8uv6IJswkGqbZZ zvoo`Iwe8xX+&9$|4=YkXF`F1IRca^p+`@%aHA$%nI2EU04Nk=dtim?`egqd#UXRkw z#tO_~B_6=r@CCdTkK#mbt2`O$=oHF8pQ1c)9;M+$q@nr&1NbA#+s+M&G8)N5YH&K^t65}Zz#z(i-F}13s8im8^2X2LOnerlqt}q1 z8s*ZAV;ICMC~sKLY-J)1CEJ9C(&6X+jjvFne941oFJHz5lz+uFSkLJ5a2v|=BX~Q$>H9G*rhEw-u$FIDUUWIiz*}(^=1f1c4;3j+?x8P66oK%ECcr>Rr zlaW157Aw?FWYyF@!+$Qw$Mm03&3;g+qj4z1~Bxy@iuM897U88Npe-k^20cd@U_R zJF$|G{{`8eIfQKABH|8NKlv`l(^4`^h#sOczo+bpl7Quy+jnbO+sL>zfwX%lFz8O1 z@<~-R9#=%hux%AHo!xF}`ExVV(IG<(M-yBu+jLATtukgJ>A2sQHwL5&^|%>#lJ4A! zCbzGmwlC>8!*)0rOqfnG`&e_#8VbhEU8WU`?}(-omL40jgQjg~4Li`gaX|0N7*Xj| zk3=0KthI((TJ%t>9%|P@?cvst9$M-itf-CMsBLKrx3w<}kpewY+tCLy(X^e4I#wpE zSvyQqTRCKON~SrMTt$;~BFo(M0V6sT)(R8hhPE

@rf;u#vGl$1C00m0NS;4}>)% z73fW6Gtrd3&dLngVJ$seDB2yZE3{&^qbaR5bZ9N}0}txGmJv4{{pRy)(}|R6CvV>B zx3Za-(Upv5Y{Lm_S!cVx?B?ArE1PyQmAk`Q|6upPmbIID)@+F6->6JXaGR>4Z1tz2hBq&AKM{mAZQOv%1Fr0N8ItK>z>% delta 3203 zcmZvce{5Cd8OPrO8?`@xcBRY>;Y<)Ic-wo6D0ILIwbRW4wXhAfIu7?9%Yoi|F87>L zQIlJ!;9OjmdS|wTXdGnAGJ)l$2q-_gEsJi6IX9Zc{lmsGm#A45vzgUwWMR^avUYGh!{ zB-Dwjh%SfqP$z4KN@zI`9iR;^g`H4#yCGYR3+3OB`6$!@M`1Pb&C^U2_&C%FegK=` zX{bbg3YEZBsEWK3>+eB1`VeYg4Mqt#AF4td;U{4il>dGhB?Md1eOPQ`aw0Z(1FAIF zpfY|7%F!R70{jWe(PXU8Mv;9rlzkmkfF>yWC6L_AGN{B`;Vifo-U!##QGW%vp9Pi7 zj=2xYfe+>IVJHVjV*SbZeJSR5AV2dg583@NUN6V`IVk^^p|0u`sJOqXqy7r?YZk=c zK?}YOIi#uPqP5-xwc&cG08619u7HnLaraP;U*JA;vP*C^yarofEv>J8Yhef60A)X1 zWTMaRYfu}%2esknkQ~gPVI%w}RC6`53!kPPw!zI%jt=mU{So*H_)VzNpN!Yf#QH_3 zo_YoL!s2h4Xk&_xdKugVrSFO9!A0ng#rn74D)jHd&G5DO{XDWjz)KxBDXv}ul0@Z)!5EGU17`zFdgZgZ)!an#Hcptp0dFrZ8LW*X73>D~g zs9yMe%s;~0&?lkZCn%q;tP_%h*$!o&f$Be#Wx~%q62EvF&O$#9cf#kOD)W9!Wv7$X zLnYD%RjE#>1MG&FnqyG=o`dRz7ohCUK_&JkEXv?rCThA#sLU)nij4c#z3wV@2iHXhrTq zK94Lx^ogpZ`ZT|aXlz5)BWgYk9UvXe{{6U}=^c?u{Z-=KhMI5$QovNC!eYL=F5!sA~5iN#aLi3s2pd%1mQNf2$z6 zFHs#lJyc?DD*9)<7q%n!AiI#Qh{orTFCjM|bCItg8uO=M_P}1GnBk#r{m-!qCF+BC zQFpx-v19!UF{hz_wpoaJKtoOVWn?+hkMI{^b|BM3pP$AWZMlVs{y4gjyT|M2K2o*B zc{s2FFYl(!HZO1=I%Ey`PQh$H=oAjR&Twh0IybMk;2d#)j-Yz(~z~nvO4O}m0^3(ZE8yDPxy@Bza z!G}t3*4%tUP_T1;yeT@}u$u|?nqfDW@rFxtYgf)mw6`WpZMBO^`P$}Ua(yC|O0=h} z_B9=AlB<)cWU{7rd!mmb_=HQ`VFyl!)t;QPOC_z;?H#GxRwr4h>9PGFu~YE|?Z7K^ zSX=F!H|YA-j=;{cGT_>|oV}lg4Ou^0>Kw@0?qF-$%Wh(KZeVCBM@;N=>}-dX*~fyH zNM|wc>FFGFTfM?SsiCevwJXuwVqbUESk< zs~ecTurgA4D!dfF7+wx1tnfm38l_x%a6wDeGo=F!i%MT#@Zpl@D~H30@O(HPPE@`z z!+3nOVN2E4a10OS@LYJN@_2Z@G8&#YGncIJB#|zLKMK!=<;oE(DkJ!OJX$=>CSs$N zOV=6}j{mH2q-t^aZ429%!WRjAp>j05EYB8?iOSJZSJO>5hA%7k%2Osf$VI~9vP{CK zWUs_a?=-F$&o}v1#Zdx}^HRxiYEG)i diff --git a/cms/locale/el/LC_MESSAGES/django.po b/cms/locale/el/LC_MESSAGES/django.po index cd7fd66f17c..18cb9b5367e 100644 --- a/cms/locale/el/LC_MESSAGES/django.po +++ b/cms/locale/el/LC_MESSAGES/django.po @@ -2,478 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: django-cms-2.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:52+0200\n" -"PO-Revision-Date: 2009-11-10 17:16+0200\n" -"Last-Translator: Manolis Stamatogiannakis \n" -"Language-Team: django-cms \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Greek\n" -"X-Poedit-Country: GREECE\n" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Προχωρημένες επιλογές" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Τίτλος" -#: admin/forms.py:29 -#, fuzzy +#: admin/forms.py:53 msgid "The default title" -msgstr "Εξ' ορισμού τίτλος" +msgstr "" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Slug" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "Μέρος του τίτλου που χρησιμοποιείται στο URL" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Γλώσσα" -#: admin/forms.py:33 -#, fuzzy +#: admin/forms.py:57 msgid "The current language of the content fields." -msgstr "Η επιλεγμένη γλώσσα των πεδίων περιεχομένου" +msgstr "" -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Υπάρχει ήδη σελίδα με αυτό το slug" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Τίτλος Μενού" -#: admin/forms.py:101 -#, fuzzy +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" -msgstr "Αντικατάσταση τι εμφανίζεται στο μενού" +msgstr "" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Τίτλος Σελίδας" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Εφαρμογή" -#: admin/forms.py:106 -#, fuzzy +#: admin/forms.py:134 msgid "Hook application to this page." -msgstr "Πρόσθεσε εφαρμογή σε αυτή τη σελίδα." +msgstr "" -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Αντικατάστησε το URL" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Ανακατεύθυνση" -#: admin/forms.py:115 -#, fuzzy +#: admin/forms.py:143 msgid "Redirects to this URL." -msgstr "Ανακατεύθυνση προς αυτό το URL." +msgstr "" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "" -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "" -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "Λάθος μορφή URL. Χρησιμοποιήστε τη μορφή /my/url." -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "χρήστης" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." msgstr "" -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "" -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Προσθήκη" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Αλλαγή" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Διαγραφή" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Ειδοποίησε το χρήστη" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." msgstr "" -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Νέος κωδικός πρόσβασης" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Επιβεβαίωση νέου κωδικού πρόσβασης" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "" -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Κρυφό" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Βασικές ρυθμίσεις." -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "" -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Προχωρημένες Ρυθμίσεις" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Ρυθμίσεις Βελτιστοποίησης Μηχανών Αναζήτησης (SEO)" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Σφάλμα στη βάση δεδομένων" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "σελίδα" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "Η σελίδα εγκρίθηκε επιτυχώς." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Είσαι σίγουρος?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "Δεν έχεις δικαίωμα δημοσίευσης αυτής της σελίδας" -#: admin/pageadmin.py:1047 -#, fuzzy +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "" -"Δεν έχεις δικαίωμα αλλαγής της κατάστασης in_navigation αυτής της σελίδας" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "Δεν έχεις δικαίωμα αλλαγής αυτής της σελίδας" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Άδειες σελίδας" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Άδειες Χρηστών και Ομάδων" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Λεπτομέρειες Χρήστη" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Ομάδες" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Κωδικός πρόσβασης" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Αντιγραφή αδειών" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Επισκόπιση" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Αναζήτηση Σελίδας" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Προηγούμενο θέμα" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "προηγούμενο κεφάλαιο" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Επόμενο θέμα" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "επόμενο κεφάλαιο" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "" - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Αναζήτηση" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Αποτελέσματα Αναζήτησης" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 +#: forms/fields.py:20 msgid "Select a valid page" msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "Προσθήκη και άλλου" @@ -481,34 +333,34 @@ msgstr "Προσθήκη και άλλου" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "γλώσσα" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "θέση" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -518,7 +370,7 @@ msgstr "" msgid "path" msgstr "" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "slug" @@ -526,15 +378,15 @@ msgstr "slug" msgid "everybody" msgstr "όλοι" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "" @@ -556,7 +408,7 @@ msgid "navigation extenders" msgstr "" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "" @@ -572,321 +424,321 @@ msgstr "" msgid "reverse url id" msgstr "" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Αντικατάσταση τι εμφανίζεται στο μενού" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "Εξ' Ορισμού" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "πλάτος" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "" @@ -894,30 +746,29 @@ msgstr "" msgid "File" msgstr "Αρχείο" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "αρχείο" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "ύψος" #: plugins/flash/templates/cms/plugins/flash.html:2 -#, fuzzy msgid "Missing flash plugin." -msgstr "Το πρόσθετο αναπαραγωγής flash δεν είναι εγκατεστημένο." +msgstr "" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Χάρτης Google" @@ -973,15 +824,15 @@ msgstr "" msgid "Map" msgstr "Χάρτης" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "Η διεύθυνση σου" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Υπολογισμός διαδρομής" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "" @@ -990,9 +841,7 @@ msgid "Language or Page must be filled out" msgstr "" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "" #: plugins/inherit/models.py:11 @@ -1003,73 +852,69 @@ msgstr "" msgid "Link" msgstr "Δεσμός" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "όνομα" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 -#, fuzzy +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" -msgstr "δεσμός url" +msgstr "" -#: plugins/link/models.py:13 -#, fuzzy +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." -msgstr "Ο δεσμός προς εσωτερική σελίδα θα προτιμηθεί του δεσμού url." +msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "δεσμός αποστολής email" -#: plugins/link/models.py:14 -#, fuzzy +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." -msgstr "Ο δεσμός αποστολής email θα προτιμηθεί του δεσμού url." +msgstr "" #: plugins/picture/cms_plugins.py:9 msgid "Picture" msgstr "Εικόνα" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "αριστερά" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "δεξιά" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "εικόνα" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "αν υπάρχει, θα επιτρέπεται το κλικ στην εικόνα" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 -#, fuzzy +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" -msgstr "αντί εικόνας κείμενο (alt text)" +msgstr "" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "περιγραφή εικόνας" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "" @@ -1088,23 +933,22 @@ msgid "HTML" msgstr "" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "" #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "" @@ -1116,7 +960,7 @@ msgstr "" msgid "Text" msgstr "" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "" @@ -1167,14 +1011,12 @@ msgid "Insert plugin" msgstr "" #: plugins/twitter/cms_plugins.py:10 -#, fuzzy msgid "Twitter" -msgstr "Τίτλος" +msgstr "" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "Τίτλος" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1197,15 +1039,11 @@ msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "" #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "χρήστης" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1213,94 +1051,86 @@ msgid "Video" msgstr "" #: plugins/video/cms_plugins.py:42 -#, fuzzy msgid "Color Settings" -msgstr "Ρυθμίσεις Βελτιστοποίησης Μηχανών Αναζήτησης (SEO)" +msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "πλήρης οθόνη" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "" -#: plugins/video/models.py:23 -#, fuzzy +#: plugins/video/models.py:22 msgid "background color" -msgstr "χρώμα παρασκηνίου" +msgstr "" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "" -#: plugins/video/models.py:25 -#, fuzzy +#: plugins/video/models.py:24 msgid "seekbar color" -msgstr "χρώμα παρασκηνίου" +msgstr "" -#: plugins/video/models.py:26 -#, fuzzy +#: plugins/video/models.py:25 msgid "seekbar bg color" -msgstr "χρώμα παρασκηνίου" +msgstr "" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "" #: templates/admin/page_submit_line.html:3 @@ -1328,12 +1158,13 @@ msgid "Save and continue editing" msgstr "Αποθήκευση και παραμονή σε κατάσταση επεξεργασίας" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "" #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Τελευταίες αλλαγές" @@ -1342,20 +1173,26 @@ msgstr "Τελευταίες αλλαγές" msgid "Log in to administration here." msgstr "" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Όνομα χρήστη:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Κωδικός πρόσβασης:" #: templates/admin/cms/page/change_form.html:3 #: templates/admin/cms/page/plugin_forms_history.html:3 #: templates/admin/cms/page/plugin_forms_ok.html:3 -#, fuzzy msgid "Change a page" -msgstr "Τροποποίηση σελίδας" +msgstr "" #: templates/admin/cms/page/change_form.html:62 #: templates/admin/cms/page/change_list.html:8 @@ -1432,9 +1269,7 @@ msgstr "" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "" #: templates/admin/cms/page/change_form.html:185 @@ -1517,8 +1352,8 @@ msgid "edit this page" msgstr "" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "" @@ -1539,9 +1374,8 @@ msgid "softroot" msgstr "" #: templates/admin/cms/page/menu_item.html:23 -#, fuzzy msgid "home" -msgstr "Αρχική σελίδα" +msgstr "" #: templates/admin/cms/page/menu_item.html:26 #, python-format @@ -1575,7 +1409,7 @@ msgid "add" msgstr "προσθήκη" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "" @@ -1590,6 +1424,7 @@ msgid "Unpublish" msgstr "" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "" @@ -1698,9 +1533,8 @@ msgid "Add Plugin" msgstr "" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:18 -#, fuzzy msgid "From Language" -msgstr "Γλώσσα" +msgstr "" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:25 msgid "Copy Plugins" @@ -1722,189 +1556,236 @@ msgstr "" msgid "Available plugins" msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "" -#: templates/cms/toolbar/toolbar.html:74 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" -msgstr "Όνομα χρήστη:" +msgstr "" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" -msgstr "δεσμός url" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:106 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" -msgstr "Διαγραφή" +msgstr "" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "" -#: templates/cms/toolbar/toolbar.html:114 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" -msgstr "Βασικές ρυθμίσεις." +msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "" -#: templates/cms/toolbar/toolbar.html:139 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:235 msgid "down" -msgstr "παράθυρο" +msgstr "" -#: templates/cms/toolbar/toolbar.html:141 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" -msgstr "Ρυθμίσεις Βελτιστοποίησης Μηχανών Αναζήτησης (SEO)" +msgstr "" -#: templates/cms/toolbar/toolbar.html:143 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" -msgstr "Διαγραφή" +msgstr "" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 -msgid "parent first" +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" msgstr "" -#: utils/moderator.py:89 -msgid "approve" +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" msgstr "" -#: utils/moderator.py:240 -#, python-format -msgid "CMS - Page %s requires approvement." +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" msgstr "" -#: utils/permissions.py:206 -msgid "CMS - your user account was created." +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" msgstr "" -#: utils/permissions.py:208 -msgid "CMS - your user account was changed." +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" msgstr "" -#~ msgid "blank" -#~ msgstr "κενό" +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" -#~ msgid "self" -#~ msgstr "το ίδιο" +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" -#~ msgid "parent" -#~ msgstr "ιεραρχικά προηγούμενο" +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" -#~ msgid "window" -#~ msgstr "παράθυρο" +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" -#~ msgid "opaque" -#~ msgstr "αδιαφανές" +#: utils/moderator.py:83 +msgid "parent first" +msgstr "" -#~ msgid "transparent" -#~ msgstr "διαφανές" +#: utils/moderator.py:90 +msgid "approve" +msgstr "" -#, fuzzy -#~ msgid "click_url" -#~ msgstr "URL που ανοίγει με κλικ" +#: utils/moderator.py:251 +#, python-format +msgid "CMS - Page %s requires approvement." +msgstr "" -#~ msgid "click target" -#~ msgstr "παράθυρο που χρησιμοποιείται" +#: utils/permissions.py:206 +msgid "CMS - your user account was created." +msgstr "" -#~ msgid "mute" -#~ msgstr "σίγαση" +#: utils/permissions.py:208 +msgid "CMS - your user account was changed." +msgstr "" -#, fuzzy #~ msgid "fgcolor" -#~ msgstr "χρώμα προσκηνίου" +#~ msgstr "" + +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/el/LC_MESSAGES/djangojs.mo b/cms/locale/el/LC_MESSAGES/djangojs.mo index d94189054f1e03c762a0837019c446eda0679f54..62bf3ae6faa1f6baee60cc5a0a553ef4d3cbed71 100644 GIT binary patch delta 386 zcmX}lze~eF6bJB2TTxOc5hsyz(xTT~S}}OG()g=O)mrKzg2eVnuQa)sOA1c9I+oy~ zi#X~if|GxW|AT|OFBN_8;lA(Q@$O;zd+PdgCU=LRa$p`*zyvr0X$4>hT!Lfp23EnO zhR`io1CP*uWDt6R^E``?fHMyZVT9m%T`2e(ilLB3x9|9_Bppu~LaCUmB zgj$$dtOQ}5QoVUZT6`#!kUrUUBF=D${=YNJtZc1Nn$$A01=$w@S3F)zL$TA_(i`we z?6{n?x#Kb1un+4ec6~3o&$!m#jA1^|n}axX24r7`o?_S!#;vNBHt}z)F8g?~ip_$a M+~k&CPqQQK2M9Y~&Hw-a delta 741 zcma)%KWG#|7{xca_=m&FP7LJh6ymJAOE9>IQ7?xGiJs>nR_b^+Y&N$$bJ?AXh{Yvp zh(aum)5=175ef0|R6_F%1!Lg?n#vU*Z zX2CuXfqXm!CGZGb2A{w&Ffn3TP3Ro-E*O9p_@63R)=TJTXb4>$v#jH&eTPDZBR>me z3)Wt1G`G6($HNzuCLTr9irPUaQ{suBlrM{hP2HtKoqS1pK~ReaVusG5vn_}9UkR!! zsfE;ZJ4Ef4ph%_KwknBQ6m`umG}u*R!Rid$gs{V*TN^yaZWPVWv)l=3E%Z59oKQt$*N*G%r|HM^f}~C``*-~ zgJf}zr<&CgF4Kr>mH0HzrHaCou4o>^2|_LuNkcjkpZjcs;8L z9{>G{-o$9&U1Jp`8lh&t+k85o2+=J5DU?)O>f{dmYPno07kk$WN4CC=c1LcSC#G+< z$-K(e%}%zKFE_IlvttJ4t$A, YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: django-cms-2.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: 2009-11-10 17:24+0200\n" -"Last-Translator: Manolis Stamatogiannakis \n" -"Language-Team: django-cms \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Greek\n" -"X-Poedit-Country: GREECE\n" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" -msgstr "" -"Είσαι σίγουρος πως θέλεις να αλλάξεις τα πεδία %(field_name)s χωρίς να " -"αποθηκεύσεις τη σελίδα πρώτα?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" +msgstr "Είσαι σίγουρος πως θέλεις να αλλάξεις τα πεδία %(field_name)s χωρίς να αποθηκεύσεις τη σελίδα πρώτα?" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -"Δεν έχουν αποθηκευτεί οι αλλαγές σε όλα τα πρόσθετα. Είσαι σίγουρος πως " -"θέλεις να αποθηκεύσεις τη σελίδα? Οι αλλαγές στα πρόσθετα που δεν έχουν " -"αποθηκευτεί θα χαθούν." -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" -msgstr "" -"Είσαι σίγουρος πως θες να αλλάξεις καρτέλες χωρίς να έχεις αποθηκεύσει πρώτα " -"τη σελίδα?" +msgstr "Είσαι σίγουρος πως θες να αλλάξεις καρτέλες χωρίς να έχεις αποθηκεύσει πρώτα τη σελίδα?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Είσαι σίγουρος πως θέλεις να διαγράψεις αυτό το πρόσθετο?" diff --git a/cms/locale/en/LC_MESSAGES/django.mo b/cms/locale/en/LC_MESSAGES/django.mo index 8486de690114aac8e39bce1097e21790ec51a4c4..8f29f28975791ee8b942ab3f329e8e8df604a090 100644 GIT binary patch delta 529 zcmYk(ze~eF6u|LIn_5lPrgc>axG0jERIyk)NRMd75#Jae+2nKO+6Gstj zLArL7@Ni;FtAIJk&7`+YHj4_-cZm;3Q9xivS<=5t!#Q^Wu{NVdr#vZV1KE^rbr zaTdQZgEJAOMsNX#(MK20a1P%wjT2F&a#+L!ZeR+xu}i6@I-t?Rz+pJy7<=h=!topI zr~iO`_=1lV@qu#SRqVI0FC3>o&90+ZMGJkD@irFm4NV-2OJPl=3N&P(j#Akc%0c@m zg&d(&eu_yvN11mY`ie6D6RAsXrKl~~Q%C9w*7G{p4}uGKOQS%_XZj1dsRUmy_$9Kj zgh9%o|0CIY(yq0{ytnApJ!{2V&iI|^Ny>F?Cu=)7%gN=lj_pkOYx=HHD%UEFa>dJA XEhDxQF@sgrrJAg3c&l~)F24Q)VJ<%y delta 600 zcmYk(KS%;m9Ki9Xo|*ks%OENc8Y)8bGzgm`a0?oXAoY|;JhI#Z8(L~`NE%ui8(M-~ z`m+`hxHUvWQcDpu2W@?ScNh4BpPzfr-@W&H@Ad)@fodzH9V;SCj*@re7+G}jL%iWE zzT*N8xs{6H3Qpo7j$;FLe8x2TJxYae8RsyMK0L*4JhR7Db;(1Ji5u*|Ci?LSrSKJd z@XMM1!9K=HQ>qvG@sZ}nP#XC3+Kmpg*bL(}oWdGL@XDEg!9`VNGujI9#}Z1X>(2PZ z@!atirO_tJ#x0b_zEK+e#eVd5+I3;a36%O2(x-Ju&S2e+wkj`>vJmgvCquab>aCE) z|3ey;;FhgVCL2n0kptF~QiCWP1{>F|d)G*&kTr{DS>=qPv13Ha##T(_?Ya7a=OP$S zMRh%z&?AZDd@?>A*XwERsPUoI+=b%7 diff --git a/cms/locale/en/LC_MESSAGES/django.po b/cms/locale/en/LC_MESSAGES/django.po index fadd6f437c0..b470c72ce56 100644 --- a/cms/locale/en/LC_MESSAGES/django.po +++ b/cms/locale/en/LC_MESSAGES/django.po @@ -7,10 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:53+0200\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" "PO-Revision-Date: 2009-11-10 22:37+0100\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -23,452 +24,317 @@ msgstr "" msgid "Advanced options" msgstr "" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "" -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "" -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "A list of comma separated keywords sometimes used by search engines." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "" -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "" -#: admin/forms.py:185 +#: admin/forms.py:215 msgid "" "Add page permission requires also access to children, or descendants, " "otherwise added page can't be changed by its creator." msgstr "" -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "" -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "" -#: admin/forms.py:289 +#: admin/forms.py:296 msgid "" "Send email notification to user about username or password change. Requires " "user email." msgstr "" -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "" -#: admin/forms.py:332 +#: admin/forms.py:339 msgid "" "The permission to add new pages requires the permission to change pages!" msgstr "" -#: admin/forms.py:334 +#: admin/forms.py:341 msgid "" "The permission to add new users requires the permission to change users!" msgstr "" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "" -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "" -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format msgid "" "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format msgid "" "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " "deleted." msgstr "" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "" - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 +#: forms/fields.py:20 msgid "Select a valid page" msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "" @@ -476,34 +342,34 @@ msgstr "" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "plugin name" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -513,7 +379,7 @@ msgstr "" msgid "path" msgstr "" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "" @@ -521,15 +387,15 @@ msgstr "" msgid "everybody" msgstr "" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "" @@ -551,7 +417,7 @@ msgid "navigation extenders" msgstr "" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "has URL overwrite" @@ -567,320 +433,325 @@ msgstr "" msgid "reverse url id" msgstr "" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "deletion request" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "move request" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "publish request" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "unpublish request" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "approval required" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "" -#: models/pagemodel.py:53 +#: models/pagemodel.py:64 msgid "" "When the page should go live. Status must be \"Published\" for page to go " "live." msgstr "" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "" -#: models/pagemodel.py:57 +#: models/pagemodel.py:68 msgid "" "An unique identifier that is used with the page_url templatetag for linking " "to this page" msgstr "" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "" @@ -888,21 +759,21 @@ msgstr "" msgid "File" msgstr "" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "" @@ -910,7 +781,7 @@ msgstr "" msgid "Missing flash plugin." msgstr "" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "" @@ -966,15 +837,15 @@ msgstr "" msgid "Map" msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "" @@ -996,28 +867,28 @@ msgstr "" msgid "Link" msgstr "" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "email address" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "An email address has priority over a text link." @@ -1025,40 +896,40 @@ msgstr "An email address has priority over a text link." msgid "Picture" msgstr "" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "" @@ -1085,15 +956,15 @@ msgstr "" msgid "Snippets" msgstr "" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "" @@ -1105,7 +976,7 @@ msgstr "" msgid "Text" msgstr "" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "" @@ -1202,85 +1073,85 @@ msgstr "" msgid "Color Settings" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 #, fuzzy msgid "movie file" msgstr "move request" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 #, fuzzy msgid "movie url" msgstr "move request" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "" "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" "kpo" msgstr "" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 #, fuzzy msgid "background color" msgstr "background color" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 #, fuzzy msgid "seekbar color" msgstr "background color" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 #, fuzzy msgid "seekbar bg color" msgstr "background color" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" @@ -1315,6 +1186,7 @@ msgid "Save and continue editing" msgstr "" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format msgid "" "Page %(page)s may require approvement by you." @@ -1322,6 +1194,7 @@ msgstr "" "Page %(page)s may require approval by you." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "" @@ -1330,11 +1203,18 @@ msgstr "" msgid "Log in to administration here." msgstr "" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "" @@ -1504,8 +1384,8 @@ msgid "edit this page" msgstr "" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "" @@ -1561,7 +1441,7 @@ msgid "add" msgstr "" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "" @@ -1576,6 +1456,7 @@ msgid "Unpublish" msgstr "" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "" @@ -1707,144 +1588,227 @@ msgstr "" msgid "Available plugins" msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +#, fuzzy +msgid "Request Approval" +msgstr "Request approval" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 #, fuzzy msgid "move" msgstr "move request" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 #, fuzzy msgid "Delete Page" msgstr "deletion request" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `" +"%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +#, fuzzy +msgid "sidebar column" +msgstr "background color" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "CMS - Page %s requires approval." diff --git a/cms/locale/en/LC_MESSAGES/djangojs.mo b/cms/locale/en/LC_MESSAGES/djangojs.mo index d875548e81c7fc335e0619364b10d8cbd07de3e1..55eb349dbbc412d0674500f83bf57f05e8b9f84e 100644 GIT binary patch delta 47 zcmaFQ^owbN3ZuhB)f7QPLtO(ST?2Ck19K}QAj53ptST;_#Ju#<#Pn1vg~`H\n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -22,16 +23,16 @@ msgid "" "first?" msgstr "" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "" diff --git a/cms/locale/es/LC_MESSAGES/django.mo b/cms/locale/es/LC_MESSAGES/django.mo index 4eeec23c286f972c3ff2c0607a62d2e7dc4a27f9..906f06bebd111d277e003eb3e98857bd260d01a8 100644 GIT binary patch literal 26488 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 delta 235 zcmexyj`2N{#XTXGsSH5C2*ff#tOCT$K&%7AAYcK+ra(zcAPrIj1CtNfiSh?HI(s|1 zyDEga1_gWi`%S)YCq7xhUaa20QrFN>*T_)8$k@u*K-<93zKTp>s zu_V<>A=1?`NY~e2*Tqr6!{5r+Q#;Dv&y~w3vA9Gxq$n}3I47|rzsO3#E!4+H!Ozjx zRl&y9*U{6*!O_Jf$Tc|F4yZIQy)-dBRW~FxG1p4L$I;I{6yzK(8y_EsoJ_s^qV&lJ I?PC}j0Mf=dB>(^b diff --git a/cms/locale/es/LC_MESSAGES/django.po b/cms/locale/es/LC_MESSAGES/django.po index 297676fb043..55eada36874 100644 --- a/cms/locale/es/LC_MESSAGES/django.po +++ b/cms/locale/es/LC_MESSAGES/django.po @@ -2,492 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: django-cms\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:53+0200\n" -"PO-Revision-Date: 2009-11-19 09:43+0100\n" -"Last-Translator: Pedro Gracia \n" -"Language-Team: Spanish \n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:38+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \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" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Opciones avanzadas" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Título" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "Título por defecto" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Nombre único (slug)" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "Parte del título que es usado en la URL" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Idioma" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "Idioma actual de los campos de contenido." -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Hay otra página con ese slug" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Título del Menú" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Sobreescribir lo que es mostrado en el menú" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Título de la Página" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" -msgstr "" -"Sobreescribe lo que es mostrado en lo alto de su navegador o en sus " -"marcadores" +msgstr "Sobreescribe lo que es mostrado en lo alto de su navegador o en sus marcadores" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Aplicación" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Enganchar la aplicación a esta página." -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Sobreescribir la URL" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "Guardar el campo vacío si es usado el 'path' estándar." -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Redirigir" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Redirige a esta URL." -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." -msgstr "" -"Descripción de la página que a veces será usado por los motores de búsqueda." +msgstr "Descripción de la página que a veces será usado por los motores de búsqueda." -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." -msgstr "" -"Lista de palabras clave que a veces será usada por los motores de búsqueda." +msgstr "Lista de palabras clave que a veces será usada por los motores de búsqueda." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Página con este id de URL inversa si ya existe." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "URL inválida, use el formato /mi/url." -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "usuario" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"Añadir permisos a la página requiere también acceder a sus hijos o " -"descendientes, de otra forma la página añadida no puede ser modificada por " -"su creador." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "Añadir permisos a la página requiere también acceder a sus hijos o descendientes, de otra forma la página añadida no puede ser modificada por su creador." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." -msgstr "" -"Añadir permiso de página también requiere del permiso de edición de página." +msgstr "Añadir permiso de página también requiere del permiso de edición de página." -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Por favor, seleccione un usuario o grupo primero." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Añadir" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Cambiar" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Eliminar" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Recuperar (cualquier) página" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Notificar al usuario" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Enviar una notificación por correo al usuario sobre un cambio de nombre de " -"usuario o contraseña. Requiere un correo del usuario." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Enviar una notificación por correo al usuario sobre un cambio de nombre de usuario o contraseña. Requiere un correo del usuario." -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Nueva contraseña" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Confirmación de nueva contraseña" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "La notificación de email requiere de una dirección de email válida." -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" -msgstr "" -"¡El permiso para añadir nuevas páginas depende del permiso para cambiar " -"páginas!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" +msgstr "¡El permiso para añadir nuevas páginas depende del permiso para cambiar páginas!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" -msgstr "" -"¡El permiso para añadir nuevos usuarios depende del permiso para cambiar " -"usuarios!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" +msgstr "¡El permiso para añadir nuevos usuarios depende del permiso para cambiar usuarios!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "Para añadir permisos necesita editarlos." -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Escondido" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Configuración básica" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "" -"Observación: Esta página recarga si cambia la selección. Guárdela primero." +msgstr "Observación: Esta página recarga si cambia la selección. Guárdela primero." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Configuración avanzada" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Configuración de SEO" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "mayor" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Error de Base de Datos" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "página" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "La página ha sido aprobada." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "El objeto %(name)s con la clave primaria %(key)r no existe." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Sólo existe una traducción para esta página." -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" -msgstr "" -"El título y los \"plugins\" con el lenguaje %(language)s fueron eliminados." +msgstr "El título y los \"plugins\" con el lenguaje %(language)s fueron eliminados." -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "¿Está seguro?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "No tiene permisos para publicar esta página" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" -msgstr "" -"No tiene permisos para cambiar esta página en el estado 'in_navigation'" +msgstr "No tiene permisos para cambiar esta página en el estado 'in_navigation'" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "No tiene permisos para cambiar esta página" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "¡Idioma debe estar configurado a uno soportado!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "%(plugin_name)s plugin añadido a %(placeholder)s" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "¡El idioma debe ser diferente del de la copia!" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "\"plugins\" en %(language)s copiados a %(placeholder)s" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" -msgstr "" -"%(plugin_name)s plugin editado en la posición %(position)s en %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgstr "%(plugin_name)s plugin editado en la posición %(position)s en %(placeholder)s" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "\"Plugins\" movidos" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." -msgstr "" -"%(plugin_name)s plugin en la posición %(position)s en %(placeholder)s fue " -"eliminado." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." +msgstr "%(plugin_name)s plugin en la posición %(position)s en %(placeholder)s fue eliminado." -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Permisos de página" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Permisos de usuario y grupo" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Administración de permisos de la página" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Detalles del usuario" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Grupos" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Contraseña" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Permisos de copia" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Moderación de la copia" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Heredar el template de su ancestro más cercano" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Resúmen" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Índices y tablas:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Índice completo" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "Listar todas las secciones y subsecciones" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Página de búsqueda" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "buscar esta documentación" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Índice Global de Módulos" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "acceso rápido a todos los módulos" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Índice general" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "todas las funciones, clases y términos" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Índice" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Índice completo en una página" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Índice de páginas por letra" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "puede ser enorme" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Navegación" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Índice" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Tema anterior" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "Capítulo anterior" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Tema siguiente" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "Capítulo siguiente" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Esta página" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Enseñar la fuente" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Busqueda rápida" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Ir" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "" -"Intruduzca los términos a buscar o un nombre de módulo, clase o función." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "Acerca de estos documentos" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Buscar" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Derechos" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Abandonado" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "buscar" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Resultados de la búsqueda" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "Su búsqueda no ha producido ningún resultado." - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "seleccionar esta página" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "Añadir otro" @@ -495,34 +333,34 @@ msgstr "Añadir otro" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "idioma" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "posición" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "fecha de creación" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "slot" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "nombre del plugin" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -532,7 +370,7 @@ msgstr "título" msgid "path" msgstr "path" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "slug" @@ -540,15 +378,15 @@ msgstr "slug" msgid "everybody" msgstr "todo el mundo" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "puede editar" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "grupo" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "puede publicar" @@ -570,7 +408,7 @@ msgid "navigation extenders" msgstr "extensores de navegación" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "tiene sobreescritura de url" @@ -586,328 +424,321 @@ msgstr "autor" msgid "reverse url id" msgstr "id de la url inversa" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "se necesita identificación" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "soft root" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "fecha final de la publicación" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "plantilla" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "fecha de publicación" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "en navegación" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "aplicación" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "redirige" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "palabras clave" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "descripción" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "Página actual" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Página hija (inmediata)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Página y página hija (inmediata)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Descendientes de la página" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Página y descendientes" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Página" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Usuario" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Moderar página" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "Moderar hijos" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "moderar descendientes" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "PageModerator" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "creado" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "cambiado" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "petición de eliminación" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "petición de cambio de lugar" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "petición de publicación" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "petición de despublicación" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "aprovado" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "Página del estado del moderador" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "Página de los estados del moderador" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "petición de aplicación" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "eliminar" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "app. par." -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "creado por" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "cambiado por" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." -msgstr "" -"Cuando una página debería estar en línea. El estado debe estar en \"Publicado" -"\" para que la página vaya a estar en línea." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." +msgstr "Cuando una página debería estar en línea. El estado debe estar en \"Publicado\" para que la página vaya a estar en línea." -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "Cuando caduca la página. Si se deja vacío, nunca caducará." -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Todos los ancestros no serán mostrados en la navegación" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" -msgstr "" -"Un identificador único que es usado con el templatetag page_url para enlazar " -"a esta página" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" +msgstr "Un identificador único que es usado con el templatetag page_url para enlazar a esta página" -#: models/pagemodel.py:58 -#, fuzzy +#: models/pagemodel.py:69 msgid "attached menu" -msgstr "menú de flash" +msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "está publicado" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "La plantilla usada para mostrar el contenido." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "El sitio de la página es accesible en." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "sitio" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "estado del moderador" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Sobreescribir lo que es mostrado en el menú" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "páginas" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "La página fue copiada." -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "por defecto" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "puede añadir" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "puede eliminar" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "puede cambiar la configuración avanzada" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "puede cambiar permisos" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "en el nivel de la página" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "puede mover" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "puede moderar" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "puede recuperar páginas" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "puede recuperar cualquier página eliminada" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." -msgstr "" -"Si no selecciona nada, el suaurio tiene garantizado el permiso a todos los " -"sitios." +msgstr "Si no selecciona nada, el suaurio tiene garantizado el permiso a todos los sitios." -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "sitios" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Permiso global de la página" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Permisos globales de las páginas" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "Autorizado" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Permiso de la página" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Usuario (página) " -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Usuarios (página)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Grupo del usuario (página)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Grupos de usuarios (página)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "ancho" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "Sobreescribir el título en el menú" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "Path" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "sobreescribir el título (etiqueta de html title)" @@ -915,21 +746,21 @@ msgstr "sobreescribir el título (etiqueta de html title)" msgid "File" msgstr "Fichero" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "fichero" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "usar fichero swf" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "alto" @@ -937,7 +768,7 @@ msgstr "alto" msgid "Missing flash plugin." msgstr "Plugin de flash no encontrado." -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Mapa de Google" @@ -993,15 +824,15 @@ msgstr "Planificador de ruta" msgid "Map" msgstr "Mapa" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "Su dirección" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Calcular la ruta" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "Hereda \"Plugins\" de la Página" @@ -1010,12 +841,8 @@ msgid "Language or Page must be filled out" msgstr "El Idioma o la Página debe ser rellenado" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" -msgstr "" -"Elija una página para incluir sus \"plugins\" en este \"placeholder\". Si la " -"deja vacía elegirá la página actual" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" +msgstr "Elija una página para incluir sus \"plugins\" en este \"placeholder\". Si la deja vacía elegirá la página actual" #: plugins/inherit/models.py:11 msgid "Optional: the language of the plugins you want" @@ -1025,28 +852,28 @@ msgstr "Opcional: el idioma de los \"plugins\" que desee" msgid "Link" msgstr "Enlace" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "nombre" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "enlace" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "Un enlace a una página tiene prioridad sobre un enlace del texto." -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "enviar a" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "Una dirección de correo tiene prioridad sobre un enlace de texto." @@ -1054,40 +881,40 @@ msgstr "Una dirección de correo tiene prioridad sobre un enlace de texto." msgid "Picture" msgstr "Foto" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "izquierda" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "derecha" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "imágen" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "si la imágen será 'clickable'" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "texto alternativo" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "descripción textual de la imágen" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "descripcción larga" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "descripcción adicional de la imágen" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "posición" @@ -1106,25 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " -msgstr "" -"Introduzca una plantilla (p.ej. \"snippets/plugin_xy.html\") que será " -"utilizada." +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgstr "Introduzca una plantilla (p.ej. \"snippets/plugin_xy.html\") que será utilizada." #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "Snippets" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "Muestra" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "Si la imágen será 'clickable'" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "Si la imágen será 'clickable'." @@ -1136,7 +960,7 @@ msgstr "más" msgid "Text" msgstr "Texto" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "cuerpo" @@ -1191,9 +1015,8 @@ msgid "Twitter" msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "usuario de twitter" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1213,19 +1036,14 @@ msgstr "Enlace pista" #: plugins/twitter/models.py:9 msgid "If given, the hint is displayed as link to your Twitter profile." -msgstr "" -"Si está seleccionado, la pista es mostrada con enlace a su perfil de Twitter." +msgstr "Si está seleccionado, la pista es mostrada con enlace a su perfil de Twitter." #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "usuario" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1236,92 +1054,84 @@ msgstr "Vídeo" msgid "Color Settings" msgstr "Preferencias del color" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "fichero de película" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "Use un fichero .flv o uno codificado como h265 como fichero de vídeo" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "URL de la película" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" -msgstr "" -"URL del video en vimeo o youtube. Ejemplo: http://www.youtube.com/watch?" -"v=YFa59lK-kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" +msgstr "URL del video en vimeo o youtube. Ejemplo: http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "Fichero de imágen para previsualizar" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "auto reproducción" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "auto esconder" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "pantalla completa" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "bucle" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "color de fondo" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "Hexagesimal, p. ej. ff00cc" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "Color del texto" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "color de la barra de posicionamiento" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "Color del fondo de la barra de posicionamiento" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "Color barra de actividad" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "Color de salida del botón" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "Color de estar sobre el botón" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "Color para iluminar el botón" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" -msgstr "" -"No está el \"plugin\" de flash. Descargelo de here" +msgid "Missing flash plugin. Download here" +msgstr "No está el \"plugin\" de flash. Descargelo de here" #: templates/admin/page_submit_line.html:3 #: templates/admin/cms/page/change_form.html:273 @@ -1348,28 +1158,33 @@ msgid "Save and continue editing" msgstr "Guardar y continuar editando" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." -msgstr "" -"La página %(page)s puede que necesite su " -"aprobación." +msgid "Page %(page)s may require approvement by you." +msgstr "La página %(page)s puede que necesite su aprobación." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Últimos cambios" #: templates/admin/cms/mail/base.html:55 #, python-format msgid "Log in to administration here." +msgstr "Entrar por aquía la parte de administración." + +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" msgstr "" -"Entrar por aquía la parte de administración." #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Nombre de usuario:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Contraseña:" @@ -1454,12 +1269,8 @@ msgstr "Estados de la página" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." -msgstr "" -"La página debe ser moderada en el nivel %(moderation_level)s, envíe un " -"mensaje al moderador." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." +msgstr "La página debe ser moderada en el nivel %(moderation_level)s, envíe un mensaje al moderador." #: templates/admin/cms/page/change_form.html:185 msgid "Request approvemet" @@ -1541,8 +1352,8 @@ msgid "edit this page" msgstr "editar esta página" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "editar" @@ -1598,7 +1409,7 @@ msgid "add" msgstr "añadir" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "Aprobar directamente" @@ -1613,6 +1424,7 @@ msgid "Unpublish" msgstr "Despublicar" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Publicar" @@ -1692,8 +1504,7 @@ msgstr "Recuperar %(verbose_name)s eliminado" #: templates/admin/cms/page/recover_form.html:24 msgid "Press the save button below to recover this version of the object." -msgstr "" -"Presione el botón de guardar de abajo para recuperar esta versión del objeto." +msgstr "Presione el botón de guardar de abajo para recuperar esta versión del objeto." #: templates/admin/cms/page/revision_form.html:11 #, python-format @@ -1702,8 +1513,7 @@ msgstr "Revertir %(verbose_name)s" #: templates/admin/cms/page/revision_form.html:24 msgid "Press the save button below to revert to this version of the object." -msgstr "" -"Presione el botón de guardar de abajo para revertir esta versión del objeto." +msgstr "Presione el botón de guardar de abajo para revertir esta versión del objeto." #: templates/admin/cms/page/dialog/copy.html:4 msgid "Copy options" @@ -1743,223 +1553,239 @@ msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "No hay Plugins presentes. Añada un plugin en el slot del placeholder." #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "Plugins disponibles" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "Mover a %(name)s" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "¿Seguro que desea eliminar este \"plugin\"?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "Modo edición" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "Estado" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "Nombre de usuario" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "Entrar" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "Plantilla" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "mover" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "Mover/añadir páginas" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "Añadir hijo" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "Añadir página hijo" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "añadir hermano" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "Añadir página hermana" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "Eliminar página" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "Administración del sitio" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "Configuración de la página" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "Historia" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "Ver Historia" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "Salir" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "Bloquear" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "Cerrar" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "Subir" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "Bajar" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "Configuración" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "Eliminar \"Plugin\"" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "Desligar moderación de la página" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "Desligar moderación del hijo" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "Desligar moderación de los descendientes" -#: templatetags/cms_tags.py:69 -#, fuzzy, python-format +#: templatetags/cms_tags.py:78 +#, python-format msgid "Page not found on %(domain)s" -msgstr "ID inverso no encontrado en %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:70 -#, fuzzy, python-format +#: templatetags/cms_tags.py:79 +#, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"Etiqueta page_id_url template no encontró una página con el reverse_id %" -"(reverse_id)s\n" -"La url de la página era: http://%(host)s%(path)s" -#: utils/moderator.py:82 -msgid "parent first" -msgstr "Padre primero" +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" -#: utils/moderator.py:89 -msgid "approve" -msgstr "aprobar" +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" -#: utils/moderator.py:240 -#, python-format -msgid "CMS - Page %s requires approvement." -msgstr "CMS - La página %s necesita aprovación." +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" -#: utils/permissions.py:206 -msgid "CMS - your user account was created." -msgstr "CMS - su cuenta de usuario ha sido creada." +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" -#: utils/permissions.py:208 -msgid "CMS - your user account was changed." -msgstr "CMS - su cuenta de usuario ha cambiado." +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" -#~ msgid "menu login required" -#~ msgstr "identificación requerida para el menú" +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "solo muestra la página en el menú si el usuario se ha identificado" +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" -#~ msgid "" -#~ "A show_placeholder_by_id template tag didn't found a page with the " -#~ "reverse_id %(reverse_id)s\n" -#~ "The url of the page was: http://%(host)s%(path)s" -#~ msgstr "" -#~ "Etiqueta de la plantilla show_placeholder_by_id no encontró una página " -#~ "con el reverse_id %(reverse_id)s\n" -#~ "La url de la página era: http://%(host)s%(path)s" +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" -#~ msgid "Sublevel" -#~ msgstr "Subnivel" +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" -#~ msgid "Sublevel3" -#~ msgstr "Subnivel3" +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" -#~ msgid "Sublevel 2" -#~ msgstr "Subnivel2" +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" -#~ msgid "Twitter recent entries plugin" -#~ msgstr "Plugin para la entradas recientes de Twitter" +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" -#~ msgid "blank" -#~ msgstr "blank" +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" -#~ msgid "self" -#~ msgstr "auto" +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" -#~ msgid "parent" -#~ msgstr "padre" +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" -#~ msgid "window" -#~ msgstr "ventana" +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" -#~ msgid "opaque" -#~ msgstr "opaco" +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" -#~ msgid "transparent" -#~ msgstr "transparente" +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" -#~ msgid "volume" -#~ msgstr "volúmen" +#: utils/moderator.py:83 +msgid "parent first" +msgstr "Padre primero" -#~ msgid "in range <0, 100>" -#~ msgstr "en el rango <0, 100>" +#: utils/moderator.py:90 +msgid "approve" +msgstr "aprobar" -#~ msgid "click_url" -#~ msgstr "click_url" +#: utils/moderator.py:251 +#, python-format +msgid "CMS - Page %s requires approvement." +msgstr "CMS - La página %s necesita aprovación." -#~ msgid "click target" -#~ msgstr "objetivo del click" +#: utils/permissions.py:206 +msgid "CMS - your user account was created." +msgstr "CMS - su cuenta de usuario ha sido creada." -#~ msgid "wmode" -#~ msgstr "wmode" +#: utils/permissions.py:208 +msgid "CMS - your user account was changed." +msgstr "CMS - su cuenta de usuario ha cambiado." -#~ msgid "Revisions" -#~ msgstr "Revisiones" +#~ msgid "fgcolor" +#~ msgstr "" #~ msgid "Wanted language has not been translated yet." #~ msgstr "No ha sido traducido aun al idioma deseado." diff --git a/cms/locale/es/LC_MESSAGES/djangojs.mo b/cms/locale/es/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..18acba17405bc1ceb4e043201c345bcd72c75795 GIT binary patch literal 912 zcmbVK&2G~`5MH1N$p;RcISdD+R%K%+MWk|*rXi$NrG$nm<%Cpi?5Vwxz3c2xN*{p- z-~svw9Jqo+-h*dhj0%xJ0;wZ?n%UX$=WllA`=gDIjBJDOn9w2IC%hxnRuKk-1>p_h zGvOKG!5zjv5S|lG==|j_V-xZZ?=cpUKPOLDjM6`?=BE^6eS>hNJy?GeTngpDX-IOR zG6W}P7A~dBwRd2}QmPDGj!+4@ypYDa-v2qM{^{n0#3DUcqQtG+Gp1OeBUQPyP!&Ft zs>dcq&oOcQIOT8ASgBPE>73MSo|HB?#Y!8;$2OBGf9W&Jr#gn*xyr_2m{Dtf)<|?2 zrgABDxc)Mf)_SzTXxPKgI~&`9!qDp8rIC+1TWWelVK>!Y*&(GWVL(Lo^_ z+GP8|_;@^Acie15!9XjAiny;T66x^03#&p%wO3EmSajX9=^@`;*VP&>(D0#3bV{R* zVRt6o@4v@Tw_kW83Vx_fX=70I>U6Z-)?PgT3cH&Mo^+wP6|iq#ht{pGEm+LF(U2l6 zJd(30AQ9zE3R5R5v`(x(2`ZEds8N&B1uY(0Cj&!89tr>e literal 0 HcmV?d00001 diff --git a/cms/locale/es/LC_MESSAGES/djangojs.po b/cms/locale/es/LC_MESSAGES/djangojs.po index 8a024701417..683c41553cc 100644 --- a/cms/locale/es/LC_MESSAGES/djangojs.po +++ b/cms/locale/es/LC_MESSAGES/djangojs.po @@ -2,39 +2,35 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" "Language-Team: LANGUAGE \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=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" -msgstr "" -"¿Está seguro de que desea cambiar %(field_name)s sin guardar antes la página?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" +msgstr "¿Está seguro de que desea cambiar %(field_name)s sin guardar antes la página?" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -"No todos los plugins se han guardado. ¿Está seguro de que desea guardar la " -"página? Todo el contenido de plugin que no haya guardado se perderá." -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" -msgstr "" -"¿Estás seguro de que desea cambiar de pestañas sin guardar antes la página?" +msgstr "¿Estás seguro de que desea cambiar de pestañas sin guardar antes la página?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "¿Está seguro de que quiere borrar este plugin?" diff --git a/cms/locale/es_AR/LC_MESSAGES/django.mo b/cms/locale/es_AR/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..4f46d3b28cb8e27196868bfa9c1b9d35601c450b GIT binary patch literal 6458 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 K-o|S~y80iI6{p_- literal 0 HcmV?d00001 diff --git a/cms/locale/es_AR/LC_MESSAGES/django.po b/cms/locale/es_AR/LC_MESSAGES/django.po index ecde86693e2..23660bc5039 100644 --- a/cms/locale/es_AR/LC_MESSAGES/django.po +++ b/cms/locale/es_AR/LC_MESSAGES/django.po @@ -2,485 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:53+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:39+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: es_AR\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Opciones avanzadas" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Título" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "Título por defecto" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Slug" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "La parte del título que se utilizará en la URL" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Idioma" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "El idioma actual de los campos de contenidos" -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Una página con el mismo slug ya existe" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Título del menú" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Sobreescribe lo que se muestra en el menú" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Título de la página" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" -msgstr "" -"Sobreescribe lo que se muestra en la barra de título del navegador o en los " -"marcadores" +msgstr "Sobreescribe lo que se muestra en la barra de título del navegador o en los marcadores" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Aplicación" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Enlaza una aplicación a esta página" -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Sobreescribe la URL" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "Deja este campo vacío si se va a usar el camino estándard." -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Redirecciona" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Redirecciona a esta URL." -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "La descripción de la página se utiliza habitualmente en los buscadores" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." -msgstr "" -"Una lista de palabras clave separadas por coma se utiliza habitualmente en " -"los buscadores" +msgstr "Una lista de palabras clave separadas por coma se utiliza habitualmente en los buscadores" -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Una página con una URL que se corresponde a este id ya existe" -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "URL inválida, utiliza el formato /mi/url" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "usuario" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"El permiso para añadir una página implica también el acceso a los hijos y " -"descendientes, en caso contrario la página añadida no podría ser cambiada " -"por su creador." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "El permiso para añadir una página implica también el acceso a los hijos y descendientes, en caso contrario la página añadida no podría ser cambiada por su creador." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "El permiso para añadir una página implica también permisos de edición." -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Por favor selecciona primero un usuario o un grupo." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Añadir" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Cambiar" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Borrar" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Recuperar (cualquier) pagina" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Avisiar al usuario" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Envia un aviso al usuario ante cambios del nombre de usuario o la clave. " -"Requiere el e-mail del usuario." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Envia un aviso al usuario ante cambios del nombre de usuario o la clave. Requiere el e-mail del usuario." -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Nueva clave" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Confimación de la nueva clave" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "La notificación por e-mail requiere una dirección de correo válida" -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" -msgstr "" -"¡El permiso para añadir páginas necesita del permiso para modificar páginas!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" +msgstr "¡El permiso para añadir páginas necesita del permiso para modificar páginas!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" -msgstr "" -"¡El permiso para añadir nuevos usuarios necesita del permiso para modificar " -"usuario!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" +msgstr "¡El permiso para añadir nuevos usuarios necesita del permiso para modificar usuario!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "Para añadir permisos también necesitas poder editarlos" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Oculto" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Configuración básica." -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "" -"Nota: Esta página se recargará si cambias la selección. Guárdala primero." +msgstr "Nota: Esta página se recargará si cambias la selección. Guárdala primero." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Configuración avanzada" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Configuración para SEO" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "más alto" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Error de la base de datos" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "página" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "La página ha sido aprobada." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "El objeto %(name)s con clave primaria %(key)s no existe." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Sólo existe una traducción para esta página." -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "El título y los plugins del idioma %(language)s han sido borrados." -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "¿Estás seguro?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "No tienes permisos para publicar esta página" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" -msgstr "" -"No tienes permisos para cambiar el estado de navegación de esta página." +msgstr "No tienes permisos para cambiar el estado de navegación de esta página." -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "No tienes permisos para cambiar esta página" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "El idioma debe ser uno de los soportados!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "El plugin %(plugin_name)s se añadió a %(placeholder)s" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "El idioma debe ser distinto de idioma copiado!" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "Se copiaron los plugins %(language)s a %(placeholder)s" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" -msgstr "" -"Plugin %(plugin_name)s modificado en la posición %(position)s de %" -"(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgstr "Plugin %(plugin_name)s modificado en la posición %(position)s de %(placeholder)s" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Plugins movidos" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "" - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 +#: forms/fields.py:20 msgid "Select a valid page" msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "" @@ -488,34 +333,34 @@ msgstr "" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -525,7 +370,7 @@ msgstr "" msgid "path" msgstr "" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "" @@ -533,15 +378,15 @@ msgstr "" msgid "everybody" msgstr "" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "" @@ -563,7 +408,7 @@ msgid "navigation extenders" msgstr "" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "" @@ -579,321 +424,321 @@ msgstr "" msgid "reverse url id" msgstr "" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Sobreescribe lo que se muestra en el menú" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "" @@ -901,21 +746,21 @@ msgstr "" msgid "File" msgstr "" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "" @@ -923,7 +768,7 @@ msgstr "" msgid "Missing flash plugin." msgstr "" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "" @@ -979,15 +824,15 @@ msgstr "" msgid "Map" msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "" @@ -996,9 +841,7 @@ msgid "Language or Page must be filled out" msgstr "" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "" #: plugins/inherit/models.py:11 @@ -1009,28 +852,28 @@ msgstr "" msgid "Link" msgstr "" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "" @@ -1038,40 +881,40 @@ msgstr "" msgid "Picture" msgstr "" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "" @@ -1090,23 +933,22 @@ msgid "HTML" msgstr "" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "" #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "" @@ -1118,7 +960,7 @@ msgstr "" msgid "Text" msgstr "" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "" @@ -1197,15 +1039,11 @@ msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "" #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "usuario" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1216,87 +1054,83 @@ msgstr "" msgid "Color Settings" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "" #: templates/admin/page_submit_line.html:3 @@ -1324,12 +1158,13 @@ msgid "Save and continue editing" msgstr "" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "" #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "" @@ -1338,11 +1173,18 @@ msgstr "" msgid "Log in to administration here." msgstr "" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "" @@ -1427,9 +1269,7 @@ msgstr "" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "" #: templates/admin/cms/page/change_form.html:185 @@ -1512,8 +1352,8 @@ msgid "edit this page" msgstr "" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "" @@ -1569,7 +1409,7 @@ msgid "add" msgstr "" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "" @@ -1584,6 +1424,7 @@ msgid "Unpublish" msgstr "" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "" @@ -1715,142 +1556,222 @@ msgstr "" msgid "Available plugins" msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "" @@ -1862,3 +1783,9 @@ msgstr "" #: utils/permissions.py:208 msgid "CMS - your user account was changed." msgstr "" + +#~ msgid "fgcolor" +#~ msgstr "" + +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/es_AR/LC_MESSAGES/djangojs.mo b/cms/locale/es_AR/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..c27b69a591400444908849fd91c296fe15e85b91 GIT binary patch literal 462 zcmZXPK~KUk6vr`o+R?Lznt0G?S+^L#;s_H4A=!|?@M_9dN6BcHwj=sI^y~Rqd}sm( z|H&_XO@Hls{XReYYCuka3*ZVk1@3@-I>09!KES$n4w-4S;hDvg9KUdFgpw5H8zu{d zv#oLFyi(fY#1taOPjz8%swi4pTN&!Qg|O>-)y&k^&BabA_juD4#?;(6v*#2KG-noG z#zST~MLzL7Ongk*h_tB>MT-y+@tp6(euDp=cTY*{mOz}C8H-cRq$!zInxfG%j?pws zBJ>y~;Uw;d!{IzyEP9~IqGkohDQ8=X;&3`%hGX#JxL=B<(nZfnCP{Ssxz{AlKuOCb z^!TV?Sj*q7Ta`@6F3Q$S8*YPTI>Mc!x1Z&WYaGc;Ll>YdCjiWvy9> bM@nxEMY8(cn!xX(zcRR%=rTawjnnu6M4p51 literal 0 HcmV?d00001 diff --git a/cms/locale/es_AR/LC_MESSAGES/djangojs.po b/cms/locale/es_AR/LC_MESSAGES/djangojs.po index 0d036e5d28f..a4069ace42a 100644 --- a/cms/locale/es_AR/LC_MESSAGES/djangojs.po +++ b/cms/locale/es_AR/LC_MESSAGES/djangojs.po @@ -2,36 +2,35 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 14:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: es_AR\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "" diff --git a/cms/locale/et/LC_MESSAGES/django.mo b/cms/locale/et/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..bc47793609e73e31b9a3b68823b9a063bdb23bc9 GIT binary patch literal 5163 zcma)%^}@gtgOY7^J&Cet&syCKD2Su3p;G#l<81Tt=gAYQ8g8Cp45z*hNd%JsPH-x>+ z?f<=X>*JjN`PZp4Z`^j%D~jtu?z_0JzDKF2!ROw`57+ZIDRms&0Urf_4xR!31}=if zZdOXVcEN|i9{2+IeemPpo$pubR7<2Cs|D9 z`35Nd{Rlh;{tT4({uvY=Zp8^gs_p=#-#ws&2fAZ?zX-}DwtkvhY!_Wlu6Z7WkE2b4 z%*E7EThb&N{4BRi(@F`b|dm%p6vDG}w-b6w%28TeozQDc2eW$!ku7ihili9;w z7o9EJ4SL&!z8;n?Gv$sR*d2ZF5Wj~@ofOvVya?Jp?|fKLr*vX{w{*kcid+|)I`pj` znx56Z$ZT*K-79Ys-PzIJnzGy1Ht)IIdKsHChYac#S!Vb?w517jX07d_O#BT^5?6}` zhraW=v?E)3tDjjruU%5x>9t8qYmyxnO%l0l8(A-N-izrb^#x3QyC%Oc=#FKa$$K?l zE_mI=>`;`l_Q>R2KCIgiT;B7umLif*194&MdcqkYKCOBa{~J2gso^knT_ZtLr%J1L zic0&cw2!MNjd$JIBB!G{>Wm4dV=&p4Wl^d#HnqX3<;=KL)ZjLo$!2tnOe*Zh9{35V zMEtD7<6NCBih(vW6NIlAJE3Ahoy+UNL~vfjqZhNC#i~s8W>IDa(XCiJtOsm5o60J~ zu%q3k_QAk%DV(BT-!Ce@LaHcmL7j)$iWSran^$_nh19BxcAL)Li`@3TpvipG$$G-k z#Uj|Y-VlAoaFsSK4EkhEp{@>E)V_zBu8djG>tA*VsdEnKm z?9bZ&__%G@X;qZ&W|gKp5}UFZ31_RRm9W=dMcZYzURhMbiC=5BOW#r-GWpKoNRL-* zY@iYzrVnvX#26FR1+~6>X{NDtwnn3reOf{lLY6k2q6+a*l9a4JiC9DYf?k_!+&Cbr zjzti@+JKX8Rk9OycHa=|!g6-?34Uh|3>%mx;u`8<{BfixaWCi=3FogiV6avA;CA zPouJBPvK9aYgLOP{%W?89zvnZk(-|tZoS>P;LOx(y7i?fl7B>Bqvxz$S>t<#cGnYl$yV^1GlI&!47 zbhNefuwHt&eRQd{^w8209b0R5*F04rgpTo4Rfn$RhqQ*6baS0 zbxxRh^(T%#DiP=L#GzatIH8Xmp8IlZwUCgtCVsT_a^Bndzw z&vfAFqRK;A{a0RRE-^YA@8)hm9@hiot6)YZ;jHyAP-R8IA?nCyD@A4! zImS$ym{74hDN&fnG5iX-kvaHIRdVA~uGX?~B&Kos;#r5!G+RI95WN<1U?^dRRN7HXOo>f(#Zn1j2E5kTjZe+acx#9TA z_=>Nn223_vE3xx>gpf(}DYo^iR71Kq`_@d0Vv7c>5(j64qcLVdU8rcL!sFx$k{8v+ z_{z`|vxK=*H>eUNL{apZSPVElD6%2hC{NyvAGKx%bg8^rAf%({>v3sKp)yo$9A#Zlp; z2DW-MzLH|+_-dcjXXe?j%{cThsc_h6*pWay#ZZccCaqO$^YPX3Rj-~wPMlmtk@6T1 zF&-h^<+&q35}rO;duZ~ituMz2O?8z{ed>|)ZHJOQM<2Q(hXyBwO*-PqNW0BAH)}Q< zE4NHgD{M_j*YI&Y4g0@R*+h%=pn`of+W&QAZO6edwXj8h%x4OZ5=awHZ?R>!Y`<`1 zdOsb1ewHDI4J~`J2KMx=8Tf&tGNT}`q{uO8l}DLQU8onR6A2DkN}g&s#8rfaU$dAq zeEhwvLl&+*!D(pqce9Z0~b1$Aj(dJ4pYI*h@x#r7(D9RZoCZS<04MJ)^c z(^g4jwbgal$!Merwj%j~0B^-CB6$%Suame|r>@+7TY;xY- zFXE^<@J_=g0pwqiYliRn(hQI3X(oM+7Rl9|v{DX^uMQ|-$GdTRPj=gE+repFDv|E? wRYyV=mEWLFLXtyjCsCB-(%NxhjewKwNi+ns-iUZK81I%no2e-aYGStfKk!s01^@s6 literal 0 HcmV?d00001 diff --git a/cms/locale/et/LC_MESSAGES/django.po b/cms/locale/et/LC_MESSAGES/django.po index c1329b28b4d..2b306b4d657 100644 --- a/cms/locale/et/LC_MESSAGES/django.po +++ b/cms/locale/et/LC_MESSAGES/django.po @@ -2,476 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: django-cms\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:53+0200\n" -"PO-Revision-Date: 2010-04-28 16:59+0300\n" -"Last-Translator: Tanel Külaots \n" -"Language-Team: \n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:38+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \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-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Täpsemad valikud" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Pealkiri" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "Vaikimisi pealkiri" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Aadressi komponent" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "Osa pealkirjast, mida kasutatakse internetiaadressi koostamiseks" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Keel" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "Sisu väljade aktiivne keel." -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Selle aadressi komponendiga lehekülg on juba olemas" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Pealkiri menüüs" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Kirjuta üle menüüs kuvatav" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Lehekülje pealkiri" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "Kirjuta üle veebilehitseja ülaosas või järjehoidjas kuvatav" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Rakendus" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Haagi rakendus selle lehekülje külge." -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Kirjuta üle internetiaadress" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "Hoia see väli tühjana, et kasutada standardset rada." -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Ümbersuunamine" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Suuna ümber sellele internetiaadressile." -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "Lehekülje kirjeldus mida mõnikord kasutavad otsingumootorid." -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." -msgstr "" -"Komade eraldatud nimekiri märksõnadest mida mõnikord kasutavad " -"otsingumootorid." +msgstr "Komade eraldatud nimekiri märksõnadest mida mõnikord kasutavad otsingumootorid." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Sellise pööratud identifikaatoriga lehekülg on juba olemas." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "Vigane internetiaadress, kasuta formaati /minu/url ." -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "kasutaja" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"Õigus lehekülge lisada nõuab ka ligipääsu alamlehekülgede, vastasel juhul ei " -"saa lehekülje looja lisatud lehekülge muuta." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "Õigus lehekülge lisada nõuab ka ligipääsu alamlehekülgede, vastasel juhul ei saa lehekülje looja lisatud lehekülge muuta." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "Õigus lehekülge lisada nõuab ka lehekülje muutmise õigust." -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Palun vali kasutaja või kasutajate grupp." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Lisa" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Muuda" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Kustuta" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Taasta leheküljed." -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Teavita kasutajat" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Saada kasutajale märguanne kasutajanime või parooli muutusest. Vajab " -"kasutaja e-posti aadressi. " +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Saada kasutajale märguanne kasutajanime või parooli muutusest. Vajab kasutaja e-posti aadressi. " -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Uus parool" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Uue parooli kinnitus" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "E-posti teel teavitamine nõuab kehtivat e-posti aadressi." -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "Õigus lisada uusi lehekülgi nõuab õigust lehekülgi muuta!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "Õigus lisada uusi kasutajaid nõuab õigust kasutajaid muuta!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "Õiguste lisamiseks pead sa neid ka muutma!" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Peidetud" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Põhiseadistused" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "" -"Tähelepanu: Valiku muutmisel lehekülg laeb ennast uuesti. Salvesta ennem." +msgstr "Tähelepanu: Valiku muutmisel lehekülg laeb ennast uuesti. Salvesta ennem." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Muud seadistused" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Otsingumootoritele suunatud seadistused" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "kõrgem" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Andmebaasi viga" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "lehekülg" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "Leheküljele heakskiit antud." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "Objekti %(name)s primaarvõtmega %(key)r ei ole olemas." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Sellel leheküljel on ainult üks tõlge." -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "Pealkiri ja pluginad %(language)s keeles kustutatud" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Kas oled kindel?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "" - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 +#: forms/fields.py:20 msgid "Select a valid page" msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "" @@ -479,34 +333,34 @@ msgstr "" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -516,7 +370,7 @@ msgstr "" msgid "path" msgstr "" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "" @@ -524,15 +378,15 @@ msgstr "" msgid "everybody" msgstr "" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "" @@ -554,7 +408,7 @@ msgid "navigation extenders" msgstr "" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "" @@ -570,321 +424,321 @@ msgstr "" msgid "reverse url id" msgstr "" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Kirjuta üle menüüs kuvatav" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "" @@ -892,21 +746,21 @@ msgstr "" msgid "File" msgstr "" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "" @@ -914,7 +768,7 @@ msgstr "" msgid "Missing flash plugin." msgstr "" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "" @@ -970,15 +824,15 @@ msgstr "" msgid "Map" msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "" @@ -987,9 +841,7 @@ msgid "Language or Page must be filled out" msgstr "" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "" #: plugins/inherit/models.py:11 @@ -1000,28 +852,28 @@ msgstr "" msgid "Link" msgstr "" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "" @@ -1029,40 +881,40 @@ msgstr "" msgid "Picture" msgstr "" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "" @@ -1081,23 +933,22 @@ msgid "HTML" msgstr "" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "" #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "" @@ -1109,7 +960,7 @@ msgstr "" msgid "Text" msgstr "" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "" @@ -1188,15 +1039,11 @@ msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "" #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "kasutaja" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1207,87 +1054,83 @@ msgstr "" msgid "Color Settings" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "" #: templates/admin/page_submit_line.html:3 @@ -1315,12 +1158,13 @@ msgid "Save and continue editing" msgstr "" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "" #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "" @@ -1329,11 +1173,18 @@ msgstr "" msgid "Log in to administration here." msgstr "" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "" @@ -1418,9 +1269,7 @@ msgstr "" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "" #: templates/admin/cms/page/change_form.html:185 @@ -1503,8 +1352,8 @@ msgid "edit this page" msgstr "" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "" @@ -1560,7 +1409,7 @@ msgid "add" msgstr "" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "" @@ -1575,6 +1424,7 @@ msgid "Unpublish" msgstr "" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "" @@ -1706,142 +1556,222 @@ msgstr "" msgid "Available plugins" msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "" @@ -1853,3 +1783,9 @@ msgstr "" #: utils/permissions.py:208 msgid "CMS - your user account was changed." msgstr "" + +#~ msgid "fgcolor" +#~ msgstr "" + +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/et/LC_MESSAGES/djangojs.mo b/cms/locale/et/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..4936c94f2b795babff22d3fbab548ba4942fbbac GIT binary patch literal 459 zcmZXPK~KUk6vr`o+R?Lznt0G?S+^L#;)oLlA=!|?@Lsk$N=Cc19np{B!LR3M@l6vr z_)mW6Yx-;7>-YKDR||3iTmVeZ`_yB9;95UBx%QK6oIez8Z2qh`Xw@ela zXFKC8c%`((i77;mpX0)x}B+=n~S|r?(wE8jH$VC<}WE8YR)XY zj7Q9JihSaEnE04<5$RGNiVh(l;sxJ}W`h5ocTY*@mOz}C8H-cRq$!zInxgS4j?pYk zBJ>y~;WT~G1Q_gl2#o=tS3Mb&j@lz?aB%6bf<`0XI|Etm3XZ5 Y&QK()->nJ!KKd(zYl$uc, YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 14:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \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" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "" diff --git a/cms/locale/eu/LC_MESSAGES/django.mo b/cms/locale/eu/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..b63a1d677caa85f22572cd3ee860c0c4703ea06f GIT binary patch literal 570 zcmZWl%We}f6b;bTELpR-mAU}I&3K}!4Q^AlO;agS15r9q#LgYxdK}HzgCBu@2*1a- z;Gt@=;7G@>d#-(s|GeJ&JxF+w_$Kin@m1o7#2({*csUq+OjEDfV(ILfs(^EeU&(oG z4F|avMp>*{pRK5~F5to|E%7ockEP{MhtPSR=Sqh<-VZC==2CC8&3B!-_CAu&mY++U zIuaq>j8`HMhY>3ZWFut9z>fKdAvHcl~WOM>g%gI{<`x7YMW#4dVN$P;lIXKLWYP7F+rCS?a iMbjrc9AbD#ezuKM8%=PJ9B%LC<@ed@=Hk;;HuwvgudOKn literal 0 HcmV?d00001 diff --git a/cms/locale/eu/LC_MESSAGES/django.po b/cms/locale/eu/LC_MESSAGES/django.po index 5b4e5492a07..d949399cddd 100644 --- a/cms/locale/eu/LC_MESSAGES/django.po +++ b/cms/locale/eu/LC_MESSAGES/django.po @@ -2,470 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:53+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"Last-Translator: Benjamin Wohlwend \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "" -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "" -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "" -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "" -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." msgstr "" -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "" -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." msgstr "" -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "" -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "" -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "" -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "" - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 +#: forms/fields.py:20 msgid "Select a valid page" msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "" @@ -473,34 +333,34 @@ msgstr "" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -510,7 +370,7 @@ msgstr "" msgid "path" msgstr "" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "" @@ -518,15 +378,15 @@ msgstr "" msgid "everybody" msgstr "" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "" @@ -548,7 +408,7 @@ msgid "navigation extenders" msgstr "" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "" @@ -564,320 +424,321 @@ msgstr "" msgid "reverse url id" msgstr "" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "" @@ -885,21 +746,21 @@ msgstr "" msgid "File" msgstr "" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "" @@ -907,7 +768,7 @@ msgstr "" msgid "Missing flash plugin." msgstr "" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "" @@ -963,15 +824,15 @@ msgstr "" msgid "Map" msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "" @@ -980,9 +841,7 @@ msgid "Language or Page must be filled out" msgstr "" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "" #: plugins/inherit/models.py:11 @@ -993,28 +852,28 @@ msgstr "" msgid "Link" msgstr "" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "" @@ -1022,40 +881,40 @@ msgstr "" msgid "Picture" msgstr "" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "" @@ -1074,23 +933,22 @@ msgid "HTML" msgstr "" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "" #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "" @@ -1102,7 +960,7 @@ msgstr "" msgid "Text" msgstr "" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "" @@ -1185,10 +1043,7 @@ msgid "query" msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1199,87 +1054,83 @@ msgstr "" msgid "Color Settings" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "" #: templates/admin/page_submit_line.html:3 @@ -1307,12 +1158,13 @@ msgid "Save and continue editing" msgstr "" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "" #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "" @@ -1321,11 +1173,18 @@ msgstr "" msgid "Log in to administration here." msgstr "" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "" @@ -1410,9 +1269,7 @@ msgstr "" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "" #: templates/admin/cms/page/change_form.html:185 @@ -1495,8 +1352,8 @@ msgid "edit this page" msgstr "" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "" @@ -1552,7 +1409,7 @@ msgid "add" msgstr "" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "" @@ -1567,6 +1424,7 @@ msgid "Unpublish" msgstr "" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "" @@ -1698,142 +1556,222 @@ msgstr "" msgid "Available plugins" msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "" @@ -1845,3 +1783,9 @@ msgstr "" #: utils/permissions.py:208 msgid "CMS - your user account was changed." msgstr "" + +#~ msgid "fgcolor" +#~ msgstr "" + +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/eu/LC_MESSAGES/djangojs.mo b/cms/locale/eu/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..28982fb128867cfff85a0e11ec21a3efb6516664 GIT binary patch literal 459 zcmZXPK~KUk6vr`o+R?Lznt0G?S+^L#;)oLlA=!|?@Lsk$N=Cc19np{B!LR3M@l6vr z_)mW6Yx-;7>-YKDR||3iTmVeZ`_yB9;95UBx%QK6oIez8Z2qh`Xw@ela zXFKC8c%`((i77;mpX0)x}B+=n~S|r?(wE8jH$VC<}WE8YR)XY zj7Q9JihSaEnE04<5$RGNiVh(l;sxJ}W`h5ocTY*@mOz}C8H-cRq$!zInxgS4j?pYk zBJ>y~;WT~G1Q_gl2#o=tS3Mb&j@lz?aB%6bf<{d&b+KOEAd$A YouNopzgrXdee_ob*AiU@$h&b`KeSzf`~Uy| literal 0 HcmV?d00001 diff --git a/cms/locale/eu/LC_MESSAGES/djangojs.po b/cms/locale/eu/LC_MESSAGES/djangojs.po index 0d036e5d28f..100e566a290 100644 --- a/cms/locale/eu/LC_MESSAGES/djangojs.po +++ b/cms/locale/eu/LC_MESSAGES/djangojs.po @@ -2,36 +2,35 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 14:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "" diff --git a/cms/locale/fa/LC_MESSAGES/django.mo b/cms/locale/fa/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..3ea5b64edfac650f2983dccb659760774f5a074e GIT binary patch literal 30555 zcmcJX37DKkx$g@^3_ zRbMS{y?a%6cy8~VZgPA^cW~|y@cX+u_cG7dy-BUk4IJj&Nnin-3f>7W0>1~&2Pa3) z?E)6T3E&7g9ef|C{+q#5z@LVCG|9Qy)E9$#e-pSf_%-l#;J3jyg5L!p#XSpZ{$GI; z!T$hv2mceC0q!>0x%Yr`z&*joz`ellh5AoH&HEB~0{CZe4{++?&UJ!kfNfw2>;P{D zF9N>?9t9qHgr{RZ_y+3dgIfQcpw=sb`+--3$ACA2yMd2_qT@TD`acgcrTY!Ye{P>C z9!~;A&pSa#bAzDPxdGfCyam+0*Ms8k!vP-$#h-73;$I!qx<3Zr4*nY42b}j7=Uxw9 z0*a1qQ2V|T+zI?FD1P4sijIw;{uNOBdlD2q&xiJ3g0G|g5~%t94DJk0IMO*(!tDWy zuBo8tIR%vb=7al!OF;D-0H=Ygz_)^1K+&@k!q9xXfNucz1V#S=pyoRi6hDpuCxA0R zy+0GwxVfO_SqO@M=Y{qHsQHG%`>Vi1sb3AA34R(p9efs)91dys@;U=Nka`a&`Cbi* zjwJ6=g)$g|9((%d>oX#z7L9y7eMXnx8SkhL^h{& zPX(nnqX9n*&Z2%hxGVSqC_nKVP@K;BMdq2H8Hq zH&dSkirzCo(X$j3y(JJ8cJBiv$GbrF`x2;qKLtu(e*voh%izJ_gsGm+BS5uJ1Ep^> zL9L$y4*<*HF5oIqa{E}Q-wKNEyFl@IEvWr&1f>^Gf(L=W5AS!I=J~ZBcoyyL;B2r6 zYW#+PTR`#kF;MIO0F1yFL9M?BLeM@B0JXoV;NIXIP_FnQ@QvUQDEh7j#gA)2@$F_% z^4S1h2!0vVy!##J*F6-}xZ^<4H3QW9GeGItJaBJtQK)x=dS3t~hYG0iw}6P!eFlUD z?g0&2uWK zese+5vn13n4%ip43NGaR`$495-vLGMP7pB%JRTH(mVuax`vNGw{}7b_d=AulKLJJG zzk{OZPoVg;D@;)Tso?J53{d^&g6h9GyuSn#{k@>%I0&j=E#Niap43-?;>#z&{lVKp z`~9H!@pVw^)j{d|^Pu|u4cr&p_hfIk?V#414vJ5wh5B1T(X|BB_)9^}`(9AsLYX>wDq-4?*qoIZ*5UEa2}z&HFb{^X-T;Q+)y` z{_O^8o$P~*Bl(S0VUbj12yjexFa|S$}bFo8h;}wx<3hu zKdS?74(*SH`jepe_)Nf`h4vRi{V$-_*@@&yxCL;LBV`Yi%A z?qX2;cvoo8gIc!??g3r}s^6-B9|1M~W1#r*=}=!C-fsY<4-bIi=M$j#@Fb{xe-AtY zd>)kFef_C^{wbj7Jqi?GriJ#?K*{keP;{LO$__3Bwa?2zt@j>K<8A;&-)BJeUmfcA zf#So%pw{^osQyoan(rA<^Zf=Co$fSW-yPKc4-0q%XnYOzsR5^hTK8m7>&^nzZvkj} z651~Y#kX!S0tZ3$yB-uh9|yJG9iZs_JShI%4~njbz&7yfp!)v?RR6yQ+<_!z5%rxx z&3geTdM*LAZXSGL2lNq~Nqy;=J}!L%d?)n=*aObsrTX6r8XX`abN7S&;P1fm!Hdtr z2Eg^;N5CCt`F!IBQ2YKdsCj-49t!>rJRIC}wvSuW!O7GYfJcF4a5?xXux$tUKF9mV zd2_vA9|j}d-w0~{&EP!ni{QcFPG>v!HZTGgf|XEz6x6(X(-{}wZU$w?Pl2NEg;0MH z6rD;+4gwAXyTL9{?VkZ7@JryEz-Phf;7g$V{84Z9`?w6;kNSr}SmW*hBk-r7`1tyB zy#CJwr%=xY90SFld%%g{Q{VyMGvGJCm%wS@mlt@sz6ffam%%0AZfsh7$$_GO0Ne-s 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\n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:38+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: fa\n" +"Plural-Forms: nplurals=1; plural=0\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" -#: plugin_base.py:99 +#: plugin_base.py:100 msgid "Advanced options" msgstr "گزینه های پیشرفته" -#: admin/forms.py:25 +#: admin/forms.py:52 msgid "Title" msgstr "عنوان" -#: admin/forms.py:26 +#: admin/forms.py:53 msgid "The default title" msgstr "عنوان پیش فرض" -#: admin/forms.py:27 +#: admin/forms.py:54 msgid "Slug" msgstr "نشانک (آدرس کوتاه صفحه)" -#: admin/forms.py:28 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "قسمتی از عنوان که در آدرس اینترنتی استفاده می شود" -#: admin/forms.py:29 +#: admin/forms.py:56 msgid "Language" msgstr "زبان" -#: admin/forms.py:30 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "زبان جاری فیلدهای محتوا." -#: admin/forms.py:73 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "صفحه-ای با همین نشانک موجود است." -#: admin/forms.py:93 +#: admin/forms.py:128 msgid "Menu Title" msgstr "عنوان منو" -#: admin/forms.py:94 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "جاینوشت در منوی نمایش داده شده" -#: admin/forms.py:95 +#: admin/forms.py:130 msgid "Page Title" msgstr "عنوان صفحه" -#: admin/forms.py:96 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr " عنوان مرورگر یا بوک مارک ها جاینوشت می-شوند" -#: admin/forms.py:97 +#: admin/forms.py:132 msgid "Application" msgstr "نرم-افزار" -#: admin/forms.py:99 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "اتصال نرم-افزار به این صفحه" -#: admin/forms.py:100 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "جاینوشت آدرس اینترنتی" -#: admin/forms.py:101 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "اگر از آدرس استاندارد استفاده می-شود، این فیلد خالی گذارده شود." -#: admin/forms.py:107 +#: admin/forms.py:142 msgid "Redirect" msgstr "تغییر مسیر" -#: admin/forms.py:108 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "تغییرمسیر به این آدرس." -#: admin/forms.py:110 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "شرح صفحه که توسط موتورهای جستجو استفاده می شود." -#: admin/forms.py:112 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "لیست کلمات کلیدی با ویرگول از هم جداشده که توسط موتورهای جستجو استفاده می شود." -#: admin/forms.py:120 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "صفحه-ای با شناسه-ی این آدرس معکوس وجود دارد." -#: admin/forms.py:127 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "آدرس نامعتبر، از الگوی /my/url استفاده کنید." -#: admin/forms.py:138 admin/forms.py:139 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "کاربر" -#: admin/forms.py:171 +#: admin/forms.py:215 msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." msgstr " اجازه دسترسی به اضافه کردن صفحه اجازه دسترسی به صفحات زیرین، و یا صفحات فرزند، را نیز نیاز دارد؛ در غیر اینصورت خود ایجادکننده صفحه قابلیت تغییر آن را نخواهد داشت." -#: admin/forms.py:174 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "اجازه دسترسی به اضافه کردن صفحه همچنین نیاز به اجازه ویرایش صفحه را دارد." -#: admin/forms.py:201 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "لطفا ابتدا کاربر یا گروه را انتخاب کنید." -#: admin/forms.py:208 admin/forms.py:215 admin/forms.py:219 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 -#: templates/admin/cms/page/plugin_change_form.html:69 +#: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "اضافه" -#: admin/forms.py:209 admin/forms.py:216 admin/forms.py:220 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "تغییر" -#: admin/forms.py:210 admin/forms.py:217 admin/forms.py:221 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "حذف" -#: admin/forms.py:211 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "بازیابی (هر صفحه)" -#: admin/forms.py:274 +#: admin/forms.py:295 msgid "Notify user" msgstr "هشدار به کاربر" -#: admin/forms.py:275 +#: admin/forms.py:296 msgid "Send email notification to user about username or password change. Requires user email." msgstr "از طریق ایمیل به کاربر در مورد نام کاربری یا تغییر رمز عبور را مطلع کن. نیاز به ایمیل کاربر دارد." -#: admin/forms.py:295 +#: admin/forms.py:316 msgid "New password" msgstr "رمز عبور جدید" -#: admin/forms.py:297 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "تایید رمز عبور جدید" -#: admin/forms.py:316 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "هشدار از طریق ایمیل به ایمیل معتبر نیاز دارد." -#: admin/forms.py:318 +#: admin/forms.py:339 msgid "The permission to add new pages requires the permission to change pages!" msgstr "اجازه اضافه کردن صفحات جدید نیاز به اجازه ویرایش صفحه دارد!" -#: admin/forms.py:320 +#: admin/forms.py:341 msgid "The permission to add new users requires the permission to change users!" msgstr "اجازه ایجاد کاربران نیاز به اجازه تغییر کاربر دارد." -#: admin/forms.py:322 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "برای اضافه کردن دسترسی شما باید دسترسی ویرایش آنها را نیز داشته باشید." -#: admin/pageadmin.py:111 admin/pageadmin.py:127 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "پنهان" -#: admin/pageadmin.py:122 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "تنظیمات پایه" -#: admin/pageadmin.py:125 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "توجه: اگر انتخابتان را تغییر دهید، این صفحه بارگذاری مجدد می-شود. آن را ابتدا ذخیره کنید." -#: admin/pageadmin.py:131 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "تنظیمات پیشرفته" -#: admin/pageadmin.py:140 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "تنظیمات جستجوگرها" -#: admin/pageadmin.py:463 +#: admin/pageadmin.py:504 msgid "higher" msgstr "بالاتر" -#: admin/pageadmin.py:629 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "خطای پایگاه داده" -#: admin/pageadmin.py:714 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:72 models/permissionmodels.py:68 -#: models/pluginmodel.py:38 models/titlemodels.py:22 -#: plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "صفحه" -#: admin/pageadmin.py:837 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "صفحه با موفقیت به تصویب رسید." -#: admin/pageadmin.py:891 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "شی %(name)s با کلید اصلی %(key)r موجود نیست." -#: admin/pageadmin.py:894 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "تنها یک ترجمه برای این صفحه موجود است." -#: admin/pageadmin.py:909 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "عنوان و افزونه-ها به زبان %(language)s حذف شدند." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "آیا مطمئن هستید؟" -#: admin/pageadmin.py:994 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "شما اجازه انجام این کار به انتشار این صفحه را ندارید" -#: admin/pageadmin.py:1012 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "شما اجازه تغییر وضعیت in_navigation این صفحه را ندارید" -#: admin/pageadmin.py:1047 admin/pageadmin.py:1081 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "شما اجازه ویرایش این صفحه را ندارید." -#: admin/pageadmin.py:1051 admin/pageadmin.py:1083 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "یکی از زبانهای پشتیبانی شده را انتخاب کنید." -#: admin/pageadmin.py:1063 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "افزونه %(plugin_name)s به %(placeholder)s اضافه شد." -#: admin/pageadmin.py:1085 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "زبان انتخابی باید غیر از زبان کپی شده باشد." -#: admin/pageadmin.py:1131 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "افزونه-های زبان(های) %(language)s به %(placeholder)s کپی شد." -#: admin/pageadmin.py:1204 +#: admin/pageadmin.py:1260 #, python-format msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "افزونه %(plugin_name)s در موقعیت %(position)s در %(placeholder)s تغییر کرد." -#: admin/pageadmin.py:1259 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "افزونه-ها حذف شدند." -#: admin/pageadmin.py:1281 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "افزونه %(plugin_name)s در موقعیت %(position)s در %(placeholder)s حذف شد." -#: admin/permissionadmin.py:112 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "اختیارات صفحه" -#: admin/permissionadmin.py:113 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "اختیارات کاربر و گروه" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "مدیریت اختیارات صفحه" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "جزئیات کاربر" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "گروهها" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:855 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "رمز عبور" -#: admin/widgets.py:58 -msgid "Add Another" -msgstr "اضافه کردن یکی دیگر" - -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "اختیارات کپی" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "بازرسی کپی" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "الگوی نزدیک-ترین والد را در داشته باش." -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "خلاصه" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "اندیسها و جدولها:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "فهرست محتوای کامل" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "فهرست تمام قسمتها و زیربخشها" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "صفحه جستجو" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "جستجوی این مستندات" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "نمایه کلی پیمانه" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "دسترسی سریع به تمام پیمانه-ها" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "نمایه عمومی" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "تمام توابع، کلاسها، واژه-ها" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "نمایه" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "نمایه کامل بر روی یک صفحه" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "نمایه صفحات به ترتیب الفبا" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "می-تواند بسیار بزرگ باشد" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "گردش" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "فهرست مطالب" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "عنوان قبلی" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "فصل قبلی" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "عنوان بعدی" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "فصل بعدی" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "این صفحه" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "نمایش منبع کد" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "جستجوی سریع" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "برو" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "واژه-ها یا نام پیمانه، کلاس یا تابع را وارد کنید." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "درباره این مستندات" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "جستجو" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "حق مولف" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "منسوخ" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "جستجو" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "نتایج جستجو" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "جستجوی شما نتیجه-ای در بر نداشت." +#: forms/fields.py:19 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:20 +msgid "Select a valid page" +msgstr "" + +#: forms/widgets.py:173 +msgid "Add Another" +msgstr "اضافه کردن یکی دیگر" #: migrations/0001_initial.py:12 migrations/0001_initial.py:24 #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:42 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "زبان" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:40 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "موقعیت" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:44 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "تاریخ ایجاد" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/pluginmodel.py:41 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "شیار" -#: migrations/0001_initial.py:18 models/pluginmodel.py:43 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "نام افزونه" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 -#: plugins/twitter/models.py:6 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 +#: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" msgstr "عنوان" @@ -493,7 +370,7 @@ msgstr "عنوان" msgid "path" msgstr "آدرس" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "نشانک" @@ -501,15 +378,15 @@ msgstr "نشانک" msgid "everybody" msgstr "همه" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "می-تواند ویرایش کند" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "گروه" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "می-تواند منتشر کند" @@ -526,12 +403,12 @@ msgstr "می-تواند ریشه نرم را تغییر دهد" msgid "status" msgstr "وضعیت" -#: migrations/0001_initial.py:53 models/pagemodel.py:51 +#: migrations/0001_initial.py:53 msgid "navigation extenders" msgstr "توسعه-دهندگان گردش" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "بازنویسی آدرس دارد" @@ -547,299 +424,321 @@ msgstr "نویسنده" msgid "reverse url id" msgstr "شناسه آدرس معکوس" -#: migrations/0001_initial.py:59 models/pagemodel.py:64 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "نیاز به ورود دارد" -#: migrations/0001_initial.py:60 models/pagemodel.py:49 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "ریشه نرم" -#: migrations/0001_initial.py:63 models/pagemodel.py:47 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "تاریخ اتمام انتشار" -#: migrations/0001_initial.py:64 models/pagemodel.py:54 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "الگو" -#: migrations/0001_initial.py:66 models/pagemodel.py:46 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "تاریخ انتشار" -#: migrations/0001_initial.py:67 models/pagemodel.py:48 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "در گردش" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "نرم افزار" -#: migrations/0006_apphook.py:65 models/pagemodel.py:50 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "شناسه" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "بازفرستادن" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "کلمات کلیدی" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "توصیفات" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "صحفه فعلی" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "صحفهات فرزند (بلافاصله)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "صفحه و فرزندان (بلافاصله)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "نوادگان صفحه" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "صفحه و نوادگان" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "صفحه" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "کاربر" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "نظارت صفحه" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "نظارت فرزندان" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "نظارت نوادگان" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "ناظر صفحه" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "ایجادشده" -#: models/moderatormodels.py:98 models/pagemodel.py:33 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "تغییریافته" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "نیاز به حذف" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "نیاز به جابجایی" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "نیاز به انتشار" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "نیاز به پایان انتشار" -#: models/moderatormodels.py:103 models/pagemodel.py:36 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "تاییدشده" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "وضعیت ناظر صفحه" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "وضعیتهای ناظر صفحه" -#: models/pagemodel.py:34 +#: models/pagemodel.py:43 msgid "req. app." msgstr "نرم-افزار مورد نیاز" -#: models/pagemodel.py:35 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:885 -#: templates/cms/toolbar/toolbar.html:919 utils/moderator.py:91 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "حذف" -#: models/pagemodel.py:37 +#: models/pagemodel.py:46 msgid "app. par." msgstr "قسمت نرم-افزار" -#: models/pagemodel.py:42 +#: models/pagemodel.py:50 +msgid "for logged in users only" +msgstr "" + +#: models/pagemodel.py:51 +msgid "for anonymous users only" +msgstr "" + +#: models/pagemodel.py:59 msgid "created by" msgstr "ایجادشده به وسیله" -#: models/pagemodel.py:43 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "تغییریافته به وسیله" -#: models/pagemodel.py:46 +#: models/pagemodel.py:64 msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "زمانی که صفحه منتشر می-شود. وضعیت صفحه باید «منتشرشده» باشید تا این رخ دهد." -#: models/pagemodel.py:47 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "زمان انقضای صفحه. خالی بماند اگر هیچ گاه منقضی نمی-شود." -#: models/pagemodel.py:49 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "تمامی اجداد در گردش نمایش داده نمی-شوند." -#: models/pagemodel.py:50 +#: models/pagemodel.py:68 msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "شناسه-ی بکتایی که برای تگ الگوی page_url برای آدرس به این صفحه استفاده می-شود." -#: models/pagemodel.py:52 +#: models/pagemodel.py:69 +msgid "attached menu" +msgstr "" + +#: models/pagemodel.py:70 msgid "is published" msgstr "منتشرشده" -#: models/pagemodel.py:54 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "الگویی که برای پویش محتوا استفاده می‌شود" -#: models/pagemodel.py:55 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "وبگاهی که صفحه در آن در دسترس است." -#: models/pagemodel.py:55 +#: models/pagemodel.py:73 msgid "site" msgstr "وبگاه" -#: models/pagemodel.py:57 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "نظارت وضعیت" -#: models/pagemodel.py:65 -msgid "menu login required" -msgstr "نیاز به ورود برای منو" +#: models/pagemodel.py:83 +msgid "menu visibility" +msgstr "" -#: models/pagemodel.py:65 -msgid "only show this page in the menu if the user is logged in" -msgstr "تنها زمانی این صفحه را نمایش بده که کار به وبگاه وارد شده باشد" +#: models/pagemodel.py:83 +msgid "limit when this page is visible in the menu" +msgstr "" -#: models/pagemodel.py:73 +#: models/pagemodel.py:100 msgid "pages" msgstr "صفحات" -#: models/pagemodel.py:179 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "صفحه کپی شد." -#: models/pagemodel.py:502 +#: models/pagemodel.py:712 msgid "default" msgstr "پیشفرض" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "می-تواند اضافه کند" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "می-تواند حذف کند" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "می-تواند تنظیمات پیشرفته را تغییر دهد" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "می-تواند اختیارات را تغییر دهد" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "در سطح صفحه" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "می-تواند جابجا کند" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "می-تواند نظارت کند" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "می-تواند صفحات را بازیابی کند" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "می-تواند هر صفحه پاک-شده را بازیابی کند" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "اگر انتخابی صورت نگیرد، کاربر در تمام وبگاه-ها، اختیارات داده-شده را خواهد داشت." -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "وبگاه‌ها" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "اختیار سراسری صفحه" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "اختیارات سراسری صفحه" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "اجازه روی" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "اختیار صفحه" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "کاربر (صفحه)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "کاربران (صفحه)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "گروه کاربری (صفحه)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "گروه‌های کاربری (صفحه)" -#: models/titlemodels.py:13 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 +msgid "width" +msgstr "عرض" + +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "عنوان در منو بازنویسی شود" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "آدرس" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "عنوان بازنویسی شود (تگ عنوان در html)" @@ -847,34 +746,29 @@ msgstr "عنوان بازنویسی شود (تگ عنوان در html)" msgid "File" msgstr "فایل" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "فایل" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "فلش" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "استفاده از فایل swf" -#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:16 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 #: plugins/video/models.py:14 -msgid "width" -msgstr "عرض" - -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 msgid "height" msgstr "ارتفاع" -#: plugins/flash/templates/cms/plugins/flash.html:3 +#: plugins/flash/templates/cms/plugins/flash.html:2 msgid "Missing flash plugin." msgstr "افزونه فلش موجود نیست." -#: plugins/googlemap/cms_plugins.py:9 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "نقشه Google" @@ -930,15 +824,15 @@ msgstr "برنامه‌ریز مسیر" msgid "Map" msgstr "نقشه" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:73 -msgid "Your address" -msgstr "آدرس شما" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:76 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "محاسبه مسیر" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "افزونه‌ها را از صفحه به ارث ببر." @@ -954,32 +848,32 @@ msgstr "صفحه‌ای را برای دربرداشتن افزونه‌هایش msgid "Optional: the language of the plugins you want" msgstr "اختیاری: زبان افزونه‌هایی که می‌خواهید" -#: plugins/link/cms_plugins.py:11 +#: plugins/link/cms_plugins.py:12 msgid "Link" msgstr "پیوند" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "نام" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "پیوند" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "پیوند به صفحه به پیوند متتی به آن اولویت دارد." -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "ایمیل به" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "آدرس ایمیل به پیوند متنی به صفحه اولویت دارد " @@ -987,40 +881,40 @@ msgstr "آدرس ایمیل به پیوند متنی به صفحه اولویت msgid "Picture" msgstr "تصویر" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "چپ" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "راست" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "تصویر" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "اگر تصویر موجود قابل کلیک‌کردن باشد" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "متن جایگزین" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "توصیف متنی تصویر" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "توصیف کامل" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "توصیف تکمیلی تصویر" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "کنار" @@ -1046,15 +940,15 @@ msgstr "الگویی (مانند \"snippets/plugin_xy.html\") را برای ار msgid "Snippets" msgstr "تکه نوشته‌ها" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "تبلیغ" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "اگر تصویر حاضر قابل کلیک‌کردن باشد" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "اگر تصویر حاضر قابل کلیک‌کردن باشد." @@ -1066,7 +960,7 @@ msgstr "بیشتر" msgid "Text" msgstr "متن" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "بدنه" @@ -1116,19 +1010,23 @@ msgstr "افزونه‌های موجود" msgid "Insert plugin" msgstr "درج افزونه" -#: plugins/twitter/cms_plugins.py:8 +#: plugins/twitter/cms_plugins.py:10 msgid "Twitter" msgstr "توییتر" +#: plugins/twitter/cms_plugins.py:31 +msgid "Twitter Search" +msgstr "" + #: plugins/twitter/models.py:7 msgid "twitter user" msgstr "کاربر توییتر" -#: plugins/twitter/models.py:8 +#: plugins/twitter/models.py:8 plugins/twitter/models.py:17 msgid "count" msgstr "تعداد" -#: plugins/twitter/models.py:8 +#: plugins/twitter/models.py:8 plugins/twitter/models.py:17 msgid "Number of entries to display" msgstr "تعداد ورودی برای نمایش" @@ -1140,6 +1038,14 @@ msgstr "راهنمایی پیوند" msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "در صورت مشخص کردن راهنمایی به عنوان پیوند به صفحه شخصی شما در توییتر نمایش داده می‌شود." +#: plugins/twitter/models.py:16 +msgid "query" +msgstr "" + +#: plugins/twitter/models.py:16 +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" +msgstr "" + #: plugins/video/cms_plugins.py:10 msgid "Video" msgstr "ویدیو" @@ -1148,78 +1054,78 @@ msgstr "ویدیو" msgid "Color Settings" msgstr "تنظیمات رنگ" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "فایل تصویری ویدیو" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "از نوع .flv یا کدگذاری h264 استفاده کنید" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "آدرس اینترنتی ویدیو" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "آدرس ویدیو در YouTube یا vimeo. مثال: http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "پیش‌نمایش تصویر" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "نمایش خودکار" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "پنهان‌سازی خودکار" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "تمام‌صفحه" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "نمایش دوباره" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "رنگ زمینه" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "هگزادسیمال مانند ff00cc" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "رنگ متن" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "رنگ seekbar" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "رنگ زمینه seekbar" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "رنگ نوار بارگذاری" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "رنگ button out" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "رنگ button over" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "رنگ button highlight" @@ -1229,7 +1135,7 @@ msgstr "افزونه فلش نیست. از %(page)s may require approvement by you." msgstr "صفحه %(page)s ممکن است نیاز به تایید شما داشته باشد." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "آخرین تغییرات" @@ -1265,11 +1173,18 @@ msgstr "آخرین تغییرات" msgid "Log in to administration here." msgstr "در اینجا به مدیریت وارد شوید." +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "کاربر:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "رمز عبور:" @@ -1281,7 +1196,7 @@ msgstr "تغییر یک صفحه" #: templates/admin/cms/page/change_form.html:62 #: templates/admin/cms/page/change_list.html:8 -#: templates/admin/cms/page/plugin_change_form.html:66 +#: templates/admin/cms/page/plugin_change_form.html:67 #: templates/admin/cms/page/recover_form.html:14 #: templates/admin/cms/page/revision_form.html:6 msgid "Home" @@ -1332,11 +1247,10 @@ msgid "View on site" msgstr "مشاهده روی وب‌گاه" #: templates/admin/cms/page/change_form.html:128 -#: templates/admin/cms/page/plugin_change_form.html:83 +#: templates/admin/cms/page/plugin_change_form.html:84 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "" -msgstr[1] "" #: templates/admin/cms/page/change_form.html:148 msgid "All permissions" @@ -1365,41 +1279,41 @@ msgstr "درخواست تایید" msgid "List of pages" msgstr "فهرست صفحات" -#: templates/admin/cms/page/change_list.html:57 +#: templates/admin/cms/page/change_list.html:56 msgid "Successfully moved" msgstr "با موفقیت جابجا شد" -#: templates/admin/cms/page/change_list.html:62 +#: templates/admin/cms/page/change_list.html:61 msgid "An error occured. Please reload the page" msgstr "خطایی رخ داد. صفحه با دوباره بارگذاری کنید." -#: templates/admin/cms/page/change_list.html:83 +#: templates/admin/cms/page/change_list.html:82 #, python-format msgid "Recover deleted %(name)s" msgstr "%(name)s پاک‌شده را بازیابی کن" -#: templates/admin/cms/page/change_list.html:86 +#: templates/admin/cms/page/change_list.html:85 #, python-format msgid "Add %(name)s" msgstr "اضافه‌کردن %(name)s" -#: templates/admin/cms/page/change_list.html:98 +#: templates/admin/cms/page/change_list.html:97 msgid "Pages on:" msgstr "صفحات در:" -#: templates/admin/cms/page/change_list.html:115 +#: templates/admin/cms/page/change_list.html:114 msgid "Filter:" msgstr "فیلتر:" -#: templates/admin/cms/page/change_list.html:115 +#: templates/admin/cms/page/change_list.html:114 msgid "on" msgstr "فعال" -#: templates/admin/cms/page/change_list.html:115 +#: templates/admin/cms/page/change_list.html:114 msgid "off" msgstr "غیر‌فعال" -#: templates/admin/cms/page/change_list.html:117 +#: templates/admin/cms/page/change_list.html:116 msgid "Filter" msgstr "فیلتر" @@ -1437,8 +1351,8 @@ msgid "edit this page" msgstr "ویرایش این صفحه" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:891 -#: templates/cms/toolbar/toolbar.html:912 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "ویرایش" @@ -1494,7 +1408,7 @@ msgid "add" msgstr "افزودن" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:864 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "مستقیما تأیید کن" @@ -1509,6 +1423,7 @@ msgid "Unpublish" msgstr "عدم انتشار" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "انتشار" @@ -1607,189 +1522,255 @@ msgstr "تنظیمات کپی" msgid "Choose copy options" msgstr "تنظیمات کپی را انتخاب کنید" -#: templates/admin/cms/page/widgets/installed_plugins_inc.html:10 +#: templates/admin/cms/page/widgets/installed_plugins_inc.html:7 +msgid "Generic" +msgstr "" + +#: templates/admin/cms/page/widgets/installed_plugins_inc.html:15 #: templates/cms/toolbar/add_plugins.html:6 msgid "Add Plugin" msgstr "اضافه‌کردن افزونه" -#: templates/admin/cms/page/widgets/installed_plugins_inc.html:14 +#: templates/admin/cms/page/widgets/installed_plugins_inc.html:18 msgid "From Language" msgstr "از زبان" -#: templates/admin/cms/page/widgets/installed_plugins_inc.html:21 +#: templates/admin/cms/page/widgets/installed_plugins_inc.html:25 msgid "Copy Plugins" msgstr "کپی افزونه‌ها" -#: templates/admin/cms/page/widgets/plugin_editor.html:10 +#: templates/admin/cms/page/widgets/plugin_editor.html:12 msgid "You must save the page first to add plugins." msgstr "برای ذخیره‌ی افزونه، ابتدا صفحه را ذخیره کنید." -#: templates/admin/cms/page/widgets/plugin_editor.html:13 +#: templates/admin/cms/page/widgets/plugin_editor.html:15 msgid "No Plugin selected. Selected one on the left side" msgstr "افزونه‌ای انتخاب نشده‌است. مورد انتخاب‌شده در سمت چپ" -#: templates/admin/cms/page/widgets/plugin_editor.html:15 +#: templates/admin/cms/page/widgets/plugin_editor.html:17 msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "افزونه‌ای موجود نیست. افزونه‌ای به این نگهدارنده اضافه کنید." -#: templates/cms/toolbar/toolbar.html:760 +#: templates/cms/toolbar/add_plugins.html:10 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "انتقال به %(name)s" -#: templates/cms/toolbar/toolbar.html:806 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "آیا شما مطمئن هستید می‌خواهید این افزونه را پاک کنید؟" -#: templates/cms/toolbar/toolbar.html:835 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "حالت ویرایش" -#: templates/cms/toolbar/toolbar.html:842 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "وضعیت" -#: templates/cms/toolbar/toolbar.html:853 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "کاربر" -#: templates/cms/toolbar/toolbar.html:857 -#: templates/cms/toolbar/toolbar.html:858 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "ورود" -#: templates/cms/toolbar/toolbar.html:869 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "الگو" -#: templates/cms/toolbar/toolbar.html:880 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "انتقال" -#: templates/cms/toolbar/toolbar.html:880 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "انتقال/افزودن صفحات" -#: templates/cms/toolbar/toolbar.html:882 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "افزودن فرزند" -#: templates/cms/toolbar/toolbar.html:882 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "صفحه‌ی فرزند اضافه‌کن" -#: templates/cms/toolbar/toolbar.html:883 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "افزودن همسایه" -#: templates/cms/toolbar/toolbar.html:883 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "صفحه‌ی همسایه اضافه‌کن" -#: templates/cms/toolbar/toolbar.html:885 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "صفحه را پاک‌کن" -#: templates/cms/toolbar/toolbar.html:891 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "مدیریت وب‌گاه" -#: templates/cms/toolbar/toolbar.html:893 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "تنظیمات صفحه" -#: templates/cms/toolbar/toolbar.html:895 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "تاریخچه" -#: templates/cms/toolbar/toolbar.html:895 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "مشاهده تاریخچه" -#: templates/cms/toolbar/toolbar.html:901 -msgid "Lock" -msgstr "قفل" - -#: templates/cms/toolbar/toolbar.html:901 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "خروج" -#: templates/cms/toolbar/toolbar.html:903 +#: templates/cms/toolbar/toolbar.html:219 +msgid "Lock" +msgstr "قفل" + +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "ببند" -#: templates/cms/toolbar/toolbar.html:914 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "بالا" -#: templates/cms/toolbar/toolbar.html:915 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "پایین" -#: templates/cms/toolbar/toolbar.html:917 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "تنظیمات" -#: templates/cms/toolbar/toolbar.html:919 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "افزونه را پاک‌کن" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "نظارت صفحه را لغو کن" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "نظارت فرزندان را لغو کن" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "نظارت نوادگان را لغو کن" -#: templatetags/cms_tags.py:401 templatetags/cms_tags.py:674 +#: templatetags/cms_tags.py:78 #, python-format -msgid "Reverse ID not found on %(domain)s" -msgstr "شناسه معکوس در %(domain)s یافت نشد." +msgid "Page not found on %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:402 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A page_id_url template tag didn't found a page with the reverse_id %(reverse_id)s\n" -"The url of the page was: http://%(host)s%(path)s" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"الگوی تگ page_id_url صفحه‌ای با شناسه‌ی معکوس %(reverse_id)s\n" -" آدرس صفحه: http://%(host)s%(path)s" -#: templatetags/cms_tags.py:675 -#, python-format -msgid "" -"A show_placeholder_by_id template tag didn't found a page with the reverse_id %(reverse_id)s\n" -"The url of the page was: http://%(host)s%(path)s" +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" msgstr "" -"تگ الگوی show_placeholder_by_id صفحه‌ای با شناسه‌ی معکوس %(reverse_id)s نیافت\n" -"آدرس صفحه: http://%(host)s%(path)s" -#: tests/util/menu_extender.py:7 -msgid "Sublevel" -msgstr "زیر‌سطح" +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" -#: tests/util/menu_extender.py:8 -msgid "Sublevel3" -msgstr "زیر‌سطح ۳" +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" -#: tests/util/menu_extender.py:11 -msgid "Sublevel 2" -msgstr "زیر‌سطح ۲" +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" -#: utils/moderator.py:84 +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "ابتدا پدر" -#: utils/moderator.py:91 +#: utils/moderator.py:90 msgid "approve" msgstr "تأیید کردن" -#: utils/moderator.py:243 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "CMS - صفحه %s نیاز به تأیید دارد." @@ -1801,3 +1782,9 @@ msgstr "CMS - کاربر شما ساخته‌شد." #: utils/permissions.py:208 msgid "CMS - your user account was changed." msgstr "CMS - حساب کاربری شما تغییر کرد." + +#~ msgid "fgcolor" +#~ msgstr "" + +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/fa/LC_MESSAGES/djangojs.mo b/cms/locale/fa/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..f27d962a176afbea9cfbf413f6107c1cb125c415 GIT binary patch literal 893 zcmbV~L2DC16vtPs2z&JG;avnpC%Z|-mTl6e#&&+lB+vyQWh<5wIDjruvq!6gUF?@{REl;bQb20JnXo&89* zsW4z9gncSv28M2G*yg4$GXt7#aS?;*Ge{{e_PEk!>F*lYfB8y}vm|;b=#X9gf5nI; z%%H12*N`Sz%*B$^QF6dSL)Id4pDE3y2p}4udr88fcGp=dl_6~%^N8HaVoka-fW9%Q z4m>Z$qh*_=P!7F_Z*l3Je(7y+vvb#c47WwKAzejIOGYbwo5ZKJzF z=1=\n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: fa\n" +"Plural-Forms: nplurals=1; plural=0\n" #: media/cms/js/change_form.js:31 msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "آیا بدون ذخیره صفحه، %(field_name) تغییر کند؟" -#: media/cms/js/change_form.js:68 -msgid "Not all plugins are saved. Are you sure you want to save the page? All unsaved plugin content will be lost." -msgstr "تمامی افزونه-ها ذخیره نشده-اند. آیا این صفحه ذخیره شود؟ محتوای افزونه ذخیره-نشده از بین خواهد رفت." +#: media/cms/js/change_form.js:69 +msgid "" +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." +msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "آیا بدون ذخیره صفحه، تَب تغییر کند؟" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "آیا می-خواهید این افزونه پاک شود؟" diff --git a/cms/locale/fi/LC_MESSAGES/django.mo b/cms/locale/fi/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..e11977b0c66fb26c260accefe05d7a61819a721b GIT binary patch literal 25623 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 JZC{$0{{gLKL^A*Y literal 0 HcmV?d00001 diff --git a/cms/locale/fi/LC_MESSAGES/django.po b/cms/locale/fi/LC_MESSAGES/django.po index 7f4b9679eb0..5d9a9f93b41 100644 --- a/cms/locale/fi/LC_MESSAGES/django.po +++ b/cms/locale/fi/LC_MESSAGES/django.po @@ -2,485 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: django-cms\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:53+0200\n" -"PO-Revision-Date: 2010-05-24 22:06+0200\n" -"Last-Translator: Petteri Kääpä \n" -"Language-Team: \n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:38+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -"X-Poedit-Language: Finnish\n" +"X-Poedit-Language: English\n" "X-Poedit-SourceCharset: utf-8\n" -"X-Poedit-Country: FINLAND\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Edistyneet valinnat" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Otsikko" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "Oletusotsikko" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Slug" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "Osa otsikosta jota käytetään URL:ssa" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Kieli" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "Sisältökenttien nykyinen kieli." -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Toinen sivu tällä slugilla on jo olemassa" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Valikko-otsikko" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Yliajaa valikossa näytettävän tekstin" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Sivun otsikko" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "Yliajaa selaimen ylälaidassa ja kirjanmerkeissä näytettävän tekstin" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Sovellus" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Kytke sovellus tähän sivuun." -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Yliaja URL" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "Jätä tämä kenttä tyhjäksi jos halutaan käyttää oletuspolkua." -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Edelleenohjaus" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Edelleenohjaa tähän URL:iin" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "Sivun kuvaus jota hakukoneet voivat hyödyntää." -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "Pilkuin eroteltu lista joita hakukoneet voivat hyödyntää." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Sivu tällä käänteisellä URL tunnuksella on jo olemassa." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "Epäkelpo URL. Ole hyvä ja käytä muotoa /minun/url/" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "käyttäjä" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"Sivun luontioikeus vaatii pääsyn myös sen jälkeläisiin. Muuten sivun luoja " -"ei voi muokata sitä myöhemmin." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "Sivun luontioikeus vaatii pääsyn myös sen jälkeläisiin. Muuten sivun luoja ei voi muokata sitä myöhemmin." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "Sivun luonti vaatii myös oikeuden muokata sivuja." -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Valitse ensin käyttäjä tai käyttäjäryhmä." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Lisää" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Muokkaa" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Poista" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Palauta sivuja" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Huomauta käyttäjää" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Lähetä sähköpostia käyttäjälle käyttäjänimen tai salasanan vaihtumisesta. " -"Vaatii käyttäjän sähköpostiosoitteen." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Lähetä sähköpostia käyttäjälle käyttäjänimen tai salasanan vaihtumisesta. Vaatii käyttäjän sähköpostiosoitteen." -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Uusi salasana" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Uuden salasanan vahvistus" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "Sähköpostitiedote vaatii kelvollisen sähköpostiosoitteen." -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "Oikeus luoda sivuja vaatii oikeuden muokata sivuja!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "Oikeus luoda käyttäjiä vaatii oikeuden muokata käyttäjä!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "Luodaksesi käyttöoikeuksia sinun täytyy myös muokata niitä!" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Piilotettu" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Perusasetukset" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "" -"Huomautus: Tämä sivu uudelleenladataan mikäli muokkaat valintaa. Tallenna " -"ensin." +msgstr "Huomautus: Tämä sivu uudelleenladataan mikäli muokkaat valintaa. Tallenna ensin." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Edistyneet asetukset" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Hakukoneiden optimointiasetukset (SEO)" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "korkeammalle" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Tietokantavirhe" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "sivu" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "Sivu hyväksytty." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "Olio %(name)s perusavaimella %(key)r ei ole olemassa" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Tälle sivulle on vain yksi käännös" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "Otsikko ja liitännäiset kielelle %(language)s poistettu" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Oletko varma?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "Sinulla ei ole oikeutta julkaista tätä sivua" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "Sinulla ei ole oikeutta vaihtaa tämän sivun valikkonäkyvyyttä" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "Sinulla ei ole oikeutta muokata tätä sivua" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "Kielen tulee olla tuettu!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "Liitännäinen %(plugin_name)s lisätty sisältöpaikkaan %(placeholder)s." -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "Kopioidun kielen tulee poiketa lähdekielestä!" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" -msgstr "" -"Kopioutu lähteen %(language)s liitännäiset sisältöpaikkaan %(placeholder)s." +msgstr "Kopioutu lähteen %(language)s liitännäiset sisältöpaikkaan %(placeholder)s." -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" -msgstr "" -"Liitännäistä %(plugin_name)s muokattu kohdassa %(position)s sisältöpaikassa %" -"(placeholder)s." +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgstr "Liitännäistä %(plugin_name)s muokattu kohdassa %(position)s sisältöpaikassa %(placeholder)s." -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Liitännäisiä siirrettiin" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." -msgstr "" -"Liitännäinen %(plugin_name)s poistettu kohdasta %(position)s sisältöpaikasta " -"%(placeholder)s." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." +msgstr "Liitännäinen %(plugin_name)s poistettu kohdasta %(position)s sisältöpaikasta %(placeholder)s." -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Sivun oikeudet" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Käyttäjä- & ryhmäoikeudet" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Sivun oikeuksien hallinta" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Käyttäjätiedot" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Ryhmät" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Salasana" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Kopioi oikeudet" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Kopioi valvonta" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Peri lähimmän vanhemman asettelu" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Yleiskatsaus" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Indeksit ja taulut:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Täydellinen sisällysluettelo" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "Listaa kaikki osiot ja alaosiot" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Hakusivu" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "Hae tästä dokumentaatiosta" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Globaali moduulihakemisto" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "pikavalinnat kaikkiin moduuleihin" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Yleisluettelo" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "kaikki funktiot, luokat ja termit" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Hakemisto" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Täydellinen hakemisto yhdellä sivulla" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Luetteloi sivut aakkosellisesti" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "saattaa olla valtava" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Navigaatio" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Sisällysluettelo" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Edellinen aihe" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "edellinen kappale" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Seuraava aihe" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "seuraava kappale" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Tämä sivu" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Näytä lähdekoodi" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Pikahaku" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Mene" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "Syötä hakusanat tai moduulin, luokan tai funtion nimi." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "Tästä dokumentaatiosta" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Hae" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Copyright" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Käytöstä poistunut" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "hae" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Hakutulokset" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "Hakusi ei tuottanut yhtään tulosta." - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "valitse tämä sivu" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "Lisää uusi" @@ -488,34 +333,34 @@ msgstr "Lisää uusi" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "kieli" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "Sijainti" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "Luontipäiväys" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "lovi" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "liitännäisen nimi" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -525,7 +370,7 @@ msgstr "otsikko" msgid "path" msgstr "polku" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "slug" @@ -533,15 +378,15 @@ msgstr "slug" msgid "everybody" msgstr "kaikki" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "voi muokata" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "ryhmä" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "voi julkaista" @@ -563,7 +408,7 @@ msgid "navigation extenders" msgstr "navigaation laajentajat" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "omaa URL-ylikirjoituksen" @@ -579,328 +424,321 @@ msgstr "luoja" msgid "reverse url id" msgstr "käänteinen URL-tunniste" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "Sisäänkirjautuminen vaadittu" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "Softroot" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "julkaisun loppupäiväys" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "asettelu" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "julkaisupäiväys" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "navigaatiossa" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "sovellus" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "edelleenohjaus" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "avainsanat" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "kuvaus" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "Nykyinen sivu" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Sivun lapset" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Sivu ja lapset" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Sivun jälkeläiset" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Sivu ja jälkeläiset" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Sivu" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Käyttäjä" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Moderoi sivua" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "Moderoi sivun lapsia" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "Moderoi sivun jälkeläisiä" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "Sivumoderaattori" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "luotu" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "muokattu" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "poistopyyntö" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "siirtopyyntö" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "julkaisupyyntö" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "piilotuspyyntö" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "hyväksytty" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "Sivun moderointitila" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "Sivun moderointitilat" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "Hyväksyntäpyyntö" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "poista" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "Hyväksy äitisivu" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "luoja" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "muokkaaja" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." -msgstr "" -"Milloin sivun tulisi tulla näkyviin. Sivun tilan tulee olla \"julkaistu\" " -"jotta se tulee näkyviin. " +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." +msgstr "Milloin sivun tulisi tulla näkyviin. Sivun tilan tulee olla \"julkaistu\" jotta se tulee näkyviin. " -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "Milloin sivu erääntyy. Jätä tyhjäksi jos et halua sivun erääntyvän." -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Kaikkia vanhempia ei näytetä navigaatiossa" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" -msgstr "" -"Yksilöllinen tunniste jota voidaan käyttää page_url templatetagin kanssa " -"tämän sivun linkittämiseksi asettelutiedostoissa. " +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" +msgstr "Yksilöllinen tunniste jota voidaan käyttää page_url templatetagin kanssa tämän sivun linkittämiseksi asettelutiedostoissa. " -#: models/pagemodel.py:58 -#, fuzzy +#: models/pagemodel.py:69 msgid "attached menu" -msgstr "Flash-Menü" +msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "julkaistu" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "Asettelu jota käytetään sisällön tulostukseen ruudulle." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "Sivusto jolla sivu on." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "sivusto" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "moderointitila" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Yliajaa valikossa näytettävän tekstin" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "sivut" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "Sivu kopioitiin." -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "oletus" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "voi lisätä" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "voi poistaa" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "voi muokata edistyneitä asetuksia" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "voi muokata käyttöoikeuksia" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "sivutasolla" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "voi liikuttaa" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "voi moderoida" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "voi palauttaa sivuja" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "voi palauttaa minkä tahansa poistetun sivun" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." -msgstr "" -"jos mitään ei ole valittu käyttäjälle myönnetään oikeudet kaikkiin " -"sivustoihin" +msgstr "jos mitään ei ole valittu käyttäjälle myönnetään oikeudet kaikkiin sivustoihin" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "sivustot" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Sivun globaali käyttöoikeus" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Sivujen globaalit käyttöoikeudet" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "Myönnä oikeus" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Sivun käyttöoikeus" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Käyttäjä (sivu)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Käyttäjät (sivu)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Käyttäjäryhmä (sivu)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Käyttäjäryhmät (sivu)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "leveys" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "yliaja otsikko valikossa" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "Polku" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "Yliaja otsikko (HTML title)" @@ -908,21 +746,21 @@ msgstr "Yliaja otsikko (HTML title)" msgid "File" msgstr "Tiedosto" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "tiedosto" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "käytä .swf tiedostoa (Flash)" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "korkeus" @@ -930,7 +768,7 @@ msgstr "korkeus" msgid "Missing flash plugin." msgstr "Flash-liitännäinen puuttuu." -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Google Map" @@ -986,15 +824,15 @@ msgstr "Reittisuunnittelu" msgid "Map" msgstr "Kartta" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "Osoitteesi" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Laske reitti" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "Peri liitännäiset sivulta" @@ -1003,12 +841,8 @@ msgid "Language or Page must be filled out" msgstr "Kieli tai sivu pitää olla täytettynä" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" -msgstr "" -"Valitse sivu jolta sisällytetään liitännäiset tähän sisältökenttään, tyhjä " -"valitsee nykyisen sivun" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" +msgstr "Valitse sivu jolta sisällytetään liitännäiset tähän sisältökenttään, tyhjä valitsee nykyisen sivun" #: plugins/inherit/models.py:11 msgid "Optional: the language of the plugins you want" @@ -1018,28 +852,28 @@ msgstr "Valinnainen: haluttujen liitännäisten kieli" msgid "Link" msgstr "Linkki" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "nimi" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "linkki" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "Linkki sivulle yliajaa tekstilinkin" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "Sähköpostiosoite" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "Sähköpostiosoite yliajaa tekstilinkin" @@ -1047,40 +881,40 @@ msgstr "Sähköpostiosoite yliajaa tekstilinkin" msgid "Picture" msgstr "Kuva" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "vasen" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "oikea" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "kuva" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "verkko-osoite johon kuva klikkaaminen vie" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "vaihtoehtoinen teksti" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "kuvaus kuvasta" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "pitkä kuvaus" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "laajempi kuvaus kuvasta" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "sivu" @@ -1099,25 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " -msgstr "" -"Syötä asettelutiedosto (esim. \"snippets/plugin_xy.html\") joka tulostetaan " -"ruudulle." +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgstr "Syötä asettelutiedosto (esim. \"snippets/plugin_xy.html\") joka tulostetaan ruudulle." #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "Snippet" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "Tiiseri" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "verkko-osoite johon kuva klikkaaminen vie" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "verkko-osoite johon kuva klikkaaminen vie" @@ -1129,7 +960,7 @@ msgstr "lisää" msgid "Text" msgstr "Teksti" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "vartalo" @@ -1184,9 +1015,8 @@ msgid "Twitter" msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "twitter-käyttäjä" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1209,15 +1039,11 @@ msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "Jos täytetty vinkki näytetään linkkinä Twitter-tiliisi" #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "käyttäjä" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1228,92 +1054,84 @@ msgstr "Video" msgid "Color Settings" msgstr "Väriasetukset" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "videotiedosto" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "käytä .flv tai H264 enkoodattuja videotiedostoja." -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "videon osoite" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" -msgstr "" -"Vimeo tai Youtube videon URL. Esimerkiksi: http://www.youtube.com/watch?" -"v=YFa59lK-kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" +msgstr "Vimeo tai Youtube videon URL. Esimerkiksi: http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "esikatselukuva" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "automaattinen toisto" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "automaattinen piilotus" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "kokoruutu" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "silmukka" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "taustaväri" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "Hexadesimaali, esim. ff00cc" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "tekstin väri" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "Hakupalkin väri" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "hakupalkin taustaväri" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "latauspalkin väri" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "napin mouseout väri" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "napin mousover väri" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "napin korostusväri" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" -msgstr "" -"Flash-laajennus puuttuu. Lataa " -"tästä." +msgid "Missing flash plugin. Download here" +msgstr "Flash-laajennus puuttuu. Lataa tästä." #: templates/admin/page_submit_line.html:3 #: templates/admin/cms/page/change_form.html:273 @@ -1340,14 +1158,13 @@ msgid "Save and continue editing" msgstr "Tallenna ja jatka muokkausta" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." -msgstr "" -"Sivu %(page)s saattaa vaatia sinulta " -"hyväksyntää." +msgid "Page %(page)s may require approvement by you." +msgstr "Sivu %(page)s saattaa vaatia sinulta hyväksyntää." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Viime muutokset" @@ -1356,11 +1173,18 @@ msgstr "Viime muutokset" msgid "Log in to administration here." msgstr "Kirjaudu hallintapaneeliin." +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Käyttäjänimi:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Salasana:" @@ -1445,12 +1269,8 @@ msgstr "Sivun tilat" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." -msgstr "" -"Tätä sivua täytyy moderoida tasolla %(moderation_level)s, lähetä viesti " -"moderaattorille." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." +msgstr "Tätä sivua täytyy moderoida tasolla %(moderation_level)s, lähetä viesti moderaattorille." #: templates/admin/cms/page/change_form.html:185 msgid "Request approvemet" @@ -1532,8 +1352,8 @@ msgid "edit this page" msgstr "muokkaa tätä sivua" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "muokkaa" @@ -1589,7 +1409,7 @@ msgid "add" msgstr "lisää" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "Hyväksy suoraan" @@ -1604,6 +1424,7 @@ msgid "Unpublish" msgstr "Piilota" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Julkaise" @@ -1729,319 +1550,242 @@ msgstr "Yhtään liitäännäistä ei ole valittuna. Valitse vasemmalta laidalta #: templates/admin/cms/page/widgets/plugin_editor.html:17 msgid "No Plugins present. Add a plugin to this placeholder-slot." -msgstr "" -"Yhtään liitännäistä ei ole asetettu. Lisää liitännäinen tähän " -"sisältökenttään." +msgstr "Yhtään liitännäistä ei ole asetettu. Lisää liitännäinen tähän sisältökenttään." #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "Saatavilla olevat laajennukset" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "Siirrä kohtaan %(name)s" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "Haluatko varmasti poistaa tämän liitännäisen?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "Muokkaustila" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "Tila" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "Käyttäjänimi" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "kirjaudu sisään" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "Asettelutiedosto" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "siirrä" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "Siirrä/lisää sivuja" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "lisää lapsi" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "lisää lapsisivu" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "lisää sisar" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "Lisää sisarsivu" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "Poista sivu" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "Sivuston hallinta" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "Sivun asetukset" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "historia" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "Näytä historia" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "Kirjaudu ulos" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "Lukitse" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "Sulje" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "ylös" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "alas" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "Asetukset" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "Poista liitännäinen" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "Pura sivun moderointi" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "Pura lasten moderointi" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "Pura jälkeläisten moderointi" -#: templatetags/cms_tags.py:69 -#, fuzzy, python-format +#: templatetags/cms_tags.py:78 +#, python-format msgid "Page not found on %(domain)s" -msgstr "Käänteistunnusta ei löytynyt kohteessa %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:70 -#, fuzzy, python-format +#: templatetags/cms_tags.py:79 +#, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"Template tag page_url ei löytänyt sivua käänteistunnuksella %(reverse_id)" -"s.\n" -"Sivun URL oli: http://%(host)s%(path)s" - -#: utils/moderator.py:82 -msgid "parent first" -msgstr "vanhempi ensin" - -#: utils/moderator.py:89 -msgid "approve" -msgstr "hyväksy" -#: utils/moderator.py:240 -#, python-format -msgid "CMS - Page %s requires approvement." -msgstr "CMS - Sivu %s vaatii hyväksynnän." +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" -#: utils/permissions.py:206 -msgid "CMS - your user account was created." -msgstr "CMS - käyttäjätilisi on luotu." +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" -#: utils/permissions.py:208 -msgid "CMS - your user account was changed." -msgstr "CMS - käyttäjätiliäsi on muokattu." +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" -#~ msgid "menu login required" -#~ msgstr "Valikko vaatii kirjautumisen" +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "" -#~ "näytä tämä sivu valikossa vain mikäli käyttäjä on kirjautunut sisään" +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" -#~ msgid "" -#~ "A show_placeholder_by_id template tag didn't found a page with the " -#~ "reverse_id %(reverse_id)s\n" -#~ "The url of the page was: http://%(host)s%(path)s" -#~ msgstr "" -#~ "Template tag page_url ei löytänyt isvua käänteistuuksella %(reverse_id)" -#~ "s.\n" -#~ "Sivun URL oli: http://%(host)s%(path)s" +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" -#~ msgid "Sublevel" -#~ msgstr "Alataso" +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" -#~ msgid "Sublevel3" -#~ msgstr "Alataso 3" +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" -#~ msgid "Sublevel 2" -#~ msgstr "Alataso 2" +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" -#~ msgid "dock" -#~ msgstr "andocken" +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" -#~ msgid "overlay" -#~ msgstr "überlagern" +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" -#~ msgid "blank" -#~ msgstr "blank" +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" -#~ msgid "self" -#~ msgstr "self" +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" -#~ msgid "parent" -#~ msgstr "übergeordnet" +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" -#~ msgid "window" -#~ msgstr "Fenster" +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" -#~ msgid "opaque" -#~ msgstr "undurchsichtig" +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" -#~ msgid "transparent" -#~ msgstr "transparent" +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" -#~ msgid "controller style" -#~ msgstr "Stil der Kontrollelemente" +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" -#~ msgid "click_url" -#~ msgstr "Click URL" +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" -#~ msgid "click target" -#~ msgstr "Click Ziel" +#: utils/moderator.py:83 +msgid "parent first" +msgstr "vanhempi ensin" -#~ msgid "mute" -#~ msgstr "lautlos" +#: utils/moderator.py:90 +msgid "approve" +msgstr "hyväksy" -#~ msgid "mute only" -#~ msgstr "nur lautlos" +#: utils/moderator.py:251 +#, python-format +msgid "CMS - Page %s requires approvement." +msgstr "CMS - Sivu %s vaatii hyväksynnän." -#~ msgid "volume" -#~ msgstr "Lautstärke" +#: utils/permissions.py:206 +msgid "CMS - your user account was created." +msgstr "CMS - käyttäjätilisi on luotu." -#~ msgid "in range <0, 100>" -#~ msgstr "im Bereich 0-100" +#: utils/permissions.py:208 +msgid "CMS - your user account was changed." +msgstr "CMS - käyttäjätiliäsi on muokattu." #~ msgid "fgcolor" #~ msgstr "Vordergrundfarbe" -#~ msgid "Hexadecimal, eg 13abec" -#~ msgstr "Hexadezimal, z.B. 13abec" - -#~ msgid "wmode" -#~ msgstr "wmode" - -#~ msgid "Twitter recent entries plugin" -#~ msgstr "\"Neuste Twitter-Nachrichten\"-Plugin" - -#~ msgid "Revisions" -#~ msgstr "Versionen" - #~ msgid "Wanted language has not been translated yet." #~ msgstr "Die gesuchte Sprache wurde noch nicht übersetzt." - -#~ msgid "A programming error occurred - cannot find text editor widgets." -#~ msgstr "" -#~ "Ein Fehler ist aufgetreten: Kann das Text-Editor-Widget nicht finden." - -#~ msgid "Videoplayer" -#~ msgstr "Im Web anzeigen" - -#~ msgid "use video file" -#~ msgstr ".swf datei" - -#~ msgid "splash image" -#~ msgstr "Letzte Änderung" - -#~ msgid "Can add page" -#~ msgstr "Kann Seite hinzufügen" - -#~ msgid "Can change page" -#~ msgstr "Kann Seite bearbeiten" - -#~ msgid "Can delete page" -#~ msgstr "Kann Seite löschen" - -#~ msgid "Can recover pages (any)" -#~ msgstr "Kann alle gelöschten Seiten wiederherstellen." - -#~ msgid "Can change User" -#~ msgstr "Kann Benutzer bearbeiten" - -#~ msgid "Can delete User" -#~ msgstr "Kann Benutzer löschen" - -#~ msgid "Can add page permission" -#~ msgstr "Kann Seiten-Berechtigung hinzufügen" - -#~ msgid "Can change page permission" -#~ msgstr "Kann Seiten-Berechtigung ändern" - -#~ msgid "Can delete page permission" -#~ msgstr "Kann Seiten-Berechtigung löschen" - -#~ msgid "You can add plugins only if you have saved the page." -#~ msgstr "Sie können plugins nur hinzufügen wenn die Seite gespeichert wurde." - -#~ msgid "The parent of this page is not on the site %(site)s" -#~ msgstr "" -#~ "Die Seite, welche dieser Seite übergeordnet ist, ist nicht in der " -#~ "Webseite %(site)s" - -#~ msgid "All pages" -#~ msgstr "alle Seiten" - -#~ msgid "This page and all childrens" -#~ msgstr "Diese Seite und alle Unterseiten" - -#~ msgid "The url that this page has instead. Starts with a \"/\"" -#~ msgstr "Die Url diese Seite anstatt hat. Sollte mit \"/\" beginnen." - -#~ msgid "Default template" -#~ msgstr "Standart Vorlage" - -#~ msgid "Page could not been moved." -#~ msgstr "Die Seite konnte nicht verschoben werden." - -#~ msgid "Top" -#~ msgstr "Oben" - -#~ msgid "Select" -#~ msgstr "Suswählen" diff --git a/cms/locale/fi/LC_MESSAGES/djangojs.mo b/cms/locale/fi/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..61b28b4cc6471ebac47eb075030f347ec63808dc GIT binary patch literal 894 zcmbVK&2H2%5Drj;lp|*j!vU!k^(NUOwo1GGp|qu9OG~xogoL~sH<{wt!5*jd5qJRJ zU|)eNmwgYOg-HdiP$iHU>66Fy=g;4G{Nv%m*N9_*@rbd`xX*ac=%QilFg`KfGQKgE z84vD6(HF)u#x~Et-;JWzJVy7TDC1$oBX32#d=;HOFEQCExU>O$_?28pLqHa$l{BRS zk`oUXNRcVH5Z9chd?AH zwDXxptt!I#jQ^C@Y*W^f_rPNtBq-y%ULJ9Kf1h6lMa1;#O7&XmkDv56t=n!Ii@tNi Ts`Y$kKqGQ$%zTDk@$EkWNemd# literal 0 HcmV?d00001 diff --git a/cms/locale/fi/LC_MESSAGES/djangojs.po b/cms/locale/fi/LC_MESSAGES/djangojs.po index b279a9fe187..9dfb07dfba9 100644 --- a/cms/locale/fi/LC_MESSAGES/djangojs.po +++ b/cms/locale/fi/LC_MESSAGES/djangojs.po @@ -2,41 +2,35 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: django-cms\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: 2010-03-04 02:56+0200\n" -"Last-Translator: Petteri Kääpä \n" -"Language-Team: \n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Finnish\n" -"X-Poedit-Country: FINLAND\n" -"X-Poedit-SourceCharset: utf-8\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" -msgstr "" -"Oletko varma, että haluat muuttaa %(field_name) tallentamatta sivua ensin?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" +msgstr "Oletko varma, että haluat muuttaa %(field_name) tallentamatta sivua ensin?" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -"Kaikkia liitännäisiä ei ole tallennettu. Haluatko varmasti tallentaa sivun? " -"Kaikki tallentamaton liitännäissisältö kadotetaan." -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "Haluatko varmasti muuttaa välilehtiä tallentamatta sivua ensin?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Haluatko varmasti poistaa tämän liitännäisen?" diff --git a/cms/locale/fr/LC_MESSAGES/django.mo b/cms/locale/fr/LC_MESSAGES/django.mo index 4181b76e9771e2e3cc82d4fdd9386608a32214a9..29fb3368d549da1a24c337b4f2317d7988441a55 100644 GIT binary patch literal 26608 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 delta 10967 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, YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: django-cms\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:53+0200\n" -"PO-Revision-Date: 2009-11-11 18:39+0100\n" -"Last-Translator: Yohan Boniface \n" -"Language-Team: French \n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \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" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Paramètres avancés" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Titre" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "Le titre par défaut" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Mots-clés" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "Mots-clés pour construire l'URL" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Langue" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "Langue dans laquelle le contenu sera saisi." -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Une page avec les mêmes mots-clés pour l'URL existe déjà" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Titre du menu" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Remplace le texte affiché dans le menu" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Titre de la page" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "Titre de la page (dans votre navigateur, vos favoris...)" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Application" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Associer une application à cette page." -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Remplace l'URL" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "Laissez ce champs vide pour utiliser l'adresse par défaut" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Redirection" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Redirige vers cette URL" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "Brève description de la page utilisée par les moteurs de recherche." -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." -msgstr "" -"Entrez une liste de mots clés séparés par des virgules, cela sera utilisé " -"par les moteurs de recherche." +msgstr "Entrez une liste de mots clés séparés par des virgules, cela sera utilisé par les moteurs de recherche." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Une page avec cette URL existe déjà." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "L'URL est invalide, utilisez le format /mot-cle/mot-cle" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "utilisateur" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"La permission \"Ajouter une page\" nécesite aussi l'accès aux descendants, " -"sinon les pages ajoutées ne pourront pas être modifiées par leur créateur." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "La permission \"Ajouter une page\" nécesite aussi l'accès aux descendants, sinon les pages ajoutées ne pourront pas être modifiées par leur créateur." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." -msgstr "" -"La permission \"Ajouter une page\" nécessite la permission \"Editer une page" -"\"" +msgstr "La permission \"Ajouter une page\" nécessite la permission \"Editer une page\"" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Veuillez d'abord sélectionner un utilisateur ou un groupe." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Ajouter" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Modifier" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Supprimer" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Restaurer des pages" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Notifier l'utilisateur" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Envoyer une notification par courriel du changement de nom d'utilisateur ou " -"mot de passe. Nécessite un courriel valide. " +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Envoyer une notification par courriel du changement de nom d'utilisateur ou mot de passe. Nécessite un courriel valide. " -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Nouveau mot de passe" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Nouveau mot de passe (confirmation)" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "La notification par courriel nécessite un courriel valide" -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" -msgstr "" -"La permission d'ajouter des pages nécessite la permission de modifier des " -"pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" +msgstr "La permission d'ajouter des pages nécessite la permission de modifier des pages!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" -msgstr "" -"La permission d'ajouter des utilisateurs nécessite la permission de modifier " -"des utilisateurs!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" +msgstr "La permission d'ajouter des utilisateurs nécessite la permission de modifier des utilisateurs!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "Pour ajouter des permissions, il faut aussi les éditer !" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Caché" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Propriétés" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "" -"Note : cette page sera rechargée si vous changez la selection. Pensez à la " -"sauver au préalable." +msgstr "Note : cette page sera rechargée si vous changez la selection. Pensez à la sauver au préalable." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Paramètres avancés" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Paramètres SEO (Optimisation pour les moteurs de recherche)" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "plus haut" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Erreur de base de données" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "page" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "La page a été approuvée." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "L'objet %(name)s de clé primaire %(key)r n'existe pas." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Il existe une seule traduction pour cette page." -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "Les titres et les blocs en %(language)s ont été supprimés" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Êtes-vous sûr(e) ?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "Vous n'avez pas la permission d'ajouter cette page" -# Pas sûr de ce in_navigation -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" -msgstr "" -"Vous n'avez pas la permission de changer le statut \"Apparaître dans le menu" -"\"" +msgstr "Vous n'avez pas la permission de changer le statut \"Apparaître dans le menu\"" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "Vous n'avez pas la permission de modifier cette page" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "Une langue disponible doit être sélectionnée!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "Le bloc %(plugin_name)s a été ajouté à la zone %(placeholder)s" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "La langue doit être différente de la langue copiée !" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" -msgstr "" -"Les greffons pour la langue %(language)s ont été copiés dans %(placeholder)s " +msgstr "Les greffons pour la langue %(language)s ont été copiés dans %(placeholder)s " -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" -msgstr "" -"Le bloc %(plugin_name)s à la position %(position)s de la zone %(placeholder)" -"s a été modifié" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgstr "Le bloc %(plugin_name)s à la position %(position)s de la zone %(placeholder)s a été modifié" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Les blocs ont été déplacés" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." -msgstr "" -"Le bloc %(plugin_name)s à la position %(position)s de la zone %(placeholder)" -"s a été supprimé." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." +msgstr "Le bloc %(plugin_name)s à la position %(position)s de la zone %(placeholder)s a été supprimé." -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Permissions relatives à la page" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Permissions relatives aux utilisateurs et groupes" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Gestion des permissions relatives aux pages" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Détails de l'utilisateur" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Groupes" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Mot de passe" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Copier les permissions" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Copier la modération" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Hériter du modèle du parent le plus proche" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Vue d'ensemble" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Index et tableaux:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Table des matières" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "Liste toutes les rubriques et sous-rubriques" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Page de recherche" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "Chercher dans cette documentation" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Index des modules" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "Accès rapide aux modules" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Index général" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "Fonctions, classes, termes" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Index" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Index complet sur une page" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Indexer les pages par lettre" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "peut être énorme" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Menu" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Table des matières" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Sujet précédent" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "chapitre précédent" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Sujet suivant" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "chapitre suivant" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Cette page" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Voir la source" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Recherche rapide" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Aller" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "" -"Entrez un terme de recherche, ou le nom d'un module, d'une classe ou d'une " -"fonction" - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "À propos de ces documents" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Recherche" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Copyright" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Obsolète" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "recherche" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Résultats de la recherche" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "Votre recherche n'a retourné aucun résultat" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "sélectionner cette page" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "Ajouter un autre" @@ -498,34 +333,34 @@ msgstr "Ajouter un autre" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "langue" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "position" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "date de création" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "emplacement" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "Nom du bloc" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -535,7 +370,7 @@ msgstr "titre" msgid "path" msgstr "chemin" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "mot-clé" @@ -543,15 +378,15 @@ msgstr "mot-clé" msgid "everybody" msgstr "tout le monde" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "peut modifier" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "groupe" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "peut publier" @@ -573,7 +408,7 @@ msgid "navigation extenders" msgstr "Extension du menu" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "a une url réécrite" @@ -589,330 +424,321 @@ msgstr "auteur" msgid "reverse url id" msgstr "identifiant de l'URL" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "identification requise" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "racine" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "date de fin de publication" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "modèle" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "date de publication" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "présent dans la navigation" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "application" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "redirection" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "mots clés" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "description" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "Page en cours" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Descendants immediats de la page" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Page et descendants immediats de la page" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Descendants de la page" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Page et descendants de la page" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Page" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Utilisateur" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Modérer la page" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "Modérer les descendants immediats de la page" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "Modérer les descendants de la page" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "PageModerator" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "créée" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "Modifiée" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "Dem. de suppression" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "Demande de déplacement" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "Demande de publication" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "Demande de dépublication" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "approuvée" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "État du modérateur de la page" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "États du modérateur de la page" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "Approbation demandée" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "supprimer" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "Approbation des parents" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "créée par" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "modifiée par" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." -msgstr "" -"Date de publication de la page. Son statut doit être à \"Publié\" pour une " -"publication automatique." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." +msgstr "Date de publication de la page. Son statut doit être à \"Publié\" pour une publication automatique." -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." -msgstr "" -"Pour dépublier automatiquement la page. Laisser vide pour aucune " -"dépublication." +msgstr "Pour dépublier automatiquement la page. Laisser vide pour aucune dépublication." -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Les parents n'appaîtront pas dans le menu" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" -msgstr "" -"Identifiant unique utilisé par le modèle page_url pour créer un lien vers " -"cette page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" +msgstr "Identifiant unique utilisé par le modèle page_url pour créer un lien vers cette page" -#: models/pagemodel.py:58 -#, fuzzy +#: models/pagemodel.py:69 msgid "attached menu" -msgstr "menu flash" +msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "Publié" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "Le modèle utilisé pour l'affichage du contenu." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "Le site correspondant à la page " -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "site" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "état du modérateur" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Remplace le texte affiché dans le menu" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "pages" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "La page a été copiée." -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "par défaut" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "peut ajouter" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "peut supprimer" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "peut modifier les paramètres avancés" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "peut modifier les permissions" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "au niveau de la page" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "peut déplacer" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "peut modérer" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "peut restaurer des pages" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "peut restaurer n'importe quelle page supprimée" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." -msgstr "" -"Si aucun n'est selectionné, les permissions de l'utilisateur sont valables " -"sur tous les sites" +msgstr "Si aucun n'est selectionné, les permissions de l'utilisateur sont valables sur tous les sites" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "sites" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Permissions globales de la page" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Permissions globales des pages" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "S'applique sur" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Permissions de la page" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Utilisateur (page)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Utilisateurs (page)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Groupe d'utilisateur (page)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Groupes d'utilisateur (page)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "largeur" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "remplace le titre dans le menu" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "Chemin" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "remplace le titre de la page (balise html \"title\")" @@ -920,21 +746,21 @@ msgstr "remplace le titre de la page (balise html \"title\")" msgid "File" msgstr "Fichier" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "fichier" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "utiliser un fichier .swf" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "hauteur" @@ -942,7 +768,7 @@ msgstr "hauteur" msgid "Missing flash plugin." msgstr "Il manque le bloc Flash." -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Google Map" @@ -976,9 +802,7 @@ msgstr "latitude" #: plugins/googlemap/models.py:19 msgid "Use latitude & longitude to fine tune the map possiton." -msgstr "" -"Utiliser la longitude et la latitude pour régler finement le positionnement " -"de la carte." +msgstr "Utiliser la longitude et la latitude pour régler finement le positionnement de la carte." #: plugins/googlemap/models.py:20 msgid "longitude" @@ -1000,15 +824,15 @@ msgstr "Planificateur de trajets" msgid "Map" msgstr "Carte" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "Votre adresse" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Calculer la route" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "Hériter des greffons de la page" @@ -1017,9 +841,7 @@ msgid "Language or Page must be filled out" msgstr "La langue ou page doivent être renseignés" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "" #: plugins/inherit/models.py:11 @@ -1030,28 +852,28 @@ msgstr "Optionnel: la langue désirée pour les greffons" msgid "Link" msgstr "Lien" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "nom" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "lien" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "Un lien vers une page est prioritaire sur un lien texte." -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "mailto" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "Une adresse courriel est prioritaire sur un lien texte" @@ -1059,40 +881,40 @@ msgstr "Une adresse courriel est prioritaire sur un lien texte" msgid "Picture" msgstr "Image" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "gauche" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "droite" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "image" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "si renseigné, l'image sera cliquable" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "texte alternatif" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "description textuelle de l'image" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "description longue" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "description additionnelle de l'image" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "côté" @@ -1111,25 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " -msgstr "" -"Veuillez fournir le nom du modèle (par ex.: \"snippets/plugin_xy.html\") qui " -"sera affiché." +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgstr "Veuillez fournir le nom du modèle (par ex.: \"snippets/plugin_xy.html\") qui sera affiché." #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "Fragments" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "Aperçu (teaser)" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "Si renseigné, l'image sera cliquable" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "Si renseigné, l'image sera cliquable." @@ -1141,7 +960,7 @@ msgstr "plus" msgid "Text" msgstr "Texte" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "corps" @@ -1196,9 +1015,8 @@ msgid "Twitter" msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "Utilisateur Twitter" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1221,15 +1039,11 @@ msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "Si précisé, le lien pointera vers votre profil Twitter." #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "utilisateur" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1240,92 +1054,84 @@ msgstr "Vidéo" msgid "Color Settings" msgstr "Paramètres couleurs" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "fichier vidéo" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "utilisez un fichier .flv ou une vidéo encodée au format h264" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "URL du fichier video" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" -msgstr "" -"URL du fichier video YouTube ou Vimeo. Par exemple: http://www.youtube.com/" -"watch?v=YFa59lK-kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" +msgstr "URL du fichier video YouTube ou Vimeo. Par exemple: http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "Prévisualisation du fichier image" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "lecture auto" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "masquer automatiquement" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "plein écran" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "boucle" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "couleur d'arrière plan" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "Hexadécimal, par ex. : fff00cc" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "couleur du texte" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "couleur du texte de la barre de recherche" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "couleur d'arrière plan de la barre de recherche" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "couleur de la barre de progression" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "couleur du bouton (état non survolé)" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "couleur du bouton (état survolé)" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "Couleur de surlignage du bouton" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" -msgstr "" -"Le plugin flash n'est pas disponible. Veuillez le télécharger." +msgid "Missing flash plugin. Download here" +msgstr "Le plugin flash n'est pas disponible. Veuillez le télécharger." #: templates/admin/page_submit_line.html:3 #: templates/admin/cms/page/change_form.html:273 @@ -1352,12 +1158,13 @@ msgid "Save and continue editing" msgstr "Sauvegarder et continuer les modifications" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "Vous devez valider la page %(page)s." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Modifications récentes" @@ -1366,11 +1173,18 @@ msgstr "Modifications récentes" msgid "Log in to administration here." msgstr "Identifiez-vous." +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Nom d'utilisateur:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Mot de passe:" @@ -1455,12 +1269,8 @@ msgstr "États des pages" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." -msgstr "" -"Cette page doit être validée au niveau %(moderation_level)s, contactez les " -"personnes concernées." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." +msgstr "Cette page doit être validée au niveau %(moderation_level)s, contactez les personnes concernées." #: templates/admin/cms/page/change_form.html:185 msgid "Request approvemet" @@ -1542,8 +1352,8 @@ msgid "edit this page" msgstr "modifier cette page" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "Éditer" @@ -1599,7 +1409,7 @@ msgid "add" msgstr "ajouter" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "Approuver directement" @@ -1614,6 +1424,7 @@ msgid "Unpublish" msgstr "Dépublier" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Publier" @@ -1742,261 +1553,239 @@ msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "Aucun bloc disponible. Veuillez définir des blocs pour cette zone." #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "Blocs disponibles" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "Déplacer vers %(name)s" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "Êtes-vous sûr(e) de vouloir supprimer ce greffon ?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "Mode édition" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "État" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "Nom d'utilisateur" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "se connecter" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "Gabarit" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "déplacer" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "Déplacer/ajouter des pages" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "Ajouter descendant" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "Ajouter page descendante" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "Ajouter \"soeur\"" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "Ajouter page \"soeur\"" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "Supprimer la page" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "Administration du site" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "Propriétés de la page" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "historique" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "Voir l'historique" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "Se déconnecter" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "Vérrouiller" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "Fermer" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "haut" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "bas" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "Paramètres" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "Supprimer le greffon" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "Annuler la modération de la page" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "Annuler la modération des descendants immédiats" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "Annuler la modération des descendants" -#: templatetags/cms_tags.py:69 -#, fuzzy, python-format +#: templatetags/cms_tags.py:78 +#, python-format msgid "Page not found on %(domain)s" -msgstr "Identifiant non trouvé sur %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:70 -#, fuzzy, python-format +#: templatetags/cms_tags.py:79 +#, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"Un templatetag page_id_url n'a pas trouvé de page avec l'identifiant %" -"(reverse_id)s\n" -"L'URL de la page était : http://%(host)s%(path)s" - -#: utils/moderator.py:82 -msgid "parent first" -msgstr "Parent d'abord" -#: utils/moderator.py:89 -msgid "approve" -msgstr "approuver" - -#: utils/moderator.py:240 -#, python-format -msgid "CMS - Page %s requires approvement." -msgstr "CMS - la page %s nécessite approbation" +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" -#: utils/permissions.py:206 -msgid "CMS - your user account was created." -msgstr "CMS - votre compte utilisateur a été créé" +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" -#: utils/permissions.py:208 -msgid "CMS - your user account was changed." -msgstr "CMS - votre compte utilisateur a été modifié" +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" -#~ msgid "menu login required" -#~ msgstr "Menu pour les membres identifiés" +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "" -#~ "montrer cette page dans le menu seulement si l'utilisateur est identifié" +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" -#, fuzzy -#~ msgid "" -#~ "A show_placeholder_by_id template tag didn't found a page with the " -#~ "reverse_id %(reverse_id)s\n" -#~ "The url of the page was: http://%(host)s%(path)s" -#~ msgstr "" -#~ "Un templatetag show_placeholder_by_id n'a pas pu trouver une page avec " -#~ "l'identifiant %(reverse_id)s\n" -#~ "L'URL de la page était : http://%(host)s%(path)s" +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" -#~ msgid "Sublevel" -#~ msgstr "Sous-niveau" +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" -#~ msgid "Sublevel3" -#~ msgstr "Sous-niveau 3" +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" -#~ msgid "Sublevel 2" -#~ msgstr "Sous-niveau 2" +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" -#~ msgid "dock" -#~ msgstr "dock" +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" -#~ msgid "overlay" -#~ msgstr "overlay" +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" -#~ msgid "blank" -#~ msgstr "blank" +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" -#~ msgid "self" -#~ msgstr "self" +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" -#~ msgid "parent" -#~ msgstr "parent" +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" -#~ msgid "window" -#~ msgstr "window" +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" -#~ msgid "opaque" -#~ msgstr "opaque" +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" -#~ msgid "transparent" -#~ msgstr "transparent" +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" -#~ msgid "controller style" -#~ msgstr "Style de contrôleur" +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" -#~ msgid "click_url" -#~ msgstr "url cible" +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" -#~ msgid "click target" -#~ msgstr "cible" +#: utils/moderator.py:83 +msgid "parent first" +msgstr "Parent d'abord" -#~ msgid "mute" -#~ msgstr "Sans le son" +#: utils/moderator.py:90 +msgid "approve" +msgstr "approuver" -#~ msgid "mute only" -#~ msgstr "Forcer sans le son" +#: utils/moderator.py:251 +#, python-format +msgid "CMS - Page %s requires approvement." +msgstr "CMS - la page %s nécessite approbation" -#~ msgid "volume" -#~ msgstr "volume" +#: utils/permissions.py:206 +msgid "CMS - your user account was created." +msgstr "CMS - votre compte utilisateur a été créé" -#~ msgid "in range <0, 100>" -#~ msgstr "échelle de 0 à 100 " +#: utils/permissions.py:208 +msgid "CMS - your user account was changed." +msgstr "CMS - votre compte utilisateur a été modifié" #~ msgid "fgcolor" #~ msgstr "fgcolor" -#~ msgid "Hexadecimal, eg 13abec" -#~ msgstr "Hexadécimal, par ex. : fff000 " - -#~ msgid "wmode" -#~ msgstr "wmode" - -#~ msgid "Twitter recent entries plugin" -#~ msgstr "Bloc des tweets récents" - -#~ msgid "Revisions" -#~ msgstr "Versions" - #~ msgid "Wanted language has not been translated yet." #~ msgstr "La traduction pour la langue demandée n'est pas encore disponible." - -#~ msgid "A programming error occurred - cannot find text editor widgets." -#~ msgstr "Une erreur interne est survenue - cannot find text editor widgets." - -#~ msgid "Videoplayer" -#~ msgstr "Lecteur vidéo" - -#~ msgid "use video file" -#~ msgstr "utiliser un fichier vidéo" - -#~ msgid "splash image" -#~ msgstr "image de démarrage" - -#~ msgid "autoplay" -#~ msgstr "lecture auto" diff --git a/cms/locale/fr/LC_MESSAGES/djangojs.mo b/cms/locale/fr/LC_MESSAGES/djangojs.mo index 71e1829f7f94762a895b5b075d5e20b44157ec16..99cb4e80290f230cb8e203c6947a1fd032ca564c 100644 GIT binary patch delta 408 zcmZXO!AiqG5Qeu+r6pcOyy;<&if*$>#lYH%wJHcoYb~Bch{>96X|i!QDF{NvlUE78 zK#$%%`UJj%uiz^42?WsEbTCThzPz6{6n!o~Z1r$nv4sZvY1Mk2V zP%R>OwUPgz8W)pu!V^@mxhdj1X!oj_+lLbyk?1lonrRZ_}QVBkrf< zBp{buX(3~VgOL}9lK7D}`#g~DCG delta 553 zcmZ9IL2DC16vxL{ZOPG_RPfzA)LC|`C@x}6lOV;|#25-5C%ez>+R03unN9Ixz>^+J z@I&Mqc+iUhJ&0eyZzA~LSP*^ix0~O$=0C4&d=RKh;2P+FO`t(t??4;8 z2T#Eda1&g=AjAo@2kn55po{)jLx?`KeNl)Ax`5UhU!bt8tNs^Su_44|0lyGulW*IH zHjvVqrn)Lh<4HLtuV$P_boT1%y#Azc%rsR6?@bAP;hR#Lk!2q%>%?AGaQL>8Lw=cF;d;4tZ)_kWYM3=5oI(yd2q-nuGpGwjHa0 zp}Fj+z$xv<@jaO>Ei%PMX}>iIX^nQx17n*6IKIVvMA>@BZ=iln-*`l<`^x>r#4d zkCmZ)YswcYW4iyk?#Jit!(yUJ9c6a%pt;y;yjgr|e8tTwPntcAwaq-48+bK#;%T)E xt0gv8&A3o5UoCw^i_eYi78}P!>4RfOTCMj-d(`_IVa-2d, YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: 2009-11-10 20:47+0100\n" -"Last-Translator: Yohan Boniface \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" "Language-Team: LANGUAGE \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=2; plural=(n > 1)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" -msgstr "" -"Êtes-vous sûr de vouloir changer le %(field_name)s sans enregistrer la page?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" +msgstr "Êtes-vous sûr de vouloir changer le %(field_name)s sans enregistrer la page?" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -"Tous les blocs n'ont pas été sauvegardés. Êtes-vous sûr de vouloir " -"enregistrer la page ? Les blocs non sauvegardés seront perdus. " -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "Êtes-vous sûr de vouloir changer d'onglet sans enregistrer la page?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Êtes-vous sûr de vouloir supprimer ce bloc ?" diff --git a/cms/locale/gu/LC_MESSAGES/django.mo b/cms/locale/gu/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..05829ee57a98770868904b922659df58a8ee8127 GIT binary patch literal 533 zcmZXP!EO^V5Qba9X^)&a3=)STn5;LIXzDfUFehuk3L}AB3kv z;#u%gksSD?Paezv%>4fS;`z_Lr2WLp#OuVf#Jj|xN#a*}JWl7}*=pt8hAPHIjkn~3 zaaKaTQC2&wx{$4@cb;(>w5jn^)B#H;p<(WW%yVtHiFc#Qb$M+bjLUbOxd|as$W~uU zoOx25CgZtck}wuUfnto}2*i;b3l#5#NJd=KgBcS1?<)@F;qhCMlwGR8SbAkctJrx7 zZet9bcJyH=Mpbi`ELKOQ2}@F)gwJuKd?w|f$oDDFwsGd7W&bGQ`s, YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:53+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:39+0000\n" +"Last-Translator: ojii \n" +"Language-Team: Gujarati \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: gu\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "" -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "" -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "" -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "" -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." msgstr "" -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "" -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." msgstr "" -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "" -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "" -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "" -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "" - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 +#: forms/fields.py:20 msgid "Select a valid page" msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "" @@ -473,34 +333,34 @@ msgstr "" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -510,7 +370,7 @@ msgstr "" msgid "path" msgstr "" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "" @@ -518,15 +378,15 @@ msgstr "" msgid "everybody" msgstr "" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "" @@ -548,7 +408,7 @@ msgid "navigation extenders" msgstr "" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "" @@ -564,320 +424,321 @@ msgstr "" msgid "reverse url id" msgstr "" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "" @@ -885,21 +746,21 @@ msgstr "" msgid "File" msgstr "" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "" @@ -907,7 +768,7 @@ msgstr "" msgid "Missing flash plugin." msgstr "" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "" @@ -963,15 +824,15 @@ msgstr "" msgid "Map" msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "" @@ -980,9 +841,7 @@ msgid "Language or Page must be filled out" msgstr "" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "" #: plugins/inherit/models.py:11 @@ -993,28 +852,28 @@ msgstr "" msgid "Link" msgstr "" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "" @@ -1022,40 +881,40 @@ msgstr "" msgid "Picture" msgstr "" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "" @@ -1074,23 +933,22 @@ msgid "HTML" msgstr "" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "" #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "" @@ -1102,7 +960,7 @@ msgstr "" msgid "Text" msgstr "" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "" @@ -1185,10 +1043,7 @@ msgid "query" msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1199,87 +1054,83 @@ msgstr "" msgid "Color Settings" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "" #: templates/admin/page_submit_line.html:3 @@ -1307,12 +1158,13 @@ msgid "Save and continue editing" msgstr "" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "" #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "" @@ -1321,11 +1173,18 @@ msgstr "" msgid "Log in to administration here." msgstr "" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "" @@ -1410,9 +1269,7 @@ msgstr "" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "" #: templates/admin/cms/page/change_form.html:185 @@ -1495,8 +1352,8 @@ msgid "edit this page" msgstr "" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "" @@ -1552,7 +1409,7 @@ msgid "add" msgstr "" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "" @@ -1567,6 +1424,7 @@ msgid "Unpublish" msgstr "" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "" @@ -1698,142 +1556,222 @@ msgstr "" msgid "Available plugins" msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "" @@ -1845,3 +1783,9 @@ msgstr "" #: utils/permissions.py:208 msgid "CMS - your user account was changed." msgstr "" + +#~ msgid "fgcolor" +#~ msgstr "" + +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/gu/LC_MESSAGES/djangojs.mo b/cms/locale/gu/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..9d12170f4e2c33e997d93101387434998bbf843c GIT binary patch literal 446 zcmZXPPfNov7{(`h>d~`@2p$xD*R%sSvpAyN;E3|@tG%4kNif@^6Y ztz57cwXq(SPO1#<8tEW0jO5$U{?biwls^lhI-lEEmh!{n_yKomX|O$wsMT<`uFO_@sRx4@wq0a JV-j5iogWawfs+6L literal 0 HcmV?d00001 diff --git a/cms/locale/gu/LC_MESSAGES/djangojs.po b/cms/locale/gu/LC_MESSAGES/djangojs.po index 0d036e5d28f..e7b4afaf90a 100644 --- a/cms/locale/gu/LC_MESSAGES/djangojs.po +++ b/cms/locale/gu/LC_MESSAGES/djangojs.po @@ -2,36 +2,35 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: Gujarati \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: gu\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "" diff --git a/cms/locale/he/LC_MESSAGES/django.mo b/cms/locale/he/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..6115c6c810f1a9a8e35369e93cdeb2d1c7eb32f2 GIT binary patch literal 570 zcmZWlO>Yx16b#VQ9yxPxr5-@=vfij_gWFVX(^QJoK$I>NadX$NUPrt3Vm}A^L->3A z7Q9qV4vaMZoM+FxKd<+G4-#G^zDYbte3keivB$U{UJeEy)6{FWSbDd{ieRqbEBauZ z6-=$A)efpQWGn2PCs+h+6kJ9fpmc)OL|qVht_{`keptCSS7u{ezN^el2oXcJ{9MA+ zqonjQTuDN~M!YD1kANRDek?{D_z~wx2rJx}-ogL6;!yCT_dFrHk%6G}(uPKo^MYNX zUCY*3cIWEmCtAf$JM$w-Mcf5M7)**91^REFR=hhQ_S8x!i?)vb%Z i!s(M8!6H2*Kik5oi6{;eDU literal 0 HcmV?d00001 diff --git a/cms/locale/he/LC_MESSAGES/django.po b/cms/locale/he/LC_MESSAGES/django.po index 5b4e5492a07..04787a93d26 100644 --- a/cms/locale/he/LC_MESSAGES/django.po +++ b/cms/locale/he/LC_MESSAGES/django.po @@ -2,470 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:53+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"Last-Translator: Benjamin Wohlwend \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: he\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "" -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "" -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "" -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "" -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." msgstr "" -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "" -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." msgstr "" -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "" -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "" -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "" -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "" - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 +#: forms/fields.py:20 msgid "Select a valid page" msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "" @@ -473,34 +333,34 @@ msgstr "" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -510,7 +370,7 @@ msgstr "" msgid "path" msgstr "" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "" @@ -518,15 +378,15 @@ msgstr "" msgid "everybody" msgstr "" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "" @@ -548,7 +408,7 @@ msgid "navigation extenders" msgstr "" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "" @@ -564,320 +424,321 @@ msgstr "" msgid "reverse url id" msgstr "" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "" @@ -885,21 +746,21 @@ msgstr "" msgid "File" msgstr "" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "" @@ -907,7 +768,7 @@ msgstr "" msgid "Missing flash plugin." msgstr "" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "" @@ -963,15 +824,15 @@ msgstr "" msgid "Map" msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "" @@ -980,9 +841,7 @@ msgid "Language or Page must be filled out" msgstr "" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "" #: plugins/inherit/models.py:11 @@ -993,28 +852,28 @@ msgstr "" msgid "Link" msgstr "" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "" @@ -1022,40 +881,40 @@ msgstr "" msgid "Picture" msgstr "" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "" @@ -1074,23 +933,22 @@ msgid "HTML" msgstr "" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "" #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "" @@ -1102,7 +960,7 @@ msgstr "" msgid "Text" msgstr "" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "" @@ -1185,10 +1043,7 @@ msgid "query" msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1199,87 +1054,83 @@ msgstr "" msgid "Color Settings" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "" #: templates/admin/page_submit_line.html:3 @@ -1307,12 +1158,13 @@ msgid "Save and continue editing" msgstr "" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "" #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "" @@ -1321,11 +1173,18 @@ msgstr "" msgid "Log in to administration here." msgstr "" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "" @@ -1410,9 +1269,7 @@ msgstr "" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "" #: templates/admin/cms/page/change_form.html:185 @@ -1495,8 +1352,8 @@ msgid "edit this page" msgstr "" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "" @@ -1552,7 +1409,7 @@ msgid "add" msgstr "" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "" @@ -1567,6 +1424,7 @@ msgid "Unpublish" msgstr "" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "" @@ -1698,142 +1556,222 @@ msgstr "" msgid "Available plugins" msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "" @@ -1845,3 +1783,9 @@ msgstr "" #: utils/permissions.py:208 msgid "CMS - your user account was changed." msgstr "" + +#~ msgid "fgcolor" +#~ msgstr "" + +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/he/LC_MESSAGES/djangojs.mo b/cms/locale/he/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..4619ea28d804c47c50a383b1270ac3fd58fc79f6 GIT binary patch literal 459 zcmZXQK~KUk7=|%=+R?Lznt0G?S+^L#;)oLlA=!|?@Lsk$N=Cc19nqiR!N2Ek@tY=a z@J-(IYx;cs-uCZJ2}RT5Wk|@ifP;TpOVzMfsM= zLg8#@oCU9xwm30`$nkSs7@R7KHr7^#x^5xtre3!*wR3Z^7s@?$y26;68)yEK;-Tiu z!p(TZET_mPo`;E#Nf(hW^`Ynx0w7-Sy=W5r=e&DLI=2Mm#LQTnY9>v|tkM*XS8l{(N?+`ILS1LjxYDx#2G4S zxr7-X6@<0?-MUrDgzTei!?fWxSfyj!J915yH?DCcGnETjP}ExsdzcR2#hrOsYgXd1 a(mO+utbVs9@cZbm46Y@*43Kx@w0;1x7lQ8q literal 0 HcmV?d00001 diff --git a/cms/locale/he/LC_MESSAGES/djangojs.po b/cms/locale/he/LC_MESSAGES/djangojs.po index 0d036e5d28f..bf7ee746629 100644 --- a/cms/locale/he/LC_MESSAGES/djangojs.po +++ b/cms/locale/he/LC_MESSAGES/djangojs.po @@ -2,36 +2,35 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 14:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: he\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "" diff --git a/cms/locale/hi/LC_MESSAGES/django.mo b/cms/locale/hi/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..36233191ada526a418f5aee1c4341791234abede GIT binary patch literal 36088 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 literal 0 HcmV?d00001 diff --git a/cms/locale/hi/LC_MESSAGES/django.po b/cms/locale/hi/LC_MESSAGES/django.po index e280da619c1..509e68898a6 100644 --- a/cms/locale/hi/LC_MESSAGES/django.po +++ b/cms/locale/hi/LC_MESSAGES/django.po @@ -2,477 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:53+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:38+0000\n" +"Last-Translator: ojii \n" +"Language-Team: Hindi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: hi\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "उन्नत विकल्प" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "शीर्षक" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "डिफ़ॉल्ट शीर्षक" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "स्लग" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "शीर्षक है कि URL में प्रयोग किया जाता है का हिस्सा" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "भाषा" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "मौजूदा भाषा की क्षेत्र " -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "इस काउंटर के साथ एक पृष्ठ पहले से मौजूद है" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "मेनू का शीर्षक" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "अधिलेखित मेनू में क्या प्रदर्शित होता है" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "पृष्ठ शीर्षक" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "Overwrites आपके ब्राउज़र या बुकमार्क में के शीर्ष पर प्रदर्शित होता है क्या" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "आवेदन" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "हुक इस पृष्ठ पर आवेदन." -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "अधिलेखित यूआरएल" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "इस क्षेत्र खाली रखें अगर मानक पथ प्रयोग किया जाना चाहिए." -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "पुनर्निर्देशन" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "इस URL के लिए पुनर्निर्देश." -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "खोज इंजन द्वारा उपयोग पृष्ठ का वर्णन." -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "अल्पविराम से अलग कभी कभी खोज इंजन द्वारा उपयोग खोजशब्दों की एक सूची." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "इस रिवर्स यूआरएल आईडी के साथ एक पृष्ठ पहले से ही मौजूद है." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "अवैध यूआरएल का प्रयोग करते हैं / मेरी / url प्रारूप." -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "उपयोगकर्ता" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"पृष्ठ अनुमति जोड़ें भी बच्चों, या वंश का उपयोग करने की आवश्यकता है, अन्यथा पृष्ठ जोड़े अपने " -"निर्माता से नहीं बदला जा सकता है." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "पृष्ठ अनुमति जोड़ें भी बच्चों, या वंश का उपयोग करने की आवश्यकता है, अन्यथा पृष्ठ जोड़े अपने निर्माता से नहीं बदला जा सकता है." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "पृष्ठ जोड़ें अनुमति भी पृष्ठ को संपादित करने की अनुमति की आवश्यकता है." -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "कृपया चुनें उपयोगकर्ता या समूह में पहले." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "जोड़ना" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "बदलना" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "मिटाना" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "स्वस्थ (किसी भी पन्ने)" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "सूचित उपयोगकर्ता" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"उपयोगकर्ता नाम या पासवर्ड को बदलने के बारे में उपयोगकर्ता के लिए ईमेल सूचना भेजें. " -"उपयोगकर्ता ईमेल आवश्यक है." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "उपयोगकर्ता नाम या पासवर्ड को बदलने के बारे में उपयोगकर्ता के लिए ईमेल सूचना भेजें. उपयोगकर्ता ईमेल आवश्यक है." -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "नया कूटशब्द" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "नए पासवर्ड की पुष्टि" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "ईमेल अधिसूचना मान्य ईमेल पते की आवश्यकता है." -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "नए पृष्ठ जोड़ने की अनुमति के पन्नों को बदलने की अनुमति की आवश्यकता है!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" -msgstr "" -"नए उपयोगकर्ताओं को जोड़ने की अनुमति उपयोगकर्ताओं को बदलने की अनुमति की आवश्यकता है!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" +msgstr "नए उपयोगकर्ताओं को जोड़ने की अनुमति उपयोगकर्ताओं को बदलने की अनुमति की आवश्यकता है!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "के लिए अनुमति आप भी उन्हें संपादित करने की आवश्यकता जोड़ें!" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "छिपा हुआ" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "मूल सेटिंग्स" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "नोट: यह पृष्ठ अगर आप चयन बदल reloads. सहेजें पहले." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "उन्नत सेटिंग्स" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "एसईओ सेटिंग्स" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "उच्च" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "डेटाबेस त्रुटि" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "पृष्ठ" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "पेज सफलतापूर्वक मंजूरी दे दी थी." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr " %(name)s प्राथमिक कुंजी वस्तु के साथ एस %(key)r आर मौजूद नहीं है." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "सिर्फ इस पृष्ठ के लिए एक अनुवाद से मौजूद है" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "शीर्षक और plugins भाषा %(language)s के साथ नष्ट कर दिया गया" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "क्या आप सुनिश्चित हैं?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "आप इस पृष्ठ पर प्रकाशित की अनुमति नहीं है" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "आप इस पृष्ठ की in_navigation स्थिति को बदलने की अनुमति नहीं है" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "आप इस पृष्ठ को बदलने की अनुमति नहीं है" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "भाषा एक समर्थित भाषा के लिए सेट किया जाना चाहिए!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "%(plugin_name)s प्लगइन %(placeholder)s जोड़ा " -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "भाषा की नकल की भाषा से अलग किया जाना चाहिए!" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "नकल %(language)s के लिए plugins %(placeholder)s" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "%(plugin_name)s स्थिति %(position)s में संपादित प्लगइन (%(placeholder)s में " -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "कहाँ चला गया प्लगइन्स" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." -msgstr "" -"%(plugin_name)s की स्थिति %(position)s में प्लगइन में %(placeholder)s नष्ट किया " -"गया." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." +msgstr "%(plugin_name)s की स्थिति %(position)s में प्लगइन में %(placeholder)s नष्ट किया गया." -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "पृष्ठ अनुमति" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "उपयोगकर्ता और समूह की अनुमति" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "पृष्ठ अनुमति प्रबंधन" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "प्रयोक्ता जानकारी" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "समूह" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "पासवर्ड" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Copy permissions" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "कॉपी मॉडरेशन" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "विरासत में निकटतम पूर्वज का खाका" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "समीक्षा" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "सूचकांक और मेज:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "सामग्री के पूर्ण तालिका" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "सभी वर्गों और subsections सूची" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "खोज पेज" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "खोज इस दस्तावेज़ीकरण" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "वैश्विक मॉड्यूल सूचकांक" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "जल्दी सभी मॉड्यूल के लिए उपयोग" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "सामान्य सूचकांक" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "सब functions, classes, terms" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "सूचकांक" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "एक पन्ने पर पूर्ण सूचकांक" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "पत्र के सूचकांक पृष्ठ" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "हो सकता है भारी" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "नेविगेशन" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "सामग्री तालिका" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "पिछला विषय" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "पिछले अध्याय" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "अगला विषय" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "अगले अध्याय" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "यह पेज" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "दिखाएँ स्रोत" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "त्वरित खोज" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "जाना" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "खोज शब्द या एक मॉड्यूल, वर्ग या समारोह में नाम दर्ज करें." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "इन दस्तावेजों के बारे में" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "खोज" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "कॉपीराइट" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "पदावनत" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "खोज" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "खोज परिणाम" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "आपकी खोज परिणाम किसी भी मेल नहीं खाती." - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "इस पेज का चयन करें" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "एक और जोड़ें" @@ -480,34 +333,34 @@ msgstr "एक और जोड़ें" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "भाषा" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "स्थिति" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "निर्माण तिथि" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "स्थान" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "plugin_name" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -517,7 +370,7 @@ msgstr "शीर्षक" msgid "path" msgstr "रास्ता" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "slug" @@ -525,15 +378,15 @@ msgstr "slug" msgid "everybody" msgstr "सब" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "संपादित कर सकते हैं" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "समूह" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "प्रकाशित कर सकते हैं" @@ -555,7 +408,7 @@ msgid "navigation extenders" msgstr "नेविगेशन extenders" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "url अधिलेखित है" @@ -571,323 +424,321 @@ msgstr "लेखक" msgid "reverse url id" msgstr "रिवर्स url आईडी" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "लॉगिन आवश्यक" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "नरम जड़" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "प्रकाशन समाप्ति तिथि" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "टेम्पलेट" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "प्रकाशन तिथि" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "नेविगेशन में" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "आवेदन" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "आईडी" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "पुनर्निर्देशित" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "खोजशब्दों" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "वर्णन" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "वर्तमान पृष्ठ" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "पृष्ठ बच्चों (तत्काल)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "पृष्ठ और बच्चों (तत्काल)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "वंश पृष्ठ" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "पृष्ठ और वंश" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "पृष्ठ" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "उपयोगकर्ता" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "मध्यम पृष्ठ" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "Moderate बच्चों" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "Moderate वंश" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "PageModerator" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "निर्मित" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "बदला" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "अनुरोध हटा दें" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "अनुरोध बदल दे" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "अनुरोध प्रकाशित." -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "अप्रकाशित अनुरोध." -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "अनुमोदित" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "पृष्ठ moderator state" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "पृष्ठ moderator states" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "अनुरोध. app." -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "मिटाना" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "app. par." -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "द्वारा निर्मित" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "बदल द्वारा" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "जब पृष्ठ रह जाना चाहिए. दर्जा \\ \"प्रकाशन चाहिए \" पेज के लिए जीना जाओ." -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "जब पृष्ठ समाप्त होने के लिए. खाली छोड़ना कभी नहीं समाप्त होने के लिए." -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "सभी पूर्वजों नेविगेशन में प्रदर्शित नहीं किया जाएगा" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" -msgstr "" -"एक अद्वितीय पहचानकर्ता है कि इस पृष्ठ पर जोड़ने के लिए page_url templatetag के साथ " -"प्रयोग किया जाता है" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" +msgstr "एक अद्वितीय पहचानकर्ता है कि इस पृष्ठ पर जोड़ने के लिए page_url templatetag के साथ प्रयोग किया जाता है" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "प्रकाशित है" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "के लिए सामग्री प्रदान करते थे खाके." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "साइट पृष्ठ पर पहुँचा जा सकता है." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "साइट" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "मॉडरेटर state" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "अधिलेखित मेनू में क्या प्रदर्शित होता है" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "पन्ने" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "पृष्ठ नकल की थी." -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "default" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "जोड़ सकते हैं" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "नष्ट कर सकते हैं" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "उन्नत सेटिंग्स बदल सकते हैं" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "अनुमति को बदल सकते हैं" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "पृष्ठ स्तर पर" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "कर सकते हैं हिलना" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "मॉडरेट कर सकते हैं" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "पृष्ठों को ठीक कर सकते हैं" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "किसी भी नष्ट पृष्ठ की वसूली कर सकते हैं" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "अगर नहीं चुना, उपयोगकर्ता के सभी साइटों के लिए अनुमति दी गई अमीर." -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "साइटें" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "पृष्ठ वैश्विक अनुमति" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "पेज वैश्विक अनुमति" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "अनुदान पर" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "पृष्ठ अनुमति" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "उपयोगकर्ता (पृष्ठ)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "पृष्ठ (उपयोगकर्ता)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "उपयोगकर्ता समूह (पेज)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "उपयोगकर्ता समूहों (पृष्ठ)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "चौड़ाई" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "मेनू में शीर्षक अधिलेखित" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "रास्ता" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "शीर्षक अधिलेखित(HTML शीर्षक टैग)" @@ -895,21 +746,21 @@ msgstr "शीर्षक अधिलेखित(HTML शीर्षक ट msgid "File" msgstr "फ़ाइल" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "फ़ाइल" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "फ्लैश" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "उपयोग swf फ़ाइल" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "ऊँचाई" @@ -917,7 +768,7 @@ msgstr "ऊँचाई" msgid "Missing flash plugin." msgstr "फ़्लैश प्लगइन ग़ैरहाज़िर." -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "गूगल Map" @@ -973,15 +824,15 @@ msgstr "मार्ग चौरस करने का औज़ार" msgid "Map" msgstr "मानचित्र" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "आपका पता" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "गणना मार्ग" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "वारिस पृष्ठ से प्लगइन्स" @@ -990,12 +841,8 @@ msgid "Language or Page must be filled out" msgstr "भाषा या पृष्ठ से भरा जाना चाहिए" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" -msgstr "" -"एक पृष्ठ का चयन इस placeholder में अपनी plugins शामिल करने के लिए, खाली वर्तमान पृष्ठ " -"का चयन होगा" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" +msgstr "एक पृष्ठ का चयन इस placeholder में अपनी plugins शामिल करने के लिए, खाली वर्तमान पृष्ठ का चयन होगा" #: plugins/inherit/models.py:11 msgid "Optional: the language of the plugins you want" @@ -1005,28 +852,28 @@ msgstr "वैकल्पिक: plugins तुम चाहते हो क msgid "Link" msgstr " लिंक" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "नाम" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "जोड़ना" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "एक पृष्ठ पर एक लिंक एक पाठ लिंक पर प्राथमिकता है." -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "mailto" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "एक ईमेल पता एक पाठ लिंक पर प्राथमिकता है." @@ -1034,40 +881,40 @@ msgstr "एक ईमेल पता एक पाठ लिंक पर प msgid "Picture" msgstr "चित्र" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "छोड़ा" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "सही" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "छवि" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "यदि वर्तमान छवि क्लिक करने योग्य हो जाएगा" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "वैकल्पिक पाठ" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "छवि का पाठ्य विवरण" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "लंबे विवरण" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "छवि का अतिरिक्त विवरण" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "पार्श्व" @@ -1086,24 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " -msgstr "" -"दर्ज करें एक टेम्पलेट (यानी. \"snippets/plugin_xy.html\"), जो प्रदान किया जाएगा." +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgstr "दर्ज करें एक टेम्पलेट (यानी. \"snippets/plugin_xy.html\"), जो प्रदान किया जाएगा." #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "स्निपेट्स" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "Teaser" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "यदि वर्तमान छवि क्लिक करने योग्य हो जाएगा" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "यदि वर्तमान छवि क्लिक करने योग्य हो जाएगा." @@ -1115,7 +960,7 @@ msgstr "अधिक" msgid "Text" msgstr "पाठ" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "शरीर" @@ -1170,9 +1015,8 @@ msgid "Twitter" msgstr "चहचहाना" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "twitter उपयोगकर्ता" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1195,15 +1039,11 @@ msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "अगर दी, इशारा आपके Twitter प्रोफ़ाइल की कड़ी के रूप में प्रदर्शित होता है." #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "उपयोगकर्ता" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1214,91 +1054,84 @@ msgstr "वीडियो" msgid "Color Settings" msgstr "रंग सेटिंग्स" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "फिल्म संचिका" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "उपयोग flv फाइल या h264 एन्कोडेड फ़ाइल वीडियो." -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "फिल्म url" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" -msgstr "" -"vimeo या YouTube वीडियो URL. उदाहरण: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" +msgstr "vimeo या YouTube वीडियो URL. उदाहरण: http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "पूर्वावलोकन छवि फ़ाइल" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "ऑटो खेल" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "ऑटो छिपाना" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "fullscreen" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "पाश" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "पृष्ठभूमि का रंग" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "षोडश आधारी, ff00cc उदा" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "पाठ का रंग" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "seekbar color" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "seekbar bg color" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "loadingbar color" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "button out color" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "button over color" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr " button highlight color" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" -msgstr "" -"फ़्लैश प्लगइन गुम. यहाँ डाउनलोड करें" +msgid "Missing flash plugin. Download here" +msgstr "फ़्लैश प्लगइन गुम. यहाँ डाउनलोड करें" #: templates/admin/page_submit_line.html:3 #: templates/admin/cms/page/change_form.html:273 @@ -1325,14 +1158,13 @@ msgid "Save and continue editing" msgstr "Save और संपादन जारी" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." -msgstr "" -"(पृष्ठ) %(page)s आपके द्वारा approvement आवश्यकता " -"हो सकती है." +msgid "Page %(page)s may require approvement by you." +msgstr "(पृष्ठ) %(page)s आपके द्वारा approvement आवश्यकता हो सकती है." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "पिछले परिवर्तन" @@ -1341,11 +1173,18 @@ msgstr "पिछले परिवर्तन" msgid "Log in to administration here." msgstr "प्रशासन में यहाँ प्रवेश करें." +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "प्रयोक्ता नाम:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "पासवर्ड:" @@ -1409,11 +1248,10 @@ msgstr "देखें साइट पर" #: templates/admin/cms/page/change_form.html:128 #: templates/admin/cms/page/plugin_change_form.html:84 -#, fuzzy msgid "Please correct the error below." msgid_plural "Please correct the errors below." -msgstr[0] "कृपया नीचे त्रुटि सही. " -msgstr[1] "कृपया नीचे त्रुटि सही." +msgstr[0] "" +msgstr[1] "" #: templates/admin/cms/page/change_form.html:148 msgid "All permissions" @@ -1431,11 +1269,8 @@ msgstr "पृष्ठ राज्यों" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." -msgstr "" -"इस पृष्ठ स्तर%(moderation_level)s में संचालित होगा , मध्यस्थ के लिए एक संदेश पोस्ट." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." +msgstr "इस पृष्ठ स्तर%(moderation_level)s में संचालित होगा , मध्यस्थ के लिए एक संदेश पोस्ट." #: templates/admin/cms/page/change_form.html:185 msgid "Request approvemet" @@ -1517,8 +1352,8 @@ msgid "edit this page" msgstr "इस पृष्ठ को संपादित करें" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "संपादित करें" @@ -1574,7 +1409,7 @@ msgid "add" msgstr "जोड़ना" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "सीधे स्वीकृत" @@ -1589,6 +1424,7 @@ msgid "Unpublish" msgstr "अप्रकाशित" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "प्रकाशित" @@ -1717,148 +1553,225 @@ msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "नहीं प्लगइन्स उपस्थित. इस placeholder-स्लॉट के लिए एक प्लगइन जोड़ें." #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "उपलब्ध प्लगइन्स" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "%(name)s में ले जाएँ" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "क्या आप सुनिश्चित हैं कि आप इस प्लगइन का हटाना चाहते हैं?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "संपादित करें मोड" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "स्थिति" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "उपयोगकर्ता नाम" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "लॉग इन" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "टेम्पलेट" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "चलना" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "स्थानांतरित / पेज जोड़ें" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "child जोड़ें" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "child पृष्ठ जोड़ें" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "sibling जोड़ें" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "sibling पृष्ठ जोड़ें" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "हटाएँ पृष्ठ" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "साइट प्रशासन" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "पेज सेटिंग्स" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "इतिहास" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "इतिहास देखें" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "लॉगआउट" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "ताला" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "बंद करना" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "ऊपर" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "नीचे" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "सेटिंग्स" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "हटाएँ प्लगइन" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "छुड़ाना पृष्ठ मॉडरेशन" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "छुड़ाना बच्चों मॉडरेशन" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "छुड़ाना वंश मॉडरेशन" -#: templatetags/cms_tags.py:69 -#, fuzzy, python-format +#: templatetags/cms_tags.py:78 +#, python-format msgid "Page not found on %(domain)s" -msgstr "%(domain)s पर उल्टा नहीं मिला आईडी " +msgstr "" -#: templatetags/cms_tags.py:70 -#, fuzzy, python-format +#: templatetags/cms_tags.py:79 +#, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"एक page_id_url टैग टेम्पलेट reverse_id %(reverse_id)s के साथ एक पृष्ठ पाया नहीं \\ " -"पृष्ठ की nThe यूआरएल था:http://%(host)s%(path)s" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "parent के पहले" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "अनुमोदन" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "सीएमएस -%s पेज approvement की आवश्यकता है." @@ -1871,25 +1784,8 @@ msgstr "सीएमएस - आपके उपयोगकर्ता खा msgid "CMS - your user account was changed." msgstr "सीएमएस - आपके उपयोगकर्ता खाते में बदल गया था." -#~ msgid "menu login required" -#~ msgstr "मेनू लॉगिन आवश्यक" - -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "केवल मीनू में इस पृष्ठ शो यदि उपयोगकर्ता में लॉग इन किया है" - -#~ msgid "" -#~ "A show_placeholder_by_id template tag didn't found a page with the " -#~ "reverse_id %(reverse_id)s\n" -#~ "The url of the page was: http://%(host)s%(path)s" +#~ msgid "fgcolor" #~ msgstr "" -#~ "एक show_placeholder_by_id टैग टेम्पलेट reverse_id %(reverse_id)s के साथ मिला " -#~ "एक पृष्ठ नहीं \\ पृष्ठ की nThe यूआरएल था:http://%(host)s%(path)s" - -#~ msgid "Sublevel" -#~ msgstr "Sublevel" -#~ msgid "Sublevel3" -#~ msgstr "Sublevel3" - -#~ msgid "Sublevel 2" -#~ msgstr "Sublevel 2" +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/hi/LC_MESSAGES/djangojs.mo b/cms/locale/hi/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..1cc94716943e6a5f0c8914ef40c2588c61e5e586 GIT binary patch literal 1263 zcmb_b&ubJh6dtuA?9sD_cqmjf-Px_!GVQi%ZLwgrmeq@bOn1`Rl-XpRWLkT(3RVyg zB1Q004;hhCP=r={sb~KM50XE{FSAP*5vfQ6A9;B{zxN*bdAe`I!|4Og0As*O;6C6^ z8<+$h0=I!3-~w>!nCGnl7l9vm?;iKO@3>!`@VwW!?;#;f9@NEg`C;$V{(=ngyilS1Q!6Qh%8E z!$B3oCEtf5ooCD3G5FK3G87CApZ9S}H$tUpJq?9QLM_vP$R*CnSc_eD!eFC04i^z; z7%{E0uoaN&Ttx7=DFquZ&CbkD^*XH#`lU%JG!w|V+6Fnz9_eyB3Aq?`TTB(xwLA4` zI@0rVwHH}Rr$j?WSZP2;7PvmBit+H$T#}_>LZ@ZgQUMW|HlC_h9d(0;SQ`-JY>iaT zl{{-UZ2r=kkJjuHYo1xNh3l)$*R1(q%{Oay3;WwbHn8p4{JAwxAZTg-|sd(==!4WgCbqssfe75=HBGP$v zLpnKOG@Z0veiL4itrOHOcLaS7^yBLs{049V{r8U8A#{osejm`k%)>R~IytH(tz)+x cDwqXGzp(}?H()H&EdcY{>@KNz|8=^*0F5a_H2?qr literal 0 HcmV?d00001 diff --git a/cms/locale/hi/LC_MESSAGES/djangojs.po b/cms/locale/hi/LC_MESSAGES/djangojs.po index dc8abe759be..282a9cfca52 100644 --- a/cms/locale/hi/LC_MESSAGES/djangojs.po +++ b/cms/locale/hi/LC_MESSAGES/djangojs.po @@ -5,28 +5,32 @@ # msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: Hindi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: hi\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "पहले क्या आप सुनिश्चित हैं कि आप (% field_name) बदलना चाहते हैं पृष्ठ बचाने के बिना है?" -#: media/cms/js/change_form.js:68 -msgid "Not all plugins are saved. Are you sure you want to save the page? All unsaved plugin content will be lost." -msgstr "नहीं सभी plugins बच रहे हैं. क्या आप सुनिश्चित हैं कि आप पृष्ठ को बचाना चाहते हो? सभी सहेजे न गए प्लगइन सामग्री खो जाएगा." +#: media/cms/js/change_form.js:69 +msgid "" +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." +msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "क्या आप सुनिश्चित हैं कि आप पृष्ठ टैब को बचाने के बिना परिवर्तन पहली करना चाहते हैं?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "क्या आप सुनिश्चित हैं कि आप इस प्लगइन का हटाना चाहते हैं?" diff --git a/cms/locale/hu/LC_MESSAGES/django.mo b/cms/locale/hu/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..35f156bfdfb8b642f61749a0f0b58dc6b724e0a4 GIT binary patch literal 570 zcmZWlO>Yx16b#VQ9yxPxr5-@=vfij_gWFVX(^QJoK$I>NadX$NUPrt3Vm}A^L->3A z7Q9qV4vaMZoM+FxKd<+G4-#G^zDYbte3keivB$U{UJeEy)6{FWSbDd{ieRqbEBauZ z6-=$A)efpQWGn2PCs+h+6kJ9fpmc)OL|qVht_{`keptCSS7u{ezN^el2oXcJ{9MA+ zqonjQTuDN~M!YD1kANRDek?{D_z~wx2rJx}-ogL6;!yCT_dFrHk%6G}(uPKo^MYNX zUCY*3cIWEmCtAf$JM$w-, YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:53+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"Last-Translator: Benjamin Wohlwend \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "" -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "" -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "" -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "" -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." msgstr "" -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "" -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." msgstr "" -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "" -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "" -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "" -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "" - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 +#: forms/fields.py:20 msgid "Select a valid page" msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "" @@ -473,34 +333,34 @@ msgstr "" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -510,7 +370,7 @@ msgstr "" msgid "path" msgstr "" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "" @@ -518,15 +378,15 @@ msgstr "" msgid "everybody" msgstr "" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "" @@ -548,7 +408,7 @@ msgid "navigation extenders" msgstr "" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "" @@ -564,320 +424,321 @@ msgstr "" msgid "reverse url id" msgstr "" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "" @@ -885,21 +746,21 @@ msgstr "" msgid "File" msgstr "" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "" @@ -907,7 +768,7 @@ msgstr "" msgid "Missing flash plugin." msgstr "" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "" @@ -963,15 +824,15 @@ msgstr "" msgid "Map" msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "" @@ -980,9 +841,7 @@ msgid "Language or Page must be filled out" msgstr "" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "" #: plugins/inherit/models.py:11 @@ -993,28 +852,28 @@ msgstr "" msgid "Link" msgstr "" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "" @@ -1022,40 +881,40 @@ msgstr "" msgid "Picture" msgstr "" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "" @@ -1074,23 +933,22 @@ msgid "HTML" msgstr "" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "" #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "" @@ -1102,7 +960,7 @@ msgstr "" msgid "Text" msgstr "" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "" @@ -1185,10 +1043,7 @@ msgid "query" msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1199,87 +1054,83 @@ msgstr "" msgid "Color Settings" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "" #: templates/admin/page_submit_line.html:3 @@ -1307,12 +1158,13 @@ msgid "Save and continue editing" msgstr "" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "" #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "" @@ -1321,11 +1173,18 @@ msgstr "" msgid "Log in to administration here." msgstr "" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "" @@ -1410,9 +1269,7 @@ msgstr "" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "" #: templates/admin/cms/page/change_form.html:185 @@ -1495,8 +1352,8 @@ msgid "edit this page" msgstr "" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "" @@ -1552,7 +1409,7 @@ msgid "add" msgstr "" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "" @@ -1567,6 +1424,7 @@ msgid "Unpublish" msgstr "" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "" @@ -1698,142 +1556,222 @@ msgstr "" msgid "Available plugins" msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "" @@ -1845,3 +1783,9 @@ msgstr "" #: utils/permissions.py:208 msgid "CMS - your user account was changed." msgstr "" + +#~ msgid "fgcolor" +#~ msgstr "" + +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/hu/LC_MESSAGES/djangojs.mo b/cms/locale/hu/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..cb10da6d271b452dbbb5aa25f996b11924404e54 GIT binary patch literal 459 zcmZXQK~KUk7=|%=+R?Lznt0G?S+^L#;)oLlA=!|?@Lsk$N=Cc19nqiR!N2Ek@tY=a z@J-(IYx;cs-uCZJ2}RT5Wk|@ifP;TpOVzMfsM= zLg8#@oCU9xwm30`$nkSs7@R7KHr7^#x^5xtre3!*wR3Z^7s@?$y26;68)yEK;-Tiu z!p(TZET_mPo`;E#Nf(hW^`Ynx0w7-Sy=W5r=e&DLI=2Mm#LQTnY9>v|tkM*XS8l{(N?+`ILS1LjxYDx#2G4S zxr7-X6@<0?-MUrDgzTei!?fWxSfyj!J915yH?DCcGnETjP}ExsdzcR2RXg*t)~v*1 arFVuRS^aKJ;P=sA8C*+r86fY*Y5f4S=YszL literal 0 HcmV?d00001 diff --git a/cms/locale/hu/LC_MESSAGES/djangojs.po b/cms/locale/hu/LC_MESSAGES/djangojs.po index 0d036e5d28f..a8f2668486a 100644 --- a/cms/locale/hu/LC_MESSAGES/djangojs.po +++ b/cms/locale/hu/LC_MESSAGES/djangojs.po @@ -2,36 +2,35 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 14:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "" diff --git a/cms/locale/it/LC_MESSAGES/django.mo b/cms/locale/it/LC_MESSAGES/django.mo index 4eeec23c286f972c3ff2c0607a62d2e7dc4a27f9..d070f762c913cca62077cb5f7d2732284f005eb6 100644 GIT binary patch literal 24822 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 XE;0S2I`Ng!)?a)L=n;IK;d1{AL$w=o literal 367 zcmYL^K~KUk7=|%=+R?Lz9=zd)9mE7G5-KaW*luJD61`QZvj$tz6{0`HzvpkUON_k9 zlOFnf?fdKZ05){qz5++VbABG^2UJ=yAcmQz>-57Oyq=(x$#yE&j zsDo}E|MQ+0EkNXuQ1p-!k+z@nj74159!e)oy_McNf~HH(QAPzrLndg-$23U_wpfgU zYO1}g6qHJS5X5OVTQ-%4oR7D4YrD~=BB=kOebo8|`J-Z~ diff --git a/cms/locale/it/LC_MESSAGES/django.po b/cms/locale/it/LC_MESSAGES/django.po index 752e13e9493..c268b63de76 100644 --- a/cms/locale/it/LC_MESSAGES/django.po +++ b/cms/locale/it/LC_MESSAGES/django.po @@ -5,487 +5,365 @@ # msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:46+0100\n" -"PO-Revision-Date: 2010-01-05 01:51+0100\n" -"Last-Translator: Flavio Curella \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:38+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \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=2; plural=(n != 1)\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" -#: plugin_base.py:99 +#: plugin_base.py:100 msgid "Advanced options" msgstr "Opzioni avanzate" -#: admin/forms.py:25 +#: admin/forms.py:52 msgid "Title" msgstr "Titolo" -#: admin/forms.py:26 +#: admin/forms.py:53 msgid "The default title" msgstr "Titolo predefinito" -#: admin/forms.py:27 +#: admin/forms.py:54 msgid "Slug" msgstr "Slug" -#: admin/forms.py:28 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "La parte del titolo che viene utilizzato nell' URL" -#: admin/forms.py:29 +#: admin/forms.py:56 msgid "Language" msgstr "Lingua" -#: admin/forms.py:30 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "La lingua corrente dei campi contenuti." -#: admin/forms.py:73 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Un'altra pagina con questo slug esiste già" -#: admin/forms.py:93 +#: admin/forms.py:128 msgid "Menu Title" -msgstr "Menu titolo" +msgstr "Menu Titolo" -#: admin/forms.py:94 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Sovrascrivere ciò che viene visualizzato nel menu" -#: admin/forms.py:95 +#: admin/forms.py:130 msgid "Page Title" msgstr "Titolo pagina" -#: admin/forms.py:96 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "Sovrascrive quello che viene visualizzata nella parte superiore del browser o in segnalibri" -#: admin/forms.py:97 +#: admin/forms.py:132 msgid "Application" msgstr "Applicazione" -#: admin/forms.py:99 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Aggancia applicazione a questa pagina." -#: admin/forms.py:100 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Sovrascrivere URL" -#: admin/forms.py:101 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "Mantenere questo campo vuoto se il percorso standard dovrebbe essere usato." -#: admin/forms.py:107 +#: admin/forms.py:142 msgid "Redirect" msgstr "Redirect" -#: admin/forms.py:108 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Reindirizza a questo URL." -#: admin/forms.py:110 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." -msgstr "Una descrizione della pagina talvolta usato dai motori di ricerca." +msgstr "Una descrizione della pagina talvolta usata dai motori di ricerca." -#: admin/forms.py:112 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." -msgstr "Una lista di parole chiave separate da virgola talvolta usato dai motori di ricerca." +msgstr "Una lista di parole chiave separate da virgola talvolta usata dai motori di ricerca." -#: admin/forms.py:120 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Una pagina con questo id URL inverso esiste già." -#: admin/forms.py:127 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "URL non valido, utilizza il formato /mia/url." -#: admin/forms.py:138 admin/forms.py:139 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "utente" -#: admin/forms.py:171 +#: admin/forms.py:215 msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." -msgstr "Il permesso \"Aggiungi pagina\" richiede anche l'accesso ai figli o discendenti, altrimenti la pagina aggiunta non può essere cambiata dal suo creatore." +msgstr "Il permesso \"Aggiungere pagina\" richiede anche l'accesso ai figli o discendenti, altrimenti la pagina aggiunta non può essere cambiata dal suo creatore." -#: admin/forms.py:174 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "Il permesso \"Aggiungere pagina\" richiede anche il permesso \"Modificare pagina\"." -#: admin/forms.py:201 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Si prega di selezionare un utente o un gruppo." -#: admin/forms.py:208 admin/forms.py:215 admin/forms.py:219 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 -#: templates/admin/cms/page/plugin_change_form.html:69 +#: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Aggiungere" -#: admin/forms.py:209 admin/forms.py:216 admin/forms.py:220 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Cambiare" -#: admin/forms.py:210 admin/forms.py:217 admin/forms.py:221 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Eliminare" -#: admin/forms.py:211 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Recuperare (qualsiasi) pagina" -#: admin/forms.py:274 +#: admin/forms.py:295 msgid "Notify user" msgstr "Notifica l'utente" -#: admin/forms.py:275 +#: admin/forms.py:296 msgid "Send email notification to user about username or password change. Requires user email." -msgstr "Inviare email di notifica per l'utente su un nome utente o modificare la password. Richiede email dell'utente." +msgstr "" +"Inviare email di notifica all'utente per il cambio del nome utente o della \n" +"password. Richiede l'email dell'utente." -#: admin/forms.py:295 +#: admin/forms.py:316 msgid "New password" msgstr "Nuova password" -#: admin/forms.py:297 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Conferma Nuova password" -#: admin/forms.py:316 +#: admin/forms.py:337 msgid "Email notification requires valid email address." -msgstr "E-mail di notifica richiede indirizzo e-mail valido." +msgstr "E-mail di notifica richiede un indirizzo e-mail valido." -#: admin/forms.py:318 +#: admin/forms.py:339 msgid "The permission to add new pages requires the permission to change pages!" msgstr "Il permesso di aggiungere nuove pagine richiede l'autorizzazione a modificare le pagine!" -#: admin/forms.py:320 +#: admin/forms.py:341 msgid "The permission to add new users requires the permission to change users!" msgstr "Il permesso di aggiungere nuovi utenti richiede l'autorizzazione a modificare gli utenti!" -#: admin/forms.py:322 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "Per aggiungere le autorizzazioni è necessario anche poterle modificare!" -#: admin/pageadmin.py:111 admin/pageadmin.py:127 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Nascosto" -#: admin/pageadmin.py:122 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Impostazioni di base" -#: admin/pageadmin.py:125 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "Nota: Questa pagina viene ricaricata se si cambia la selezione. Salvare la pagina prima." -#: admin/pageadmin.py:131 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Impostazioni avanzate" -#: admin/pageadmin.py:140 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Impostazioni SEO" -#: admin/pageadmin.py:463 +#: admin/pageadmin.py:504 msgid "higher" msgstr "superiore" -#: admin/pageadmin.py:629 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Errore del database" -#: admin/pageadmin.py:714 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:72 models/permissionmodels.py:68 -#: models/pluginmodel.py:38 models/titlemodels.py:22 -#: plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "pagina" -#: admin/pageadmin.py:837 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "La pagina è stata approvata con successo." -#: admin/pageadmin.py:891 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "%(name)s oggetto con chiave primaria %(key)r non esiste." -#: admin/pageadmin.py:894 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Esiste solo una traduzione per questa pagina" -#: admin/pageadmin.py:909 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" -msgstr "Titolo e plugins con lingua %(language)s sono stati eliminati" +msgstr "Il titolo e i plugin con lingua %(language)s sono stati eliminati" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Sei sicuro?" -#: admin/pageadmin.py:994 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "Non hai il permesso di pubblicare questa pagina" -#: admin/pageadmin.py:1012 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "Non si dispone dell'autorizzazione per modificare lo status di in_navigation per questa pagina" -#: admin/pageadmin.py:1047 admin/pageadmin.py:1081 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "Non si dispone dell'autorizzazione per modificare questa pagina" -#: admin/pageadmin.py:1051 admin/pageadmin.py:1083 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" -msgstr "Lingua deve essere impostato su una delle lingue supportate!" +msgstr "La lingua deve essere selezionata tra lingue supportate!" -#: admin/pageadmin.py:1063 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "%(plugin_name)s plugin aggiunto a %(placeholder)s " -#: admin/pageadmin.py:1085 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "La lingua scelta deve essere differente dalla lingua della pagina copiata!" -#: admin/pageadmin.py:1131 -#, fuzzy, python-format +#: admin/pageadmin.py:1179 +#, python-format msgid "Copied %(language)s plugins to %(placeholder)s" -msgstr "%(plugin_name)s plugin aggiunto a %(placeholder)s " +msgstr "" -#: admin/pageadmin.py:1204 +#: admin/pageadmin.py:1260 #, python-format msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "%(plugin_name)s plugin modificato alla posizione %(position)s in %(placeholder)s " -#: admin/pageadmin.py:1259 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "I plugins sono stati spostati" -#: admin/pageadmin.py:1281 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "%(plugin_name)s plugin alla posizione %(position)s in %(placeholder)s è stato eliminato." -#: admin/permissionadmin.py:112 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Pagina autorizzazioni" -#: admin/permissionadmin.py:113 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Autorizzazioni Utenti e Gruppi" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Pagina di gestione delle autorizzazioni" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Dettagli utente" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Gruppi" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:855 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Password" -#: admin/widgets.py:58 -msgid "Add Another" -msgstr "Aggiungi un altro" - -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Copia delle autorizzazioni" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Copia moderazione" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Ereditano il modello dell'antenato più vicino" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Panoramica" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Indici e tabelle:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Indice completo dei contenuti" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "elenca tutte le sezioni e sottosezioni" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Pagina di ricerca" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "Cerca nella documentazione" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Modulo Indice Globale" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "rapido accesso a tutti i moduli" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Indice Generale" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "tutte le funzioni, le classi, i termini" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Indice" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Indice completo su una pagina" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Indicizza pagine per lettera" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "può essere enorme" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Navigazione" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Indice Dei Contenuti" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Argomento precedente" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "Capitolo precedente" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Argomento successivo" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "Capitolo successivo" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Questa pagina" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Mostra sorgenti" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Ricerca rapida" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Vai" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "Inserisci i termini di ricerca o un modulo, classe o il nome della funzione." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "A proposito di questi documenti" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Ricerca" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Copyright" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Deprecato" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "ricerca" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Risultati della ricerca" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "La tua ricerca non ha dato alcun risultato." +#: forms/fields.py:19 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:20 +msgid "Select a valid page" +msgstr "" + +#: forms/widgets.py:173 +msgid "Add Another" +msgstr "Aggiungi un altro" #: migrations/0001_initial.py:12 migrations/0001_initial.py:24 #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:42 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "lingua" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:40 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "posizione" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:44 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "data di creazione" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/pluginmodel.py:41 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "slot" -#: migrations/0001_initial.py:18 models/pluginmodel.py:43 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "nome_plugin" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 -#: plugins/twitter/models.py:6 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 +#: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" msgstr "titolo" @@ -494,7 +372,7 @@ msgstr "titolo" msgid "path" msgstr "percorso" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "slug" @@ -502,15 +380,15 @@ msgstr "slug" msgid "everybody" msgstr "tutti" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "può modificare" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "gruppo" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "può pubblicare" @@ -527,12 +405,12 @@ msgstr "può cambiare la soft-root" msgid "status" msgstr "stato" -#: migrations/0001_initial.py:53 models/pagemodel.py:51 +#: migrations/0001_initial.py:53 msgid "navigation extenders" msgstr "estensori di navigazione" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "può sovrascrivere URL" @@ -548,299 +426,321 @@ msgstr "autore" msgid "reverse url id" msgstr "id url inverso" -#: migrations/0001_initial.py:59 models/pagemodel.py:64 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "è richiesto il login" -#: migrations/0001_initial.py:60 models/pagemodel.py:49 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "soft root" -#: migrations/0001_initial.py:63 models/pagemodel.py:47 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "data fine pubblicazione" -#: migrations/0001_initial.py:64 models/pagemodel.py:54 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "template" -#: migrations/0001_initial.py:66 models/pagemodel.py:46 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "data di pubblicazione" -#: migrations/0001_initial.py:67 models/pagemodel.py:48 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "in navigazione" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "applicazione" -#: migrations/0006_apphook.py:65 models/pagemodel.py:50 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "redirect" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "parole chiave" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "descrizione" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "Pagina corrente" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Pagina figlia (immediato)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Pagina e figli (immediato)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Pagina discendente" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Pagina e discendenti" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Pagina" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Utente" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Modera pagina" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "Modera figli" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "Modera discendenti" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "Moderatore" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "creato" -#: models/moderatormodels.py:98 models/pagemodel.py:33 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "cambiato" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "rich. eliminazione" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "rich. spostamento" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "rich. pubblicazione" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "rich. sospensione" -#: models/moderatormodels.py:103 models/pagemodel.py:36 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "approvato" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "stato del moderatore" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "stati del moderatore" -#: models/pagemodel.py:34 +#: models/pagemodel.py:43 msgid "req. app." msgstr "rich. app." -#: models/pagemodel.py:35 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:885 -#: templates/cms/toolbar/toolbar.html:919 utils/moderator.py:91 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "eliminare" -#: models/pagemodel.py:37 +#: models/pagemodel.py:46 msgid "app. par." msgstr "app. par." -#: models/pagemodel.py:42 +#: models/pagemodel.py:50 +msgid "for logged in users only" +msgstr "" + +#: models/pagemodel.py:51 +msgid "for anonymous users only" +msgstr "" + +#: models/pagemodel.py:59 msgid "created by" msgstr "creato da" -#: models/pagemodel.py:43 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "cambiato da" -#: models/pagemodel.py:46 +#: models/pagemodel.py:64 msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "Quando la pagina dovrebbe andare online. Lo stato deve essere \\ \"Pubblicato \" per la pagina per essere online." -#: models/pagemodel.py:47 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "Quando scade la pagina. Lasciare vuoto per non farla mai scadere." -#: models/pagemodel.py:49 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Tutti gli antenati non verranno visualizzati nella barra di navigazione" -#: models/pagemodel.py:50 +#: models/pagemodel.py:68 msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "Un identificativo univoco, che viene utilizzato con il templatetag page_url per riferirsi a questa pagina" -#: models/pagemodel.py:52 +#: models/pagemodel.py:69 +msgid "attached menu" +msgstr "" + +#: models/pagemodel.py:70 msgid "is published" msgstr "è pubblicato" -#: models/pagemodel.py:54 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "Il modello utilizzato per il rendering del contenuto." -#: models/pagemodel.py:55 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "Il sito a cui la pagina è accessibile." -#: models/pagemodel.py:55 +#: models/pagemodel.py:73 msgid "site" msgstr "sito" -#: models/pagemodel.py:57 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "stato del moderatore" -#: models/pagemodel.py:65 -msgid "menu login required" -msgstr "login menu richiesto" +#: models/pagemodel.py:83 +msgid "menu visibility" +msgstr "" -#: models/pagemodel.py:65 -msgid "only show this page in the menu if the user is logged in" -msgstr "mostra solo questa pagina nel menù, se l'utente è connesso" +#: models/pagemodel.py:83 +msgid "limit when this page is visible in the menu" +msgstr "" -#: models/pagemodel.py:73 +#: models/pagemodel.py:100 msgid "pages" msgstr "pagine" -#: models/pagemodel.py:179 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "La pagina è stata copiata." -#: models/pagemodel.py:502 +#: models/pagemodel.py:712 msgid "default" msgstr "predefinito" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "può aggiungere" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "può eliminare" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "può modificare le impostazioni avanzate" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "può cambiare i permessi" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "il livello di pagina" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "può muovere" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "può moderare" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "può recuperare le pagine" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "può recuperare qualsiasi pagina cancellata" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "Se nessuno selezionato, l'utente ha concesse le autorizzazioni per tutti i siti." -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "siti" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Permesso globale per la pagina" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Permessi globali per le pagine" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "Grant su" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Permesso della pagina" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Utente (pagina)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Utenti (pagina)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Gruppo di Utenti (pagina)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Gruppi di Utenti (pagina)" -#: models/titlemodels.py:13 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 +msgid "width" +msgstr "ampiezza" + +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "sovrascrivere il titolo nel menu" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "Percorso" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "sovrascrivere il titolo (tag title)" @@ -848,34 +748,29 @@ msgstr "sovrascrivere il titolo (tag title)" msgid "File" msgstr "File" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "file" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "l'uso del file swf" -#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:16 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 #: plugins/video/models.py:14 -msgid "width" -msgstr "ampiezza" - -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 msgid "height" msgstr "altezza" -#: plugins/flash/templates/cms/plugins/flash.html:3 +#: plugins/flash/templates/cms/plugins/flash.html:2 msgid "Missing flash plugin." msgstr "Il plugin Flash non è installato." -#: plugins/googlemap/cms_plugins.py:9 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Google Map" @@ -931,15 +826,15 @@ msgstr "route planer" msgid "Map" msgstr "Mappa" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:73 -msgid "Your address" -msgstr "Il tuo indirizzo" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:76 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Calcolare il percorso" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "Eredita Plugins dalla Pagina" @@ -955,32 +850,32 @@ msgstr "Scegli una pagina da cui includere i plugin in questo segnaposto, vuota msgid "Optional: the language of the plugins you want" msgstr "Opzionale: il linguaggio dei plugins che si desidera" -#: plugins/link/cms_plugins.py:11 +#: plugins/link/cms_plugins.py:12 msgid "Link" msgstr "Link" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "nome" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "link" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "Un link ad una pagina ha priorità rispetto ad un link testuale." -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "mailto" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "An indirizzo email ha priorità rispetto ad un link testuale." @@ -988,40 +883,40 @@ msgstr "An indirizzo email ha priorità rispetto ad un link testuale." msgid "Picture" msgstr "Immagine" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "sinistra" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "destra" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "immagine" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "se presente, l’immagine sarà cliccabile" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "testo alternativo" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "descrizione testuale dell’immagine" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "descrizione estesa" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "descrizione aggiuntiva dell’immagine" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "lato" @@ -1047,15 +942,15 @@ msgstr "Inserire un modello (i.e. \"snippets/plugin_xy.html\") che sarà interpr msgid "Snippets" msgstr "Frammento" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "Teaser" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "Se presente, l’immagine sarà cliccabile" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "Se presente, l’immagine sarà cliccabile." @@ -1067,7 +962,7 @@ msgstr "approfondisci" msgid "Text" msgstr "Testo" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "corpo" @@ -1117,19 +1012,23 @@ msgstr "Plugin disponibili" msgid "Insert plugin" msgstr "Inserisci plugin" -#: plugins/twitter/cms_plugins.py:8 +#: plugins/twitter/cms_plugins.py:10 msgid "Twitter" msgstr "Twitter" +#: plugins/twitter/cms_plugins.py:31 +msgid "Twitter Search" +msgstr "" + #: plugins/twitter/models.py:7 msgid "twitter user" msgstr "utente twitter" -#: plugins/twitter/models.py:8 +#: plugins/twitter/models.py:8 plugins/twitter/models.py:17 msgid "count" msgstr "" -#: plugins/twitter/models.py:8 +#: plugins/twitter/models.py:8 plugins/twitter/models.py:17 msgid "Number of entries to display" msgstr "Numero di elementi da mostrare" @@ -1141,6 +1040,14 @@ msgstr "" msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "Se dato, il suggerimento viene visualizzato come collegamento verso il tuo profilo Twitter." +#: plugins/twitter/models.py:16 +msgid "query" +msgstr "" + +#: plugins/twitter/models.py:16 +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" +msgstr "" + #: plugins/video/cms_plugins.py:10 msgid "Video" msgstr "Video" @@ -1149,78 +1056,78 @@ msgstr "Video" msgid "Color Settings" msgstr "Impostazioni colore" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "file video" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "Usa file video codificato .flv o h264" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "indirizzo video" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "indirizzo video vimeo o youtube. Esempio: http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "anteprima immagine" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "riproduci automaticamente" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "nascondi automaticamente" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "schermo intero" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "colore di sfondo" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "Esadecimale, ad esempio: ff00cc" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "colore testo" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" -msgstr "" +msgstr "colore barra di avanzamento" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" -msgstr "" +msgstr "colore sfondo barra di avanzamento" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" @@ -1230,7 +1137,7 @@ msgstr "Plugin flash mancante. Scaricare %(page)s may require approvement by you." msgstr "" #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Ultime modifiche" @@ -1266,11 +1175,18 @@ msgstr "Ultime modifiche" msgid "Log in to administration here." msgstr "Accedi alla pagina d'amministrazione da qui." +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Nome utente:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Password:" @@ -1282,7 +1198,7 @@ msgstr "Modifica una pagina" #: templates/admin/cms/page/change_form.html:62 #: templates/admin/cms/page/change_list.html:8 -#: templates/admin/cms/page/plugin_change_form.html:66 +#: templates/admin/cms/page/plugin_change_form.html:67 #: templates/admin/cms/page/recover_form.html:14 #: templates/admin/cms/page/revision_form.html:6 msgid "Home" @@ -1333,7 +1249,7 @@ msgid "View on site" msgstr "Vedi sul sito" #: templates/admin/cms/page/change_form.html:128 -#: templates/admin/cms/page/plugin_change_form.html:83 +#: templates/admin/cms/page/plugin_change_form.html:84 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Per favore correggi l'errore sottostante." @@ -1366,41 +1282,41 @@ msgstr "Richiedi approvazione" msgid "List of pages" msgstr "Lista pagina" -#: templates/admin/cms/page/change_list.html:57 +#: templates/admin/cms/page/change_list.html:56 msgid "Successfully moved" msgstr "Spostato con successo" -#: templates/admin/cms/page/change_list.html:62 +#: templates/admin/cms/page/change_list.html:61 msgid "An error occured. Please reload the page" msgstr "Si è verificato un errore. Si prega di ricaricare la pagina" -#: templates/admin/cms/page/change_list.html:83 +#: templates/admin/cms/page/change_list.html:82 #, python-format msgid "Recover deleted %(name)s" msgstr "Recupera %(name)s eliminato" -#: templates/admin/cms/page/change_list.html:86 +#: templates/admin/cms/page/change_list.html:85 #, python-format msgid "Add %(name)s" msgstr "Aggiungi %(name)s" -#: templates/admin/cms/page/change_list.html:98 +#: templates/admin/cms/page/change_list.html:97 msgid "Pages on:" msgstr "" -#: templates/admin/cms/page/change_list.html:115 +#: templates/admin/cms/page/change_list.html:114 msgid "Filter:" msgstr "Filtro:" -#: templates/admin/cms/page/change_list.html:115 +#: templates/admin/cms/page/change_list.html:114 msgid "on" msgstr "on" -#: templates/admin/cms/page/change_list.html:115 +#: templates/admin/cms/page/change_list.html:114 msgid "off" msgstr "off" -#: templates/admin/cms/page/change_list.html:117 +#: templates/admin/cms/page/change_list.html:116 msgid "Filter" msgstr "Filtro" @@ -1438,8 +1354,8 @@ msgid "edit this page" msgstr "modifica questa pagina" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:891 -#: templates/cms/toolbar/toolbar.html:912 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "modifica" @@ -1495,7 +1411,7 @@ msgid "add" msgstr "aggiungi" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:864 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "Approva direttamente" @@ -1510,6 +1426,7 @@ msgid "Unpublish" msgstr "Sospendi la pubblicazione" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Pubblica" @@ -1608,189 +1525,255 @@ msgstr "Copia opzioni" msgid "Choose copy options" msgstr "Seleziona opzioni di copia" -#: templates/admin/cms/page/widgets/installed_plugins_inc.html:10 +#: templates/admin/cms/page/widgets/installed_plugins_inc.html:7 +msgid "Generic" +msgstr "" + +#: templates/admin/cms/page/widgets/installed_plugins_inc.html:15 #: templates/cms/toolbar/add_plugins.html:6 msgid "Add Plugin" msgstr "Aggiungi plugin" -#: templates/admin/cms/page/widgets/installed_plugins_inc.html:14 +#: templates/admin/cms/page/widgets/installed_plugins_inc.html:18 msgid "From Language" msgstr "Dalla lingua" -#: templates/admin/cms/page/widgets/installed_plugins_inc.html:21 +#: templates/admin/cms/page/widgets/installed_plugins_inc.html:25 msgid "Copy Plugins" msgstr "Copia Plugins" -#: templates/admin/cms/page/widgets/plugin_editor.html:10 +#: templates/admin/cms/page/widgets/plugin_editor.html:12 msgid "You must save the page first to add plugins." msgstr "Devi salvare la pagina prima di aggiungere plugin" -#: templates/admin/cms/page/widgets/plugin_editor.html:13 +#: templates/admin/cms/page/widgets/plugin_editor.html:15 msgid "No Plugin selected. Selected one on the left side" msgstr "Nessun plugin selezionato. Seleziona un plugin sulla sinistra" -#: templates/admin/cms/page/widgets/plugin_editor.html:15 +#: templates/admin/cms/page/widgets/plugin_editor.html:17 msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "" -#: templates/cms/toolbar/toolbar.html:760 +#: templates/cms/toolbar/add_plugins.html:10 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "Muovi verso %(name)s" -#: templates/cms/toolbar/toolbar.html:806 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "Sei sicuro di voler eliminare questo plugin?" -#: templates/cms/toolbar/toolbar.html:835 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "Modalità di modifca" -#: templates/cms/toolbar/toolbar.html:842 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "Stato" -#: templates/cms/toolbar/toolbar.html:853 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "Nome utente" -#: templates/cms/toolbar/toolbar.html:857 -#: templates/cms/toolbar/toolbar.html:858 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "login" -#: templates/cms/toolbar/toolbar.html:869 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "Modello" -#: templates/cms/toolbar/toolbar.html:880 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "muovi" -#: templates/cms/toolbar/toolbar.html:880 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "Muovi/aggiungi pagina" -#: templates/cms/toolbar/toolbar.html:882 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "aggiungi figlio" -#: templates/cms/toolbar/toolbar.html:882 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "Aggiungi pagina figlio" -#: templates/cms/toolbar/toolbar.html:883 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:883 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:885 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "Elimina pagina" -#: templates/cms/toolbar/toolbar.html:891 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "Amministrazione sito" -#: templates/cms/toolbar/toolbar.html:893 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "Impostazioni pagina" -#: templates/cms/toolbar/toolbar.html:895 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "cronologia" -#: templates/cms/toolbar/toolbar.html:895 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "Visualizza cronologia" -#: templates/cms/toolbar/toolbar.html:901 -msgid "Lock" -msgstr "Blocca" - -#: templates/cms/toolbar/toolbar.html:901 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "Logout" -#: templates/cms/toolbar/toolbar.html:903 +#: templates/cms/toolbar/toolbar.html:219 +msgid "Lock" +msgstr "Blocca" + +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "Chiudi" -#: templates/cms/toolbar/toolbar.html:914 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "su" -#: templates/cms/toolbar/toolbar.html:915 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "giù" -#: templates/cms/toolbar/toolbar.html:917 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "Impostazioni" -#: templates/cms/toolbar/toolbar.html:919 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "Elimina plugin" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "" -#: templatetags/cms_tags.py:401 templatetags/cms_tags.py:674 +#: templatetags/cms_tags.py:78 #, python-format -msgid "Reverse ID not found on %(domain)s" -msgstr "ID inverso non trovato su %(domain)s" +msgid "Page not found on %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:402 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A page_id_url template tag didn't found a page with the reverse_id %(reverse_id)s\n" -"The url of the page was: http://%(host)s%(path)s" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"Un tag page_id_url non ha trovato la pagina con il reverse_id %(reverse_id)s\n" -"L'indirizzo della pagina era: http://%(host)s%(path)s" -#: templatetags/cms_tags.py:675 -#, python-format -msgid "" -"A show_placeholder_by_id template tag didn't found a page with the reverse_id %(reverse_id)s\n" -"The url of the page was: http://%(host)s%(path)s" +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" msgstr "" -"Un tag show_placeholder_by_id non ha trovato la pagina con il reverse_id %(reverse_id)s\n" -"L'indirizzo della pagina era: http://%(host)s%(path)s" -#: tests/util/menu_extender.py:7 -msgid "Sublevel" -msgstr "Sottolivello" +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" -#: tests/util/menu_extender.py:8 -msgid "Sublevel3" -msgstr "Sottolivello3" +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" -#: tests/util/menu_extender.py:11 -msgid "Sublevel 2" -msgstr "Sottolivello 2" +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" -#: utils/moderator.py:84 +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "genitore prima" -#: utils/moderator.py:91 +#: utils/moderator.py:90 msgid "approve" msgstr "approva" -#: utils/moderator.py:243 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "CMS - La pagina %s richiede l'approvazione" @@ -1803,5 +1786,8 @@ msgstr "CMS - il tuo account utente è stato creato" msgid "CMS - your user account was changed." msgstr "CMS - il tuo account utente è stato modificato" -#~ msgid "volume" -#~ msgstr "volume" +#~ msgid "fgcolor" +#~ msgstr "" + +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/it/LC_MESSAGES/djangojs.mo b/cms/locale/it/LC_MESSAGES/djangojs.mo index d875548e81c7fc335e0619364b10d8cbd07de3e1..a469446a70ab81fca289d2c184e04f85ad48ad4f 100644 GIT binary patch literal 906 zcmbV~&2AGh5XToNAnlPehv9(K3Y^`fh*aC8X$WalDS=SZoGQFs<+`HBRGN*(DZkL~f_W6yklu=OQi+hQIvJ?1X+j%lo7M$85ChWW}oW$xb! zg3rt|X2SDtw}aq}$9s2v?Z4-dw*p@NX^lQF1;NlFT$vhN{oA>e+JiTc7E-^w)4UT`jy(CoG2Q5q7xw&G73O#34kb_FqIq5+#w`PT@ z7sr`6L+i-s1hN%pZ$w(U@B}Mky_mV2GV!9$omiLz3hyhIL{ZL9tIu1hDWi1am<0@1lQDL@PAx;H`(nziP^%b zbY3j1)J{onYyxIQ1icau8>f{P2OOgFn!i{qP?iZyhp#55!^s$W)9In2ma+LkI6Iz= zH!p6t;&5cNN6p$-6({NOqmL>jN$)q+v<`j$ba5p1HgQc3OSEFFQL#+NsN_32iwmwb_x+!)`T2hg2t9i6e=U?zI z_!Yzl9=^l-@O|w4Ot#IL`47%|DfQFZMY?wt}Vgp>sVa zl~~-1TS=Bu*I8L4+OD0CphDZN;Cj;rXdEX=RW`8j*2KRoXjYl17pBugq?AA zGNp`CEJ54%ZutJ!JxZZLm5>T@S8|n2pUOfexd{;(Z~E|RqVt^GJmfhkgp%Y!Dv{+^ aB2Bfd>q|`gc4Jx#jWuul^I), YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" "Language-Team: LANGUAGE \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=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" -msgstr "" -"Sei sicuro di voler modificare il campo %(field_name)s senza salvare prima " -"la pagina?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" +msgstr "Sei sicuro di voler modificare il campo %(field_name)s senza salvare prima la pagina?" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -"Non tutti i plugin sono stati salvati. Sei sicuro di voler salvare la " -"pagina? Tutti i contenuti dei plugin non salvati andranno perduti." -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" -msgstr "" -"Sei sicuro di voler modificare le schede senza salvare prima la pagina?" +msgstr "Sei sicuro di voler modificare le schede senza salvare prima la pagina?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Sei sicuro di voler eliminare questo plugin?" diff --git a/cms/locale/ja/LC_MESSAGES/django.mo b/cms/locale/ja/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..4c6ddc01d9bd9cf585cc27269e0c7c27d621ae0d GIT binary patch literal 10950 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 literal 0 HcmV?d00001 diff --git a/cms/locale/ja/LC_MESSAGES/django.po b/cms/locale/ja/LC_MESSAGES/django.po index 387da8ee12c..6107ea3aa5b 100644 --- a/cms/locale/ja/LC_MESSAGES/django.po +++ b/cms/locale/ja/LC_MESSAGES/django.po @@ -2,532 +2,365 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:54+0200\n" -"PO-Revision-Date: 2010-05-17 13:50+0900\n" -"Last-Translator: zundoya \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "詳細設定" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "タイトル" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "デフォルトタイトル" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "スラグ" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "URLに使うタイトルの一部" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "言語" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "現在のコンテンツの言語" -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "このスラグを使っているページが存在します。" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "メニュータイトル" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "メニューに表示されているテキストを上書きします。" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "ページタイトル" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" -msgstr "" -"ブラウザのタイトルやブックマークに表示されているタイトルを上書きします。" +msgstr "ブラウザのタイトルやブックマークに表示されているタイトルを上書きします。" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "アプリケーション" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "このページとアプリケーションを関連付ける。" -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "URLを上書き" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "標準のパスを使う場合は、このフィールドを空のままにしてください。" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "リダイレクト" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "このURLにリダイレクトします。" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "検索エンジンが使うメモ" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "検索エンジンが使う、カンマ区切りのキーワード" -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "この逆URLを持っているページが存在します。" -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "無効なURLです。 /my/url のように入力してください。" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "ユーザ" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." msgstr "ページの権限を設定するには、子ページのアクセス権限も必要です。" -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "ページ追加権限は編集権限も必要です。" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "ユーザかグループを選択してください。" -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "追加" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "変更" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "変更" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "ページを復元" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "ユーザに通知" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"パスワードや、ユーザ名が変更された時に、ユーザに通知メールを送信する。ユーザ" -"メールが必要です。" +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "パスワードや、ユーザ名が変更された時に、ユーザに通知メールを送信する。ユーザメールが必要です。" -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "新しいパスワード" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "パスワード入力確認" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "メール通知はメールアドレスが必要です。" -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "新しいページの権限はページ変更の権限が必要です。" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "新しいユーザの権限はページ変更の権限が必要です。" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "非表示" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "基本設定" -#: admin/pageadmin.py:132 -#, fuzzy +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "注意: 変更済みの時は保存してください。このページを再読み込みします。" +msgstr "" -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "詳細設定" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "SEO設定" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "データベースエラー" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "ページ" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "ページを承認しました。" -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." -msgstr "" -"プライマリキー %(key)r を持って「%(name)s」というオブジェクトが存在しません。" +msgstr "プライマリキー %(key)r を持って「%(name)s」というオブジェクトが存在しません。" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "このページは一つの翻訳しかありません。" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "続けてもよろしいですか?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "このページを発表する権限がありません。" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "メニューステータスを変更する権限がありません。" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "このページを変更する権限がありません。" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1213 -#, fuzzy, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +#: admin/pageadmin.py:1260 +#, python-format +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "" -"%(placeholder)s の中の %(position)s 番の %(plugin_name)s プラグインを削除しま" -"した。" -#: admin/pageadmin.py:1271 -#, fuzzy +#: admin/pageadmin.py:1318 msgid "Plugins where moved" -msgstr "プラグインを移動しました。" +msgstr "" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 -#, fuzzy, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 +#, python-format +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "" -"%(placeholder)s の中の %(position)s 番の %(plugin_name)s プラグインを削除しま" -"した。" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "ページ権限" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "ユーザとグループ権限" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "ページ権限管理" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "ユーザ詳細" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "グループ" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "パスワード" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "コピー権限" -#: admin/dialog/forms.py:11 -#, fuzzy +#: admin/dialog/forms.py:16 msgid "Copy moderation" -msgstr "コピー権限" - -#: conf/patch.py:26 -msgid "Inherit the template of the nearest ancestor" msgstr "" -#: docs/templates/defindex.html:2 -#, fuzzy -msgid "Overview" -msgstr "概要" - -#: docs/templates/defindex.html:11 -#, fuzzy -msgid "Indices and tables:" -msgstr "索引と表一覧:" - -#: docs/templates/defindex.html:14 -#, fuzzy -msgid "Complete Table of Contents" -msgstr "総合目次" - -#: docs/templates/defindex.html:15 -#, fuzzy -msgid "lists all sections and subsections" -msgstr "章/節一覧" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "検索ページ" - -#: docs/templates/defindex.html:17 -#, fuzzy -msgid "search this documentation" -msgstr "ドキュメントを検索" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -#, fuzzy -msgid "Global Module Index" -msgstr "モジュール総索引" - -#: docs/templates/defindex.html:20 -#, fuzzy -msgid "quick access to all modules" -msgstr "全モジュール早見表" - -#: docs/templates/defindex.html:21 -#, fuzzy -msgid "General Index" -msgstr "総合索引" - -#: docs/templates/defindex.html:22 -#, fuzzy -msgid "all functions, classes, terms" -msgstr "関数、クラスおよび用語総覧" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -#, fuzzy -msgid "Index" -msgstr "目次" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -#, fuzzy -msgid "Full index on one page" -msgstr "総索引" - -#: docs/templates/genindex-split.html:7 -#, fuzzy -msgid "Index pages by letter" -msgstr "頭文字別索引" - -#: docs/templates/genindex-split.html:15 -#, fuzzy -msgid "can be huge" -msgstr "大きい場合があるので注意" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "ナビゲーション" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "目次" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "前のトピック" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "前章" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "次のトピック" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "次章" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "このページ" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "ソースを表示" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "クイックサーチ" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "移動" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." +#: conf/patch.py:27 +msgid "Inherit the template of the nearest ancestor" msgstr "" -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "このドキュメントについて" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "検索" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "著作権" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "廃止予定" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "検索" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "検索結果" - -#: docs/templates/search.html:27 -#, fuzzy -msgid "Your search did not match any results." -msgstr "検索条件に一致する項目がありませんでした。" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "このページを選択" +msgstr "" -#: forms/widgets.py:172 -#, fuzzy +#: forms/widgets.py:173 msgid "Add Another" -msgstr "追加" +msgstr "" #: migrations/0001_initial.py:12 migrations/0001_initial.py:24 #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "言語" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 -#, fuzzy +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" -msgstr "カーソル位置" +msgstr "位置" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "作成日" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" -msgstr "" +msgstr "スロット" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "プラグイン名" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -537,7 +370,7 @@ msgstr "タイトル" msgid "path" msgstr "パス" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "スラグ" @@ -545,15 +378,15 @@ msgstr "スラグ" msgid "everybody" msgstr "全員" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "編集可能" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "グループ" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "発表可能" @@ -562,9 +395,8 @@ msgid "type" msgstr "タイプ" #: migrations/0001_initial.py:44 -#, fuzzy msgid "can change soft-root" -msgstr "詳細設定変更可能" +msgstr "" #: migrations/0001_initial.py:50 migrations/0006_apphook.py:34 #: migrations/0006_apphook.py:62 @@ -572,368 +404,341 @@ msgid "status" msgstr "ステータス" #: migrations/0001_initial.py:53 -#, fuzzy msgid "navigation extenders" -msgstr "ナビゲーション" +msgstr "" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 -#, fuzzy +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" -msgstr "既存のファイルを上書きする" +msgstr "" #: migrations/0001_initial.py:55 migrations/0006_apphook.py:49 -#, fuzzy msgid "url overwrite" -msgstr "URLを上書き" +msgstr "" #: migrations/0001_initial.py:57 msgid "author" msgstr "作者" #: migrations/0001_initial.py:58 migrations/0006_apphook.py:37 -#, fuzzy msgid "reverse url id" -msgstr "オブジェクト ID を表示" +msgstr "" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "ログインが必要" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 -#, fuzzy +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" -msgstr "ルートユーザでない" +msgstr "ソフト ルート" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 -#, fuzzy +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" -msgstr "日時" +msgstr "" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "テンプレート" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "公開日時" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 -#, fuzzy msgid "in navigation" -msgstr "ナビゲーション" +msgstr "" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "アプリケーション" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "ID" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "リダイレクト" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "キーワード" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "説明" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "現在のページ" -#: models/moderatormodels.py:25 -#, fuzzy +#: models/moderatormodels.py:26 msgid "Page children (immediate)" -msgstr "ページが見つかりません" +msgstr "" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "" -#: models/moderatormodels.py:27 -#, fuzzy +#: models/moderatormodels.py:28 msgid "Page descendants" -msgstr "フラットページ" +msgstr "" -#: models/moderatormodels.py:28 -#, fuzzy +#: models/moderatormodels.py:29 msgid "Page and descendants" -msgstr "Castile and Leon" +msgstr "" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "ページ" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "ユーザ" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 -#, fuzzy +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" -msgstr "フラットページ" +msgstr "" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 -#, fuzzy +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" -msgstr "適度なフィルタリングを行う" +msgstr "" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 -#, fuzzy +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" -msgstr "適度なフィルタリングを行う" +msgstr "" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "" -#: models/moderatormodels.py:97 -#, fuzzy +#: models/moderatormodels.py:98 msgid "created" -msgstr "作成済み" +msgstr "作った" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "変更済み" -#: models/moderatormodels.py:99 -#, fuzzy +#: models/moderatormodels.py:100 msgid "delete req." -msgstr "削除の承認" +msgstr "" -#: models/moderatormodels.py:100 -#, fuzzy +#: models/moderatormodels.py:101 msgid "move req." -msgstr "移動可能" +msgstr "" -#: models/moderatormodels.py:101 -#, fuzzy +#: models/moderatormodels.py:102 msgid "publish req." -msgstr "公開可能" +msgstr "" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "承認" -#: models/moderatormodels.py:115 -#, fuzzy +#: models/moderatormodels.py:116 msgid "Page moderator state" -msgstr "状態情報を読み取っています" +msgstr "" -#: models/moderatormodels.py:116 -#, fuzzy +#: models/moderatormodels.py:117 msgid "Page moderator states" -msgstr "ミクロネシア連邦国" +msgstr "" -#: models/pagemodel.py:36 -#, fuzzy +#: models/pagemodel.py:43 msgid "req. app." -msgstr "アプリケーション %r が見つかりません" +msgstr "" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "削除" -#: models/pagemodel.py:39 -#, fuzzy +#: models/pagemodel.py:46 msgid "app. par." -msgstr "アプリケーション %r が見つかりません" +msgstr "" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "作成者" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "変更者" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "公開" -#: models/pagemodel.py:61 -#, fuzzy +#: models/pagemodel.py:72 msgid "The template used to render the content." -msgstr "使用するテンプレート" +msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "サイト" -#: models/pagemodel.py:64 -#, fuzzy +#: models/pagemodel.py:75 msgid "moderator state" -msgstr "Free State" +msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "メニューに表示されているテキストを上書きします。" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "ページ" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "ページをコピーしました。" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "デフォルト" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "追加可能" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "削除可能" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "上級設定変更可能" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "権限変更可能" -#: models/permissionmodels.py:25 -#, fuzzy +#: models/permissionmodels.py:26 msgid "on page level" -msgstr "総索引" +msgstr "" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "移動可能" -#: models/permissionmodels.py:27 -#, fuzzy +#: models/permissionmodels.py:28 msgid "can moderate" -msgstr "追加可能" +msgstr "" -#: models/permissionmodels.py:51 -#, fuzzy +#: models/permissionmodels.py:52 msgid "can recover pages" -msgstr "ページ復活可能" +msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "サイト" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "ページグロバール権限" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "ページグロバール権限" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "権限を付与" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "ページ権限" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "ユーザ (ページ)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "ユーザ (ページ)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "ユーザ グループ(ページ)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "ユーザ グループ(ページ)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "幅" -#: models/titlemodels.py:13 -#, fuzzy +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" -msgstr "メニューに表示されているテキストを上書きします。" +msgstr "" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "ページ" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "" @@ -941,33 +746,31 @@ msgstr "" msgid "File" msgstr "ファイル" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "ファイル" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "swf ファイルを使う" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "高さ" #: plugins/flash/templates/cms/plugins/flash.html:2 -#, fuzzy msgid "Missing flash plugin." -msgstr "選択したプラグインの編集" +msgstr "" -#: plugins/googlemap/cms_plugins.py:11 -#, fuzzy +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" -msgstr "地図タイトル" +msgstr "Googleマップ" #: plugins/googlemap/models.py:9 msgid "map title" @@ -986,71 +789,59 @@ msgid "city" msgstr "市" #: plugins/googlemap/models.py:15 -#, fuzzy msgid "additional content" -msgstr "追加のコンテンツ" +msgstr "" #: plugins/googlemap/models.py:16 -#, fuzzy msgid "zoom level" msgstr "ズームレベル" #: plugins/googlemap/models.py:18 -#, fuzzy msgid "latitude" -msgstr "緯度" +msgstr "" #: plugins/googlemap/models.py:19 -#, fuzzy msgid "Use latitude & longitude to fine tune the map possiton." -msgstr "地図の位置を詳細にするには緯度と経度を使用してください。" +msgstr "" #: plugins/googlemap/models.py:20 -#, fuzzy msgid "longitude" -msgstr "経度" +msgstr "" #: plugins/googlemap/models.py:22 -#, fuzzy msgid "route planer title" -msgstr "路線検索タイトル" +msgstr "" #: plugins/googlemap/models.py:22 -#, fuzzy msgid "Calculate your fastest way to here" -msgstr "最短路線検索" +msgstr "" #: plugins/googlemap/models.py:23 -#, fuzzy msgid "route planer" -msgstr "路線検索" +msgstr "" #: plugins/googlemap/models.py:30 msgid "Map" msgstr "地図" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " msgstr "あなたの住所" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 -#, fuzzy +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" -msgstr "路線検索" +msgstr "" -#: plugins/inherit/cms_plugins.py:17 -#, fuzzy +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" -msgstr "ページはいかなるパーミッションも継承しない。" +msgstr "" #: plugins/inherit/forms.py:19 msgid "Language or Page must be filled out" msgstr "言語かページを入力してください。" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "" #: plugins/inherit/models.py:11 @@ -1061,421 +852,359 @@ msgstr "" msgid "Link" msgstr "リンク" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 -#, fuzzy msgid "name" -msgstr "名前" +msgstr "名" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 -#, fuzzy +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "リンク" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "" -#: plugins/link/models.py:14 -#, fuzzy +#: plugins/link/models.py:13 msgid "mailto" -msgstr "メール送り先" +msgstr "" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "" #: plugins/picture/cms_plugins.py:9 -#, fuzzy msgid "Picture" -msgstr "画像" +msgstr "絵" -#: plugins/picture/models.py:15 -#, fuzzy +#: plugins/picture/models.py:13 msgid "left" msgstr "左" -#: plugins/picture/models.py:16 -#, fuzzy +#: plugins/picture/models.py:14 msgid "right" msgstr "右" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 -#, fuzzy +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" -msgstr "画像" +msgstr "絵" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 -#, fuzzy +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" -msgstr "もし現在の画像がクリック加能なら" +msgstr "" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 -#, fuzzy +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" -msgstr "代替テキスト" +msgstr "" -#: plugins/picture/models.py:23 -#, fuzzy +#: plugins/picture/models.py:21 msgid "textual description of the image" -msgstr "画像の追加説明" +msgstr "" -#: plugins/picture/models.py:24 -#, fuzzy +#: plugins/picture/models.py:22 msgid "long description" -msgstr "詳細な説明" +msgstr "" -#: plugins/picture/models.py:24 -#, fuzzy +#: plugins/picture/models.py:22 msgid "additional description of the image" -msgstr "画像の追加説明" +msgstr "" -#: plugins/picture/models.py:25 -#, fuzzy +#: plugins/picture/models.py:23 msgid "side" -msgstr "側" +msgstr "" #: plugins/snippet/cms_plugins.py:12 plugins/snippet/models.py:24 #: plugins/snippet/models.py:32 -#, fuzzy msgid "Snippet" -msgstr "スニペット" +msgstr "" #: plugins/snippet/cms_plugins.py:30 -#, fuzzy, python-format +#, python-format msgid "Template %(template)s does not exist." -msgstr "%(template)s テンプレートは存在しません。" +msgstr "" #: plugins/snippet/models.py:13 plugins/snippet/migrations/0001_initial.py:18 -#, fuzzy msgid "HTML" -msgstr "HTML" +msgstr "" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "" #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "" -#: plugins/teaser/models.py:16 -#, fuzzy +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" -msgstr "もし現在の画像がクリック加能なら" +msgstr "" -#: plugins/teaser/models.py:21 -#, fuzzy +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." -msgstr "もし現在の画像がクリック加能なら" +msgstr "" #: plugins/teaser/templates/cms/plugins/teaser.html:11 -#, fuzzy msgid "more" -msgstr "さらに" +msgstr "もと" #: plugins/text/cms_plugins.py:15 -#, fuzzy msgid "Text" -msgstr "テキスト" +msgstr "" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 -#, fuzzy +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" -msgstr "ボディ" +msgstr "" #: plugins/text/templates/cms/plugins/widgets/tinymce.html:30 -#, fuzzy msgid "Plugins" -msgstr "プラグイン" +msgstr "" #: plugins/text/templates/cms/plugins/widgets/tinymce.html:38 #: plugins/text/templates/cms/plugins/widgets/tinymce.html:106 #: plugins/text/templates/cms/plugins/widgets/wymeditor.html:69 -#, fuzzy msgid "Please select a plugin type." -msgstr "プラグインを選択してください。" +msgstr "" #: plugins/text/templates/cms/plugins/widgets/tinymce.html:54 #: plugins/text/templates/cms/plugins/widgets/wymeditor.html:114 -#, fuzzy msgid "Edit selected plugin" -msgstr "選択したプラグインの編集" +msgstr "" #: plugins/text/templates/cms/plugins/widgets/tinymce.html:58 #: plugins/text/templates/cms/plugins/widgets/tinymce.html:124 #: plugins/text/templates/cms/plugins/widgets/wymeditor.html:87 -#, fuzzy msgid "Text editor does not support editing objects." -msgstr "テキストエディタはオブジェクトを編集出来ません。" +msgstr "" #: plugins/text/templates/cms/plugins/widgets/tinymce.html:63 #: plugins/text/templates/cms/plugins/widgets/tinymce.html:129 #: plugins/text/templates/cms/plugins/widgets/wymeditor.html:92 -#, fuzzy msgid "No object selected." -msgstr "オブジェクトが選択されていません。" +msgstr "" #: plugins/text/templates/cms/plugins/widgets/tinymce.html:112 #: plugins/text/templates/cms/plugins/widgets/wymeditor.html:75 -#, fuzzy msgid "Text editor does not support inserting objects." -msgstr "テキストエディタはオブジェクトを挿入出来ません。" +msgstr "" #: plugins/text/templates/cms/plugins/widgets/tinymce.html:133 #: plugins/text/templates/cms/plugins/widgets/wymeditor.html:96 -#, fuzzy msgid "Not a plugin object" -msgstr "プラグインオブジェクトではない" +msgstr "" #: plugins/text/templates/cms/plugins/widgets/wymeditor.html:110 #: templates/admin/cms/page/widgets/installed_plugins_inc.html:4 -#, fuzzy msgid "Available Plugins" -msgstr "追加可能なプラグイン" +msgstr "" #: plugins/text/templates/cms/plugins/widgets/wymeditor.html:113 -#, fuzzy msgid "Insert plugin" -msgstr "プラグインを挿入" +msgstr "" #: plugins/twitter/cms_plugins.py:10 -#, fuzzy msgid "Twitter" -msgstr "Twitterユーザー" +msgstr "" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "Twitterユーザー" +msgstr "" #: plugins/twitter/models.py:7 -#, fuzzy msgid "twitter user" -msgstr "Twitterユーザー" +msgstr "" #: plugins/twitter/models.py:8 plugins/twitter/models.py:17 -#, fuzzy msgid "count" -msgstr "個" +msgstr "" #: plugins/twitter/models.py:8 plugins/twitter/models.py:17 -#, fuzzy msgid "Number of entries to display" -msgstr "表示するエントリーの数" +msgstr "" #: plugins/twitter/models.py:9 -#, fuzzy msgid "link hint" -msgstr "リンクのヒント" +msgstr "" #: plugins/twitter/models.py:9 msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "" #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "ユーザ" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 -#, fuzzy msgid "Video" -msgstr "動画" +msgstr "ビデオ" #: plugins/video/cms_plugins.py:42 -#, fuzzy msgid "Color Settings" -msgstr "詳細設定" +msgstr "" -#: plugins/video/models.py:10 -#, fuzzy +#: plugins/video/models.py:9 msgid "movie file" -msgstr "ファイルの場所" +msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 -#, fuzzy +#: plugins/video/models.py:10 msgid "movie url" -msgstr "URL" +msgstr "" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "" -#: plugins/video/models.py:12 -#, fuzzy +#: plugins/video/models.py:11 msgid "preview image file" -msgstr "swf ファイルを使う" +msgstr "" -#: plugins/video/models.py:17 -#, fuzzy +#: plugins/video/models.py:16 msgid "auto play" -msgstr "オートスナップ(_N)" +msgstr "" -#: plugins/video/models.py:18 -#, fuzzy +#: plugins/video/models.py:17 msgid "auto hide" -msgstr "自動的に隠す" +msgstr "" -#: plugins/video/models.py:19 -#, fuzzy +#: plugins/video/models.py:18 msgid "fullscreen" -msgstr "フルスクリーン表示(&F)" +msgstr "" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "" -#: plugins/video/models.py:23 -#, fuzzy +#: plugins/video/models.py:22 msgid "background color" -msgstr "背景色:" +msgstr "" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "" -#: plugins/video/models.py:24 -#, fuzzy +#: plugins/video/models.py:23 msgid "text color" -msgstr "背景色:" +msgstr "分の色" -#: plugins/video/models.py:25 -#, fuzzy +#: plugins/video/models.py:24 msgid "seekbar color" -msgstr "背景色:" +msgstr "" -#: plugins/video/models.py:26 -#, fuzzy +#: plugins/video/models.py:25 msgid "seekbar bg color" -msgstr "フォントの色を選択してください" +msgstr "" -#: plugins/video/models.py:27 -#, fuzzy +#: plugins/video/models.py:26 msgid "loadingbar color" -msgstr "背景色:" +msgstr "" -#: plugins/video/models.py:28 -#, fuzzy +#: plugins/video/models.py:27 msgid "button out color" -msgstr "フォントの色を選択してください" +msgstr "バタンの色" -#: plugins/video/models.py:29 -#, fuzzy +#: plugins/video/models.py:28 msgid "button over color" -msgstr "フォントの色を選択してください" +msgstr "" -#: plugins/video/models.py:30 -#, fuzzy +#: plugins/video/models.py:29 msgid "button highlight color" -msgstr "フォントの色を選択してください" +msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "" #: templates/admin/page_submit_line.html:3 #: templates/admin/cms/page/change_form.html:273 #: templates/admin/cms/page/plugin_change_form.html:112 -#, fuzzy msgid "Save" -msgstr "保存" +msgstr "セーブして" #: templates/admin/page_submit_line.html:7 -#, fuzzy, python-format +#, python-format msgid "Delete %(language)s translation" -msgstr "%(language)s 分を削除" +msgstr "" #: templates/admin/page_submit_line.html:11 -#, fuzzy msgid "Save as new" -msgstr "新規保存" +msgstr "" #: templates/admin/page_submit_line.html:12 -#, fuzzy msgid "Save and add another" -msgstr "保存してもう一つ追加" +msgstr "" #: templates/admin/page_submit_line.html:13 #: templates/admin/cms/page/change_form.html:274 -#, fuzzy msgid "Save and continue editing" -msgstr "保存して編集を続ける" +msgstr "" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "" #: templates/admin/cms/mail/approvement_required.html:8 -#, fuzzy +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" -msgstr "最終変更" +msgstr "" #: templates/admin/cms/mail/base.html:55 #, python-format msgid "Log in to administration here." msgstr "" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 -#, fuzzy +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" -msgstr "ユーザ名:" +msgstr "ユーザ名" #: templates/admin/cms/mail/page_user_change.html:11 -#, fuzzy +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" -msgstr "パスワード:" +msgstr "パスワード" #: templates/admin/cms/page/change_form.html:3 #: templates/admin/cms/page/plugin_forms_history.html:3 #: templates/admin/cms/page/plugin_forms_ok.html:3 -#, fuzzy msgid "Change a page" -msgstr "フラットページ" +msgstr "" #: templates/admin/cms/page/change_form.html:62 #: templates/admin/cms/page/change_list.html:8 #: templates/admin/cms/page/plugin_change_form.html:67 #: templates/admin/cms/page/recover_form.html:14 #: templates/admin/cms/page/revision_form.html:6 -#, fuzzy msgid "Home" msgstr "ホーム" #: templates/admin/cms/page/change_form.html:71 -#, fuzzy msgid "Approve page deletion" -msgstr "ページが見つかりません" +msgstr "" #: templates/admin/cms/page/change_form.html:77 #, python-format @@ -1487,73 +1216,59 @@ msgid "(you can perform actions on this page directly)" msgstr "" #: templates/admin/cms/page/change_form.html:91 -#, fuzzy msgid "Remove delete request" -msgstr "複数のオブジェクトを削除します" +msgstr "" #: templates/admin/cms/page/change_form.html:93 -#, fuzzy msgid "Approve delete" -msgstr "削除の承認" +msgstr "" #: templates/admin/cms/page/change_form.html:93 -#, fuzzy msgid "Approve" -msgstr "承認" +msgstr "" #: templates/admin/cms/page/change_form.html:93 #: templates/admin/cms/page/change_form.html:94 #: templates/admin/cms/page/change_list_tree.html:12 -#, fuzzy msgid "draft" -msgstr "ドラフト" +msgstr "" #: templates/admin/cms/page/change_form.html:94 -#, fuzzy msgid "Preview" -msgstr "プレビュー" +msgstr "" #: templates/admin/cms/page/change_form.html:97 #: templates/admin/cms/page/revision_form.html:10 -#, fuzzy msgid "History" -msgstr "履歴" +msgstr "" #: templates/admin/cms/page/change_form.html:98 -#, fuzzy msgid "View on site" -msgstr "サイト上で表示" +msgstr "" #: templates/admin/cms/page/change_form.html:128 #: templates/admin/cms/page/plugin_change_form.html:84 -#, fuzzy msgid "Please correct the error below." msgid_plural "Please correct the errors below." -msgstr[0] "下記のエラーを修正してください。" -msgstr[1] "" +msgstr[0] "" #: templates/admin/cms/page/change_form.html:148 -#, fuzzy msgid "All permissions" -msgstr "ユーザパーミッション" +msgstr "" #: templates/admin/cms/page/change_form.html:149 #: templates/admin/cms/page/change_form.html:161 #: templates/admin/cms/page/loading.html:2 -#, fuzzy msgid "Loading..." -msgstr "読込中..." +msgstr "" #: templates/admin/cms/page/change_form.html:160 -#, fuzzy msgid "Page states" -msgstr "アメリカ合衆国" +msgstr "" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "" #: templates/admin/cms/page/change_form.html:185 @@ -1561,124 +1276,103 @@ msgid "Request approvemet" msgstr "" #: templates/admin/cms/page/change_list.html:3 -#, fuzzy msgid "List of pages" -msgstr "フラットページ" +msgstr "" #: templates/admin/cms/page/change_list.html:56 -#, fuzzy msgid "Successfully moved" -msgstr "移動成功" +msgstr "" #: templates/admin/cms/page/change_list.html:61 -#, fuzzy msgid "An error occured. Please reload the page" -msgstr "エラーが起こりました。ページを再読込してください。" +msgstr "" #: templates/admin/cms/page/change_list.html:82 -#, fuzzy, python-format +#, python-format msgid "Recover deleted %(name)s" -msgstr "削除された %(name)sを復活" +msgstr "" #: templates/admin/cms/page/change_list.html:85 -#, fuzzy, python-format +#, python-format msgid "Add %(name)s" -msgstr "%(name)s を追加" +msgstr "" #: templates/admin/cms/page/change_list.html:97 -#, fuzzy msgid "Pages on:" -msgstr "権限を付与" +msgstr "" #: templates/admin/cms/page/change_list.html:114 -#, fuzzy msgid "Filter:" -msgstr "フィルター:" +msgstr "" #: templates/admin/cms/page/change_list.html:114 -#, fuzzy msgid "on" -msgstr "ON" +msgstr "" #: templates/admin/cms/page/change_list.html:114 -#, fuzzy msgid "off" -msgstr "OFF" +msgstr "" #: templates/admin/cms/page/change_list.html:116 -#, fuzzy msgid "Filter" -msgstr "フィルタ" +msgstr "" #: templates/admin/cms/page/change_list_tree.html:8 -#, fuzzy msgid "actions" -msgstr "アクション" +msgstr "" #: templates/admin/cms/page/change_list_tree.html:10 -#, fuzzy msgid "moderate" -msgstr "適度なフィルタリングを行う" +msgstr "" #: templates/admin/cms/page/change_list_tree.html:13 -#, fuzzy msgid "published" -msgstr "公開" +msgstr "" #: templates/admin/cms/page/change_list_tree.html:15 -#, fuzzy msgid "start" -msgstr "新しい比較を開始します" +msgstr "" #: templates/admin/cms/page/change_list_tree.html:16 -#, fuzzy msgid "end" -msgstr "カーソルの終端です" +msgstr "" #: templates/admin/cms/page/change_list_tree.html:18 -#, fuzzy msgid "last changes" -msgstr "最終変更" +msgstr "" #: templates/admin/cms/page/menu_item.html:5 -#, fuzzy msgid "select this page" -msgstr "このページを選択" +msgstr "" #: templates/admin/cms/page/menu_item.html:5 #: templates/admin/cms/page/menu_item.html:6 -#, fuzzy msgid "edit this page" -msgstr "このページを編集" +msgstr "" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" -msgstr "編集" +msgstr "" #: templates/admin/cms/page/menu_item.html:16 -#, fuzzy msgid "insert above" -msgstr "上に挿入" +msgstr "" #: templates/admin/cms/page/menu_item.html:17 -#, fuzzy msgid "insert below" -msgstr "下に挿入" +msgstr "" #: templates/admin/cms/page/menu_item.html:19 -#, fuzzy msgid "insert inside" -msgstr "プラグインを挿入" +msgstr "" #: templates/admin/cms/page/menu_item.html:23 msgid "softroot" msgstr "" #: templates/admin/cms/page/menu_item.html:23 -#, fuzzy msgid "home" msgstr "ホーム" @@ -1688,170 +1382,145 @@ msgid "Edit this page in %(language)s " msgstr "" #: templates/admin/cms/page/menu_item.html:33 -#, fuzzy msgid "Cut" -msgstr "%sの切り取り" +msgstr "" #: templates/admin/cms/page/menu_item.html:33 -#, fuzzy msgid "cut" -msgstr "%sの切り取り" +msgstr "" #: templates/admin/cms/page/menu_item.html:34 -#, fuzzy msgid "Copy" -msgstr "コピー" +msgstr "コピーして" #: templates/admin/cms/page/menu_item.html:34 -#, fuzzy msgid "copy" -msgstr "コピー" +msgstr "コピーして" #: templates/admin/cms/page/menu_item.html:37 #: templates/admin/cms/page/menu_item.html:41 -#, fuzzy msgid "Add Child" -msgstr "子ページを追加" +msgstr "" #: templates/admin/cms/page/menu_item.html:37 #: templates/admin/cms/page/menu_item.html:41 -#, fuzzy msgid "add" -msgstr "追加する" +msgstr "" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" -msgstr "コメントを承認する" +msgstr "" #: templates/admin/cms/page/menu_item.html:67 #: templates/admin/cms/page/menu_item.html:79 #: templates/admin/cms/page/menu_item.html:81 -#, fuzzy msgid "view" -msgstr "ビュー" +msgstr "" #: templates/admin/cms/page/menu_item.html:72 msgid "Unpublish" msgstr "" #: templates/admin/cms/page/menu_item.html:73 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" -msgstr "公開可能" +msgstr "" #: templates/admin/cms/page/menu_item.html:79 -#, fuzzy msgid "View on page" -msgstr "サイト上で表示" +msgstr "" #: templates/admin/cms/page/moderation_messages.html:4 -#, fuzzy msgid "Action" -msgstr "操作" +msgstr "" #: templates/admin/cms/page/moderation_messages.html:5 -#, fuzzy msgid "Created" -msgstr "作成済み" +msgstr "" #: templates/admin/cms/page/moderation_messages.html:7 -#, fuzzy msgid "Message" -msgstr "メッセージ" +msgstr "" #: templates/admin/cms/page/permissions.html:7 -#, fuzzy msgid "Group" -msgstr "グループ" +msgstr "" #: templates/admin/cms/page/permissions.html:8 -#, fuzzy msgid "Can edit" -msgstr "編集可能" +msgstr "" #: templates/admin/cms/page/permissions.html:9 -#, fuzzy msgid "Can add" -msgstr "追加可能" +msgstr "" #: templates/admin/cms/page/permissions.html:10 -#, fuzzy msgid "Can delete" -msgstr "削除可能" +msgstr "" #: templates/admin/cms/page/permissions.html:11 -#, fuzzy msgid "Can publish" -msgstr "公開可能" +msgstr "" #: templates/admin/cms/page/permissions.html:12 -#, fuzzy msgid "Can change permissions" -msgstr "パーミッション変更可能" +msgstr "" #: templates/admin/cms/page/permissions.html:13 -#, fuzzy msgid "Can move" -msgstr "移動可能" +msgstr "" #: templates/admin/cms/page/permissions.html:20 #: templates/admin/cms/page/permissions.html:21 -#, fuzzy msgid "(global)" -msgstr "(グローバル)" +msgstr "" #: templates/admin/cms/page/permissions.html:25 -#, fuzzy msgid "(current)" -msgstr "(現在)" +msgstr "" #: templates/admin/cms/page/permissions.html:41 msgid "All" msgstr "すべて" #: templates/admin/cms/page/permissions.html:49 -#, fuzzy msgid "Page doesn't inherit any permissions." -msgstr "ページはいかなるパーミッションも継承しない。" +msgstr "" #: templates/admin/cms/page/plugin_forms_history.html:9 msgid "An old revision of a plugin can not be saved!" msgstr "" #: templates/admin/cms/page/plugin_forms_ok.html:17 -#, fuzzy msgid "Plugin saved successfully." -msgstr "設定が正しく保存されました" +msgstr "" #: templates/admin/cms/page/recover_form.html:17 -#, fuzzy, python-format +#, python-format msgid "Recover deleted %(verbose_name)s" -msgstr "削除された %(verbose_name)s を復活" +msgstr "" #: templates/admin/cms/page/recover_form.html:24 msgid "Press the save button below to recover this version of the object." msgstr "" #: templates/admin/cms/page/revision_form.html:11 -#, fuzzy, python-format +#, python-format msgid "Revert %(verbose_name)s" -msgstr " %(verbose_name)s を削除しました。" +msgstr "" #: templates/admin/cms/page/revision_form.html:24 msgid "Press the save button below to revert to this version of the object." msgstr "" #: templates/admin/cms/page/dialog/copy.html:4 -#, fuzzy msgid "Copy options" -msgstr "詳細設定" +msgstr "" #: templates/admin/cms/page/dialog/copy.html:6 -#, fuzzy msgid "Choose copy options" -msgstr "%s プラグインのオプションを検索" +msgstr "" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:7 msgid "Generic" @@ -1863,189 +1532,245 @@ msgid "Add Plugin" msgstr "プラグインを追加" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:18 -#, fuzzy msgid "From Language" -msgstr "言語を選択:" +msgstr "言語から" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:25 msgid "Copy Plugins" msgstr "プラグインをコピー" #: templates/admin/cms/page/widgets/plugin_editor.html:12 -#, fuzzy msgid "You must save the page first to add plugins." -msgstr "プラグインを追加する前に、まず保存してください。" +msgstr "" #: templates/admin/cms/page/widgets/plugin_editor.html:15 -#, fuzzy msgid "No Plugin selected. Selected one on the left side" -msgstr "プラグインが選択されていません。プラグインを選択してください。" +msgstr "" #: templates/admin/cms/page/widgets/plugin_editor.html:17 -#, fuzzy msgid "No Plugins present. Add a plugin to this placeholder-slot." -msgstr "プラグインがありません。プラグインを追加してください。" +msgstr "" #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "追加可能なプラグイン" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "%(name)s へ移動" -#: templates/cms/toolbar/toolbar.html:27 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" -msgstr "本当にこのプラグインを削除しますか?" +msgstr "" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "編集モード" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "状態" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "ユーザ名" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" -msgstr "ログイン..." +msgstr "ログイン" -#: templates/cms/toolbar/toolbar.html:90 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "テンプレート" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "移動" -#: templates/cms/toolbar/toolbar.html:101 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" -msgstr "ページグロバール権限" +msgstr "" -#: templates/cms/toolbar/toolbar.html:103 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" -msgstr "子ページを追加" +msgstr "" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "子ページを追加" -#: templates/cms/toolbar/toolbar.html:104 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" -msgstr "%(name)s を追加" +msgstr "" -#: templates/cms/toolbar/toolbar.html:104 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" -msgstr "子ページを追加" +msgstr "" -#: templates/cms/toolbar/toolbar.html:106 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" -msgstr "フラットページ" +msgstr "ページを削除して" -#: templates/cms/toolbar/toolbar.html:112 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" -msgstr "サイト管理" +msgstr "" -#: templates/cms/toolbar/toolbar.html:114 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" -msgstr "詳細設定" +msgstr "" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "履歴" -#: templates/cms/toolbar/toolbar.html:116 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" -msgstr "変更履歴: %s" +msgstr "" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" -msgstr "ログアウト" +msgstr "" -#: templates/cms/toolbar/toolbar.html:124 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" -msgstr "画面ロック" +msgstr "" -#: templates/cms/toolbar/toolbar.html:127 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" -msgstr "閉じる(&C)" +msgstr "" -#: templates/cms/toolbar/toolbar.html:138 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:234 msgid "up" -msgstr "上に移動(_U)" +msgstr "" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "下へ" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "設定" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "プラグイン削除" -#: templatetags/cms_admin.py:65 -#, fuzzy +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" -msgstr "コメントのモデレーションキュー" +msgstr "" -#: templatetags/cms_admin.py:66 -#, fuzzy +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" -msgstr "コメントのモデレーションキュー" +msgstr "" -#: templatetags/cms_admin.py:67 -#, fuzzy +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" -msgstr "コメントのモデレーションキュー" +msgstr "" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 -#, fuzzy +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "英語" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "フランス語" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "ドイツ語" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "オランダ語" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" -msgstr "名" +msgstr "" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "承認" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "CMS - Page %s は承認が必要です。" @@ -2058,15 +1783,8 @@ msgstr "CMS - アカウントが作成されました。" msgid "CMS - your user account was changed." msgstr "CMS - アカウントが変更されました。" -#, fuzzy -#~ msgid "menu login required" -#~ msgstr "セッションの再起動が必要です" - -#~ msgid "Sublevel" -#~ msgstr "サブレベル" - -#~ msgid "Sublevel3" -#~ msgstr "サブレベル3" +#~ msgid "fgcolor" +#~ msgstr "" -#~ msgid "Sublevel 2" -#~ msgstr "サブレベル2" +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/ja/LC_MESSAGES/djangojs.mo b/cms/locale/ja/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..9ae518a4db19c286ff913868ea387c0c94060c51 GIT binary patch literal 891 zcmbVK&ubGw6kfF=?9sD_xd@6*vPq>W+oo+y(^^P1mei9Vlk9XeVKcMN%%=9{ZV;^A z6s>I)FTF@r1Qk70`=59jQ}E=!;9Gw*&?15lKK8wt?|t*ly!~===#d361ULm42OI}n z2c!`K%7B}ItAO`_^MDgaEGq$A09=Cl!_i+n>zHMYKs^m#*s@^xXQcYDWLYIi(Ta$W zihd`{glnV)YPJaXDbl2&&@$645ox4ImvJBI7DXX}%_Sz4p8U54@K2vvVl?n>aMGb? z|6kFg0oCBD#S{vI$Y*@gs!7qNO^xR~e2q%Q1b30w2KNFtJIY?5p^zHSE1!AzV&p4a z7cOdP9V$1Q_2Ft!BhwU}tjD@cWCxvDrc^|gUAt1pWl4z!WjswZby42Q<*<{-P60Uu zHxJ2(;{Xva&@M|I9OmVQ-QmJH2g0rrrEy&nt^%TkbdhK?hQ>Q|DorxY)&x+vAHfsj zIwc(!RZEv=7fZ7hG+wPv1uP?^KVi?$%~u9D&Sf0CEV!l|v{ynfsp&194FkgXSUOFq zs4gznXYlBNmwH&D5?6RrcraQQjW(FxKix%bV%LI5k^s*L*-C+_v;M0mCf+ph29)M@Y?58mdz=!sR`)jFnRv~_ zpG~}O;``rso?C|-_MX1%e**RGgTK&UHTFCHxLPy47bbaQk}cDFo3^dq`?kJy@aP|U CQc4g2 literal 0 HcmV?d00001 diff --git a/cms/locale/ja/LC_MESSAGES/djangojs.po b/cms/locale/ja/LC_MESSAGES/djangojs.po index 16a9291406d..e1afbdd04b7 100644 --- a/cms/locale/ja/LC_MESSAGES/djangojs.po +++ b/cms/locale/ja/LC_MESSAGES/djangojs.po @@ -5,28 +5,32 @@ # msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0\n" #: media/cms/js/change_form.js:31 msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "保存せずに、本当に %(field_name)s を変更しますか?" -#: media/cms/js/change_form.js:68 -msgid "Not all plugins are saved. Are you sure you want to save the page? All unsaved plugin content will be lost." -msgstr "プラグインが保存されていません。本当にこのページを保存しますか? 保存されていないプラグインは失われます。" +#: media/cms/js/change_form.js:69 +msgid "" +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." +msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "このページを先に保存せずに、タブを変更しますか?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "本当にこのプラグインを削除しますか?" diff --git a/cms/locale/nl/LC_MESSAGES/django.mo b/cms/locale/nl/LC_MESSAGES/django.mo index 9f3334ab8251829fc2524ed87a39623e613027f1..0f81de3da4039fd2e06aeba27855729a621ccd62 100644 GIT binary patch delta 10102 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 delta 11976 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, 2009. -# +# 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 , YEAR. +# msgid "" msgstr "" -"Project-Id-Version: django-cms-2.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:54+0200\n" -"PO-Revision-Date: 2009-11-20 20:13+0100\n" -"Last-Translator: Peter-Paul van Gemerden \n" -"Language-Team: divio \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:38+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \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-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Geavanceerde opties" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Titel" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "De standaard-titel" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Slug" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "Het gedeelte van de titel dat gebruikt wordt voor de URL" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Taal" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "De huidige taal van de inhoudsvelden." -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Er bestaat al een pagina met dezelfde slug" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Menu-titel" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Overschrijf wat wordt weergegeven in het menu" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Pagina-titel" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" -msgstr "" -"Overschrijft wat wordt weergegeven in de titelbalk van de browser of in " -"bladwijzers" +msgstr "Overschrijft wat wordt weergegeven in de titelbalk van de browser of in bladwijzers" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Applicatie" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Koppel een applicatie aan deze pagina." -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Overschrijf URL" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "Laat dit veld leeg als het standaard-pad gebruikt moet worden." -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Doorsturen" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Stuurt door naar deze URL." -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." -msgstr "" -"Een beschrijving van de pagina die soms door zoekmachines wordt gebruikt." +msgstr "Een beschrijving van de pagina die soms door zoekmachines wordt gebruikt." -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." -msgstr "" -"Een door komma's gescheiden lijst van trefwoorden die soms door zoekmachines " -"wordt gebruikt." +msgstr "Een door komma's gescheiden lijst van trefwoorden die soms door zoekmachines wordt gebruikt." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Er bestaat al een pagina met dit omgekeerde URL kenmerk." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "Ongeldige URL, gebruik het formaat /mijn/url." -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "gebruiker" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"Om het recht te hebben pagina's toe te voegen, is ook toegang nodig tot de " -"kinderen (of afstammelingen), anders kan de toegevoegde pagina niet door " -"zijn maker worden aangepast." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "Om het recht te hebben pagina's toe te voegen, is ook toegang nodig tot de kinderen (of afstammelingen), anders kan de toegevoegde pagina niet door zijn maker worden aangepast." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." -msgstr "" -"Voor het recht om pagina's toe te voegen is ook het recht nodig pagina's te " -"bewerken." +msgstr "Voor het recht om pagina's toe te voegen is ook het recht nodig pagina's te bewerken." -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Kies a.u.b. eerst de gebruiker of groep." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Toevoegen" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Aanpassen" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Verwijderen" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Pagina's herstellen" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Licht gebruiker in" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Stuur een e-mailnotificatie naar de gebruiker over het aanpassen van de " -"gebruikersnaam of het wachtwoord. Hiervoor is het e-mailadres van de " -"gebruiker nodig." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Stuur een e-mailnotificatie naar de gebruiker over het aanpassen van de gebruikersnaam of het wachtwoord. Hiervoor is het e-mailadres van de gebruiker nodig." -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Nieuw wachtwoord" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Nieuw wachtwoord bevestigen" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "Voor e-mailnotificatie is een geldig e-mailadres vereist." -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" -msgstr "" -"Het recht om pagina's toe te voegen vereist het recht pagina's aan te passen!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" +msgstr "Het recht om pagina's toe te voegen vereist het recht pagina's aan te passen!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" -msgstr "" -"Het recht om gebruikers toe te voegen vereist het recht om gebruikers aan te " -"passen!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" +msgstr "Het recht om gebruikers toe te voegen vereist het recht om gebruikers aan te passen!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "Om rechten toe te voegen moet je ze ook bewerken!" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Verborgen" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Basisinstelling" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "" -"Opmerking: Deze pagina herlaadt wanneer je de selectie verandert. Sla het " -"eerst op." +msgstr "Opmerking: Deze pagina herlaadt wanneer je de selectie verandert. Sla het eerst op." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Geavanceerde instellingen" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "SEO instellingen" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "hoger" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Database fout" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "pagina" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "Pagina is succesvol goedgekeurd." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "%(name)s-object met primaire sleutel %(key)r bestaat niet." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Er bestaat slechts één vertaling voor deze pagina" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "Titel en plugins voor de taal %(language)s zijn verwijderd" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Weet je het zeker?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "Je bent niet toegestaan deze pagina te publiceren" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" -msgstr "" -"Je bent niet toegestaan om de in_navigatie toestand van deze pagina aan te " -"passen" +msgstr "Je bent niet toegestaan om de in_navigatie toestand van deze pagina aan te passen" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "Je bent niet toegestaan deze pagina de bewerken" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "De taal moet worden ingesteld op een ondersteunde taal!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "%(plugin_name)s-plugin toegevoegd aan %(placeholder)s" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "De taal moet verschillend zijn van de gekopieerde taal!" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "%(language)s plugins zijn gekopieerd naar %(placeholder)s" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" -msgstr "" -"%(plugin_name)s-plugin bewerkt op positie %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgstr "%(plugin_name)s-plugin bewerkt op positie %(position)s in %(placeholder)s" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Plugins zijn verplaatst" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." -msgstr "" -"%(plugin_name)s-plugin op positie %(position)s in %(placeholder)s is " -"verwijderd." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." +msgstr "%(plugin_name)s-plugin op positie %(position)s in %(placeholder)s is verwijderd." -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Pagina-rechten" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Gebruikers- & groepsrechten" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Pagina-rechten beheer" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Gebruikersdetails" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Groepen" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Wachtwoord" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Kopiëer rechten" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Kopiëer moderatie" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Erf het sjabloon van de dichtstbijzijnde voorouder" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Overzicht" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Indices en tabellen:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Complete Inhoudsopgave" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "lijst van alle secties en sub-secties" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Zoek Pagina" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "zoek in deze documentatie" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Globale Module-Index" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "snelle toegang tot alle modules" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Algehele Index" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "alle functies, classen, termen" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Index" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Volledige index op één pagina" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Index pagina's per letter" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "kan gigantisch zijn" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Navigatie" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Inhoudsopgave" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Vorig onderwerp" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "vorig hoofdstuk" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Volgend onderwerp" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "volgend hoofdstuk" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Deze Pagina" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Bron Weergeven" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Snel zoeken" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Ga" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "Voer zoektermen of een module, classe of functienaam in." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "Over deze documenten" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Zoek" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Copyright" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Verouderd" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "zoek" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Zoekresultaten" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "Je zoekopdracht heeft geen resultaten opgeleverd" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "selecteer deze pagina" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" -msgstr "Nog een toevoegen" +msgstr "Nog één toevoegen" #: migrations/0001_initial.py:12 migrations/0001_initial.py:24 #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "taal" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "positie" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "datum aangemaakt" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "plek" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "plugin_naam" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -534,7 +370,7 @@ msgstr "titel" msgid "path" msgstr "pad" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "slug" @@ -542,15 +378,15 @@ msgstr "slug" msgid "everybody" msgstr "iedereen" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "kan bewerken" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "groep" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "kan publiceren" @@ -572,7 +408,7 @@ msgid "navigation extenders" msgstr "navigatie-uitbreiders" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "heeft overschreven URL" @@ -588,326 +424,321 @@ msgstr "auteur" msgid "reverse url id" msgstr "omgekeerde URL kenmerk" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "inloggen vereist" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "schijn-oorsprong" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "datum einde publicatie" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "sjabloon" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "publicatiedatum" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "in navigatie" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "applicatie" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "doorsturen" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "trefwoorden" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "beschrijving" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "Huidige pagina" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Pagina-kinderen (direct)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Pagina en kinderen (direct)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Pagina-afstammelingen" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Pagina en afstammelingen" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Pagina" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Gebruiker" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Modereer pagina" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "Modereer kinderen" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "Modereer afstammelingen" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "PaginaModerator" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "aangemaakt" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "aangepast" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "verwijderen vereist" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "verplaatsen vereist" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "publiceren vereist" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "depubliceren vereist" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "goedgekeurd" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "Pagina moderatie-toestand" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "Pagina moderatie-toestanden" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "goedkeuren vereist" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "verwijder" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "ouders goedkeuren vereist" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "aangemaakt door" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "bewerkt door" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." -msgstr "" -"Wanneer de pagina publiek moet worden. Status moet op \"Gepubliceerd\" staan " -"om publiek te worden." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." +msgstr "Wanneer de pagina publiek moet worden. Status moet op \"Gepubliceerd\" staan om publiek te worden." -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "Wanneer de pagina verloopt. Laat leeg om nooit te laten verlopen." -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Alle ouders zullen niet worden weergegeven in de navigatie" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" -msgstr "" -"Een unieke naam die door de 'page_url' sjabloon-tag wordt gebruikt om naar " -"deze pagina te verwijzen." +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" +msgstr "Een unieke naam die door de 'page_url' sjabloon-tag wordt gebruikt om naar deze pagina te verwijzen." -#: models/pagemodel.py:58 -#, fuzzy +#: models/pagemodel.py:69 msgid "attached menu" -msgstr "flash menu" +msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "is gepuliceerd" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "Het sjabloon dat gebruikt wordt om de inhoud weer te geven." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "De website waarop deze pagina toegankelijk is." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "website" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "moderatie-toestand" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Overschrijf wat wordt weergegeven in het menu" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "pagina's" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "Pagina is gekopiëerd." -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "standaard" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "kan toevoegen" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "kan verwijderen" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "kan geavanceerde instellingen aanpassen" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "kan rechten aanpassen" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "op pagina-niveau" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "kan verplaatsen" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "kan modereren" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "kan pagina's herstellen" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "kan iedere verwijderde pagina herstellen" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "Als niets gekozen is, heeft de gebruiker rechten voor alle websites." -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "websites" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Globaal pagina-recht" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Globale pagina-rechten" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "Toestemming aan" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Pagina-rechten" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Gebruiker (pagina)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Gebruikers (pagina)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Gebruikersgroep (pagina)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Gebruikersgroepen (pagina)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "breedte" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "overschrijf de titel in het menu" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "Pad" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "overschrijf de titel (html 'title'-tag)" @@ -915,29 +746,29 @@ msgstr "overschrijf de titel (html 'title'-tag)" msgid "File" msgstr "Bestand" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "bestand" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "gebruik swf-bestand" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "hoogte" #: plugins/flash/templates/cms/plugins/flash.html:2 msgid "Missing flash plugin." -msgstr "Onbrekende flash-plugin." +msgstr "Ontbrekende flash-plugin." -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Google kaart" @@ -971,8 +802,7 @@ msgstr "breedtegraad" #: plugins/googlemap/models.py:19 msgid "Use latitude & longitude to fine tune the map possiton." -msgstr "" -"Gebruik breedtegraad & lengtegraad op de positie op de kaart fijn te stellen." +msgstr "Gebruik breedtegraad & lengtegraad om de positie op de kaart nauwkeurig in te stellen." #: plugins/googlemap/models.py:20 msgid "longitude" @@ -994,15 +824,15 @@ msgstr "routeplanner" msgid "Map" msgstr "Kaart" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "Uw adres" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Bereken route" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "Plugins overerfen van de Pagina" @@ -1011,12 +841,8 @@ msgid "Language or Page must be filled out" msgstr "Taal of Pagina moet ingevuld zijn" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" -msgstr "" -"Kies een pagina om diens plugins in de 'placeholder' in te voegen, indien " -"leeggelaten wordt de huidige pagina gekozen" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" +msgstr "Kies een pagina om diens plugins in de 'placeholder' in te voegen, indien leeggelaten wordt de huidige pagina gekozen" #: plugins/inherit/models.py:11 msgid "Optional: the language of the plugins you want" @@ -1026,28 +852,28 @@ msgstr "Optioneel: de gewenste taal van de plugins" msgid "Link" msgstr "Link" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "naam" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "link" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "Een link naar een pagina heeft voorang op een tekst-link." -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "mailto" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "Een e-mailadres heeft voorang op een tekst-link." @@ -1055,40 +881,40 @@ msgstr "Een e-mailadres heeft voorang op een tekst-link." msgid "Picture" msgstr "Afbeelding" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "links" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "rechts" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "afbeelding" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "indien opgegeven zal de afbeelding klikbaar zijn" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "alternatieve tekst" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "een tekstuele omschrijving van de afbeelding" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "lange beschrijving" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "een aanvullende beschrijving van de afbeelding" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "kant" @@ -1107,25 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " -msgstr "" -"Voer een sjabloon in (bijv. \"knipsels/plugin_xy.html\") dat weergegeven zal " -"worden." +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgstr "Voer een sjabloon in (bijv. \"knipsels/plugin_xy.html\") dat weergegeven zal worden." #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "Knipsels" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "Teaser" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "Indien opgegegven zal de afbeelding klikbaar zijn" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "Indien opgegeven zal de afbeelding klikbaar zijn." @@ -1137,7 +960,7 @@ msgstr "meer" msgid "Text" msgstr "Tekst" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "kern" @@ -1154,14 +977,13 @@ msgstr "Kies a.u.b. een plugin-type." #: plugins/text/templates/cms/plugins/widgets/tinymce.html:54 #: plugins/text/templates/cms/plugins/widgets/wymeditor.html:114 msgid "Edit selected plugin" -msgstr "Geselcteerde plugin bewerken" +msgstr "Geselecteerde plugin bewerken" #: plugins/text/templates/cms/plugins/widgets/tinymce.html:58 #: plugins/text/templates/cms/plugins/widgets/tinymce.html:124 #: plugins/text/templates/cms/plugins/widgets/wymeditor.html:87 msgid "Text editor does not support editing objects." -msgstr "" -"Tekst-bewerker biedt geen ondersteuning voor het bewerken van objecten." +msgstr "Tekst-bewerker biedt geen ondersteuning voor het bewerken van objecten." #: plugins/text/templates/cms/plugins/widgets/tinymce.html:63 #: plugins/text/templates/cms/plugins/widgets/tinymce.html:129 @@ -1172,8 +994,7 @@ msgstr "Geen object geselecteerd." #: plugins/text/templates/cms/plugins/widgets/tinymce.html:112 #: plugins/text/templates/cms/plugins/widgets/wymeditor.html:75 msgid "Text editor does not support inserting objects." -msgstr "" -"Tekst-bewerker biedt geen ondersteuning voor het invoegen van objecten." +msgstr "Tekst-bewerker biedt geen ondersteuning voor het invoegen van objecten." #: plugins/text/templates/cms/plugins/widgets/tinymce.html:133 #: plugins/text/templates/cms/plugins/widgets/wymeditor.html:96 @@ -1194,9 +1015,8 @@ msgid "Twitter" msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "twitter gebruiker" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1216,20 +1036,14 @@ msgstr "link hint" #: plugins/twitter/models.py:9 msgid "If given, the hint is displayed as link to your Twitter profile." -msgstr "" -"Indien opgegeven wordt deze hint weergegeven als een link naar je Twitter-" -"profiel." +msgstr "Indien opgegeven wordt deze hint weergegeven als een link naar je Twitter-profiel." #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "gebruiker" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1240,92 +1054,86 @@ msgstr "Video" msgid "Color Settings" msgstr "Kleur instellingen" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "video bestand" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "Gebruik .flv of h264 video bestand" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "video url" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "" -"Vimeo of YouTube video url. Voorbeeld: http://www.youtube.com/watch?" -"v=YFa59lK-kpo" +"Vimeo of YouTube video url. Voorbeeld:\r\n" +"http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "voorbeeld van afbeelding bekijken" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "automatisch afspelen" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "automatisch verbergen" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "volledig venster" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "herhalen" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "achtergrondkleur" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "Hexadecimaal, bv. fff000" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "tekst kleur" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "zoekbar kleur" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "zoekbar achtergrondkleur" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" -msgstr "" -"Flash plugin niet gevonden. Download hier" +msgid "Missing flash plugin. Download here" +msgstr "Flash plugin niet gevonden. Download hier" #: templates/admin/page_submit_line.html:3 #: templates/admin/cms/page/change_form.html:273 @@ -1352,14 +1160,13 @@ msgid "Save and continue editing" msgstr "Opslaan en opnieuw bewerken" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." -msgstr "" -"Pagina %(page)s moet mogelijk door jou worden " -"goedgekeurd." +msgid "Page %(page)s may require approvement by you." +msgstr "Pagina %(page)s moet mogelijk door jou worden goedgekeurd." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Laatste aanpassingen" @@ -1368,11 +1175,18 @@ msgstr "Laatste aanpassingen" msgid "Log in to administration here." msgstr "Log hier in op de administratie." +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Gebruikersnaam:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Wachtwoord:" @@ -1457,12 +1271,8 @@ msgstr "Pagina toestanden" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." -msgstr "" -"Deze pagina moet gemodereerd worden op %(moderation_level)s-niveau, stuur " -"een bericht naar de moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." +msgstr "Deze pagina moet gemodereerd worden op %(moderation_level)s-niveau, stuur een bericht naar de moderator." #: templates/admin/cms/page/change_form.html:185 msgid "Request approvemet" @@ -1544,8 +1354,8 @@ msgid "edit this page" msgstr "bewerk deze pagina" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "bewerken" @@ -1601,7 +1411,7 @@ msgid "add" msgstr "toevoegen" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "Direct goedkeuren" @@ -1616,6 +1426,7 @@ msgid "Unpublish" msgstr "Depubliceer" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Publiceer" @@ -1695,9 +1506,7 @@ msgstr "Herstel verwijderde %(verbose_name)s" #: templates/admin/cms/page/recover_form.html:24 msgid "Press the save button below to recover this version of the object." -msgstr "" -"Druk op de Opslaan-knop hieronder om deze versie van het object te " -"herstellen." +msgstr "Druk op de Opslaan-knop hieronder om deze versie van het object te herstellen." #: templates/admin/cms/page/revision_form.html:11 #, python-format @@ -1706,9 +1515,7 @@ msgstr "Stel %(verbose_name)s terug" #: templates/admin/cms/page/revision_form.html:24 msgid "Press the save button below to revert to this version of the object." -msgstr "" -"Druk op de Oplaan-knop hieronder om naa deze versie van het object terug te " -"stellen." +msgstr "Druk op de Oplaan-knop hieronder om naa deze versie van het object terug te stellen." #: templates/admin/cms/page/dialog/copy.html:4 msgid "Copy options" @@ -1748,238 +1555,239 @@ msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "Geen plugins aanwezig. Voeg een plugin toe aan deze plaatshouder-plek." #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "Beschikbare plugins" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "Verplaats naar %(name)s" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "Weet je zeker dat je deze plugin wilt verwijderen?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "Bewerk-modus" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "Status" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "Gebruikersnaam" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "inloggen" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "Sjabloon" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "verplaats" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "Pagina's verplaatsen/toevoegen" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "Kind toevoegen" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "Sub-pagina toevoegen" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "Pagina verwijderen" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "Website Administratie" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "Paginainstellingen" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "geschiedenis" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "Geschiedenis weergeven" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "Uitloggen" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "Op slot" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "Sluiten" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "omhoog" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "naar beneden" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "Instellingen" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "Plugin verwijderen" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "Pagina-moderatie ontbinden" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "Kind-moderatie ontbinden" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "Afstammelingen-moderatie ontbinden" -#: templatetags/cms_tags.py:69 -#, fuzzy, python-format +#: templatetags/cms_tags.py:78 +#, python-format msgid "Page not found on %(domain)s" -msgstr "Omgekeerde kennaam niet gevonden op %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:70 -#, fuzzy, python-format +#: templatetags/cms_tags.py:79 +#, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"Een page_id_url sjabloon-tag heeft de pagina met reverse_id %(reverse_id)s " -"niet kunnen vinden\n" -"De URL van de pagina was: http://%(host)s%(path)s" -#: utils/moderator.py:82 -msgid "parent first" -msgstr "ouder eerst" - -#: utils/moderator.py:89 -msgid "approve" -msgstr "keur goed" - -#: utils/moderator.py:240 -#, python-format -msgid "CMS - Page %s requires approvement." -msgstr "CMS - Pagina %s moet goedgekeurd worden." - -#: utils/permissions.py:206 -msgid "CMS - your user account was created." -msgstr "CMS - je gebruikersaccount is aangemaakt." +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" -#: utils/permissions.py:208 -msgid "CMS - your user account was changed." -msgstr "CMS - je gebruikersaccount is veranderd." +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" -#~ msgid "menu login required" -#~ msgstr "menu inloggen vereist" +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "" -#~ "geen deze pagina alleen weer in het menu als de gebruik is aangemeld" +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" -#~ msgid "" -#~ "A show_placeholder_by_id template tag didn't found a page with the " -#~ "reverse_id %(reverse_id)s\n" -#~ "The url of the page was: http://%(host)s%(path)s" -#~ msgstr "" -#~ "Een show_placeholder_by_id sjabloon-tag heeft de pagina met reverse_id %" -#~ "(reverse_id)s niet kunnen vinden\n" -#~ "De URL van de pagina was: http://%(host)s%(path)s" +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" -#~ msgid "Sublevel" -#~ msgstr "Sub-niveau" +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" -#~ msgid "Sublevel3" -#~ msgstr "Sub-niveau 3" +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" -#~ msgid "Sublevel 2" -#~ msgstr "Sub-niveau 2" +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" -#~ msgid "dock" -#~ msgstr "dok" +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" -#~ msgid "blank" -#~ msgstr "leeg" +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" -#~ msgid "self" -#~ msgstr "zelf" +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" -#~ msgid "parent" -#~ msgstr "ouder" +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" -#~ msgid "window" -#~ msgstr "venster" +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" -#~ msgid "opaque" -#~ msgstr "ondoorzichtig" +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" -#~ msgid "transparent" -#~ msgstr "transparant" +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" -#~ msgid "click_url" -#~ msgstr "klik_url" +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" -#~ msgid "click target" -#~ msgstr "klik-doel" +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" -#~ msgid "volume" -#~ msgstr "volume" +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" -#~ msgid "in range <0, 100>" -#~ msgstr "in bereik <0, 100>" +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" -#~ msgid "fgcolor" -#~ msgstr "voorgrondkleur" +#: utils/moderator.py:83 +msgid "parent first" +msgstr "ouder eerst" -#~ msgid "Hexadecimal, eg 13abec" -#~ msgstr "Hecadecimaal, bijv. 13abec" +#: utils/moderator.py:90 +msgid "approve" +msgstr "keur goed" -#~ msgid "wmode" -#~ msgstr "wmode" +#: utils/moderator.py:251 +#, python-format +msgid "CMS - Page %s requires approvement." +msgstr "CMS - Pagina %s moet goedgekeurd worden." -#~ msgid "Page moderator status" -#~ msgstr "Pagina moderator status" +#: utils/permissions.py:206 +msgid "CMS - your user account was created." +msgstr "CMS - je gebruikersaccount is aangemaakt." -#~ msgid "A programming error occurred - cannot find text editor widgets." -#~ msgstr "" -#~ "Er is eenn programma-fout opgetreden - kan de tekst-bewerker widgets niet " -#~ "vinden." +#: utils/permissions.py:208 +msgid "CMS - your user account was changed." +msgstr "CMS - je gebruikersaccount is veranderd." -#~ msgid "Revisions" -#~ msgstr "Revisies" +#~ msgid "fgcolor" +#~ msgstr "voorgrondkleur" #~ msgid "Wanted language has not been translated yet." #~ msgstr "Er is nog niet naar de gevraagde taal vertaald." diff --git a/cms/locale/nl/LC_MESSAGES/djangojs.mo b/cms/locale/nl/LC_MESSAGES/djangojs.mo index d7309755cc274505a1e462e2d16dbecac93c0769..bc4cb6e415a5d9575f8b62494b522d63760e8fab 100644 GIT binary patch delta 350 zcmX}l&r8EF6bJCMPKMo1BA!HY*R*Lj9EKvTKiH-I8uK=g+J-K3ZD!LBJbCsg#iJg? zlUETu`KS0l_!sD_pbtL0Z(bhB!_s5(=5x7mkDwZ04Y*(tj6hv8um`TdDR={$ps68r z3%VeH^M{VmIrP>7LJssx=x~K#{9E<=Fha=BIlh)9R%IP3qP6axUaEI(-8Tk&Ci8+E zszk(Ow@efnN`}WpF;mR45>brH3p0|b6^pr$Ry+x_M3N{~mQbqXs`}Daw{4qHhtM9T zJ?22zqSQD!CIdbfO2~}thXrTYq5pe!hjn@zlvbX;(v=e-u$ywP4rVmoF#`Cc3=>X< kJWLr5{Gu_^-=q8jp1zi`mMLMAK<}LNdN!< delta 625 zcmZXQv2N5r5QaCGK$J@d6#|K=CxHyH>arMgspb6Q`jL;M ztfk5}+PIojV5(KiWkSpM*B0F;#S^AVX?{eH;cQ%gzp9|AcadGB4+eK{nXIp4BF4eb zcpBxiQoiI+8}AA#XUb_Wr}J9oNjf~{%7-WqYi&yTq|vpU_=1Mx=M%XfSVh#x#es@k zP@bj_WR}T1rR;u@-rGsDG=)~w+FAk zpAWXz7DtBrePUs&g`Sz2BVTDocg-%LR}9OH>5NY~P^tPu*>Bi5)$K9D54Upt!kN7L eS5GZtl9GdQc#UA9u6EVzs_qj=!e)IyKk*0V;;^Uy diff --git a/cms/locale/nl/LC_MESSAGES/djangojs.po b/cms/locale/nl/LC_MESSAGES/djangojs.po index 595de655f85..3ec8b33ee9c 100644 --- a/cms/locale/nl/LC_MESSAGES/djangojs.po +++ b/cms/locale/nl/LC_MESSAGES/djangojs.po @@ -1,42 +1,36 @@ -# Dutch translation for django-CMS 2.0's javascript. -# Copyright (C) 2009 Peter-Paul van Gemerden -# This file is distributed under the same license as the django-cms-2.0 package. -# Peter-Paul van Gemerden , 2009. -# +# 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 , YEAR. +# msgid "" msgstr "" -"Project-Id-Version: django-cms-2.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: 2009-11-20 20:13+0100\n" -"Last-Translator: Peter-Paul van Gemerden \n" -"Language-Team: divio \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: LANGUAGE \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" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" -msgstr "" -"Weet je zeker dat je het veld %(field_name)s wilt aanpassen zonder de pagina " -"eerst op te slaan?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" +msgstr "Weet je zeker dat je het veld %(field_name)s wilt aanpassen zonder de pagina eerst op te slaan?" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -"Niet alle plugins zijn opgeslagen. Weet je zeker dat je de pagina wilt " -"opslaan? Alle onopgeslagen veranderingen aan de plugins gaan dan verloren." -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" -msgstr "" -"Weet je zeker dat je van tabblad wilt wisselen zonder de pagina op te slaan?" +msgstr "Weet je zeker dat je van tabblad wilt wisselen zonder de pagina op te slaan?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Weet je zeker dat je deze plugin wilt verwijderen?" diff --git a/cms/locale/no/LC_MESSAGES/django.mo b/cms/locale/no/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..eeb159ed922be4c8bbde11109a3625f4e4ccefbe GIT binary patch literal 24412 zcmb`O2b>&7o$pJwagei&BMvPg*}JxO6>ZsTD`zX(D>2OPrxyw97DYQJ68mFr*s z`d4-78?%o1YsarS!@0BJoyR)&Bc6YEnnIm>%el^73h#pp;CJ8-IO{y;Hp3Bk4BQ8g zhVO$*;fJ8&{{mhP=SJRt8(fF~Wx@YNcqINO%y#Z@cpN+qo&>3iI|nNNemD~@fhWKf za2ebN{{sFcJQ>cILt1zWRDN^e#jp>a2ycOdunGI%J#YYi99{>10WXBxp6tut3y;G8 z9H?^dgv$T5@Km@D&W9g?$HSjM)#LY2@lTxV9FOi?$UnCxumV+|J0V57yP?YY5LDNH z0;;{=fa=%(3j8@#zx)=e-;SE+%RK?!fd6cG3Y>&bfG>io$IGGG{rB()_<5*)eh8`_ z-wyttLACD>Q1v`+0csTyKQ2F)2BjGa05W5vn^|}SBAND|v+g|uY_$;V+uYwEV z{qRcoL#X;JxxnXlDO9;D;S=CSsQk7;^~a4+{V^Kex8RZZJ5c#N4XXd18Ny!;kHY_V zQ19Oi5n;Cvu7VH374SHOLF2FmYP_28O!!w&hbsSTQ2Bftsy#mm;lF`H`2Psio}mkUf3Jp$w;mn^cS6bCb#OauLiO(l zq4NC#)cAc1YMg!sRld8(x951c2=4_@-!yWJpcr!c(PQat#9l`$ssQ$bQu7aNLh1M0q3ZQssQ&yXsP_LmR6l(ao(vy>v)~_~+I#ZFKA*Fo z;?0FBe^Kx+3tSg?72L-ATOj}3KK`hF-+}Al$xL>&=URwpyXQgm?|b0k@B>iw{xDQM zJ`L3$Ux$h}gT|ZykAaGJ22?xdK)oM?s`n*OpE8^imzK(+IoQ03hpxF0It&qL++Q1E{Rs{g(TmCui% z`se52{qLa4n{k;>cN|o`XF-)SH}E2;`YnbkX9yk!S3=GEHBjXyQ1z}s_0Lq`b3^!D z!T&m_etUc1{UQ9r!T(vPa=sM!Rj7J@3u-(chAQv3Q0<$6Qdam$Q1NC%rN0QO9ScMF zGN^J_!xQ0^Q1NaEycH^a8LD5J!9Nw=KO0IOo)6WZ_dxZ->!8~GMmQI~3reqk87lu@ zLDlznQ2lZk#+}CRM5y{a2}=IwLbYQVR5_cV;@=EauRT!lv*5oSs{PM{%Kw#6@$ZJp z?>?yfJ^)p}&j$Zjq3ZQW;Lo7a|1$W02UXsTD|~s!LcMME(}ggC7emFn z2C5!6L6uX5s%I0bzix-B&mFK2z62`%{ZR2g8u%%=1OMls@;!ICug_elatGkUGti9? zQE*RQ8T2Pqx);MO@as_W+rP@EUj(JEh9D}{jR*f51HS^9>h7e~-d@=R)$h*;d_L4X zc{$WLy#cCy4?xM)C!qTO%aE$Ohv5{wV2#%+uY(pJs=c3p1Mo9YvtAZy`Bt}&&BXmxB)JLH$nCLOG5bF@JaaJ1gAsfL z&V|RX_wg6Q^YE_<{@bAPZ9kPk`?Y{`bQY{!c-bJFvmGe=}6Q zw?l@~-3E_@e+$)5_d>mY50qa1I8^_B9ZF7r3e^w4fhzCFjlMp|LHW;ws{eUV^<4>7 zzbm2o={l%!timV5r^Acj>*1B~bMSC@<|bdSbKp_<=R)N_A1dF)Q1w_2)gPPTk?iMouAnh2t!^z;`<@Et!8bvr`wUe5z6RAV--a{c&qMg{AtL7v+v3}^0V@7> zsCdI6{1zzr7=_#5)1b!d(@_2L_27RPs{X$Z;j^}S|9MdLUkXu~ZUid7d&2v7L+w94 z2{n#KQHa`qDpb9fK#li0NSC=XR6YLz(ggP|sCd7Js`m-o{dk-SRnH~CzajW(5~}}S1{MEJP;&E8sQNt&74N6v{V`Yj@-Bb`xusC;eJ-2@Uja29Z-#2` zKB#)V2TD#q82Hf;{vbS`@Q0wv`z>4uXAFD2wix!|FT)ezi{SYhzBj>R;XbHwdjOsUKL%CLFTso8f@^(0+z2<~zZ0sy z55Xny7$U2jmS4^_WWsQ%vz)!wHE|MQ^w;l+Wkfm#pl z4e#%R>c4kD)&Kqw{vec`{~J{NFG02ID^T+CJ$O2NB>0cG(dTn4RQabsr9T_09kXFS zoC{UY?NIgK6&OSHOB1U7PYdDCh05^OUj&u!C2$s80o4yzLDhdZRKMN`m97HSo^h!BZinj6 zXF;|9l~Czl1J%xZ;9U4N_$2tRQ0X3l%Kv9j?fex~IY-^>%Q*!~Ue1PU-;&^82PMBZ zLbZPnRR3hb{|u=1zW}NqUkerg^-%NrAEEO5c;J@!L#6&@O~7kKN?Ww`~_6I?||yBmqFF<6|fK92i4DCfXe@y zQ1QMGQ628#5WePCU!ToT^}8C*fd7fp?=pG#-GST0Giuo#4llu7#Pe3%-{ZF7^xGKX zf05_!<0f$lVW>0voy7CA!gG$_^YA>}3f`^8JrrJi8Gajg0%14c^i!YZzl#Y|UwjAm zqY$XJ<-c=z*hZXs2>5IGDcl;uo*Kfg=K141pAVmi>%-;0xAJfy?nSr}+%dfS2>cfu z;^tm~TSnObg8E55hjGhr7vuCR^ZqsP^|+tmI=GmyQMd)S0r!tM{U&ht;V!_v0rw7^ z#zep4Nb?o{=x*j&zjxtQ@%*>u^ZTK(@J>N@A5a-4~g59rin{i*4hu;j|Errj(t>yVH1s?D_7XNnKT-LhxFCJeeOk?n5}~n;LEk_XpgQd4Il$J0150+_i-LE7b2Y4>w5IzlZ13;J)yDFD&C0a{kxsu4;tu2a+3*SQHeAH> z?{F>L<@ohGDp1eIhUahb+|Tn>xYz0hznMH&!h8AG=}-7w0ax;F6Wj`Kfmh*bA^rv^ zz5O-ZtvtU3eh#PKA3f~v{rp{lTNA>bAGn1yjgZ%;Lzu9Wu$$p`aRWS`1rNh5!HtIa zpX6D;zrvk>`yuYVxEJ7VBF-MD-$oDjCb*n%eH%TA=ckA8Ie|IW@&4a}=f4Bj!#d%A zmq&tsiFUH2#O-k#H8&?>{`;&jTCqXxtES-Ud&BzY6a@7ASlc_kP?= zdH9`zd!;@3KWC8cJv{!;5H=s~!mSPdxK2`JgW)V%sX;eYqX4dceD)rV#T<4*kJf%}@)8cr1yxp2e8oXDg^ZFVs+7qk3x7L%1q)t^m zUEfrz6P4m-G@i6aTkS>^mlTbzZARHxHI2sON)naHwv^SU`rT?8la|`macg{Qlt_t> zleQX3R&7vxC#5kXQ&F14?b2A3H0kjq9VBhN+N`OcW1nP& z@qGL=izuYjYBXZ))|+iS&o}oieL4dtkO&`+m<84d_fkC zB&3U*6+cGRER9MuJ!`d9_C(w)@nSg1vTC!Ec0*b=-~`m`a*^VtBubflcs0k!xLi${ zKvU$vOps(WiC~3r1vMM99Y4ljaK=gK-cD720K9echSx;gb*iP!L znAscTQ28=_37)80rz1Xyn~jkPdZ=m|PbB5pirr~epVCQ?1*S`Nw2BmFW6T<4-vl{G zj+gRVJMB6m+MtzLlEsyXIb+gFZ)rq|DMQ9K27WBN(w9<^T-bu_xz*$2^=c{flApQ? z(-aP>qw5V5u?Vn%HT{Bsxz+6?(u7XwA$yoa98@o_fkO4HFIG;AjBkRmh)3!P{VEli zx;1fHEpXshp-&ZSbTLk*+^gU~%jB#ELl<=VJj z>Zp^WcB_*mJ$}o5G)^<*kBq0(JcM0Qm|;v?(HADA7Uo`R!M+>pQM1n;8g#QgjCV%r z)pX3Qwb>C6R29BfOS8$3Cq-79rFy4~*f4>-bV>aeBG6p}<|F3g=r@}uC7(@D-j-RO zb*VLu5)9L9ZJpBG+EyL$DkkIF)_9evHLtJE^zASZsPVjL3O;c0BKj0rkZV4o=IO2l z{$)|5VovKYKNfDSUui;RJDFP-XYq)po=r%%&Q`a8>9xz+aWiEUC7V8)2~hEDlIGS+ z5vp4LDJ8#>w7hSd4=g5@Ut@cEz^yke!gOQu`dQSK&WX4#9Ut_JDVjmIzL|xk#?RxZ zuR53vMsw0;b$mR@(gnWYTlY>4j%AJdoc?HXtja=WBZ!tmjrWQ!A%l?V661ODDxL1{|1}r6h{#Hk$G>cha+ghM8IMcCKhqnlX)`>w^ z40iqyH9FM7mc`Lg1cuIFW$_DR$4CE5g)m#q#10A#{=!4T4xUS+)iTsd}r#+g8PvZ3eR3s5Xh~O~&YoI2vmw zqs!-@d0Mib>8$>A&I)PWD;C5nl)j=8CEnYTW+&QJ%^2ZrEbAJpZ8CpYA4fGY!YB+r zdT6w+HQBWFyeM=m%f^QmEQrgkkz^1gbeBbho|J7(pK(EQoEp%A}``L4UX%SkRNqOEaQ-e3QX$ z>gt(b2C@_BbmL(&9uyIS%cgQ`TxFV08fmvCWkew2WHW-oV}Dmmoy~s}`a(wL^_j@# zg2_tAc=x9g&ZvQj5De&P8zVL-6f;~y8)}D-zU@C zUU{=5hmL+wRP9e?lUIYDi<{Gy;7~cg!RyhszVNV+(>>@VOe8D(fI#0{2PN%M+&)=P z03Ft(_q2KR?=1I_kr{HPxUL=(+XmhqEgmqY zbK3?}|G>knU7VBFhs|kw&X$>w3tHES}Fu_N*_F%w2}FHoNoHFjQXRkWDq0(X>Ho@l8Yl32|=LAKal;_y^S-;T}dHj$Y zUA=c4MO5TF7;R0o(D*G237XQVA=aR~o{=gOhykgcTu)c^Orx$0{&~?a&;bZbLVn_B zW(nHuPv;WGpB4mpxA?Z5(PCS)%rC^Mriq_la|c~Gu66{8)=mZ_13^xwK7)6v03x)e6SXw=>Zx^AEE<$wO9DIaNuO}oVv4}&Oj;)cYN2g-+*qQKavC%A4l-*;GGjWD zsg@nPt;ag{@RG*5*PSTNue?z_B6$iPvk`L-VG<}+-5YRpQT`3Y(o(+GlOP#i% zPKQ1A$IgPBcGxWRBXKTJwy!6c-F?2$mhoZ>^!8|>lzG(}cMUXY)&iWC*rHNMOR?O9 ztx2PW4KEwe{`jH7TV-)lzxziz+L^ZP_6&-P$;(=ry4L8ZWAhzUt6%?IF)pSiynWH9 zGdo|Qh!gt$M~xKh4%?TSw0a3;l6#Ye{jl@LMP}o={2QNRc&YYeIMuS++mM8VN0ZUs z0NI+|K#o65OuM7VF`_q}6&^{`xcmc^1P_^No4}zwP)8_}CSup?30k}p-vcks}U$T_bh!WOAIhxSY>!n8# z)5+1o({>sm{xpa|I?R)-!zr9kLLr0E`n@rxHU}o*aA|UKaxg@*Bc{nXD~+w3SbqJ6 z_~OgzTLx<5EjL*$XJhWE)o~imTzqPaqe!#D*rB!b8G2xIdEgqqhZ~B@dpP=S4U`(` z%&QX}-wkX_E7kJAnocDh*wykSr<`kH<&1SktkiOKqS{)}O}T(`Gj>Wdckb9Vur_GH z0S@1(_u_?%77Z+1Jg{(Cv~bzb;)MeXFIl*dhy(1P?6cRw@fIx^T5{P%3;E65ilP|U z6->`odnjt{saB&a8p$d>43@@L5XFCD7+`PGpgF1v}G1No0jB=_TSDTk>z2ft0wtV-l4Fi{UA26ncj?+5aB3`Ogk z6@A|6z8dB;RVi8Pt1}dJvQg?&BwVZYs690l4PU!?*A45h-nx4Gx|wbV7Y=GVD9^tO zV`XF2a`j;Uo7&C&57cT&op=8B0cI=Ty`w6Dhy3(kk1N_PDG~ki*jEq6_up%G57Iqo z!s&Mp4$LCb9wlXo?|%Rz7W1IYLPd2fG2c9}_@$^=`%#kgdq3Z9I6X;gZH(r+ z<~@_J*&;#(c_rOQyHlgf3fIWKA?(PO7tpA zYH6nBQs0R%&iT%0*<}nP=faP(G%G-&;Tz#qy8qD4F0y<91qJEgqlvyHAt9SW^WD~@ z!pG!ly?CJiv@miZC4W^kVp=rpOB!3m@e5ejZ?8@97g4O9d!EatxC%11=(Ok z(ry$E`$P47FLvKdPfWPR#Cn{C37b+4*X(t&KUQ!-{D_!i!u;BvFbvnvgkF#TMk7;5CRX<~(W59-|fNXf@A?-ABAveu~Vg0Cg5*R)S@id87mN6|2^4}Ft zyOeN%Jo;M+wOBpG=Sx4YiwCb)=>Bd^1`njqlBNjrFQ!8q=hZs{x0MPzWVo3gddMBe8DljzZy+__pH|O@ydUBvrg)Y^b)N z>#VXix#hF6rU{-xeTP`|Fa?!2a#o*0m)oN^AW{7RC|0zx`(4j=6TF86%Oc)9pTz7iTM@rcVKFDTsW_j9x|q zb!s)YA#PWaY4dc8#m>LOG9>87biBR)-kL2D`97wfBR+~ea6$B`okt-7!D|~1t4WA( zP@O`=-bubA*Dl;gD3%(xrOqvY;*NvnHix&U2L8sGma?9DYSGYsTe{Q7@&jNALLDod zYTFvCDp61D=nxP|UFF?T1om_?<1(!{w_ZAF0{cnJWUg-+^~zM8BD~59s|+F`J4F}j z{(szZIMgKvK2O^SGVSe#16nHUssL;NE;#W0Itgg^UUW#=AaK!PbdV)Czw5AZPtwT3 zRR@%X+k~GXwc}RZcJKlDwsZ!I`rw7^x;_2 zUw81S=}}_QWqwp-9hfzt4}U#UV_9g?=4dU;nBdGP)^3$AskH!`G9!F6q!tqxhODd9 zT>CSc_PArNZcpT5&cz2hT2otr^qS3`CRuaHi;iJ`))X2AJUpGYc9AV0qQER)b|wwWbui{*b3It>P^%H|(XrgS3qf z`qsA{pH>|P1UnAYyc(d^VeZcksg;aWHlciP5|U>7ACLtbV&`##IiWtWM82resXAXD z&}eSh3^(aljVmgN(YN~#oWaY|Q$j-72r+zi1!Dibx)OoqC55P=EN(%VUZL`w_&mP5 z5EV>X)HI{bZHOs0z$gf}2D5cfQs$Bb8xe9k;5Njgg+{6$a#rpZ`hyS*YXv#AZ9xU5iL6;|){aK2FsTPU%h`ig5VU`fgRr z-1ar>+9;1XukqzeOT!B=28XS5_qSi>-s+SsQf0|w4_*2&)Y8VhB$=Ln}I8)EM`PWklFEls4}iR$&T;0RC?1RXorrxyRiLLYT9i;+}4!TM4hH;-A21D;K!#& z1?Sg#xP5HrQuc+U$gX?#Xxj{{Vv%^dk8a$8-Pdk0z@bJ(%+SSQ3+wxv9z-yL{_uO7>B@smGOZdIaQPlW_0itKHW_q}b@ZX%hk@yd zAj?gf*Uu0;dF$q$zx1*mq^x2Kb}=1xnyqaux2*{?#0PP8!<*su&KswEkZw=aYPNs3 z*tI5Snt8o#ppbJ}^0^fqX1nH*?Zq?@eje-8qMMt249auUt!vGfYJDV@m90x}rnbE5 zI7DWg8;$M1w^>e^li?-=qm0FoS0=0q(?ab01o1Bv(^ zs^%*hG)B{H*u#!E82vOXNynv#STU%t_w-I!?SvY6qp8&aSAyV#2OWYTTTsc@NMnpsK?UCW7BUbr~a&(&C1 zP{QIo7;W)~N4DYC8qvFp(^M%IV!s*vf4WMc!?N5GW`lvnDFcDCAv+atyL9TKzu0qj zmm-)Q{&n8=pf7`XV)j|GM@_+cp^iH!#X1%%J3T|IA@1@WjxnY5 zO-X(xa){jg;1&l*hs-a;o6Wt-U^V-@k!EotF;WS(xtHpoU&Efo8ps_J-w@iwGMo36 z^nqH2vS7;7W=XU2u1a1w64E>mJiJXhu+zr-*Z&rdYbS<42Gz4Rb<*E-}ULg-!1}IA9 zLw!i@SBSilIxh?F`qaz)!H4+}*U@dk8?6YU3yvE7^$QNG zOn$ni9~YjAjCF!t-~RyLL}XBE$0Ad%VImT9bF_+_cI>!W$6p6+CW)O7Yxfl5&rOg< zb9&D-=V-I0Pj-)yPc9_W&vr;8sj~$sC%=;#)rAC z_Z&f)!gIO5_f#Kg_Pb}7o7LUpC4WG#TNi^pcQV2`Wp3EI!XQJuM>)1Z3ehkP{(B?0 zGaB3{NNX+~rz)B`Jz-Z;Zg8=~j-zzE z6NF0xW?z(~HrXIep)>@RP*>=fF`Yy4HQo+FWZ_^vU=`|Y^biL<7VLT_rL!%qR464D z9&gd-ud0ssfXK)s$Q8Wb)D>e!ZFIVV*cSIbbg{9x_+bOv zja2NzO&57dMn&+yeCT$s;~1FmU&L94@@3Ewsn|Q{^JeOYH=j-lv1=YCc*QIW!7Z1^ z3tf@bw>$QrkGi<>` zsF`8;xh9iv+O3erl>Ya&pQ|RE2i^+7i1tEeUr~Fet(0U?>7kn8LWs8u!;O%, YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: django-cms\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:54+0200\n" -"PO-Revision-Date: 2010-05-11 00:54-0000\n" -"Last-Translator: Øyvind Saltvik \n" -"Language-Team: none \n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:39+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: no\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -"X-Poedit-Language: German\n" +"X-Poedit-Language: English\n" "X-Poedit-SourceCharset: utf-8\n" -"X-Poedit-Country: NORWAY\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Avanserte valg" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Tittel" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "Standard tittel" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Slug" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "Delen av tittelen som brukes i adressen" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Språk" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "Det aktive språket for innholdsfeltene." -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "En annen side med denne slug finnes allerede" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Menytittel" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Overstyr hva som vises i menyen" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Sidetittel" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" -msgstr "" -"Overstyrer hva som vises på toppen av nettleseren din eller i bokmerker" +msgstr "Overstyrer hva som vises på toppen av nettleseren din eller i bokmerker" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Applikasjon" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Koble applikasjon til denne siden" -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Overstyr adresse" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "La dette feltet være tomt hvis standardadresse skal brukes" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Videresend" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Videresendes til denne adressen" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "En beskrivelse som noen ganger brukes av søkemotorer" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "En liste av stikkord noen ganger brukes av søkemotorer" -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "En side med denne reversadresse id'en finnes allerede." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "Ugyldig adresse, bruk formatet /min/adresse ." -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "bruker" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"Legg til side tillatelse krever også tilgang til barn eller undernivå, " -"ellers kan ikke endres av den som opprettet den." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "Legg til side tillatelse krever også tilgang til barn eller undernivå, ellers kan ikke endres av den som opprettet den." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "Legg til side tillatelse krever også redigeringstillatelse." -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Vennligst velg en bruker eller gruppe først." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Legg til" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Endre" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Slett" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Gjenopprett sider" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Varsle bruker" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Send epostvarsling til brukeren om brukernavn eller passordendring. Krever " -"epost." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Send epostvarsling til brukeren om brukernavn eller passordendring. Krever epost." -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Nytt passord" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Bekreft nytt passord" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "Epostvarsling krever en gyldig epostadresse" -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" -msgstr "" -"Rettigheren for å legge til nye sider krever rettigheten til å endre sider!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" +msgstr "Rettigheren for å legge til nye sider krever rettigheten til å endre sider!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" -msgstr "" -"Rettigheten for å legge til nye brukere krever rettigheten til å endre " -"brukere!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" +msgstr "Rettigheten for å legge til nye brukere krever rettigheten til å endre brukere!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "For å legge til rettigherer må du også endre dem!" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Gjemt" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Grunnleggende innstillinger" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "NB: Siden lastes om hvis du endrer valget. Lagre siden først." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Avanserte instillinger" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Søkemotoroptimaliseringsinstillinger" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "høyere" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Databasefeil" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "side" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "Siden ble godkjent" -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "Objekter %(name)s med primærnøkkel %(key)r finnes ikke." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Det finnes bare en oversettelse for denne siden" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "Tittel og plugins med språk %(language)s ble slettet" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Er du sikker?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "Du har ikke rettigheter til å publisere denne siden" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" -msgstr "" -"Du har ikke rettigheter til å endre denne sidens \"i navigasjon\" status" +msgstr "Du har ikke rettigheter til å endre denne sidens \"i navigasjon\" status" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "Du har ikke rettigheter til å endre denne siden" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "Språket må settes til et støttet språk!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "%(plugin_name)s plugin lagt til %(placeholder)s" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "Språket muå være et annet en det kopierte språket!" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "Kopiert plugins med språket %(language)s til %(placeholder)s" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" -msgstr "" -"%(plugin_name)s plugin redigert på posisjon %(position)s i %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgstr "%(plugin_name)s plugin redigert på posisjon %(position)s i %(placeholder)s" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Plugins ble flyttet" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." -msgstr "" -"%(plugin_name)s plugin på posisjon %(position)s i %(placeholder)s ble " -"slettet." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." +msgstr "%(plugin_name)s plugin på posisjon %(position)s i %(placeholder)s ble slettet." -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Siderettigheter" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Bruker og grupperettigheter" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Kontroll av siderettigheter" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Brukerdetaljer" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Grupper" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Passord" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Kopier rettigheter" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Kopier moderering" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Arv mal med nærmeste stamfar" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Oversikt" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Indekser og tabeller:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Komplett innholdsfortegnelse" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "lister alle seksjoner ok underseksjoner" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Søkeside" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "søk i denne dokumentasjonen" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Global modulindeks" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "hurtigtilgang til alle moduler" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Generell indeks" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "alle funksjoner, klasser, vilkår" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Indeks" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Komplett indeks på én side" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Indekser sider etter bokstav" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "kan være stor" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Navigasjon" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Innholdsfortegnelse" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Forrige emne" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "forrige kapittel" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Neste emne" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "neste kapittel" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Denne side" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Vis kilde" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Hurtigsøk" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Gå" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "Skriv inn søkeord eller en modul, klasse eller funksjon navn." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "Om disse dokumentene" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Søk" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Kopirettigeter" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Utgått" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "søk" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Søkeresultater" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "Søket ditt ga ingen resultater." - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" -msgstr "Velg et gyldig nettsted" +msgstr "" -#: forms/fields.py:19 +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "Velg en gyldig side" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "Legg til en side til" @@ -488,46 +333,44 @@ msgstr "Legg til en side til" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "språk" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "posisjon" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "opprettelsesdsato" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 -#, fuzzy +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" -msgstr "slot" +msgstr "" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "plugin_navn" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" msgstr "tittel" #: migrations/0001_initial.py:28 -#, fuzzy msgid "path" -msgstr "linje" +msgstr "" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "slug" @@ -535,15 +378,15 @@ msgstr "slug" msgid "everybody" msgstr "alle" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "kan redigere" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "gruppe" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "kan publisere" @@ -565,7 +408,7 @@ msgid "navigation extenders" msgstr "navigasjonsutvidere" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "har adresseoverskriving" @@ -581,327 +424,321 @@ msgstr "forfatter" msgid "reverse url id" msgstr "revers adresse id" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "krever innlogging" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "soft root" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "slutt publiseringsdato" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "template" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "publiseringsdate" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "i navigasjon" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "applikasjon" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "videresend" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "stikkord" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "beskrivelse" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "Denne siden" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Side og barn (like under)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Side og barn (like under)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Undernivå av side" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Side og undernivå" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Side" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Bruker" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Moderer side" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 -#, fuzzy +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" -msgstr "Moderer barn" +msgstr "" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "Moderer undernivå" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "SideModerator" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "opprettet" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "endret" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "slett rekv." -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "flytt rekv." -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "publiser rekv." -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "upubliser rekv." -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "godkjent" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "Moderatorstatus for side" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "Sidemoderator nivå" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "req. app." -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "slett" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "app. par." -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "opprettet av" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "endret av" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." -msgstr "" -"Når sideb skal gjøres offentlig. Status må være \"Publisert\" for at siden " -"skal vises." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." +msgstr "Når sideb skal gjøres offentlig. Status må være \"Publisert\" for at siden skal vises." -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "Når siden utløper. La stå tom for aldri." -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Alle undernivå vil ikke vises i navigasjonen" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" -msgstr "" -"En unik identifikaror sum brukes med page_url templatetag for å linke til en " -"side" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" +msgstr "En unik identifikaror sum brukes med page_url templatetag for å linke til en side" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" -msgstr "tilkoblet meny" +msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "er poblisert" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "Template brukt for å rendre innholdet." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "Nettstedet siden er tilgjengelig på" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "nettsted" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "modererings status" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Overstyr hva som vises i menyen" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "sider" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "Siden ble kopiert." -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "standard" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "kan legge til" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "kan slette" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "kan endre avanserte instillinger" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "kan endre rettigheter" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "på sidenivå" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "kan flytte" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "kan moderere" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "kan gjenopprette sider" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "kan gjenopprette hvilken som helst side" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "Hvis ingen er valgt har brukeren rettigheter til alle nettsteder." -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "nettsteder" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Globale siderettigheter" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Globale siderettigheter" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "Godkjenn på" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Siderettighet" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Bruker (side)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Brukere (side)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Brukergruppe (side)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Brukergrupper (side)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "bredde" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "overskriv tittelen i menyen" -#: models/titlemodels.py:15 -#, fuzzy +#: models/titlemodels.py:14 msgid "Path" -msgstr "Linje" +msgstr "" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "overskriv tittelen (html tittle tag)" @@ -909,21 +746,21 @@ msgstr "overskriv tittelen (html tittle tag)" msgid "File" msgstr "Fil" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "fil" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "bruk swf fil" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "høyde" @@ -931,7 +768,7 @@ msgstr "høyde" msgid "Missing flash plugin." msgstr "Mangler flash plugin." -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Google kart" @@ -987,15 +824,15 @@ msgstr "ruteplanlegger" msgid "Map" msgstr "Kart" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "Din andresse" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Kalkuler rute" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "Arv plugins fra side" @@ -1004,44 +841,39 @@ msgid "Language or Page must be filled out" msgstr "Språk eller side må være fyllt inn" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" -msgstr "" -"Velg en side som skal inkludere sine plugins inn i denne plassholderen, " -"tomme vil velge denne siden" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" +msgstr "Velg en side som skal inkludere sine plugins inn i denne plassholderen, tomme vil velge denne siden" #: plugins/inherit/models.py:11 -#, fuzzy msgid "Optional: the language of the plugins you want" -msgstr "Valgfritt: språken på pluginene du vil velge" +msgstr "" #: plugins/link/cms_plugins.py:12 msgid "Link" msgstr "Link" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "navn" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "link" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "En lenke til en side har prioritet over en tekstlink." -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "mail til" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "En epost hat prioritet oven en tekstlenke" @@ -1049,40 +881,40 @@ msgstr "En epost hat prioritet oven en tekstlenke" msgid "Picture" msgstr "Bilde" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "venstre" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "høyre" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "bilde" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "hvis til stede vil bildet være klikkbart" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "alternativ tekst" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "tekstbeskrivelse av bildet" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "lang beskrivelse" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "tilleggsbeskrivelse av bildet" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "side" @@ -1101,24 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " -msgstr "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgstr "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "Snippets" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "Teaser" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "Hvis til stede vil bildet være klikkbart" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "Hvis til stede vil bildet være klikkbart" @@ -1130,7 +960,7 @@ msgstr "mer" msgid "Text" msgstr "Tekst" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "innhold" @@ -1185,9 +1015,8 @@ msgid "Twitter" msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "twitterbruker" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1210,15 +1039,11 @@ msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "Hvis angitt, hintet ev vist som en link til din Twitterprofil" #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "bruker" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1229,92 +1054,84 @@ msgstr "Video" msgid "Color Settings" msgstr "Fargeinstillinger" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "videofil" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "bruk .flv fil eller h264 codet video fil" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "videoadresse" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" -msgstr "" -"vimeo elker youtube video adresse. Eksempel: http://www.youtube.com/watch?" -"v=YFa59lK-kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" +msgstr "vimeo elker youtube video adresse. Eksempel: http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "forhåndsvisningsbilde" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "spill av automatisk" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "gjemm automatisk" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "fullskjerm" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "loop" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "bakgrunnsfarge" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "Hexadesimal, f.eks ff00cc" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "tekstfarge" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "søkelinje farge" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "søkelinje farge" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "lastelinje farge" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "ut av knapp farge" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "over knapp farge" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "markeringsfarge for knapp" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" -msgstr "" -"Mangler flash plugin. Last ned her" +msgid "Missing flash plugin. Download here" +msgstr "Mangler flash plugin. Last ned her" #: templates/admin/page_submit_line.html:3 #: templates/admin/cms/page/change_form.html:273 @@ -1341,13 +1158,13 @@ msgid "Save and continue editing" msgstr "Lagre of fortsett å redigere" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." -msgstr "" -"Siden %(page)s kan behøve godkjenning av deg." +msgid "Page %(page)s may require approvement by you." +msgstr "Siden %(page)s kan behøve godkjenning av deg." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Siste endringer" @@ -1356,11 +1173,18 @@ msgstr "Siste endringer" msgid "Log in to administration here." msgstr "Logg inn til administreringen her here." +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Brukernavn" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Passord" @@ -1445,12 +1269,8 @@ msgstr "Side nivåer" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." -msgstr "" -"Denne diden må modereres på nivå %(moderation_level)s, post en beskjed for " -"moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." +msgstr "Denne diden må modereres på nivå %(moderation_level)s, post en beskjed for moderator." #: templates/admin/cms/page/change_form.html:185 msgid "Request approvemet" @@ -1461,9 +1281,8 @@ msgid "List of pages" msgstr "Liste over sider" #: templates/admin/cms/page/change_list.html:56 -#, fuzzy msgid "Successfully moved" -msgstr "Flyttet" +msgstr "" #: templates/admin/cms/page/change_list.html:61 msgid "An error occured. Please reload the page" @@ -1533,8 +1352,8 @@ msgid "edit this page" msgstr "rediger denne siden" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "rediger" @@ -1590,7 +1409,7 @@ msgid "add" msgstr "legg til" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "Godkjenn direkte" @@ -1605,6 +1424,7 @@ msgid "Unpublish" msgstr "Upubliser" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Publiser" @@ -1684,8 +1504,7 @@ msgstr "Gjenopprett slettede %(verbose_name)s" #: templates/admin/cms/page/recover_form.html:24 msgid "Press the save button below to recover this version of the object." -msgstr "" -"Trykk på lagreknappen under for å gjenopprette denne versjonen av objektet." +msgstr "Trykk på lagreknappen under for å gjenopprette denne versjonen av objektet." #: templates/admin/cms/page/revision_form.html:11 #, python-format @@ -1694,8 +1513,7 @@ msgstr "Tilmakestill %(verbose_name)s" #: templates/admin/cms/page/revision_form.html:24 msgid "Press the save button below to revert to this version of the object." -msgstr "" -"Trykk på save knappen for å tilbakestille til denne versjonen av objektet." +msgstr "Trykk på save knappen for å tilbakestille til denne versjonen av objektet." #: templates/admin/cms/page/dialog/copy.html:4 msgid "Copy options" @@ -1707,7 +1525,7 @@ msgstr "Velg kopieringsalternativer" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:7 msgid "Generic" -msgstr "Genersik" +msgstr "" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:15 #: templates/cms/toolbar/add_plugins.html:6 @@ -1736,150 +1554,224 @@ msgstr "Ingen plugins. Legg til en plugin til denne plassholderen." #: templates/cms/toolbar/add_plugins.html:10 msgid "Available plugins" -msgstr "Tilgjengelige plugins" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "Flytt til %(name)s" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "Er du sikker på at du vil slette denne pluginen?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "Redigeringsmodus" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "Status" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "Brukernavn" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "logg inn" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "Template" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "flytt" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "Flytt/legg til sider" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "legg till underside" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "Legg til underside" -#: templates/cms/toolbar/toolbar.html:104 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" -msgstr "legg til søsken" +msgstr "" -#: templates/cms/toolbar/toolbar.html:104 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" -msgstr "Legg til søsken" +msgstr "" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "Slett side" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "Sideadministrasjon" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "Sideinstillinger" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "historie" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "is historie" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "Logg ut" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "Lås" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "Lukk" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "opp" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "ned" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "Innstillinger" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "Slett pluging" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "Slå av sidemoderering" -#: templatetags/cms_admin.py:66 -#, fuzzy +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" -msgstr "Slå av moderering av barn" +msgstr "" -#: templatetags/cms_admin.py:67 -#, fuzzy +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" -msgstr "Så av moderering av alle etterkommere" +msgstr "" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" -msgstr "Side ikke funnet på %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"Ett templatetag kunne ikke finne siden med søkeargumenter `%(page_lookup)s\n" -"`. Adressen for forespørselen var: http://%(host)s%(path)s" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "forelder først" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "godkjenn" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "CMS - Siden %s må godkjennes" @@ -1892,8 +1784,8 @@ msgstr "CMS - din brukerkonto ble opprettet." msgid "CMS - your user account was changed." msgstr "CMS - din brukerkonto ble endret" -#~ msgid "menu login required" -#~ msgstr "meny krever innlogging" +#~ msgid "fgcolor" +#~ msgstr "" -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "bare vis denne siden i menyen hvis brukeren er innlogget" +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/no/LC_MESSAGES/djangojs.mo b/cms/locale/no/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..444b44ceeed1fffffb5fbb24fca914a65240ea1d GIT binary patch literal 893 zcmbVK-EPw`7!5FlluNF;__#pYG~6T|qEptcEv1{LwNR#xDmT#~NWhz2kW(c?j25^CRVXeIw{fS7fW7&LvlloThokRVv8w znWanVGF>^cd?i&%E)!I86c^H1*S(no{g1X6Qsl{7#S5|X|BQ*qg~L>tv{dF*Dpl8; z7`+s8$4(OVS{N&}iYZxQdd=pA_0L49jbme*%7i_uQp=_~rp&q0#zBzcYSpYU*F})X zmDIszXCSSug!Lycr)*#ZcVK4Exf3xp!zf~5lZ7n`TX7T4(=bFMI}4Uc(}Q7)Cm27R!%5zUzHfriT5rjb1v0E{hP)L*EydavHeY7J;Op6HdJ$+;A>;r zpGo)Y^q7?PCwXOf&W^MxEE0HigtpT>s6PO1XIs(34n;e@H#C$$O7h}D7%Hzn5qEWB zC36xgfxy;ksxTv=nDZ1VD-(o^>o1Vf%>=*6=, YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-11 02:03+0200\n" -"PO-Revision-Date: 2010-05-11 01:06-0000\n" -"Last-Translator: Øyvind Saltvik \n" -"Language-Team: Norwagian \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Norwegian Bokmal\n" +"Language: no\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 msgid "Are you sure you want to change the %(field_name)s without saving the page first?" @@ -25,8 +26,6 @@ msgid "" "Not all plugins are saved. Are you sure you want to save the page?\n" "All unsaved plugin content will tried to save." msgstr "" -"Alle plugins er lagret. Er du sikker på et du vil lagre siden?\n" -"Alle ulagrede plugins innhold vil bli forsøkt lagret." #: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" @@ -35,4 +34,3 @@ msgstr "Er du sikker på at du vil endre tabs uten å lagre siden først" #: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Er du sikker på at du vil slette denne pluginen?" - diff --git a/cms/locale/pl/LC_MESSAGES/django.mo b/cms/locale/pl/LC_MESSAGES/django.mo index a87cce6f029ede832bdff35312292f8b3d9d56fb..d1b407ba5606bccf14a4a78c958b6b38347745c6 100644 GIT binary patch literal 26497 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 delta 11318 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 diff --git a/cms/locale/pl/LC_MESSAGES/django.po b/cms/locale/pl/LC_MESSAGES/django.po index 82102a4aa4c..565086e698f 100644 --- a/cms/locale/pl/LC_MESSAGES/django.po +++ b/cms/locale/pl/LC_MESSAGES/django.po @@ -5,489 +5,363 @@ # msgid "" msgstr "" -"Project-Id-Version: django-cms 2.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:47+0100\n" -"PO-Revision-Date: 2009-11-05 18:00+0100\n" -"Last-Translator: Robert \n" -"Language-Team: Gerard Swiderski - gerard5, Maciej Wiśniowski - pigletto\n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:39+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Country: POLAND\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Poedit-Language: Polish\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" -#: plugin_base.py:99 +#: plugin_base.py:100 msgid "Advanced options" msgstr "Ustawienia zaawansowane" -#: admin/forms.py:25 +#: admin/forms.py:52 msgid "Title" msgstr "Tytuł" -#: admin/forms.py:26 +#: admin/forms.py:53 msgid "The default title" msgstr "Domyślny tytuł" -#: admin/forms.py:27 +#: admin/forms.py:54 msgid "Slug" msgstr "Skrót" -#: admin/forms.py:28 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "Fragment tytułu, który jest używany w adresie URL" -#: admin/forms.py:29 +#: admin/forms.py:56 msgid "Language" msgstr "Język" -#: admin/forms.py:30 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "Aktualny język tłumaczenia treści." -#: admin/forms.py:73 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Inna strona z takim skrótem adresu już istnieje." -#: admin/forms.py:93 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Tytuł menu" -#: admin/forms.py:94 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Nadpisz nazwę wyświetlaną w menu" -#: admin/forms.py:95 +#: admin/forms.py:130 msgid "Page Title" msgstr "Tytuł strony" -#: admin/forms.py:96 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "Nadpisuje to co jest wyświetlane u góry przeglądarki lub w jej zakładkach" -#: admin/forms.py:97 +#: admin/forms.py:132 msgid "Application" msgstr "Aplikacja" -#: admin/forms.py:99 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Podepnij aplikację do tej strony" -#: admin/forms.py:100 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Nadpisz URL" -#: admin/forms.py:101 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "Pozostaw to pole puste jeśli ma zostać użyta standardowa ścieżka" -#: admin/forms.py:107 +#: admin/forms.py:142 msgid "Redirect" msgstr "Przekierowanie" -#: admin/forms.py:108 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Przekierowuje do tego adresu URL." -#: admin/forms.py:110 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "Opis strony używany niekiedy przez wyszukiwarki." -#: admin/forms.py:112 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "Lista słów oddzielonych przecinkami używana czasem przez wyszukiwarki." -#: admin/forms.py:120 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Inna strona z takim samym odwrotnym adresem url już istnieje." -#: admin/forms.py:127 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "Nieprawidłowy URL. Użyj formatu /moj/url." -#: admin/forms.py:138 admin/forms.py:139 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "użytkownik" -#: admin/forms.py:171 +#: admin/forms.py:215 msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." msgstr "Dodanie praw do strony wymaga dostępu do ich dzieci lub potomków, inaczej dodana strona nie może zostać zmieniona przez jego twórcę." -#: admin/forms.py:174 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "Dodanie praw do strony wymaga także uprawnień do ich edycji." -#: admin/forms.py:201 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Proszę najpierw wybrać użytkownika lub grupę." -#: admin/forms.py:208 admin/forms.py:215 admin/forms.py:219 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 -#: templates/admin/cms/page/plugin_change_form.html:69 +#: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Dodaj" -#: admin/forms.py:209 admin/forms.py:216 admin/forms.py:220 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Zmień" -#: admin/forms.py:210 admin/forms.py:217 admin/forms.py:221 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Usuń" -#: admin/forms.py:211 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Odzyskaj (dowolne) strony" -#: admin/forms.py:274 +#: admin/forms.py:295 msgid "Notify user" msgstr "Powiadom użytkownika" -#: admin/forms.py:275 +#: admin/forms.py:296 msgid "Send email notification to user about username or password change. Requires user email." msgstr "Wyślij użytkownikowi email z powiadomieniem o zmianie loginu lub hasła. Wymaga emaila użytkownika." -#: admin/forms.py:295 +#: admin/forms.py:316 msgid "New password" msgstr "Nowe hasło" -#: admin/forms.py:297 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Potwierdź hasło" -#: admin/forms.py:316 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "Powiadomienie email'em wymaga podania poprawnego adresu poczty elektronicznej." -#: admin/forms.py:318 +#: admin/forms.py:339 msgid "The permission to add new pages requires the permission to change pages!" msgstr "Uprawnienie dodawania nowych stron wymaga uprawnienia do ich modyfikacji!" -#: admin/forms.py:320 +#: admin/forms.py:341 msgid "The permission to add new users requires the permission to change users!" msgstr "Uprawnienie dodawania nowych użytkowników wymaga uprawnienia do modyfikacji ich kont." -#: admin/forms.py:322 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "Aby dodać uprawnienia musisz także móc je edytować!" -#: admin/pageadmin.py:111 admin/pageadmin.py:127 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Ukryte" -#: admin/pageadmin.py:122 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Ustawienia podstawowe" -#: admin/pageadmin.py:125 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "Uwaga: gdy zmienione zostanie zaznaczenie wybranego elementu strona zostanie automatycznie przeładowana, aby nie utracić danych najpierw zapisz." -#: admin/pageadmin.py:131 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Ustawienia zaawansowane" -#: admin/pageadmin.py:140 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Ustawienia SEO" -#: admin/pageadmin.py:463 +#: admin/pageadmin.py:504 msgid "higher" msgstr "wyższy" -#: admin/pageadmin.py:629 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Błąd bazy danych" -#: admin/pageadmin.py:714 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:72 models/permissionmodels.py:68 -#: models/pluginmodel.py:38 models/titlemodels.py:22 -#: plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "stronę" -#: admin/pageadmin.py:837 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "Strona została pomyślnie zatwierdzona." -#: admin/pageadmin.py:891 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "Obiekt %(name)s o kluczu głównym %(key)r nie istnieje." -#: admin/pageadmin.py:894 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Jest dostępne tylko jedno tłumaczenie dla tej strony" -#: admin/pageadmin.py:909 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "Tytuł i pluginy dla języka %(language)s zostały usunięte" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Czy na pewno?" -#: admin/pageadmin.py:994 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "Brak zezwolenia na publikację tej strony" -#: admin/pageadmin.py:1012 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "Brak zezwolenia na zmianę statusu in_navigation dla tej strony" -#: admin/pageadmin.py:1047 admin/pageadmin.py:1081 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "Brak zezwolenia na zmianę tej strony" -#: admin/pageadmin.py:1051 admin/pageadmin.py:1083 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "Język musi być ustawiony na jeden z dostępnych!" -#: admin/pageadmin.py:1063 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "Plugin %(plugin_name)s został dodany do %(placeholder)s" -#: admin/pageadmin.py:1085 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "Wybrany język musi być inny, niż ten z którego go skopiowano!" -#: admin/pageadmin.py:1131 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "Przekopiowano pluginy %(language)s do %(placeholder)s" -#: admin/pageadmin.py:1204 +#: admin/pageadmin.py:1260 #, python-format msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "Plugin %(plugin_name)s został zmieniony na pozycji %(position)s w %(placeholder)s" -#: admin/pageadmin.py:1259 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Plugin'y zostały przeniesione" -#: admin/pageadmin.py:1281 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "Plugin %(plugin_name)s na pozycji %(position)s w %(placeholder)s został usunięty." -#: admin/permissionadmin.py:112 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Uprawnienia strony" -#: admin/permissionadmin.py:113 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Uprawnienia grup i użytkowników" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Zarządzanie prawami dostępu do stron" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Szczegóły konta użytkownika" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Grupy" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:855 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Hasło" -#: admin/widgets.py:58 -msgid "Add Another" -msgstr "Dodaj kolejny" - -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Uprawnienia do kopiowania" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Kopiuj moderację" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Wykorzystaj ten sam szablon co strona nadrzędna" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Przegląd" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Indeksy i tabele:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Pełny spis treści" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "wyświetla wszystkie sekcje i podsekcje" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Szukaj Strony" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "szukaj w tej dokumentacji" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Globalny Spis Modułów" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "szybki dostęp do wszystkich modułów" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Spis Ogólny" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "wszystkie funkcje, klasy i terminy" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Indeks" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Pełny indeks na jednej stronie" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Indeksuje strony alfabetycznie" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "może być wielki" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Menu" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Spis treści" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Poprzedni temat" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "poprzedni rozdział" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Następny temat" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "następny rozdział" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Tylko tę stronę" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Pokaż źródło" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Szybkie wyszukiwanie" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Wyszukaj" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "Wpisz kryteria wyszukiwania albo nazwę modułu, klasy lub funkcji." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "O tych dokumentach" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Szukaj" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Copyright" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Przestarzały" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "szukaj" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Wyniki wyszukiwania" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "Brak elementów spełniających podane kryteria wyszukiwania." +#: forms/fields.py:19 +msgid "Select a valid site" +msgstr "" + +#: forms/fields.py:20 +msgid "Select a valid page" +msgstr "" + +#: forms/widgets.py:173 +msgid "Add Another" +msgstr "Dodaj kolejny" #: migrations/0001_initial.py:12 migrations/0001_initial.py:24 #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:42 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "Język" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:40 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "pozycja" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:44 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "data utworzenia" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/pluginmodel.py:41 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "slot" -#: migrations/0001_initial.py:18 models/pluginmodel.py:43 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "nazwa_wtyczki" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 -#: plugins/twitter/models.py:6 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 +#: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" msgstr "tytuł" @@ -496,7 +370,7 @@ msgstr "tytuł" msgid "path" msgstr "ścieżka" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "skrót" @@ -504,15 +378,15 @@ msgstr "skrót" msgid "everybody" msgstr "każdy" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "może edytować" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "grupa" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "może opublikować" @@ -529,12 +403,12 @@ msgstr "może zmienić \"soft-root\"" msgid "status" msgstr "status" -#: migrations/0001_initial.py:53 models/pagemodel.py:51 +#: migrations/0001_initial.py:53 msgid "navigation extenders" msgstr "rozszerzenia menu nawigacyjnego" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "Czy ma zastąpić url?" @@ -550,299 +424,321 @@ msgstr "autor" msgid "reverse url id" msgstr "odwrotne id adresu url" -#: migrations/0001_initial.py:59 models/pagemodel.py:64 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "trzeba być zalogowanym" -#: migrations/0001_initial.py:60 models/pagemodel.py:49 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "softroot" -#: migrations/0001_initial.py:63 models/pagemodel.py:47 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "czas zakończenia publikacji strony" -#: migrations/0001_initial.py:64 models/pagemodel.py:54 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "szablon" -#: migrations/0001_initial.py:66 models/pagemodel.py:46 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "data publikacji" -#: migrations/0001_initial.py:67 models/pagemodel.py:48 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "w menu" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "aplikacja" -#: migrations/0006_apphook.py:65 models/pagemodel.py:50 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "identyfikator storny" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "przekierowanie" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "słowa kluczowe" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "Opis" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "Bieżąca strona" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Strony podrzędne (bezpośrednio)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Bieżąca strona i jej podrzędne (bezpośrednio)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Wszystkie strony podrzędne" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Bieżąca strona i wszystkie jej podrzędne" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Strona" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Użytkownik" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Moderacja strony" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "Moderacja strony podrzędnej" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "Moderacja stron podrzędnych" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "ModeratorStrony" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "utworzone" -#: models/moderatormodels.py:98 models/pagemodel.py:33 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "zmienione" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "do usunięcia" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "do przeniesienia" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "do publikacji" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "do cofnięcia publikacji" -#: models/moderatormodels.py:103 models/pagemodel.py:36 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "zatwierdzone" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "Status moderatora strony" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "Statusy moderatora strony" -#: models/pagemodel.py:34 +#: models/pagemodel.py:43 msgid "req. app." msgstr "do zatwierdzenia" -#: models/pagemodel.py:35 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:885 -#: templates/cms/toolbar/toolbar.html:919 utils/moderator.py:91 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "usuń" -#: models/pagemodel.py:37 +#: models/pagemodel.py:46 msgid "app. par." msgstr "do zatwierdzenia el. nadrzędnych" -#: models/pagemodel.py:42 +#: models/pagemodel.py:50 +msgid "for logged in users only" +msgstr "" + +#: models/pagemodel.py:51 +msgid "for anonymous users only" +msgstr "" + +#: models/pagemodel.py:59 msgid "created by" msgstr "utworzone przez" -#: models/pagemodel.py:43 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "zmienione przez" -#: models/pagemodel.py:46 +#: models/pagemodel.py:64 msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "Aby strona była publicznie widoczna w internecie musi zostać \"opublikowana\". W tym celu ustaw status \"opublikowano\"." -#: models/pagemodel.py:47 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "Czas kiedy strona ma przestać być publikowana. Pozostaw to pole puste, gdy strona zawsze ma być publikowana." -#: models/pagemodel.py:49 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Wszyscy przodkowie nie będą wyświetlani w menu nawigacyjnym" -#: models/pagemodel.py:50 +#: models/pagemodel.py:68 msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "Unikalny identyfikator używany przez templatetag page_url do tworzenia odnośnika do tej strony" -#: models/pagemodel.py:52 +#: models/pagemodel.py:69 +msgid "attached menu" +msgstr "" + +#: models/pagemodel.py:70 msgid "is published" msgstr "czy opublikowany" -#: models/pagemodel.py:54 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "Szablon, który będzie użyty do renderowania treści." -#: models/pagemodel.py:55 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "Witryna w której ta strona jest dostępna." -#: models/pagemodel.py:55 +#: models/pagemodel.py:73 msgid "site" msgstr "witryna" -#: models/pagemodel.py:57 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "Status moderatora" -#: models/pagemodel.py:65 -msgid "menu login required" -msgstr "menu: trzeba być zalogowanym" +#: models/pagemodel.py:83 +msgid "menu visibility" +msgstr "" -#: models/pagemodel.py:65 -msgid "only show this page in the menu if the user is logged in" -msgstr "pokazuj tą stronę w menu tylko jeśli użytkownik jest zalogowany" +#: models/pagemodel.py:83 +msgid "limit when this page is visible in the menu" +msgstr "" -#: models/pagemodel.py:73 +#: models/pagemodel.py:100 msgid "pages" msgstr "strony" -#: models/pagemodel.py:179 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "Strona została skopiowana." -#: models/pagemodel.py:502 +#: models/pagemodel.py:712 msgid "default" msgstr "domyślny" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "może dodawać" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "może usuwać" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "może zmieniać ustawienia zaawansowane" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "może zmieniać uprawnienia" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "na poziomie strony" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "może przenosić" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "może moderować" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "może odzyskiwać strony" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "może odzyskać każdą usuniętą stronę" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "Jeśli niczego nie zaznaczono użytkownicy mają uprawnienia do wszystkich witryn." -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "witryny" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Globalne prawo dostępu do stron" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Globalne prawa dostępu do stron" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "Uprawnienia dla" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Prawo dostępu do stron" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Użytkownik (strona)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Użytkownicy (strona)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Grupa użytkowników (strona)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Grupy użytkowników (strona)" -#: models/titlemodels.py:13 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 +msgid "width" +msgstr "szerokość" + +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "nadpisz tytuł z menu" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "ścieżka" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "nadpisz tytuł (znacznik title w HTML)" @@ -850,34 +746,29 @@ msgstr "nadpisz tytuł (znacznik title w HTML)" msgid "File" msgstr "Plik" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "plik" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "użyj pliku swf" -#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:16 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 #: plugins/video/models.py:14 -msgid "width" -msgstr "szerokość" - -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 msgid "height" msgstr "wysokość" -#: plugins/flash/templates/cms/plugins/flash.html:3 +#: plugins/flash/templates/cms/plugins/flash.html:2 msgid "Missing flash plugin." msgstr "Brak pluginu dla Flash'a." -#: plugins/googlemap/cms_plugins.py:9 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Mapa Google" @@ -933,15 +824,15 @@ msgstr "planowanie trasy" msgid "Map" msgstr "Mapa" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:73 -msgid "Your address" -msgstr "Twój adres" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:76 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Oblicz trasę" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "Odziedzicz pluginy ze strony" @@ -957,32 +848,32 @@ msgstr "Wybierz stronę z której pluginy mają zostać umierzone w tym placeho msgid "Optional: the language of the plugins you want" msgstr "Opcjonalne: język dla wybranych pluginów" -#: plugins/link/cms_plugins.py:11 +#: plugins/link/cms_plugins.py:12 msgid "Link" msgstr "Odnośnik" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "nazwa" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "odnośnik" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "Odnośnik do strony ma priorytet w stosunku do odnośnika tekstowego." -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "wyślij do" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "Adres email ma priorytet w odniesieniu do odnośnika tekstowego" @@ -990,40 +881,40 @@ msgstr "Adres email ma priorytet w odniesieniu do odnośnika tekstowego" msgid "Picture" msgstr "Obrazek" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "do lewej" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "do prawej" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "obrazek" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "Jeśli nie jest pusty, obrazek będzie klikalny" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "tekst alternatywny" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "tekstowy opis obrazka" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "długi opis" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "dodatkowy opis obrazka" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "strona" @@ -1049,15 +940,15 @@ msgstr "Podaj szablon (np. \"snippets/plugin_xy.html\"), który będzie renderow msgid "Snippets" msgstr "Fragment" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "Tekst zachęty" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "Jeśli nie puste, obrazek będzie renderowany." -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "Jeśli nie puste, obrazek będzie renderowany." @@ -1069,7 +960,7 @@ msgstr "więcej" msgid "Text" msgstr "Tekst" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "treść" @@ -1119,19 +1010,23 @@ msgstr "Dostępne Plugin'y" msgid "Insert plugin" msgstr "wstaw plugin" -#: plugins/twitter/cms_plugins.py:8 +#: plugins/twitter/cms_plugins.py:10 msgid "Twitter" msgstr "Twitter" +#: plugins/twitter/cms_plugins.py:31 +msgid "Twitter Search" +msgstr "" + #: plugins/twitter/models.py:7 msgid "twitter user" msgstr "użytkownik na Twitterze" -#: plugins/twitter/models.py:8 +#: plugins/twitter/models.py:8 plugins/twitter/models.py:17 msgid "count" msgstr "ilość" -#: plugins/twitter/models.py:8 +#: plugins/twitter/models.py:8 plugins/twitter/models.py:17 msgid "Number of entries to display" msgstr "Liczba wpisów do wyświetlenia" @@ -1143,6 +1038,14 @@ msgstr "podpowiedź dla odnośnika" msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "Jeśli podana, wskazówka jest wyświetlana jako link do twojego profilu w Twitterze." +#: plugins/twitter/models.py:16 +msgid "query" +msgstr "" + +#: plugins/twitter/models.py:16 +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" +msgstr "" + #: plugins/video/cms_plugins.py:10 msgid "Video" msgstr "Wideo" @@ -1151,79 +1054,78 @@ msgstr "Wideo" msgid "Color Settings" msgstr "Ustawienia kolorów" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "plik wideo" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "użyj pliku video w formacie flv lub h264" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "url pliku wideo" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "adres filmu na vimeo, bądź youtube np. http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "podgląd obrazka" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "auto odtwarzanie" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "auto ukrywanie" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "pełny ekran" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "w pętli" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "kolor tła" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "Szesnastkowy, np. ff00cc" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "kolor tekstu" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "kolor paska postępu" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "kolor tła paska postępu" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "kolor paska ładownia filmu" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "kolor przycisku" -#: plugins/video/models.py:29 -#, fuzzy +#: plugins/video/models.py:28 msgid "button over color" -msgstr "kolor przycisku (przy najechaniu kursorem)" +msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "kolor zaznaczonego przycisku" @@ -1233,7 +1135,7 @@ msgstr "Nie posiadasz zainstalowanego pluginu Adobe Flash Player. Możesz go pob #: templates/admin/page_submit_line.html:3 #: templates/admin/cms/page/change_form.html:273 -#: templates/admin/cms/page/plugin_change_form.html:111 +#: templates/admin/cms/page/plugin_change_form.html:112 msgid "Save" msgstr "Zapisz" @@ -1256,11 +1158,13 @@ msgid "Save and continue editing" msgstr "Zapisz i kontynuuj edycję" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format msgid "Page %(page)s may require approvement by you." msgstr "Strona %(page)s może wymagać zatwierdzenia przez ciebie." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Ostatnie zmiany" @@ -1269,11 +1173,18 @@ msgstr "Ostatnie zmiany" msgid "Log in to administration here." msgstr "zaloguj się do panelu administracyjnego tutaj." +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Użytkownik:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Hasło:" @@ -1285,7 +1196,7 @@ msgstr "Zmień stronę" #: templates/admin/cms/page/change_form.html:62 #: templates/admin/cms/page/change_list.html:8 -#: templates/admin/cms/page/plugin_change_form.html:66 +#: templates/admin/cms/page/plugin_change_form.html:67 #: templates/admin/cms/page/recover_form.html:14 #: templates/admin/cms/page/revision_form.html:6 msgid "Home" @@ -1336,7 +1247,7 @@ msgid "View on site" msgstr "Zobacz na stronie" #: templates/admin/cms/page/change_form.html:128 -#: templates/admin/cms/page/plugin_change_form.html:83 +#: templates/admin/cms/page/plugin_change_form.html:84 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Proszę poprawić poniższy błąd" @@ -1370,41 +1281,41 @@ msgstr "Prośba o zaakceptowanie." msgid "List of pages" msgstr "Lista stron" -#: templates/admin/cms/page/change_list.html:57 +#: templates/admin/cms/page/change_list.html:56 msgid "Successfully moved" msgstr "Przeniesiono." -#: templates/admin/cms/page/change_list.html:62 +#: templates/admin/cms/page/change_list.html:61 msgid "An error occured. Please reload the page" msgstr "Wystąpił błąd. Proszę przeładować stronę." -#: templates/admin/cms/page/change_list.html:83 +#: templates/admin/cms/page/change_list.html:82 #, python-format msgid "Recover deleted %(name)s" msgstr "Napraw usunięte %(name)s" -#: templates/admin/cms/page/change_list.html:86 +#: templates/admin/cms/page/change_list.html:85 #, python-format msgid "Add %(name)s" msgstr "Dodaj %(name)s" -#: templates/admin/cms/page/change_list.html:98 +#: templates/admin/cms/page/change_list.html:97 msgid "Pages on:" msgstr "Strony na" -#: templates/admin/cms/page/change_list.html:115 +#: templates/admin/cms/page/change_list.html:114 msgid "Filter:" msgstr "Filtr:" -#: templates/admin/cms/page/change_list.html:115 +#: templates/admin/cms/page/change_list.html:114 msgid "on" msgstr "aktywny" -#: templates/admin/cms/page/change_list.html:115 +#: templates/admin/cms/page/change_list.html:114 msgid "off" msgstr "nieaktywny" -#: templates/admin/cms/page/change_list.html:117 +#: templates/admin/cms/page/change_list.html:116 msgid "Filter" msgstr "Filtr" @@ -1442,8 +1353,8 @@ msgid "edit this page" msgstr "edytuj tą stronę" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:891 -#: templates/cms/toolbar/toolbar.html:912 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "edycja" @@ -1460,9 +1371,8 @@ msgid "insert inside" msgstr "wstaw wewnątrz" #: templates/admin/cms/page/menu_item.html:23 -#, fuzzy msgid "softroot" -msgstr "softroot" +msgstr "" #: templates/admin/cms/page/menu_item.html:23 msgid "home" @@ -1500,7 +1410,7 @@ msgid "add" msgstr "dodaj" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:864 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "Zatwierdź bezpośrednio" @@ -1515,6 +1425,7 @@ msgid "Unpublish" msgstr "Anuluj publikowanie" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Publikuj" @@ -1613,189 +1524,255 @@ msgstr "Opcje kopiowania" msgid "Choose copy options" msgstr "Wybierz opcje kopiowania" -#: templates/admin/cms/page/widgets/installed_plugins_inc.html:10 +#: templates/admin/cms/page/widgets/installed_plugins_inc.html:7 +msgid "Generic" +msgstr "" + +#: templates/admin/cms/page/widgets/installed_plugins_inc.html:15 #: templates/cms/toolbar/add_plugins.html:6 msgid "Add Plugin" msgstr "Dodaj Plugin" -#: templates/admin/cms/page/widgets/installed_plugins_inc.html:14 +#: templates/admin/cms/page/widgets/installed_plugins_inc.html:18 msgid "From Language" msgstr "Z języka" -#: templates/admin/cms/page/widgets/installed_plugins_inc.html:21 +#: templates/admin/cms/page/widgets/installed_plugins_inc.html:25 msgid "Copy Plugins" msgstr "Skopiuj plugin'y" -#: templates/admin/cms/page/widgets/plugin_editor.html:10 +#: templates/admin/cms/page/widgets/plugin_editor.html:12 msgid "You must save the page first to add plugins." msgstr "Musisz zapisać stronę przed dodaniem pluginów." -#: templates/admin/cms/page/widgets/plugin_editor.html:13 +#: templates/admin/cms/page/widgets/plugin_editor.html:15 msgid "No Plugin selected. Selected one on the left side" msgstr "Nie wybrano żadnego Plugin'a. Wybierz jeden z menu po lewej stronie" -#: templates/admin/cms/page/widgets/plugin_editor.html:15 +#: templates/admin/cms/page/widgets/plugin_editor.html:17 msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "Nie dodano jeszcze pluginów. Dodaj plugin dla tego slotu." -#: templates/cms/toolbar/toolbar.html:760 +#: templates/cms/toolbar/add_plugins.html:10 +msgid "Available plugins" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "Przenieś do %(name)s" -#: templates/cms/toolbar/toolbar.html:806 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "Czy na pewno chcesz usunąć ten plugin?" -#: templates/cms/toolbar/toolbar.html:835 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "Tryb edycji" -#: templates/cms/toolbar/toolbar.html:842 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "Status" -#: templates/cms/toolbar/toolbar.html:853 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "Użytkownik" -#: templates/cms/toolbar/toolbar.html:857 -#: templates/cms/toolbar/toolbar.html:858 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "zaloguj się" -#: templates/cms/toolbar/toolbar.html:869 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "Szablon" -#: templates/cms/toolbar/toolbar.html:880 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "przenieś" -#: templates/cms/toolbar/toolbar.html:880 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "Przenieś/dodaj strony" -#: templates/cms/toolbar/toolbar.html:882 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "Dodaj podstronę" -#: templates/cms/toolbar/toolbar.html:882 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "Dodaj podstronę" -#: templates/cms/toolbar/toolbar.html:883 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "dodaj stronę" -#: templates/cms/toolbar/toolbar.html:883 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "Dodaj stronę" -#: templates/cms/toolbar/toolbar.html:885 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "Usuń stronę" -#: templates/cms/toolbar/toolbar.html:891 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "Panel administracyjny" -#: templates/cms/toolbar/toolbar.html:893 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "Ustawienia strony" -#: templates/cms/toolbar/toolbar.html:895 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "Historia" -#: templates/cms/toolbar/toolbar.html:895 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "Pokaż historię" -#: templates/cms/toolbar/toolbar.html:901 -msgid "Lock" -msgstr "Zablokuj" - -#: templates/cms/toolbar/toolbar.html:901 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "Wyloguj" -#: templates/cms/toolbar/toolbar.html:903 +#: templates/cms/toolbar/toolbar.html:219 +msgid "Lock" +msgstr "Zablokuj" + +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "Zamknij" -#: templates/cms/toolbar/toolbar.html:914 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "przenieś wyżej" -#: templates/cms/toolbar/toolbar.html:915 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "przenieś niżej" -#: templates/cms/toolbar/toolbar.html:917 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "Ustawienia" -#: templates/cms/toolbar/toolbar.html:919 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "Usuń plugin" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "Wyłącz moderację dla strony" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "Wyłącz moderację dla dzieci strony" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "Wyłącz moderację dla potomków strony" -#: templatetags/cms_tags.py:401 templatetags/cms_tags.py:674 +#: templatetags/cms_tags.py:78 #, python-format -msgid "Reverse ID not found on %(domain)s" -msgstr "Odwrotny ID nie znaleziony w domenie %(domain)s" +msgid "Page not found on %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:402 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A page_id_url template tag didn't found a page with the reverse_id %(reverse_id)s\n" -"The url of the page was: http://%(host)s%(path)s" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" +"`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"Template tag page_id_url nie odnalazł strony o reverse_id: %(reverse_id)s\n" -"Url strony: http://%(host)s%(path)s" -#: templatetags/cms_tags.py:675 -#, python-format -msgid "" -"A show_placeholder_by_id template tag didn't found a page with the reverse_id %(reverse_id)s\n" -"The url of the page was: http://%(host)s%(path)s" +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" msgstr "" -"Template tag show_placeholder_by_id tag nie odnalazł strony o reverse_id %(reverse_id)s\n" -"Adres strony to: http://%(host)s%(path)s" -#: tests/util/menu_extender.py:7 -msgid "Sublevel" -msgstr "Poziom" +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" -#: tests/util/menu_extender.py:8 -msgid "Sublevel3" -msgstr "Poziom 3" +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" -#: tests/util/menu_extender.py:11 -msgid "Sublevel 2" -msgstr "Poziom 2" +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" -#: utils/moderator.py:84 +#: utils/moderator.py:83 msgid "parent first" msgstr "pierwszy rodzic" -#: utils/moderator.py:91 +#: utils/moderator.py:90 msgid "approve" msgstr "zaakceptowania" -#: utils/moderator.py:243 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "CMS - Strona %s wymaga zaakceptowania." @@ -1808,83 +1785,8 @@ msgstr "CMS - twoje konto użytkownika zostało utworzone." msgid "CMS - your user account was changed." msgstr "CMS - twoje konto użytkownika zostało zmienione." -#~ msgid "blank" -#~ msgstr "puste" - -#~ msgid "self" -#~ msgstr "własne" - -#~ msgid "parent" -#~ msgstr "rodzic" - -#~ msgid "window" -#~ msgstr "okno" - -#~ msgid "opaque" -#~ msgstr "nieprzezroczysty" - -#~ msgid "transparent" -#~ msgstr "przezroczyste" - -#~ msgid "click target" -#~ msgstr "element docelowy" - -#~ msgid "volume" -#~ msgstr "głośność" - -#~ msgid "in range <0, 100>" -#~ msgstr "w zakresie <0,100>" - #~ msgid "fgcolor" #~ msgstr "kolor tła" -#~ msgid "Hexadecimal, eg 13abec" -#~ msgstr "Szesnastkowy, np. fff000" - -#~ msgid "Twitter recent entries plugin" -#~ msgstr "Wtyczka: ostatnie wpisy z Twittera" - -#~ msgid "Revisions" -#~ msgstr "Rewizje" - #~ msgid "Wanted language has not been translated yet." #~ msgstr "Nie ma jeszcze tłumaczenia dla tego języka." - -#~ msgid "A programming error occurred - cannot find text editor widgets." -#~ msgstr "Wystąpił błąd programistyczny - nie można odnaleźć widgetów edytora tekstu." - -#~ msgid "Videoplayer" -#~ msgstr "Zobacz na stronie" - -#~ msgid "Can add page" -#~ msgstr "Zmień stronę" - -#~ msgid "Can change page" -#~ msgstr "Zmień stronę" - -#~ msgid "Can delete page" -#~ msgstr "Zmień stronę" - -#~ msgid "Can add page permission" -#~ msgstr "Prawo dostępu do stron" - -#~ msgid "Can change page permission" -#~ msgstr "Prawo dostępu do stron" - -#~ msgid "Can delete page permission" -#~ msgstr "Prawo dostępu do stron" - -#~ msgid "All pages" -#~ msgstr "Wszystkie strony" - -#~ msgid "This page and all childrens" -#~ msgstr "Tę stronę i wszystkie potomne" - -#~ msgid "The url that this page has instead. Starts with a \"/\"" -#~ msgstr "Zamienny adres url dla tej strony. Zaczyna się od \"/\"" - -#~ msgid "Default template" -#~ msgstr "Domyślny szablon" - -#~ msgid "Page could not been moved." -#~ msgstr "Strona nie może zostać przeniesiona." diff --git a/cms/locale/pl/LC_MESSAGES/djangojs.mo b/cms/locale/pl/LC_MESSAGES/djangojs.mo index 2973e0566642d70961ea8586cdf87de1ab781438..3adc62944c53ffccde837b2f7782690dee41b2af 100644 GIT binary patch delta 367 zcmX}l&r8EF6bJCMoeZld5l=FrCq=Vnn>q|*v{M;E=Z`T@dZ}CJGS;Oo?ZA`&f)YG> z@#s+yyz779-T%Rhc+*!wAAESBs!l`&{l8LFK?AsDUYP2C|C54!8iv;0dgQ zyn)aQ*Z})*{xT72L2pfYBZRy$$Con2D$Rl>#>~zAgMKy&p55lL z94DluLeV3QG*qM`8SW=ZteE43BI&2+#jcE;o|p*f^ajBwl%yLeM<|tYr9X^??NW)* zGNDyWtE>!Ri&FdOkhJ+kC?Q8=H%K_cW%|EYs<29RjZ*EJ^P6%Y1g=Hg%|fx;uiHL+ zk_I6s9Ueps``$tG#B1*1n(wDTmpiq z#}Yh9@k=O*cN;wU75o_91m7kR5ghpOe>?C0{>#jKsQkP*{c&mStwZZPagAsa6(S*u z^_pl9Z-@uPcVd&can5muq%G24#24a#zCV{8r%mdtInFvshx8?BN=lZ+D*i>b!g9eW z6wM{G{b~lR+>!|>$-NPPh zXpWX<*tCh32T=389p?MYuYrFv@V7QR-}A`Hj`*=C!r8w*ZwtJgz`M2dwa{4B(-QrY76hlIHQBJ9>-At_qj$L!NXic zbS9c&5HGg2H~*K(;7{mmqx5t(E3MBymG-xHt4~;0@km(Kq6;bV1L&$mnEu~RLuJzH zF*Ocb^-i-otCz3OE|=d=JAy-QCSzlVR4rd^3=_I^oWGy~Q(;hY7aEf>NQ9KoFeJ!sGrf)so;h+s9JpOR%6{q, YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: django-cms-2.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:37+0100\n" -"PO-Revision-Date: 2009-11-03 09:07+0100\n" -"Last-Translator: Maciej Wiśniowski \n" -"Language-Team: Gerard Swiderski - gerard5, Maciej Wiśniowski - pigletto\n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2;\n" -"X-Poedit-Language: Polish\n" -"X-Poedit-Country: POLAND\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" -msgstr "" -"Czy na pewno chcesz zmienić %(field_name)s nie zapisując wcześniej strony?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" +msgstr "Czy na pewno chcesz zmienić %(field_name)s nie zapisując wcześniej strony?" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -"Nie wszystkie pluginy zostały zapisane. Czy na pewno chcesz zapisać stronę? " -"Cała niezapisana treść pluginów zostanie utracona." -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "Czy na pewno chcesz zmienić zakładkę nie zapisując wcześniej strony?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Czy na pewno usunąć ten plugin?" diff --git a/cms/locale/pt/LC_MESSAGES/django.mo b/cms/locale/pt/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..9e91bdbeb912a21873915a67449537e0a7e63ce5 GIT binary patch literal 22623 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, YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: django-cms\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:54+0200\n" -"PO-Revision-Date: 2009-12-13 23:29+0100\n" -"Last-Translator: Pedro B. G. Costa \n" -"Language-Team: Ciberbit S.A. \n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:38+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Poedit-Language: Portuguese\n" -"X-Poedit-Country: PORTUGAL\n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Poedit-Language: English\n" "X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Opções avançadas" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Título" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "O título por defeito" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Slug" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "A parte do título que é usada na URL" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Língua" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "A língua actual dos campos de conteúdo." -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Já existe outra página com este slug." -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Título do Menu" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Sobrescreva o que será exibido no menu" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Título da página" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" -msgstr "" -"Sobrescreva o que será exibido no topo do seu navegador ou nos favoritos" +msgstr "Sobrescreva o que será exibido no topo do seu navegador ou nos favoritos" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Aplicação" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Associe aplicação para esta página." -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Sobrescreva URL" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "Deixe este campo em branco para usar o caminho padrão" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Redirecionar" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Redireciona para este URL" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "Uma descrição da página por vezes usada pelos motores de pesquisa." -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." -msgstr "" -"Uma lista de palavras-chave (separadas por vírgulas). Normalmente usadas por " -"mecanismos de pesquisa." +msgstr "Uma lista de palavras-chave (separadas por vírgulas). Normalmente usadas por mecanismos de pesquisa." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Já existe uma página com esta URL reversa." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "URL inválida, use o formato /minha/url" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "utilizador" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"A permissão para adicionar páginas requer também acesso aos filhos, ou " -"descendentes, caso contrário a página adicionada não poderá ser modificada " -"pelo seu criador." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "A permissão para adicionar páginas requer também acesso aos filhos, ou descendentes, caso contrário a página adicionada não poderá ser modificada pelo seu criador." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." -msgstr "" -"A permissão para adicionar páginas também requer permissão de edição de " -"páginas" +msgstr "A permissão para adicionar páginas também requer permissão de edição de páginas" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Por favor, selecione primeiro o utilizador ou grupo" -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Adicionar" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Modificar" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Excluir" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Recuperar (qualquer) página" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Notificar utilizador" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Enviar notificação por e-mail ao utilizador sobre modificação no nome de " -"utilizador ou senha. Requere o e-mail do utilizador" +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Enviar notificação por e-mail ao utilizador sobre modificação no nome de utilizador ou senha. Requere o e-mail do utilizador" -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Nova senha" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Nova confirmação da senha" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "Notificações de e-mail requerem um endereço de e-mail válido." -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" -msgstr "" -"A permissão para adicionar novas páginas requer a permissão para modificar " -"páginas!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" +msgstr "A permissão para adicionar novas páginas requer a permissão para modificar páginas!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" -msgstr "" -"A permissão para adicionar utilizadores requer a permissão para modificar " -"utilizadores!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" +msgstr "A permissão para adicionar utilizadores requer a permissão para modificar utilizadores!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "Para adicionar permissões você também precisa editá-las!" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Oculto" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Configurações Básicas" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "" -"Atenção: Esta página é recarregada se você gravar a selecção. Grave-a " -"primeiro." +msgstr "Atenção: Esta página é recarregada se você gravar a selecção. Grave-a primeiro." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Configurações Avançadas" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Configurações de SEO" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "mais alto" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Erro na base de dados" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "página" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "Página aprovada com sucesso." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "Não existe nenhum objecto de '%(name)s' com chave primária %(key)s" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Há apenas uma tradução para esta página" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "Foram excluídos título e plugins com a língua '%(language)s'" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Tem certeza?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "Você não tem permissão para publicar esta página" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" -msgstr "" -"Você não tem permissão para modificar o status de navegação desta página" +msgstr "Você não tem permissão para modificar o status de navegação desta página" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "Você não tem permissão para modificar esta página" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "A Língua deve ser definida para uma língua suportada pelo sistema!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "Plugin %(plugin_name)s foi adicionado a %(placeholder)s" -#: admin/pageadmin.py:1129 -#, fuzzy +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" -msgstr "A Língua deve ser definida para uma língua suportada pelo sistema!" +msgstr "" -#: admin/pageadmin.py:1139 -#, fuzzy, python-format +#: admin/pageadmin.py:1179 +#, python-format msgid "Copied %(language)s plugins to %(placeholder)s" -msgstr "Plugin %(plugin_name)s foi adicionado a %(placeholder)s" +msgstr "" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" -msgstr "" -"Plugin %(plugin_name)s editada na posição %(position)s em %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgstr "Plugin %(plugin_name)s editada na posição %(position)s em %(placeholder)s" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Plugin foi movido" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." -msgstr "" -"Plugin %(plugin_name)s na posicão %(position)s em %(placeholder)s foi " -"excluído." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." +msgstr "Plugin %(plugin_name)s na posicão %(position)s em %(placeholder)s foi excluído." -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Permissões de página" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Permissões de utilizador e grupo" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Gestão de permissões de página" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Detalhes do utilizador" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Grupos" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Senha" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Copiar permissões" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Copiar moderação" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Herdar o template do ancestral mais próximo" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Visão geral" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Índices e tabelas:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Tabela de Conteúdos completa" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "lista todas as secções e sub-secções" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Pesquisar Página" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "pesquisar nesta documentação" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Índice Global de Módulos" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "acesso rápido a todos os módulos" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Índice Geral" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "todas as funções, classes, termos" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Índice" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Índice completo numa página" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Indexar páginas por letra" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "pode ser grande" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Navegação" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Tabela de conteúdos" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Tópico anterior" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "capítulo anterior" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Próximo tópico" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "próximo capítulo" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Esta página" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Mostrar código-fonte" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Busca rápida" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Ir" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "" -"Entre termos para a pesquisa, ou o nome de um módulo, classe ou função." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "Sobre estes documentos" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Pesquisar" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Copyright" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Depreciado" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "pesquisar" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Pesquisar Resultados" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "A sua pesquisa não retornou nenhum resultado." - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "seleccionar esta página" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "Adicionar outro" @@ -499,34 +333,34 @@ msgstr "Adicionar outro" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "língua" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "posição" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "data de criação" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "vaga" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "nome do plugin" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -536,7 +370,7 @@ msgstr "título" msgid "path" msgstr "caminho" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "slug" @@ -544,15 +378,15 @@ msgstr "slug" msgid "everybody" msgstr "todos" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "pode editar" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "grupo" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "pode publicar" @@ -574,7 +408,7 @@ msgid "navigation extenders" msgstr "extensores de navegação" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "tem url sobrescrita" @@ -590,327 +424,321 @@ msgstr "autor" msgid "reverse url id" msgstr "id da url reversa" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "login requerido" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "raiz leve" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "data final de publicação" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "modelo" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "data de publicação" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "na navegação" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "aplicação" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "redirecionar" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "palavras-chave" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "descrição" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "Página actual" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Páginas-filho (imediatas)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Página e filhos (imediatos)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Páginas descendentes" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Página e descendentes" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Página" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Utilizador" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Moderar página" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "Moderar filhos" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "Moderar descendentes" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "Moderador de Página" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "criado" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "modificado" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "req. para excluir" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "req. para mover" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "req. para publicar" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "req. para despublicar" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "aprovado" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "Estado do moderador da página" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "Estados do moderador da página" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "req. app." -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "excluir" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "app. par." -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "criado por" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "modificado por" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." -msgstr "" -"Quando a página deve ir para o ar. Status deve ser \"Publicado\" para a " -"página ir para o ar." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." +msgstr "Quando a página deve ir para o ar. Status deve ser \"Publicado\" para a página ir para o ar." -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "Quando expirar a página. Deixe em branco para nunca expirar." -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Todos os ancestrais não serão exibidos na navegação" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" -msgstr "" -"Um identificador único que é usado com a templatetag page_url, para associar " -"a esta página" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" +msgstr "Um identificador único que é usado com a templatetag page_url, para associar a esta página" -#: models/pagemodel.py:58 -#, fuzzy +#: models/pagemodel.py:69 msgid "attached menu" -msgstr "flash menu" +msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "está publicado" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "O template usado para carregar o conteúdo." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "O site à qual a página está acessível." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "site" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "estado do moderador" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Sobrescreva o que será exibido no menu" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "páginas" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "Página copiada." -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "padrão" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "pode adicionar" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "pode excluir" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "pode modificar configurações avançadas" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "pode modificar permissões" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "a nível de página" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "pode mover" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "pode moderar" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "pode recuperar páginas" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "pode recuperar qualquer página excluída" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." -msgstr "" -"Se nenhum for selecionado, utilizador terá permissões dadas a todos os sites." +msgstr "Se nenhum for selecionado, utilizador terá permissões dadas a todos os sites." -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "sites" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Permissão global de página" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Permissões globais de página" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "Garantir a" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Permissão de página" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Utilizador (página)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Utilizadores (página)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Grupo de utilizador (página)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Grupos de utilizadores (página)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "largura" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "sobrescrever o título no menu" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "Caminho" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "sobrescrever o título (tag html 'title')" @@ -918,21 +746,21 @@ msgstr "sobrescrever o título (tag html 'title')" msgid "File" msgstr "Ficheiro" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "ficheiro" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "usar arquivo swf" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "altura" @@ -940,7 +768,7 @@ msgstr "altura" msgid "Missing flash plugin." msgstr "Falta o plugin do flash." -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Google Map" @@ -974,8 +802,7 @@ msgstr "latitude" #: plugins/googlemap/models.py:19 msgid "Use latitude & longitude to fine tune the map possiton." -msgstr "" -"Use latitude e longitude para ajustar precisamente a sua posição no mapa." +msgstr "Use latitude e longitude para ajustar precisamente a sua posição no mapa." #: plugins/googlemap/models.py:20 msgid "longitude" @@ -997,15 +824,15 @@ msgstr "planeamento de rota" msgid "Map" msgstr "Mapa" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "Seu endereço" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Calcular rota" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "" @@ -1014,9 +841,7 @@ msgid "Language or Page must be filled out" msgstr "" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "" #: plugins/inherit/models.py:11 @@ -1027,28 +852,28 @@ msgstr "" msgid "Link" msgstr "Link" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "nome" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "link" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "Um link para uma página tem prioridade sobre um link de texto" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "mailto" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "Um endereço de e-mail tem prioridade sobre um link de texto." @@ -1056,40 +881,40 @@ msgstr "Um endereço de e-mail tem prioridade sobre um link de texto." msgid "Picture" msgstr "Figura" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "esquerda" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "direita" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "image" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "se presente, a imagem será clicável" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "texto alternativo" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "descrição textual da imagem" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "descrição longa" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "descriçao complementar da imagem" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "lado" @@ -1108,25 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " -msgstr "" -"Coloque um template (ex.: \"snippets/plugin_xy.html\") que será renderizado." +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgstr "Coloque um template (ex.: \"snippets/plugin_xy.html\") que será renderizado." #: plugins/snippet/models.py:25 -#, fuzzy msgid "Snippets" -msgstr "Trecho" +msgstr "" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "Teaser" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "Se presente, a imagem será clicável" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "Se presente, a imagem será clicável." @@ -1138,7 +960,7 @@ msgstr "mais" msgid "Text" msgstr "Texto" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "corpo" @@ -1189,14 +1011,12 @@ msgid "Insert plugin" msgstr "Inserir plugin" #: plugins/twitter/cms_plugins.py:10 -#, fuzzy msgid "Twitter" -msgstr "Título" +msgstr "" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "utilizador twitter" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1219,15 +1039,11 @@ msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "Se dada, a dica será exibida como link para seu perfil no twitter." #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "utilizador" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1235,99 +1051,86 @@ msgid "Video" msgstr "Vídeo" #: plugins/video/cms_plugins.py:42 -#, fuzzy msgid "Color Settings" -msgstr "Configurações de SEO" +msgstr "" -#: plugins/video/models.py:10 -#, fuzzy +#: plugins/video/models.py:9 msgid "movie file" -msgstr "filme" +msgstr "" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 -#, fuzzy +#: plugins/video/models.py:10 msgid "movie url" -msgstr "filme" +msgstr "" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "" -#: plugins/video/models.py:12 -#, fuzzy +#: plugins/video/models.py:11 msgid "preview image file" -msgstr "usar ficheiro de imagem" +msgstr "" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "tocar automaticamente" -#: plugins/video/models.py:18 -#, fuzzy +#: plugins/video/models.py:17 msgid "auto hide" -msgstr "carregar automaticamente" +msgstr "" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "Ecrã todo" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "repetir" -#: plugins/video/models.py:23 -#, fuzzy +#: plugins/video/models.py:22 msgid "background color" -msgstr "cor de fundo" +msgstr "" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 -#, fuzzy +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" -msgstr "Hexadecimal, ex: ffff00" +msgstr "" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "" -#: plugins/video/models.py:25 -#, fuzzy +#: plugins/video/models.py:24 msgid "seekbar color" -msgstr "cor de fundo" +msgstr "" -#: plugins/video/models.py:26 -#, fuzzy +#: plugins/video/models.py:25 msgid "seekbar bg color" -msgstr "cor de fundo" +msgstr "" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "" #: templates/admin/page_submit_line.html:3 @@ -1355,13 +1158,13 @@ msgid "Save and continue editing" msgstr "Gravar e continuar a editar" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." -msgstr "" -"Página %(page)s pode requerer a sua aprovação." +msgid "Page %(page)s may require approvement by you." +msgstr "Página %(page)s pode requerer a sua aprovação." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Últimas modificações" @@ -1370,11 +1173,18 @@ msgstr "Últimas modificações" msgid "Log in to administration here." msgstr "Entre na interface de administração aqui" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Nome de utilizador:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Senha:" @@ -1459,12 +1269,8 @@ msgstr "Estados da página" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." -msgstr "" -"Esta página precisa ser moderada no nível %(moderation_level)s, envie uma " -"mensagem ao moderador." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." +msgstr "Esta página precisa ser moderada no nível %(moderation_level)s, envie uma mensagem ao moderador." #: templates/admin/cms/page/change_form.html:185 msgid "Request approvemet" @@ -1525,9 +1331,8 @@ msgid "published" msgstr "publicado" #: templates/admin/cms/page/change_list_tree.html:15 -#, fuzzy msgid "start" -msgstr "status" +msgstr "" #: templates/admin/cms/page/change_list_tree.html:16 msgid "end" @@ -1547,8 +1352,8 @@ msgid "edit this page" msgstr "editar esta página" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "editar" @@ -1569,9 +1374,8 @@ msgid "softroot" msgstr "raiz leve" #: templates/admin/cms/page/menu_item.html:23 -#, fuzzy msgid "home" -msgstr "Início" +msgstr "" #: templates/admin/cms/page/menu_item.html:26 #, python-format @@ -1605,7 +1409,7 @@ msgid "add" msgstr "adicionar" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "Aprovar directamente" @@ -1620,6 +1424,7 @@ msgid "Unpublish" msgstr "Retirar publicação" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Publicar" @@ -1699,8 +1504,7 @@ msgstr "Recuperar %(verbose_name)s excluído" #: templates/admin/cms/page/recover_form.html:24 msgid "Press the save button below to recover this version of the object." -msgstr "" -"Pressione o botão 'gravar' abaixo para recuperar esta versão do objecto." +msgstr "Pressione o botão 'gravar' abaixo para recuperar esta versão do objecto." #: templates/admin/cms/page/revision_form.html:11 #, python-format @@ -1709,8 +1513,7 @@ msgstr "Reverter %(verbose_name)s" #: templates/admin/cms/page/revision_form.html:24 msgid "Press the save button below to revert to this version of the object." -msgstr "" -"Pressione o botão 'gravar' abaixo para reverter para esta versão do objecto." +msgstr "Pressione o botão 'gravar' abaixo para reverter para esta versão do objecto." #: templates/admin/cms/page/dialog/copy.html:4 msgid "Copy options" @@ -1730,14 +1533,12 @@ msgid "Add Plugin" msgstr "Adicionar Plugin" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:18 -#, fuzzy msgid "From Language" -msgstr "Língua" +msgstr "" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:25 -#, fuzzy msgid "Copy Plugins" -msgstr "Plugins" +msgstr "" #: templates/admin/cms/page/widgets/plugin_editor.html:12 msgid "You must save the page first to add plugins." @@ -1752,247 +1553,239 @@ msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "Não á plugins presentes. Adicione um plugin a este espaço." #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "Plugins disponíveis" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 -#, fuzzy, python-format +#: templates/cms/toolbar/toolbar.html:33 +#, python-format msgid "Move to %(name)s" -msgstr "Recuperar %(name)s excluído" +msgstr "" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "" -#: templates/cms/toolbar/toolbar.html:63 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" -msgstr "status" +msgstr "" -#: templates/cms/toolbar/toolbar.html:74 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" -msgstr "Nome de utilizador:" +msgstr "" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" -msgstr "link" +msgstr "" -#: templates/cms/toolbar/toolbar.html:90 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" -msgstr "modelo" +msgstr "" -#: templates/cms/toolbar/toolbar.html:101 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:195 msgid "move" -msgstr "filme" +msgstr "" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "" -#: templates/cms/toolbar/toolbar.html:103 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" -msgstr "Adicionar Filho" +msgstr "" -#: templates/cms/toolbar/toolbar.html:103 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" -msgstr "Adicionar Filho" +msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:106 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" -msgstr "Excluir" +msgstr "" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "" -#: templates/cms/toolbar/toolbar.html:114 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" -msgstr "Configurações Básicas" +msgstr "" -#: templates/cms/toolbar/toolbar.html:116 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:210 msgid "history" -msgstr "Histórico" +msgstr "" -#: templates/cms/toolbar/toolbar.html:116 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" -msgstr "Histórico" +msgstr "" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "" -#: templates/cms/toolbar/toolbar.html:124 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" -msgstr "dock" +msgstr "" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "" -#: templates/cms/toolbar/toolbar.html:139 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:235 msgid "down" -msgstr "ligado" +msgstr "" -#: templates/cms/toolbar/toolbar.html:141 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" -msgstr "Configurações de SEO" +msgstr "" -#: templates/cms/toolbar/toolbar.html:143 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" -msgstr "Editar o plugin selecionado" +msgstr "" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "Desligar moderação de página" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "Desligar moderação dos filhos" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "Desligar moderação dos descendentes" -#: templatetags/cms_tags.py:69 -#, fuzzy, python-format +#: templatetags/cms_tags.py:78 +#, python-format msgid "Page not found on %(domain)s" -msgstr "Não foi encontrada ID reversa em %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:70 -#, fuzzy, python-format +#: templatetags/cms_tags.py:79 +#, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"Não foi encontrado nenhum template 'page_id_url' com o reverse_id %" -"(reverse_id)s\n" -"A url desta página era: http://%(host)s%(path)s" -#: utils/moderator.py:82 -msgid "parent first" -msgstr "pai primeiro" +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" -#: utils/moderator.py:89 -msgid "approve" -msgstr "aprovar" +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" -#: utils/moderator.py:240 -#, python-format -msgid "CMS - Page %s requires approvement." -msgstr "CMS - A Página %s requer aprovação." +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" -#: utils/permissions.py:206 -msgid "CMS - your user account was created." -msgstr "CMS - sua conta de utilizador foi criada." +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" -#: utils/permissions.py:208 -msgid "CMS - your user account was changed." -msgstr "CMS - sua conta de utilizador foi modificada." +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" -#~ msgid "menu login required" -#~ msgstr "menu login requerido" +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "somente mostrar esta página no menu se o utilizador estiver logado" +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" -#~ msgid "" -#~ "A show_placeholder_by_id template tag didn't found a page with the " -#~ "reverse_id %(reverse_id)s\n" -#~ "The url of the page was: http://%(host)s%(path)s" -#~ msgstr "" -#~ "Não foi encontrado nenhum template 'show_placeholder_by_id' com o " -#~ "reverse_id %(reverse_id)s\n" -#~ "A url desta página era: http://%(host)s%(path)s" +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" -#~ msgid "Twitter recent entries plugin" -#~ msgstr "Plugin do twitter para entradas recentes" +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" -#~ msgid "overlay" -#~ msgstr "sobreposição" +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" -#~ msgid "blank" -#~ msgstr "em branco" +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" -#~ msgid "self" -#~ msgstr "self" +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" -#~ msgid "parent" -#~ msgstr "pai" +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" -#~ msgid "window" -#~ msgstr "janela" +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" -#~ msgid "opaque" -#~ msgstr "opaco" +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" -#~ msgid "transparent" -#~ msgstr "transparente" +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" -#~ msgid "controller style" -#~ msgstr "estilo do controlador" +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" -#~ msgid "click_url" -#~ msgstr "url do clique" +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" -#~ msgid "click target" -#~ msgstr "alvo do clique" +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" -#~ msgid "mute" -#~ msgstr "mudo" +#: utils/moderator.py:83 +msgid "parent first" +msgstr "pai primeiro" -#~ msgid "mute only" -#~ msgstr "só mudo" +#: utils/moderator.py:90 +msgid "approve" +msgstr "aprovar" -#~ msgid "volume" -#~ msgstr "volume" +#: utils/moderator.py:251 +#, python-format +msgid "CMS - Page %s requires approvement." +msgstr "CMS - A Página %s requer aprovação." -#~ msgid "in range <0, 100>" -#~ msgstr "entre 0 e 100" +#: utils/permissions.py:206 +msgid "CMS - your user account was created." +msgstr "CMS - sua conta de utilizador foi criada." + +#: utils/permissions.py:208 +msgid "CMS - your user account was changed." +msgstr "CMS - sua conta de utilizador foi modificada." #~ msgid "fgcolor" #~ msgstr "cor de primeiro plano" -#~ msgid "Hexadecimal, eg 13abec" -#~ msgstr "Hexadecimal, ex: 13abec" - -#~ msgid "wmode" -#~ msgstr "wmode" - -#~ msgid "Revisions" -#~ msgstr "Revisões" - #~ msgid "Wanted language has not been translated yet." #~ msgstr "Não há tradução para a língua desejada ainda." diff --git a/cms/locale/pt/LC_MESSAGES/djangojs.mo b/cms/locale/pt/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..cc1505c0e27ea2a530b483e7d8406549b340fb91 GIT binary patch literal 898 zcmbV~!EVz)5QY~hLh_L_hv9(K7B+EGL@GCF8bVqsB{WnnT#(S#p4c1NyYB8drMv+T zzyt6QT)FTbJPTt4L;@kCj`V3~$Fsj@cjnvOjgNwDgSp4_ncK`8rm>0{GZ)ND<}>q% zxpPB^56olcIq$#R6yl_b-x6Y**VnxAC&A$#*64Fch>=6MvNibnr*o+c0a-|LWikX( z=N>LK<+dj9YNbsElp|D%KQ6TMH2l8?=Req7Xe`pVMwPgAeZ>?DB(5sg9;%|wv>A%I zvr9}!9;fmZIaz1B3^`Gr;z~Ca{GHd?iFSGq zL$+Y5JjvK8;|oRBMPQd&L%+m>#%U$_KBt(h<|mdhsxpG<=*7|5=x74{>GYt`E$g!V zV0Jv4tZ&?Dg~8YwLc`iu6&FePj@nhBwApLA={(ZlEIyRG>%69h1v)t~iA}k+5$v98 z`u+C^DhlRB?NlKTtt)*5hF_hxe$d@(8o=&g)4=@!bhZK!V+jfpbcF8}T-4a$psZ8n zAVu(4DW_8F*efA(YQ=E{)z?qlNM4;TQ9C>Qmyjw59Urm&&w0A09#1jLq34nMHBH|E D%~2EB literal 0 HcmV?d00001 diff --git a/cms/locale/pt/LC_MESSAGES/djangojs.po b/cms/locale/pt/LC_MESSAGES/djangojs.po index a37d8cea70e..21964f8ec6b 100644 --- a/cms/locale/pt/LC_MESSAGES/djangojs.po +++ b/cms/locale/pt/LC_MESSAGES/djangojs.po @@ -2,44 +2,35 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: Django-cms\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:38+0100\n" -"PO-Revision-Date: 2009-12-13 23:30+0100\n" -"Last-Translator: Pedro B. G. Costa \n" -"Language-Team: Ciberbit S.A. \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Poedit-Language: Portuguese\n" -"X-Poedit-Country: PORTUGAL\n" -"X-Poedit-SourceCharset: utf-8\n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" -msgstr "" -"Tem a certeza que quer alterar os %(field_name)s sem gravar a página " -"primeiro?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" +msgstr "Tem a certeza que quer alterar os %(field_name)s sem gravar a página primeiro?" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -"Nem todos os plugins estão salvados. Tem a certeza que quer gravar a página? " -"Todo o conteúdo dos plugins não salvados será perdido." -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" -msgstr "" -"Tem a certeza que quer mudar de separador sem gravar a página primeiro?" +msgstr "Tem a certeza que quer mudar de separador sem gravar a página primeiro?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Tem a certeza que quer apagar este plugin?" diff --git a/cms/locale/pt_BR/LC_MESSAGES/django.mo b/cms/locale/pt_BR/LC_MESSAGES/django.mo index 7df948ffbbd595f34bd6b88adec519ffe85496c8..d316bef73bcce7c1478c1512e253c21a5a11bd9a 100644 GIT binary patch literal 26146 zcmb8137jTHdH;(W7DTykXcm^8ft}f1K)~T#W)Bwjf?ZCLrRRNnW*Xl2?U%RTcV>6J zFrHvQO~l&>0Yy+0LNJQAgHegM(Zq;?Vxkgn%^%|5XuiLvs{8HP<;we^=G#?WUFTCz zJ#{QU*n7vD9KTK5Id>?0Xm{rx=lNX+D3tIcoI3?>h6~}}!L{&5a3wrGa&9;H61XdT z4LlLP0V@6j@KpHw;9qp4b4&4G3HAQHaA){!xC49$?g1Zx6vh1lD*gY4bKnkho!b-c z2~UQH!56~|;q%}(;9l@Y!T)=xbay(+x#z>(;B(=ba2T$I1Mp>V2;L4af!~J5!r`NR zIWC2};7_3PZ$jnw61X3{0WN^I!so!RLzUwPQ1O2aNz(lp@}E0up65AGRt+! z&&_au_$Eir8AV?L2wrsL6v_1D!pN-_Bajh3RghAUkCNwMNsLy2&(Uk4Aze*-)Veh{7ke*x7G3kH3Et%V2S&!PJF2B>n}4+!aO$jpTn2 z4#6v+`u#7V+WBs%@_iC2ozKBJ@arM`dvFB*BT)4@bmCHyLU4m^;LtRC<%{EMN=yB4ZEb*S>b3?jnr4N(1f zA5^?AL)H6-Q1bdXRQz2Q(pK<5sB)eN6@C_!yqyn~|26PH_;R=#d>d51{cZ4n0IJ;g zLACS!@GST_sCw_P$je6r55_+V74HhDb{mIh!!2+r{A75)J&mk*bD-kw4ONa~UglHf4p-S!#$zW9f!&{gZl23 zP~~}Dc>hKyd3!tD8{QoJ_dLY4PMsCIt~l>FQS)m~qN>d*gx zniqZzRn7qhr`mZ4s$G^twciC$<=hDOhSxyV^Hosk+yE8ttx)B;E%@&Y{D;5?;A-A~ z1CpgXg3MLk3*j>ODyaHB2pKZ&4^Z`(e~KU13!(Bm0jhkbLzQPGl-{@;D*m-_Pxv~h z_-}=Ze@l3O7gYK0gX+gmLB;!g;Md^u@P8MoT^@t`!(WB)onPSF;{d4q2BGAAF;u)Y za9@}}jo&R$`Mnydoo)>NcS4oxHmL9KhHB@pK&AUI)b~GuD#vdFABSq^KSIUZ9%ZC> zbD+lUeo*tyQBd#aL)CL3RDLG~o(+}m8mRQv2mhr|?RN!KI!&ndxhA}SF;srnLVfpo zsB*svDxX^e?}W<#9;kdi2DgWwf|@rz3-$evq00RjRQo&;xD&>Z!uN&>kD%IdDDb2Z zerE8mg39N@z{{Y@y%DNEQ>gs5K-KTs5dH?JcsE0Ref1!^Keg_adnDr=ZIFVyODRB81-v z)sKG-Rj&6yjf3|?)$`*}^7mz^?|ukXzF$Jce_KbS;J-HT)lm6f50&qmq2j$8nw*62JE7X`UKqhoLB)F*syzP=mEUin z`t5P3_S+dFMCIBI4!{GT;-3W-e|6vma4r6eq0+q_syuf=<@*u%pW7jia8%)EdA;}> zcs~BYCEo6OF_b+2Bh>d_g{W%xFA!Dbc0b$CW22Cy-0NTrzW^7&K@wNJFM?{97eTf2 z1e9ED3A`Sv-QNKZfFFPt!5MfbJb0-O|2#Yx|M%fO@Cm5;?Xk?4XKyGuI2Y1nZX;X> z-wmaIzXD$bcUbQ2kr+y@u7j%QO;F?d-B9U&7#<2|;BoK~sPgZz!sl}YJP`kh@EEun zDqa`Phc`p@*B9Zj@HpDxDqiD8D_R{QE%VcS!Ib302-fI0v2*-j70k zw-W9M*Fnk2g(18N6~7CW?#tmZ@U;*Tavy@L;cwwQc-AWaejKX*Zh#Bm`=Ijw7Mu@% z1Q9VehmV!+TF4aSE`|z!6I8tKK$YiDQ03cyjhCZC;B)W~L6!ehxE!7x{MSLnemm4DxFbqI{(T`L;7)^TkJmt=xErD5@nNWR{s1*@o^ye> z4~~U;zXVFIE{E!$4ph9i!^7c6pz{AVRJ{L!vM+XD@8i#fd*fdTp9e38hruS)xPLuV zIyb}J;isYG>z|<7{~J){{@37t1TMq>6R7eGZSd>P4N&d$YN+_{fqTK*q3ZuJNLRZZ zXgsyg`B429L)GW1z}Lc~@!tmbfM0@2_dD=N_-m;8?TxZi_#l*j6so+JLG^14)t_6S z>irhD1>O#o|J;kc{2dP^Pv=5?zZR;!E(-oM_}jt%%E0U4T;jb6s=fXmE{6BR6X4I` z0vKK5+hH|Sdu@cga<73jq5A5zYD7W zZ-W}A4+Q^XQ2jaQg}(jwhidODq2i}d^}G)53*Q9~f%ic5$5){G@3Fu?!hP`XdAV<= zxlrS4Fz^(p{8m7!GqLPJ|g8fww``<6*cP{0UV5{3dX_D}26t zLG}MUsCX-&%6ES7*P!xmLZ!DEs=lv)>YwZ3f$)uRKX?a}e0@5+|1vxn|2N@5@E5_q z%SK<%xp0v1#Zd8H2-R*=Q0crLD*v|y|7}ouXtec<-+5I7GW4)y&~D0w*-sy!|Z{)xaT zsD6KS@ZSWL-fd9r^+BleKM?p8sB!xpsPX+hcqsfiRDQdS`ShL()gDJcm3J{zx~D?b zV-zaibD`3|462?rsPw0y(t8P1yuX0T@2{Zx{Z^=WcSFg|eNg#)4J!TbLZ$Zz9E87z zhr`2bz8t4R<+}_jy)_~Hg;4EPgG#RhkAg3OlDnIsrs(t?%s{RiJ zJ_=Q?$KYY`aj1CvCB8imgFE6MhAQ6)a3^>URJ*T%3*i+|?SCUwyS)cW{@xE)!F!?7 zb>m*HcZC}7d%*1!&hIhYr|k*53+BZOp1*(_z`X!h{1)@jC_I5TLDgds-)_MDk>`2v zVz?9T%eb%N*5iub^LW1#PCu$|zuyN6m-6lh!T)vmeEetQW*x-rU+k$%e~k3h+f6>k+>h@UckGZapSlb;r@}ZzrZcUY2MkLut{9;Yw?`o z_6}jM=EeJPJK}#~2s;vfp0M@sWAH)TbvXSr27ie=h<6u-_z&TK2kti9acA-TL0J8L6wgaTz@G4DxcRu3hp;aOp2)X#oPICC9muoh^{a8a@ceD4-<`Po za9_fmhg-HRi*X$NvYOr3>GUdk+53!i`YBt8gvcpK-s! z>GuTgc;5dTdDAj?Mqk_cPP&b!u#EM zUe5DMxEl9gIQ@1Y>mI^QVm8joMkBcGIk-Pr@VRNzGqPBASl#sGc;EZo={0 zQ{JzKH z8ym?~(x9lGZeVlPi)wKzYA2oXtkaC*nxfIPt*ASh=21JINTNE)*1C<&gKi0x$!ndo zZI#c)iIn&_dDcw2X_M@GIh7gP9OX&esZB;nixyAvVZLpot*h0}vHxU}wxQdyPTJiZ zQQ!_Qy2+-l#q;s=ZbT-vtl5l7k3z<3DSCH0>(uk;*<@-pFcGl|b!dQ2oPi6s!%YDu1}87(`cU_q22>-0;~s>iKvj$h@RPN}As zZA+1Ep5Kke626OD6TXkqZXVUBdN=F%yz_L7UYaN>F%`FJ#9W_ryM*QxFN9?il@oLbKQ$5WYQJYDDp&?Oe#Z&2oNuqt#uQ@5TqNEw8BvnU<^XQqRgXo?T~R*6&c~qy9km_fyH?A3 zlt5ZBNZ~U?l59$Kj>e5zPmLUPvR*f-_$~GEIPW5VB)nPGL;4kkA;<eP+^fVKC+v z?3=+JH5~1sNi*9+yT?$-C*7zGmw=$V@MW2Xm+w!qOk1@^ua4L-qP%ozJ}5tjT!m z*^KC$NrF_19yL#Ya_}$9EERKBgZaL2qkifMh3$3O@ae{58hSP$-BO$G0%n)4+lgB_ zy(roA(M*8KXOlFyOqx-}@=rPG)ui@)-F#p7Q3X#uy)vV>X_bByF!MnGKjq{P<1Bqr4k4<90M- zV}a(AS&z2}gyxB1S9W&s5H)+0!luRXaRi3OU}o_XW6h7{LXM9tzb-$@6Vu$-LA`c6 z>!`h-BsTiNRC19Oz1JWnI+GO1-7CV}t-=)J45Jh zZ>BBcdK)r2EsiET$@uAW(L9;VX&P%VpL>S1?r96-GxYt0a+G+lPFlTaL)xW>S2L}v zuU5+*VtyRgzzDrC{N$n0(rmhA^Ld%+WVhQMS-3E+XJg4Qmf=E6#>|XPzYK1*w|Qml zV3g6={g8^O)DKh};A4t4)fvn_1&~$U8Z~EYa+=1)wU)J5?T(I zVYGJ8Vj4weT_+gf<6TAwimv=Z7O{IT&A>LZyyBYfD(Eu~AbB*}MUh`9iXpN)eC2T+$siu`z;4 zK5MDPl80=DExGuEXa-&yJ*A+rQc z_l2@4An(~4XS~;FY%ZD@g{ty|VV!l%$JAr1-%5FWx>~@F5G4%N;z2>(Nw+Sob+L$D zSTWQx*3#@FNM8J!VvIG!G#UC8#WwGAlz26QA29t9*WKJ^$_!tJmuCOcv=f@&i}B>= zvB=gQvudrcz11Cvgri-tiddz%b+$mVp{nsY*6ViBC{`v7LMlTvEnAr5wc2GU7emjh z3X*@OB>2wen`cO5Dov){x?m|^5HcP>>;}WEQiOR^yRxF*_61pvVdjS28Fv9AgQ|4P z2h%WC9;WJHg4G(uQbr?^NuE$+AvSDE5M-5^H?UO(>zA$Vk5g$nXX;L4P%1yhgrw2? zf#`Tv!7L56R$u}PZ`fj@4c21>2E&r?`lcuS;g>#R%!u}=sYN=dm`K8$JRGU$wt-_G zn2|b6x?$AQ^-FilE4^&5y7n}`RA$Qz{uwX48u+j^oi8aL5 z+h!ZslOZY_GpaZxFCzp~q-c;Z)nM;EZEO~k2$w7XFO7=N&?^=}ThA71cG*g1e1*96 zWIXOQ5KuEL^mRK%UW37Bp@@HF)gI;z1jq8~t0yy5>23PZOKhRrkv1h;nzV{oEF)1w z`H@ePkUFrkCVt9g?cS!gATh@!|^ zs7~AVlq%%Y{>sbtC~O$D$%=%@Oi!hy8B{)IBMoR9g~&$;M3oeKhzqm}Dm#NsKiPGb zZaH005Z^cY%UCLwZ`vTjSS~wx*6OvgTk1B*?wq}*V0!hNXsv|8(I1jW)xJp^`W1`2 zur-#FSvhC+%U!&xOq#aJ^j2;0*0)5tVM=hZ4{#wXT&-QZTIL@UH8M6f?U{m%v&9*8 zd-_8^HRHD0hAzd1a(vgZKYV1XyNXcd{)IO${Bxasq_h!U_}QZR+CuWE5+r?MpXy=6 zp33(ZVO(bJB9wGgEEmnggkYUtcqD!9;>pA>Myw6Oa%Li9WjMuh*lU$iNahBmpVa4C z$J;lwL=iuvMjvfzqtr^#9*$NenzZ~PiVs@S&LP&YyOb`j6Nmw;wPmHLD&wy&y#Kf8 z^R*?z^iu3Wnw^8DeEL*E|5Jl7P%OSJurzU(HS?3YifMA|=kH+`cGMk#a$Yj+DeSfC z*$xxphL#c1b=4q=>sA}?wuDw3P2w)rZbK`U`jDb#6JS`{kevJ50eaT{VL^)0>rP@t z0k+Gu1hFSAquf|ryINwVVWb@=Hkr$Q&UVhR#{w;iHpygf)#(sdV-XytDyUPS08KK( zJeOVT>MV3!y%Udjoz*9(wnF5vE}RC+X6p;>$vBzEe4ntiHKpLRW3GJ*)zDT`ZZc6% zIrSMj2>G=Qqe*QTrFF;3@0m7byreOC_6Lpg({~h)NuGkoY|p|&m;_2i_l6-&R2v%CJsx4Y7XkKM)*F>v! zGr(Ss%}k}Vlyg>C_cSxs1~QoJkMAnHDKnhf-9OUM&NOeoWl&-aUMA$+W#i+HjewwL z{UqwjeleBdjg$fHDEb0LoF5E6X{2Dh*rL~@)k`RY+}lO0&7HQOoL^X*0qu%&Nk<=3 z_UW+kW>v6$345a^sMP=&vi(4IXiQf7UCB-j}G)fEE zt9nBF=Sgz4`gCj}=!qi0YmKmO>T6vSDx0YECwJQZ;13qCGy~@X^77;#y4ZtGD^2u! zVK?!B5$luJV-Jm6k(k1K^g{22q#HIuWvMx>>s+re2zVF`phUJsqcR;!l$pe22Bu?Xg?vKOvLhXxXNiEo!!L!Y0`C z^z?9uW?Ny?akn;k=G5tzE{~u8g2s76SGO}aoz{_zEoqyIGb*=aY?+!-#~Lux`T5Yw z`p`vwl{gaBuVRZj8>%()ITs|_W*l0bPo(vsvwIWy(1y(CoU{Li?K9aMvs~-xRGKa9 zf4PwTJ=S7#)~($zG#d2b5QhYm`}jqR7Y{8uerVCj(V~+_j$bsi=%hu9h&aR=&5q}` zjkoxOkrPfnZV|sZt56w38-gX9bw;A>sx*yGYbIyuVYoJV22uP`$Pi1N=18=T8uTV8 zOcD*8-HErPjWlizMyIX8CO%`%>XoaP^{c*kc+s3uKmQJGpr_fpLPps9kJHwvnz%SN z?w)?(hUG)2^y8^8?BxzEQ~#o*Mxs;3(r#Idk*M9>c=iQzSjBhZ#?W$hl=G3O#W=;A zpMLzQ+N9(0^nq4%MznZv&Lu1}|mSwy)IRV2<^dGQFoYW<54#Sr2S|@bnblwb-HL?nF%` zqP6N{nTw^y}TB)zF<7-Vg=JdTulJ+ zZK@Z!Us2~6iOUjWREv(c*aS$tGd_aT9GkhLDRtk& zrVZAqzM#Pnxw7+$FSzMaiS$&-hUALWxp$OvJtU^(n4%{$-Qr*=S9y>l8DSV9WAhfqA|-ZbyiEIF`}w^aFuZ*IWG%aj2wnEikKl|r@mp_nAT#{ zc+%u3O;xH4si>netc+zkzzaTmcuWOs)FoSDs}Qo7Tou!LGL2cWYbx=LbEdn<^q&+? z_~OiB1KW;-GSi+ZmoByvtFvcrVFo~`{7sQ1(Yi1`=lSh3@~P8&<{jR&1BcBYU^^a)mxu1KKRv5Xj=mZs^AzO32wSZ0?MW1pJWX6|jL zv0I+VG@8}33?bf+vW%)24Xgu-ODfN3F>o=3@!)hQPU%8D$ilodG4}wyxR<)9U!D-F zs!B#p+qpuve3eGC23ahVl0Y5V{S^{nrbLk~)2N}V0=0Wu?^%w%_p6(hWu%}$OaD4+ ze)Z(6nZoX`l(nJ{I2ZP&Q}L#%1lT8I-s`uWKZ2#xf)1w0iC2t%J|Q|f>&X=7)XXj1 zeZhF5;+Yf_@d~9B4J4a}N1pD+i$0JRzXbu(5?AI3X)Wn+WHFW5T^A-|W>x0n;>t^7 z<}P))t^qJov&dh1aVyYys7yvSmtA_SQ0(uMUU}Ix!kri0dU0#H{e`ijP0X2lJLp(0 zam?IB!?`79cH^-Pjlmv!g9vEw!-ylBiU+>THH`=~~RpEf}0C z_cO;D=BiMK`Q3{gwik~deM*6w;`CP$XfxQPyXXI7e5k4Uvdo z6lrDDB$1W%G$R`QTc`_F#QH@Y!8)GZQdGpuI~rVfj`MQL@dL7dvBoB+pc8c4P!)sNA-R-G-UFx;>0M z(pjxL68zEGOw%oAo0w{auGMg~do$%)%3sDYYfZN;{EW?(!*Yg{zSI7sHsVJ5*MFY= zCQeyA6d?K<>&wjAaO0-DuxzGn8CdAh)n;N?rf0DFjzzXa4Uy(8j^-I`bR8e zyNlzSj~)*1XphpIs|;R_Hi8Z|oydT1$ZSh;nfvw3FP$efsKb0(jK_R93X7Afp=d^& zgxn@v?##?uZCCR33Cm0@O68WYe`uv<)n8dC%9bpQR!J=5&@VX643*ueWbH#LgK3%! zA=a$lleELgvRgYg&lg&XtnY6o%zTmsZD5lKxeB}zc+)cdRFH;oE9RM&mvwoLqCwIbg^G7$iQYzBy+|rd5+hxFM^&6 z>`UjXcC#79%ZM(Yi|aAeswk-BidN-6 zZ%3(7NoV$J@_mZ;m9#5~7NNG?(a&pzlr<|GZ4;RXe=+IX0UN$rW*?0yXoLw&%ESJSpsLO2$C%Oj z7rVS%IBG4KvIIgo$ZX`&bGk|G{UkB4xQW8FzipgC1$YZAm6X#o-dL<8Rf$&E76|`@ zET+oXUT5ENgQzj(SDIy;_&22i?pH_bC1-A(jtwz6HEWM$T}{^Wy(XC-%IkFjDyK)6 zp}Lu|W4lRY6T81~*j3G+bxN!l?LM*AyHB0k%pF54!P$?)ykv2t(<7EAT;M4RGH?wq zHEg+F6uP+`<+bpJqutkVsu(hX;ipp+rU??Fi;~|JPr}{ffx|qh0 z@XHVsM-gr7>ah(s+p;09o#)s!rVWT2dv_i-QdwZu(}}D&#bN$OdaDDUEsB`=#YvMj z_%v*>uwW_{HiKaU%I|z*c-fZcG8#*2FKmH^Jt}Vy&f3w_{UkIv|3u*FzOXY;-&iDB zezT;sHEqG^r3sZ_mang%P8(+K*FtJ-)D4zfu%ESw$PpIpj_Dp=X%QB-m9&9oQc1MF zx;KNVZz0kDG4r|~DE$qUZN4Zv9K%1v5=U?4 ztRszpePvsqw#{zsQS_$YMYF2;eLJLCVov?Wy-y+#at9VI}edt2Mb{C80FLNJ`mii@mu@3hiwR$bK zNJ8x4u)Aw(Llo;ailMJQW(_sJC;TkFqVjf5uhy>|3*fB`)@Le2A%NbxC>z(G%Y_l* zjhue%wb3sbsm`$85JTmM9X3}E!Tyt9%2xdT%%oIF<*;oyjiU~dO$RdCIlGt0(*tN4 zzv1J`y*g*-aa?fp*SWN}b>btW&r$rUSSDi^!E5+cMG{(}aAZ z9qPg!D5{6~Y4`gyKK(9rA!8Wl&aXEdN4T{fCl@ZXgU9T#F`hON4ee#cVHdZXG+0=1 zX)NYOnRaG1+I73dj*cbB9FQQNS{B)n2+x^aD+_zFY1otH4iM7-N**h*`*gdT{;Cby zurlubH8LqZ{maL`&sI{USI2Ic!l(%C%=nc84LbV(+l9H+&D{UwyLH7(MLM?I6Fa+m zW;?_|eOf>m8C+LFr7~)QA)@h>`HN`&Z`f4ODyz~fHVcw;abwtZ_+J^Y1Fl9?3l^3E z!%b74L`cSn)edMx6+!lmf;qYV10@+r!n_q?8_*ebb>??*+ zuEM1^zeco}cJYmWOpGR1GlvTdPOC=^6TA0zm1$sG;M?J1(O&e)?Drh2>hQ6ula+8O zZ*9pZMxKxHWG{;C0`%gnX;XWd&Q@7=?BJ&2iP+zollruqU}%fti8)H=?ZuKyQpdu| zilq|--506KwL)ac_h++ELsuGU;qb(D+32VUY&|I(*$?xr)r<}s*cdIlm3=w0rXm^5 zy2)1ax9ph3CQmr&L^9MI7leRob!7?qveGHWL%3pRH_eOdbJ4O*T5yCLZd`DCrn_}q bVC6Clns9X4I@D#X%Ni_0IvFP^L4p4-`)@cI literal 26184 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, YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:54+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: Portuguese (Brazilian) \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" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Opções avançadas" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Título" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "O título padrão" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Slug" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "A parte do título que é usada na URL" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Língua" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "A língua atual para os campos de conteúdo." -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Já existe outra página com este slug." -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Título de Menu" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Sobrescreva o que será exibido no menu" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Título da página" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" -msgstr "" -"Sobrescreva o que será exibido no topo do seu navegador ou nos favoritos" +msgstr "Sobrescreva o que será exibido no topo do seu navegador ou nos favoritos" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Aplicação" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Associe aplicação para esta página." -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Sobrescreva URL" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "Se o caminho padrão deve ser utilizado, deixe este campo em branco." -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Redirecionar" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Redireciona para esta URL" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "A descrição de uma página, as vezes utilizada por Sites de busca." -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." -msgstr "" -"Uma lista de palavras-chave (separadas por vírgula). Normalmente usadas por " -"mecanismos de busca." +msgstr "Uma lista de palavras-chave (separadas por vírgula). Normalmente usadas por mecanismos de busca." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Já existe uma página com esta URL reversa." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "URL inválida, use o formato /minha/url" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "usuário" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"A permissão para adicionar páginas requer também acesso aos filhos, ou " -"descendentes, caso contrário a página adicionada não poderá ser modificada " -"pelo seu criador." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "A permissão para adicionar páginas requer também acesso aos filhos, ou descendentes, caso contrário a página adicionada não poderá ser modificada pelo seu criador." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." -msgstr "" -"A permissão para adicionar páginas também requer permissão de edição de " -"páginas" +msgstr "A permissão para adicionar páginas também requer permissão de edição de páginas" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Por favor, selecione usuário ou grupo primeiro." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Adicionar" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Modificar" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Excluir" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Recuperar (qualquer) página" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Notificar usuário" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Enviar notificação por e-mail ao usuário sobre modificação no nome de " -"usuário ou senha. Requere o e-mail do usuário" +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Enviar notificação por e-mail ao usuário sobre modificação no nome de usuário ou senha. Requere o e-mail do usuário" -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Nova senha" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Nova confirmação da senha" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "Notificações de e-mail requerem um endereço de e-mail válido." -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" -msgstr "" -"A permissão para adicionar novas páginas requer a permissão para modificar " -"páginas!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" +msgstr "A permissão para adicionar novas páginas requer a permissão para modificar páginas!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" -msgstr "" -"A permissão para adicionar usuários requer a permissão para modificar " -"usuários!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" +msgstr "A permissão para adicionar usuários requer a permissão para modificar usuários!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "Para adicionar permissões você também precisa editá-las!" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Oculto" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Configurações Básicas" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "" -"Atenção: Esta página é recarregada se você salvar a seleção. Salve-a " -"primeiro." +msgstr "Atenção: Esta página é recarregada se você salvar a seleção. Salve-a primeiro." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Configurações Avançadas" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Configurações de SEO" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "mais alto" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Erro na base de dados" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "página" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "Página aprovada com sucesso." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "Não existe nenhum objeto de '%(name)s' com chave primária %(key)s" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Há apenas uma tradução para esta página" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "Foram excluídos título e plugins com a língua '%(language)s'" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Você tem certeza?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "Você não tem permissão para publicar esta página" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" -msgstr "" -"Você não tem permissão para modificar o status de navegação desta página" +msgstr "Você não tem permissão para modificar o status de navegação desta página" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "Você não tem permissão para modificar esta página" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "a Língua deve ser definida para uma língua suportada pelo sistema!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "Plugin %(plugin_name)s foi adicionado a %(placeholder)s" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "a língua definida deve ser diferente da língua copiada!" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "Plugin %(language)s foi adicionado a %(placeholder)s" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" -msgstr "" -"Plugin %(plugin_name)s editad na posição %(position)s em %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgstr "Plugin %(plugin_name)s editad na posição %(position)s em %(placeholder)s" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Plugin foi movido" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." -msgstr "" -"Plugin %(plugin_name)s na posicão %(position)s em %(placeholder)s foi " -"excluído." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." +msgstr "Plugin %(plugin_name)s na posicão %(position)s em %(placeholder)s foi excluído." -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Permissões de página" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Permissões de usuário e grupo" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Gerenciament de permissões de página" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Detalhes do usuário" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Grupos" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Senha" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Copiar permissões" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Copiar moderação" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Herdar o template do ancestral mais próximo" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Visão geral" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Índices e tabelas:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Tabela de Conteúdos completa" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "lista todas as seções e sub-seções" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Pesquisar Página" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "pesquisar nesta documentação" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Índice de Módulos Global" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "acesso rápido a todos os módulos" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Índice Geral" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "todas as funções, classes, termos" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Índice" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Índice completo em uma página" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Indexar páginas por letra" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "pode ser grande" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Navegação" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Tabela de conteúdos" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Tópico anterior" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "capítulo anterior" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Próximo tópico" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "próximo capítulo" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Esta página" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Mostrar código-fonte" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Busca rápida" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Ir" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "Entre termos para a busca, ou o nome de um módulo, classe ou função." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "Sobre estes documentos" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Pesquisar" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Copyright" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Depreciado" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "pesquisar" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Pesquisar Resultados" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "Sua busca não retornou nenhum resultado." - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "selecionar esta página" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "Adicionar outro" @@ -494,34 +333,34 @@ msgstr "Adicionar outro" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "língua" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "posição" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "data de criação" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "vaga" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "nome do plugin" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -531,7 +370,7 @@ msgstr "título" msgid "path" msgstr "caminho" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "slug" @@ -539,15 +378,15 @@ msgstr "slug" msgid "everybody" msgstr "todos" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "pode editar" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "grupo" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "pode publicar" @@ -569,7 +408,7 @@ msgid "navigation extenders" msgstr "extensores de navegação" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "tem url sobrescrita" @@ -585,327 +424,321 @@ msgstr "autor" msgid "reverse url id" msgstr "id da url reversa" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "login requerido" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "raiz leve" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "data final de publicação" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "modelo" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "data de publicação" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "na navegação" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "aplicação" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "redirecionar" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "palavras-chave" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "descrição" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "Página atual" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Páginas-filho (imediatas)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Página e filhos (imediatos)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Páginas descendentes" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Página e descendentes" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Página" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Usuário" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Moderar página" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "Moderar filhos" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "Moderar descendentes" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "Moderador de Página" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "criado" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "modificado" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "req. para excluir" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "req. para mover" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "req. para publicar" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "req. para depublicar" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "aprovado" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "Estado do moderador da página" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "Estados do moderador da página" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "req. app." -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "excluir" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "app. par." -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "criado por" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "modificado por" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." -msgstr "" -"Quando a página deve ir ao ar. Status deve ser \"Publicado\" para a página " -"ir para o ar." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." +msgstr "Quando a página deve ir ao ar. Status deve ser \"Publicado\" para a página ir para o ar." -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "Quando expirar a página. Deixe em branco para nunca expirar." -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Todos os ancestrais não serão exibidos na navegação" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" -msgstr "" -"Um identificador único que é usado com a templatetag page_url, para associar " -"a esta página" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" +msgstr "Um identificador único que é usado com a templatetag page_url, para associar a esta página" -#: models/pagemodel.py:58 -#, fuzzy +#: models/pagemodel.py:69 msgid "attached menu" -msgstr "flash menu" +msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "está publicado" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "O template usado para carregar o conteúdo." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "O site à qual a página está acessível." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "site" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "estado do moderador" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Sobrescreva o que será exibido no menu" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "páginas" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "Página copiada." -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "padrão" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "pode adicionar" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "pode excluir" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "pode modificar configurações avançadas" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "pode modificar permissões" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "a nível de página" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "pode mover" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "pode moderar" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "pode recuperar páginas" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "pode recuperar qualquer página excluída" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." -msgstr "" -"Se nenhum for selecionado, usuário terá permissões dadas a todos os sites." +msgstr "Se nenhum for selecionado, usuário terá permissões dadas a todos os sites." -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "sites" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Permissão global de página" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Permissões globais de página" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "Garantir a" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Permissão de página" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Usuário (página)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Usuários (página)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Grupo de usuário (peagina)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Grupos de usuário (página)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "largura" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "sobrescrever o título no menu" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "Caminho" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "sobrescrever o título (tag html 'title')" @@ -913,21 +746,21 @@ msgstr "sobrescrever o título (tag html 'title')" msgid "File" msgstr "Arquivo" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "arquivo" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "usar arquivo swf" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "altura" @@ -935,7 +768,7 @@ msgstr "altura" msgid "Missing flash plugin." msgstr "Falta o plugin do flash." -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Mapa do Google" @@ -969,8 +802,7 @@ msgstr "latitude" #: plugins/googlemap/models.py:19 msgid "Use latitude & longitude to fine tune the map possiton." -msgstr "" -"Use latitude e longitude para ajustar precisamente sua posição no mapa." +msgstr "Use latitude e longitude para ajustar precisamente sua posição no mapa." #: plugins/googlemap/models.py:20 msgid "longitude" @@ -992,15 +824,15 @@ msgstr "planejamento de rota" msgid "Map" msgstr "Mapa" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "Seu endereço" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Calcular rota" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "Herda Plugins da Página" @@ -1009,12 +841,8 @@ msgid "Language or Page must be filled out" msgstr "Idioma or Página devem ser preenchidos" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" -msgstr "" -"Escolha uma página para incluir os plugins nos espaços reservados, se ficar " -"vazio escolherá a página atual" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" +msgstr "Escolha uma página para incluir os plugins nos espaços reservados, se ficar vazio escolherá a página atual" #: plugins/inherit/models.py:11 msgid "Optional: the language of the plugins you want" @@ -1024,28 +852,28 @@ msgstr "Opcional: o idioma do plugin escolhido." msgid "Link" msgstr "Link" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "nome" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "link" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "Um link para uma página tem prioridade sobre um link de texto" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "mailto" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "Um endereço de e-mail tem prioridade sobre um link de texto." @@ -1053,40 +881,40 @@ msgstr "Um endereço de e-mail tem prioridade sobre um link de texto." msgid "Picture" msgstr "Figura" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "esquerda" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "direita" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "image" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "se presente, a imagem será clicável" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "texto alternativo" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "descrição textual da imagem" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "descrição longa" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "descriçao complementar da imagem" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "lado" @@ -1105,24 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " -msgstr "" -"Coloque um template (ex.: \"snippets/plugin_xy.html\") que será renderizado." +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgstr "Coloque um template (ex.: \"snippets/plugin_xy.html\") que será renderizado." #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "Trechos de código" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "Teaser" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "Se presente, a imagem será clicável" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "Se presente, a imagem será clicável." @@ -1134,7 +960,7 @@ msgstr "mais" msgid "Text" msgstr "Texto" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "corpo" @@ -1189,9 +1015,8 @@ msgid "Twitter" msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "usuário twitter" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1214,15 +1039,11 @@ msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "Se dada, a dica será exibida como link para seu perfil no twitter." #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "usuário" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1233,91 +1054,84 @@ msgstr "Vídeo" msgid "Color Settings" msgstr "Configuração de Cores" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "arquivo do filme" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "use um arquivo de vídeo com codec .flv or h364" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "url do filme" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" -msgstr "" -"url do vimeo ou do youtube. Exemplo: http://www.youtube.com/watch?v=YFa59lK-" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" +msgstr "url do vimeo ou do youtube. Exemplo: http://www.youtube.com/watch?v=YFa59lK-" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "visualização do arquivo da imagem" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "tocar automaticamente" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "esconder automaticamente" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "tela cheia" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "repetir" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "cor de fundo" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "Hexadecimal, ex: ffff00" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "cor do texto" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "cor da barra de pesquisa" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "cor de fundo da barra de pesquisa" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "cor da barra de carregamento" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "cor do roll out do botão" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "cor do roll over do botão" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "cor da seleção do botão" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" -msgstr "" -"Plugin flash não disponível. Faça o download: aqui" +msgid "Missing flash plugin. Download here" +msgstr "Plugin flash não disponível. Faça o download: aqui" #: templates/admin/page_submit_line.html:3 #: templates/admin/cms/page/change_form.html:273 @@ -1344,14 +1158,13 @@ msgid "Save and continue editing" msgstr "Salvar e continuar editando" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." -msgstr "" -"Página %(page)s pode requerer aprovação de " -"você." +msgid "Page %(page)s may require approvement by you." +msgstr "Página %(page)s pode requerer aprovação de você." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Últimas modificações" @@ -1360,11 +1173,18 @@ msgstr "Últimas modificações" msgid "Log in to administration here." msgstr "Entre na interface de administração aqui" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Nome de usuário:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Senha:" @@ -1449,12 +1269,8 @@ msgstr "Estados da página" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." -msgstr "" -"Esta página precsa ser moderada no nível %(moderation_level)s, envie uma " -"mensagem ao moderador." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." +msgstr "Esta página precsa ser moderada no nível %(moderation_level)s, envie uma mensagem ao moderador." #: templates/admin/cms/page/change_form.html:185 msgid "Request approvemet" @@ -1536,8 +1352,8 @@ msgid "edit this page" msgstr "editar esta página" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "editar" @@ -1593,7 +1409,7 @@ msgid "add" msgstr "adicionar" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "Aprovar diretamente" @@ -1608,6 +1424,7 @@ msgid "Unpublish" msgstr "Despublicar" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Publicar" @@ -1687,8 +1504,7 @@ msgstr "Recuperar %(verbose_name)s excluído" #: templates/admin/cms/page/recover_form.html:24 msgid "Press the save button below to recover this version of the object." -msgstr "" -"Pressione o botão 'salvar' abaixo para recuperar esta versão do objeto." +msgstr "Pressione o botão 'salvar' abaixo para recuperar esta versão do objeto." #: templates/admin/cms/page/revision_form.html:11 #, python-format @@ -1697,8 +1513,7 @@ msgstr "Reverter %(verbose_name)s" #: templates/admin/cms/page/revision_form.html:24 msgid "Press the save button below to revert to this version of the object." -msgstr "" -"Pressione o botão 'salvar' abaixo para reverter para esta versão do objeto." +msgstr "Pressione o botão 'salvar' abaixo para reverter para esta versão do objeto." #: templates/admin/cms/page/dialog/copy.html:4 msgid "Copy options" @@ -1738,244 +1553,239 @@ msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "Não há plugins presentes. Adicione um plugin a este espaço." #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "Plugins disponíveis" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "Mover para %(name)s" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "Tem certeza que deseja remover este plugin?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "Modo de edição" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "status" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "Nome de usuário:" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "login" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "modelo" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "mover" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "Mover/adicionar Páginas" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "adicionar filho" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "Adicionar Página Filho" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "adicionar irmã" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "Adicionar página irmã" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "Excluir página" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "Administração do site" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "Configurações da Página" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "histórico" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "Ver Histórico" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "Logout" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "Travar" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "Fechar" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "acima" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "abaixo" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "Configurações" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "Excluir Plugin" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "Desligar moderação de página" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "Desligar moderação dos filhos" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "Desligar moderação dos descendentes" -#: templatetags/cms_tags.py:69 -#, fuzzy, python-format +#: templatetags/cms_tags.py:78 +#, python-format msgid "Page not found on %(domain)s" -msgstr "Não foi encontdara ID reversa em %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:70 -#, fuzzy, python-format +#: templatetags/cms_tags.py:79 +#, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"Não foi encontrado nenhum template 'page_id_url' com o reverse_id %" -"(reverse_id)s\n" -"A url desta página era: http://%(host)s%(path)s" -#: utils/moderator.py:82 -msgid "parent first" -msgstr "pai primeiro" - -#: utils/moderator.py:89 -msgid "approve" -msgstr "aprovar" - -#: utils/moderator.py:240 -#, python-format -msgid "CMS - Page %s requires approvement." -msgstr "CMS - A Página %s requer aprovação." +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" -#: utils/permissions.py:206 -msgid "CMS - your user account was created." -msgstr "CMS - sua conta de usuário foi criada." +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" -#: utils/permissions.py:208 -msgid "CMS - your user account was changed." -msgstr "CMS - sua conta de usuário foi modificada." +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" -#~ msgid "menu login required" -#~ msgstr "menu login requerido" +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "somente mostre esta página no menu se o usuário estiver logado" +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" -#~ msgid "" -#~ "A show_placeholder_by_id template tag didn't found a page with the " -#~ "reverse_id %(reverse_id)s\n" -#~ "The url of the page was: http://%(host)s%(path)s" -#~ msgstr "" -#~ "Não foi encontrado nenhum template 'show_placeholder_by_id' com o " -#~ "reverse_id %(reverse_id)s\n" -#~ "A url desta página era: http://%(host)s%(path)s" +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" -#~ msgid "Sublevel" -#~ msgstr "Subnível" +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" -#~ msgid "Sublevel3" -#~ msgstr "Subnível3" +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" -#~ msgid "Sublevel 2" -#~ msgstr "Subnível 2" +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" -#~ msgid "dock" -#~ msgstr "dock" +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" -#~ msgid "overlay" -#~ msgstr "sobreposição" +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" -#~ msgid "blank" -#~ msgstr "em branco" +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" -#~ msgid "self" -#~ msgstr "self" +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" -#~ msgid "parent" -#~ msgstr "pai" +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" -#~ msgid "window" -#~ msgstr "janela" +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" -#~ msgid "opaque" -#~ msgstr "opaco" +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" -#~ msgid "transparent" -#~ msgstr "transparente" +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" -#~ msgid "controller style" -#~ msgstr "estilo do controlador" +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" -#~ msgid "click_url" -#~ msgstr "url do clique" +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" -#~ msgid "click target" -#~ msgstr "alvo do clique" +#: utils/moderator.py:83 +msgid "parent first" +msgstr "pai primeiro" -#~ msgid "mute" -#~ msgstr "mudo" +#: utils/moderator.py:90 +msgid "approve" +msgstr "aprovar" -#~ msgid "mute only" -#~ msgstr "só mudo" +#: utils/moderator.py:251 +#, python-format +msgid "CMS - Page %s requires approvement." +msgstr "CMS - A Página %s requer aprovação." -#~ msgid "volume" -#~ msgstr "volume" +#: utils/permissions.py:206 +msgid "CMS - your user account was created." +msgstr "CMS - sua conta de usuário foi criada." -#~ msgid "in range <0, 100>" -#~ msgstr "entre 0 e 100" +#: utils/permissions.py:208 +msgid "CMS - your user account was changed." +msgstr "CMS - sua conta de usuário foi modificada." #~ msgid "fgcolor" #~ msgstr "cor de primeiro plano" -#~ msgid "Hexadecimal, eg 13abec" -#~ msgstr "Hexadecimal, ex: 13abec" - -#~ msgid "wmode" -#~ msgstr "wmode" - -#~ msgid "Twitter recent entries plugin" -#~ msgstr "Plugin do twitter para entradas recentes" - -#~ msgid "Revisions" -#~ msgstr "Revisões" - #~ msgid "Wanted language has not been translated yet." #~ msgstr "Não há tradução para a língua desejada ainda." diff --git a/cms/locale/pt_BR/LC_MESSAGES/djangojs.mo b/cms/locale/pt_BR/LC_MESSAGES/djangojs.mo index d875548e81c7fc335e0619364b10d8cbd07de3e1..da2f0a3f6f6720e77be877b0f1dfddbc75233a6c 100644 GIT binary patch literal 943 zcmbVKO>fgc5H(PQ!sy6n-*~s2?_aptd@F(C0 zaOKX0YftR5@y@P%6C< z4Xv4R?!|5)4%j+nbVkJt>W#>27w>aptQUK(RE5|Kr4u8Q(bW6KWl2(^v@l-GO`Q~K zu1s=qGf~b3cJc7pNNib_9?asg^qf&Y?e#?37wLe~LDom`AWe}d_Ia*a1()-BOWD%k zZVHQ^Naw}KO6@A?jm^l+l%my|AGX0_K3zwOE(3nC7_qD~8lr+wLJU)9)5wl7NWEvE67(VjIPIc=cU^NCNIN-Dk5w$(cJYcEDSV)-Jk6*FNgwsmd_ z^f;sCvGPA&HZ>-1uHADV{Gj*(&zw|Zmqx4HUr^WN7Fj>x^Z-1^79XPxu%@0 z=QBx1fvG?RGfCc>Tw0QjjQAPzr114z7M>I(aHlGiJ zYO0;A6qHJS5X5OVT{M*koR2oTV_h|jL@L-}Dcp&pu{B4E4$XFBB=MGebo8|{4ipy diff --git a/cms/locale/pt_BR/LC_MESSAGES/djangojs.po b/cms/locale/pt_BR/LC_MESSAGES/djangojs.po index 57ae3724a20..3dd5f02ab25 100644 --- a/cms/locale/pt_BR/LC_MESSAGES/djangojs.po +++ b/cms/locale/pt_BR/LC_MESSAGES/djangojs.po @@ -5,28 +5,32 @@ # msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:38+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: Portuguese (Brazilian) \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=2; plural=(n > 1)\n" #: media/cms/js/change_form.js:31 msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "Você tem certeza que quer mudar o conteúdo de %(field_name)s sem salvar a página primeiro?" -#: media/cms/js/change_form.js:68 -msgid "Not all plugins are saved. Are you sure you want to save the page? All unsaved plugin content will be lost." -msgstr "Nem todos os plugins foram salvos. Você tem certeza que deseja salvar esta página? Todos os conteúdos dos plugins que não foram salvos serão perdidos." +#: media/cms/js/change_form.js:69 +msgid "" +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." +msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "Você tem certeza que deseja trocar as abas sem salvar o conteúdo da página primeiro?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Você tem certeza que quer excluir esse plugin?" diff --git a/cms/locale/ru/LC_MESSAGES/django.mo b/cms/locale/ru/LC_MESSAGES/django.mo index e04b36e1abad837f0482bc57df0dc55994fd2f53..ce81e4b8bede2dbd4e3533588dea9aa7b5b4b9fa 100644 GIT binary patch delta 11352 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 DGU&(7 delta 12690 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, YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: DJANGO-CMS\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:54+0200\n" -"PO-Revision-Date: 2009-11-25 11:12+0500\n" -"Last-Translator: Lapuhov Alex \n" -"Language-Team: DJANGO-CMS-russian \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:38+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Russian\n" -"X-Poedit-Country: RUSSIAN FEDERATION\n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Расширенные настройки" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Заголовок" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "Заголовок по умолчанию" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Slug" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "Часть заголовка, используемая в URL" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Язык" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "Текущий язык содержимого полей." -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Страница с таким slug уже существует." -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Заголовок меню" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "То, что будет отображено в меню." -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Заголовок страницы" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" -msgstr "" -"Переписать то, что будет изображено в заголовке браузера или закладках." +msgstr "Переписать то, что будет изображено в заголовке браузера или закладках." -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Приложение" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Прикрепить приложение к данной странице." -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Переписать URL" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "Оставьте это поле пустым для использования стандартного пути" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Перенаправление" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Перенаправить на URL." -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "Описание страницы, иногда используемое поисковыми роботами." -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." -msgstr "" -"Список ключевых слов, разделённых запятыми, иногда используемый поисковыми " -"роботами." +msgstr "Список ключевых слов, разделённых запятыми, иногда используемый поисковыми роботами." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Страница с таким reverse URL уже существует." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "Неправильный URL, используйте /my/url формат." -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "пользователь" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"Права на добавление страницы требуют также доступ к потомкам, иначе " -"созданная страница не сможет быть изменена создателем." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "Права на добавление страницы требуют также доступ к потомкам, иначе созданная страница не сможет быть изменена создателем." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "Права на добавления страницы требуют право на изменение." -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Сначала выберите пользователя или группу." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Добавить" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Изменить" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Удалить" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Восстановить (любую) страницу" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Уведомить пользователя" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Отправить пользователю email о смене имени или пароля. Требуется email " -"пользователя." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Отправить пользователю email о смене имени или пароля. Требуется email пользователя." -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Новый пароль" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Подтверждение нового пароля" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "Уведомление по email требует правильного email адреса." -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "Право на добавление страницы требует право на изменение страницы!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" -msgstr "" -"Право на добавление пользователя требует право на изменение пользователя!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" +msgstr "Право на добавление пользователя требует право на изменение пользователя!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "Для добавления прав доступа вы также должны изменять их!" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Скрыто" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Основные настройки" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "" -"Страница будет перезагружена, если изменить выбор. Сохраните её сначала." +msgstr "Страница будет перезагружена, если изменить выбор. Сохраните её сначала." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Расширенные настройки" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Настройки SEO " -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "выше" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Ошибка базы данные" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "страница" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "Страница успешно утверждена." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "объект %(name)s с первичным ключом %(key)r не существует." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Для данной страницы создан только один перевод" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "Заголовок и плагин на %(language)s удалён" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Вы уверены?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "У вас нет прав для публикования этой страницы" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" -msgstr "" -"У вас нет прав для изменения статуса \"в навигации\" для данной страницы" +msgstr "У вас нет прав для изменения статуса \"в навигации\" для данной страницы" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "У вас нет прав для изменения данной страницы" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "Язык должен быть установлен из списка поддерживаемых языков!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "%(plugin_name)s плагин добавлен в %(placeholder)s" -#: admin/pageadmin.py:1129 -#, fuzzy +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" -msgstr "Язык должен быть установлен из списка поддерживаемых языков!" +msgstr "Язык должен отличаться от скопированного!" -#: admin/pageadmin.py:1139 -#, fuzzy, python-format +#: admin/pageadmin.py:1179 +#, python-format msgid "Copied %(language)s plugins to %(placeholder)s" -msgstr "%(plugin_name)s плагин добавлен в %(placeholder)s" +msgstr "Скопировано %(language)s плагинов в %(placeholder)s" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "%(plugin_name)s плагин, редактируемый в %(position)s в %(placeholder)s" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Плагины перемещены" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "%(plugin_name)s плагин в %(position)s в %(placeholder)s удалён." -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Права доступа к странице" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Права доступа пользователя и группы" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Управление правами доступа к странице" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Информация о пользователе" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Группы" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Пароль" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Права на копирование" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Модерация копирования" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Наследовать шаблон от ближайшего предка" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Обзор" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Индексы и таблицы:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Полное содержание" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "вывести все секции и подсекции" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Страница поиска" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "поиск в документации" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Глобальный индекс модуля" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "быстрый доступ ко всем модулям" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Основной индекс" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "все функции, класс, термины" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Индекс" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Полный индекс страницы" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Индексировать страницы по букве" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "можеть быть большим" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Навигация" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Содержание" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Предыдущая тема" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "предыдущая глава" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Следующая тема" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "следующая глава" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Эта страница" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Показать источник" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Быстрый поиск" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Перейти" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "Введите слово поиска или модуль, класс или имя функции." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "Об этом документе" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Поиск" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Копирайт" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Устарел" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "поиск" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Результаты поиска" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "По вашему запросу ничего не найдено." - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "выбрать эту страницу" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "Добавить другое" @@ -486,34 +333,34 @@ msgstr "Добавить другое" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "язык" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "положение" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "дата создания" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "слот" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "plugin_name" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -523,7 +370,7 @@ msgstr "заголовок" msgid "path" msgstr "путь" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "slug" @@ -531,15 +378,15 @@ msgstr "slug" msgid "everybody" msgstr "все" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "может редактировать" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "группа" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "может публиковать" @@ -561,7 +408,7 @@ msgid "navigation extenders" msgstr "расширители навигации" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "есть перезаписывающий url" @@ -577,325 +424,321 @@ msgstr "автор" msgid "reverse url id" msgstr "reverse url id" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "требуется login" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "soft root" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "дата окончания публикации" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "шаблон" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "дата публикации" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "в навигации" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "приложение" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "перенаправление" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "ключевые слова" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "описание" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "Текущая страница" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Потомок страницы (непосредственный)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Страница и потомок (непосредственный)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Потомки страницы" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Страница и потомки" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Страница" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Пользователь" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Модерировать страницу" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "Модерировать непосредственных потомков" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "Модерировать потомков" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "PageModerator" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "создан" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "изменён" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "удаляется" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "перемещается" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "публикуется" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "отменяется публикация" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "утверждено" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "Статус модератора страницы" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "Статусы модератора страницы" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "требуется приложение" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "удалить" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "часть приложения" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "создан" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "изменён" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." -msgstr "" -"Для того, чтобы опубликовать страницу, необходимо статус \"Опубликовано\"" +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." +msgstr "Для того, чтобы опубликовать страницу, необходимо статус \"Опубликовано\"" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "Срок действия страницы. Оставьте пустым для бесконечного срока." -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Все предки не будут показаны в навигации" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" -msgstr "" -"Уникальный идентификатор, который используется с тегом page_url для связи с " -"данной страницей" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" +msgstr "Уникальный идентификатор, который используется с тегом page_url для связи с данной страницей" -#: models/pagemodel.py:58 -#, fuzzy +#: models/pagemodel.py:69 msgid "attached menu" -msgstr "флеш меню" +msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "опубликован" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "Шаблон, используемый для отображения." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "The site the page is accessible at." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "сайт" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "статус модерации" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "То, что будет отображено в меню." +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "страницы" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "Страница скопирована." -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "по умолчанию" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "может добавлять" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "может удалять" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "может изменять дополнительные настройки" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "может изменять права доступа к странице" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "на уровне страницы" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "может перемещать" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "может модерировать" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "может восстанавливать страницы" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "может восстанавливать или удалять страницы" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "Если не выбрано, пользователь имеет права на все сайты." -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "сайты" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Глобальные права доступа к странице" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Глобальные права доступа к страницам" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "Назначить права на" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Права доступа к странице" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Пользователь (страница)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Пользователи (страница)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Группа пользователей(страница)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Группы пользователей(страница)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "ширина" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "переписать заголовок в меню" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "Путь" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "переписать заголовок (html тег title)" @@ -903,21 +746,21 @@ msgstr "переписать заголовок (html тег title)" msgid "File" msgstr "Файл" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "файл" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Флеш" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "использовать swf файл" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "высота" @@ -925,7 +768,7 @@ msgstr "высота" msgid "Missing flash plugin." msgstr "Отсутствует флеш плагин." -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Google Map" @@ -981,15 +824,15 @@ msgstr "планировщик пути" msgid "Map" msgstr "Карта" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "Ваш адрес" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Вычислить путь" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "Наследовать плагины от страницы" @@ -998,12 +841,8 @@ msgid "Language or Page must be filled out" msgstr "Язык или страница должны быть заполенны" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" -msgstr "" -"Выберите страницу для включения её плагинов в данный placeholder, пусто " -"означает текущую страницу" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" +msgstr "Выберите страницу для включения её плагинов в данный placeholder, пусто означает текущую страницу" #: plugins/inherit/models.py:11 msgid "Optional: the language of the plugins you want" @@ -1013,28 +852,28 @@ msgstr "Дополнительно: желаемый язык плагина" msgid "Link" msgstr "Ссылка" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "название" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "ссылка" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "Ссылка на страницу имеет приоритет над текстовой ссылкой." -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "mailto" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "Email имеет приоритет над текстовой ссылкой." @@ -1042,40 +881,40 @@ msgstr "Email имеет приоритет над текстовой ссылк msgid "Picture" msgstr "Изображение" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "слева" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "справа" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "изображение" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "если указано, клик по изображению приведёт к переходу по ссылке" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "альтернативный текст" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "текстовое описание изображения" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "длинное описание" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "дополнительное описание изображения" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "расположение" @@ -1094,26 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " -msgstr "" -"Введите имя шаблона (например \"snippets/plugin_xy.html\") который должен " -"отображаться. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgstr "Введите имя шаблона (например \"snippets/plugin_xy.html\") который должен отображаться. " #: plugins/snippet/models.py:25 -#, fuzzy msgid "Snippets" -msgstr "Snippet" +msgstr "Фрагменты" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "Teaser" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "Если выбран, то на изображение можно кликнуть" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "Если выбран, то на изображение можно кликнуть." @@ -1125,7 +960,7 @@ msgstr "больше" msgid "Text" msgstr "Текст" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "тело" @@ -1180,9 +1015,8 @@ msgid "Twitter" msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "twitter пользователь" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1202,19 +1036,14 @@ msgstr "подсказка ссылки" #: plugins/twitter/models.py:9 msgid "If given, the hint is displayed as link to your Twitter profile." -msgstr "" -"Если указано, подсказка будет показана как ссылка на ваш профиль Twitter" +msgstr "Если указано, подсказка будет показана как ссылка на ваш профиль Twitter" #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "пользователь" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1222,100 +1051,87 @@ msgid "Video" msgstr "Видео" #: plugins/video/cms_plugins.py:42 -#, fuzzy msgid "Color Settings" -msgstr "Настройки" +msgstr "Настройка цветов" -#: plugins/video/models.py:10 -#, fuzzy +#: plugins/video/models.py:9 msgid "movie file" -msgstr "ролик" +msgstr "видеофайл" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" -msgstr "" +msgstr "используйте файл .flv или видеофайл, кодированный в h264" -#: plugins/video/models.py:11 -#, fuzzy +#: plugins/video/models.py:10 msgid "movie url" -msgstr "ролик" +msgstr "URL видео" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" -msgstr "" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" +msgstr "ссылка на видео с vimeo или youtube. Например: http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 -#, fuzzy +#: plugins/video/models.py:11 msgid "preview image file" -msgstr "использовать файл изображения" +msgstr "Файл предварительного просмотра" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "автозапуск" -#: plugins/video/models.py:18 -#, fuzzy +#: plugins/video/models.py:17 msgid "auto hide" -msgstr "автозагрузка" +msgstr "автоскрытие" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "полный экран" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "цикл" -#: plugins/video/models.py:23 -#, fuzzy +#: plugins/video/models.py:22 msgid "background color" -msgstr "bgcolor" +msgstr "Цвет фона" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 -#, fuzzy +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" -msgstr "Шестнадцатеричное, например fff000" +msgstr "Шестнадцатеричное, например ff00cc" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" -msgstr "" +msgstr "Цвет текста" -#: plugins/video/models.py:25 -#, fuzzy +#: plugins/video/models.py:24 msgid "seekbar color" -msgstr "bgcolor" +msgstr "Цвета строки поиска" -#: plugins/video/models.py:26 -#, fuzzy +#: plugins/video/models.py:25 msgid "seekbar bg color" -msgstr "bgcolor" +msgstr "Цвет фона строки поиска" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" -msgstr "" +msgstr "Цвета индикатора загрузки" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" -msgstr "" +msgstr "Цвет кнопки в режиме \"вне\"" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" -msgstr "" +msgstr "Цвет кнопки в режиме \"над\"" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" -msgstr "" +msgstr "Цвет выделенной кнопки" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" -msgstr "" +msgid "Missing flash plugin. Download here" +msgstr "Отсутствует флеш-плеер. Загрузить с сейчас" #: templates/admin/page_submit_line.html:3 #: templates/admin/cms/page/change_form.html:273 @@ -1342,14 +1158,13 @@ msgid "Save and continue editing" msgstr "Сохранить и продолжить редактирование" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." -msgstr "" -"Страница %(page)s может требовать утверждения " -"вами." +msgid "Page %(page)s may require approvement by you." +msgstr "Страница %(page)s может требовать утверждения вами." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Последние изменения" @@ -1358,11 +1173,18 @@ msgstr "Последние изменения" msgid "Log in to administration here." msgstr "Войти в панель администратора здесь." +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Имя пользователя:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Пароль:" @@ -1428,8 +1250,10 @@ msgstr "Посмотреть на сайте" #: templates/admin/cms/page/plugin_change_form.html:84 msgid "Please correct the error below." msgid_plural "Please correct the errors below." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Пожалуйста, исправьте ошибки ниже." +msgstr[1] "Пожалуйста, исправьте ошибки ниже." +msgstr[2] "Пожалуйста, исправьте ошибки ниже." +msgstr[3] "Пожалуйста, исправьте ошибки ниже." #: templates/admin/cms/page/change_form.html:148 msgid "All permissions" @@ -1447,12 +1271,8 @@ msgstr "Статусы страниц" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." -msgstr "" -"Страница должна быть модерирована на уровне %(moderation_level)s, сообщите " -"модератору." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." +msgstr "Страница должна быть модерирована на уровне %(moderation_level)s, сообщите модератору." #: templates/admin/cms/page/change_form.html:185 msgid "Request approvemet" @@ -1513,13 +1333,12 @@ msgid "published" msgstr "опубликован" #: templates/admin/cms/page/change_list_tree.html:15 -#, fuzzy msgid "start" -msgstr "статус" +msgstr "начало" #: templates/admin/cms/page/change_list_tree.html:16 msgid "end" -msgstr "" +msgstr "конец" #: templates/admin/cms/page/change_list_tree.html:18 msgid "last changes" @@ -1535,8 +1354,8 @@ msgid "edit this page" msgstr "изменить эту страницу" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "изменить" @@ -1557,9 +1376,8 @@ msgid "softroot" msgstr "softroot" #: templates/admin/cms/page/menu_item.html:23 -#, fuzzy msgid "home" -msgstr "Домой" +msgstr "Главная" #: templates/admin/cms/page/menu_item.html:26 #, python-format @@ -1593,7 +1411,7 @@ msgid "add" msgstr "добавить" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "Утвердить напрямую" @@ -1608,6 +1426,7 @@ msgid "Unpublish" msgstr "Отменить публикацию" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Опубликовать" @@ -1687,8 +1506,7 @@ msgstr "Восстановить удалённые %(verbose_name)s" #: templates/admin/cms/page/recover_form.html:24 msgid "Press the save button below to recover this version of the object." -msgstr "" -"Нажмите кнопку сохранения ниже для восстановления данной версии объекта." +msgstr "Нажмите кнопку сохранения ниже для восстановления данной версии объекта." #: templates/admin/cms/page/revision_form.html:11 #, python-format @@ -1717,14 +1535,12 @@ msgid "Add Plugin" msgstr "Добавить плагин" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:18 -#, fuzzy msgid "From Language" -msgstr "Язык" +msgstr "С языка" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:25 -#, fuzzy msgid "Copy Plugins" -msgstr "Плагины" +msgstr "Копировать плагины" #: templates/admin/cms/page/widgets/plugin_editor.html:12 msgid "You must save the page first to add plugins." @@ -1739,236 +1555,239 @@ msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "Не указан плагин. Добавьте плагин в этот placeholder-слот." #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "Доступные плагины." +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "Переместить %(name)s" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "Вы уверены, что хотите удалить данный плагин?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "Режим редактирования" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "Статус" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "Имя пользователя" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "вход" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "Шаблон" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "переместить" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "Переместить/добавить страницу" -#: templates/cms/toolbar/toolbar.html:103 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" -msgstr "Добавить потомка" +msgstr "добавить ветку" -#: templates/cms/toolbar/toolbar.html:103 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" -msgstr "Добавить потомка" +msgstr "Добавить дочернюю страницу" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" -msgstr "" +msgstr "добавить сходную" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" -msgstr "" +msgstr "Добавить сходную страницу" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "Удалить страницу" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "Управление сайтом" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "Настройки страницы" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "история" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "Посмотреть историю" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "Выход" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "Заблокировать" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "Закрыть" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "вкл" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "выкл" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "Настройки" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "Удалить плагин." -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "Убрать модерацию страницы" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "Убрать модерацию непосредственных потомков" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "Убрать модерацию потомков" -#: templatetags/cms_tags.py:69 -#, fuzzy, python-format +#: templatetags/cms_tags.py:78 +#, python-format msgid "Page not found on %(domain)s" -msgstr "Обратный ID не найден для %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:70 -#, fuzzy, python-format +#: templatetags/cms_tags.py:79 +#, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"Тег page_id_url не найден на странице reverse_id %(reverse_id)s\n" -"Url страницы был: http://%(host)s%(path)s" -#: utils/moderator.py:82 -msgid "parent first" -msgstr "первый предок" +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" -#: utils/moderator.py:89 -msgid "approve" -msgstr "утвердить" +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" -#: utils/moderator.py:240 -#, python-format -msgid "CMS - Page %s requires approvement." -msgstr "CMS - Страница %s требует утверждения." +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" -#: utils/permissions.py:206 -msgid "CMS - your user account was created." -msgstr "CMS - ваш аккаунт создан." +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" -#: utils/permissions.py:208 -msgid "CMS - your user account was changed." -msgstr "CMS - ваш аккаунт изменён." +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" -#~ msgid "menu login required" -#~ msgstr "требует меню login" +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "показывать страницу в меню только если пользователь вошёл" +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" -#~ msgid "" -#~ "A show_placeholder_by_id template tag didn't found a page with the " -#~ "reverse_id %(reverse_id)s\n" -#~ "The url of the page was: http://%(host)s%(path)s" -#~ msgstr "" -#~ "Тег show_placeholder_by_id не найден на странице с reverse_id %" -#~ "(reverse_id)s\n" -#~ "Url страницы был: http://%(host)s%(path)s" +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" -#~ msgid "dock" -#~ msgstr "док" +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" -#~ msgid "overlay" -#~ msgstr "оверлей" +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" -#~ msgid "blank" -#~ msgstr "пусто" +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" -#~ msgid "self" -#~ msgstr "сам" +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" -#~ msgid "parent" -#~ msgstr "предок" +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" -#~ msgid "window" -#~ msgstr "окно" +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" -#~ msgid "opaque" -#~ msgstr "непрозрачный" +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" -#~ msgid "transparent" -#~ msgstr "прозрачно" +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" -#~ msgid "controller style" -#~ msgstr "стиль контроллера" +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" -#~ msgid "click_url" -#~ msgstr "click_url" +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" -#~ msgid "click target" -#~ msgstr "цель клика" +#: utils/moderator.py:83 +msgid "parent first" +msgstr "первый предок" -#~ msgid "mute" -#~ msgstr "без звука" +#: utils/moderator.py:90 +msgid "approve" +msgstr "утвердить" -#~ msgid "mute only" -#~ msgstr "только без звука" +#: utils/moderator.py:251 +#, python-format +msgid "CMS - Page %s requires approvement." +msgstr "CMS - Страница %s требует утверждения." -#~ msgid "volume" -#~ msgstr "уровень громкости" +#: utils/permissions.py:206 +msgid "CMS - your user account was created." +msgstr "CMS - ваш аккаунт создан." -#~ msgid "in range <0, 100>" -#~ msgstr "в диапазоне <0, 100>" +#: utils/permissions.py:208 +msgid "CMS - your user account was changed." +msgstr "CMS - ваш аккаунт изменён." #~ msgid "fgcolor" #~ msgstr "fgcolor" -#~ msgid "Hexadecimal, eg 13abec" -#~ msgstr "Шестнадцатеричное, например 13abec" - -#~ msgid "wmode" -#~ msgstr "wmode" - -#~ msgid "Twitter recent entries plugin" -#~ msgstr "Плагин для недавних сообщений Twitter." - -#~ msgid "Revisions" -#~ msgstr "Revisions" - #~ msgid "Wanted language has not been translated yet." #~ msgstr "Для требуемого языка ещё нет перевода." diff --git a/cms/locale/ru/LC_MESSAGES/djangojs.mo b/cms/locale/ru/LC_MESSAGES/djangojs.mo index 9587031846266053ee5c26d0e0be0c9aa642f846..0f9686aa0a1be2e738a3a5653e4428c2fb3efde4 100644 GIT binary patch delta 551 zcmZXOL2DC16vsDB#j@hXvxn!w(xQ`{*#-mSZra$^Qb;t0wI?rQGHfPfchZ^JKq0W7 zL4sevqo*PYqTs=sw}5v)hTzS&4aI{Ge!Tyi_y0fUoBw00{B>vZt%tRV+(jbf2J#B2 zYK9yl=g14>6Y>zbS@XP~NE4akyj5TK68iw>-`H{GZ6H-u_wmW|I!3~UF2EL*Sd!YU zH}Bq;eWNFG=*a1aoJnJq&N+-GB2P6LX4W6bnKq8}Y^p}&Ns(HTXbxlNW|jv*s@%AE z-5BaD7^%6^!M|jntSzMV`_B_{Xryp>nH&ixIfRrkLPJ7ZK+6^nQ9Ys*on#>As`|qJ zMz+WIS`R3e-xb!8#E9HZh0}(Eo+t%TCJ!pn7>?U$$uUAprtmIXKMvTH@v5ugJ?qY^vCamo)X+6IEVfAJ8b#=M=i2d_& HQUCK7F42?0 literal 1342 zcmcIiTWb?R6kfF=Ws^h%?(_0<<)=MVT>{3c0l4HiXl;M=oj&SlQ`&3rrB_twHX3>*W7fFpnhnDqk4 z0WX2Oz*k@ZIDWvgreQ~6=YSS43qNznvg)w!VGFP)`Yh`UYy^vx_A+N7Y+=hf*xtcs zFcdTwL?ol`&kXk!senoq?w18AJ}GI&Rh1x8BzfKS%cLrTY8=5SH3R6{FNi{DjyMERh3lwqB>-v&7m|#-jBxzrECjNs*mIhHC`R$@^ z8!8395|CoXMQl=#7f6+~Cc@ycC@D7Lum>WPZs6NAbZ2nv_BhMs?%DU(WFX6ZCbXDEHaPM_^hrBf*+vVy3)rtdHE&e@rZ z{i*ZF8|6~5V#s~zaTSC%jq+Ml3F;ssX6dTe@sb?gjdGQ{Ua}NaucOQ_N4Pjv6ujC~ z#HYF8>WHu^q!i))UGgLO;a&FWWGa#CXvKk}3&Htxkp~)I3Z0@i%&X$oU{y_2PHtkhtvIQpZj65sg4YMa=gzeEn zHj;#xOTm0cqOgx&oN72 diff --git a/cms/locale/ru/LC_MESSAGES/djangojs.po b/cms/locale/ru/LC_MESSAGES/djangojs.po index 5b3a05eccbb..a097be8b406 100644 --- a/cms/locale/ru/LC_MESSAGES/djangojs.po +++ b/cms/locale/ru/LC_MESSAGES/djangojs.po @@ -2,39 +2,35 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: DJANGO-CMS\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:38+0100\n" -"PO-Revision-Date: 2009-11-12 14:27+0500\n" -"Last-Translator: Lapuhov Alex \n" -"Language-Team: Lapuhov Alex aka wildermesser \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Russian\n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" -msgstr "" -"Вы уверены, что хотите изменить %(field_name)s без сохранения страницы?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" +msgstr "Вы уверены, что хотите изменить %(field_name)s без сохранения страницы?" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -"Не все плагины сохранены. Вы уверены, что хотите сохранить страницу? Все " -"несохранённые данные будут потеряны." -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" -msgstr "Вы уверены, что хотите изменить загладку без сохранения страницы?" +msgstr "Вы уверены, что хотите изменить вкладки без сохранения страницы?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Вы уверены, что хотите удалить данный плагин?" diff --git a/cms/locale/sk/LC_MESSAGES/django.mo b/cms/locale/sk/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..9dcacb2c7232d4cbd380e043a89029b6c504279b GIT binary patch literal 26393 zcmb8037lO;o$pH)69Te_Rp2C$(2;a!VQ)ytP6F8^2}?lW^u4Fkx9@T;_uPAv+m15B z3{O#_sE_9|qBiJY)VSgs&5$_SX-C{fpNh)>>XT8?83o7ZHY)G?tEzME=_CZapHzQO z)u~gbmjC}>|Eg1Y;`qbvHT+sHGUlal?~%s*7uS`Om1@i-XA$6~a1Lz1b?|<;3jPWn z0WS}XnG9FJ3*b7a{C@{8gAe)m({LH_V4Axh!50(17aj`V36FyBfmFrpgew2ja0(oQ zN5ikei{az&m2m2GV~&Myg2%!8ef%M)a>wC?@DX?nd=~b>W6n0F2QGxYa0|R1-V0v_ ze*smGQ_nGG5}X0`{$8l}T@I(hHE=d8z?Z;#pz851sQe#=6lFdG`DcFQIeCVwPcNiO zW&zZDZiOeoA*goW4%NS}^Lz_bz1|7cfA5ES??>QfxEr1TPnl`V;czxoJ?2BTdoer= z)}i{l1=TNi`1qTl+V^g#`h3)pF0N8pR$cOar*z7JKeXQAqIzG-LJv<+3eAhtLV+029weTXi15SoN zfW7c3sOL{ch}6HALDg#|)bnfL6nLXgAB6qH%TVq32dIAD38%o1LDm0ZD0$lp*TU~X z$=R&)T>oAMRsMRY@w*vnoMNbYyc()KuZQ#C`=H+YZ76v;o<@o@;ZoQSkA$y=vJbC= zlAi~m-t#DAD9n@aN_Z5FS35VtRqzI=d=J1W@MG`{_%M__d=IKVzl5sq5fqN-n$w`h zZxK|!>!8|QfmTkT^1m6L4j+K3=VyHSm!RbAG58YrM|cXHf>AmGo((l#y*_>sRJ|8L z_49JL2(E!@_Zy((;)C!s_*JNUPeJw9GjIt!9HCwYS3=$2?s+d%zWbo+@i7>{FGAJh z=TPnaHB>u~WN?m$)1XZ81@I`i8mgW*K=sSbQ2m!cwSPOj4!#|#+-IQP`v<7!j-K!8 zbpq7=)1l<;9C$oD&&L-+-Cqth9&4eVZ$gI3bRbPO4?;x8d>bAI4?W-Ap9)tJU+Q@` zlsdXK$~8(&G<8%{L!|44L^ER6m}2q3ic)Q1Wv*RDW%T8qeFH=7U#4 z)$&!55L;UA&ec??Rda!!HDHyx@zbA0?l&n2Gg;2Q4V1S!IN z0II$}fXm@AR7UOF1W^rhCsaE=4yD(-px(C!s(xR9s?Rr}`spW7`H!SCj)o^d<)03f ze>T+pOQ7n%2x=TxLFHTTxfvcyya?4VEqD?f@#$}Z>W}-O%6kY(-XDg__g#1*d>TrB z55LsC?^vjQI@QN#Le*;y)bp1?m3uu@xx-M;H=yeAD$hHh`uR0b`L;vlyBA7t-viZO zANKb@4%N z{{CH1a_|PI@pu5LA0C8i_XprP@KaEB_i?E5{{&UvLoRpyG8rm;D%AL$234<_Q1U+q zsy$1f-nRj&KZl^|*MiD_yN|yXsvq7A^`23v{0~Bv_YhQh{{mId@A&wSq3ZEl&p$%j zuM1rIB+sLu-g_L>drybz*K>UQJgEM<00!_1sB&(Fs>dMIdlIO6ZiDK#*Fe?hb+8A% z4J!X5h$H^4D?Ej(kf>+h!L zUqeicxf{xU?S-hg`2(aY%=t^4U9Ll=KLYjsLzX&ym<-jg$9hhKlB@afWVi&L05`+c zum;}@{|TN0*DiDRCGmV6l%9=3rUtVEo&q0-s?TpA|IGQz-Fjjhyp{MvPRKMK>x4|mZ^FM}?v%^=p=Z}F5shI|)C$~b?zXH|2 zcR|_bQK<4i1tkw(^6^KZ{D`YuImbik*Bq$wmO<73CU`ciz&>~noCiMx zB}dP|7sHiTJFbIj*R@dcaWm9=ittESg&KzrRKD$=_rfEH-v`yM2YvcppZ;a2@*aif z!p9*0%wY(VV4`OCqFBp>K{V>nYZvq<^B-%!k@rdaOzsu z{wtvFuk-Ou@Mz)@oC2E=RW!H5BjIj%7<>f21b!8&osYp&;gj$t_-AP4ah*$#q2hNz z_5XeF4ERZ?a=!s3|KEqGr1>301x^2YCoivp0r7XjSHRs+?>qhFu0Jk>(%TRo4c`GJ zw>#jC@M}=xH2WHCEW8lf`oLp|-v>1=JE7|FMJPS_5tQ8h83u4F59_@bd9H`bH|*ng z!sCg*8>+mIL)GVBef$Ziar(r;IE+U z+3A~H{N?ai;v+DCuZPRwhajSCeg##|0)$)rz5*TxuYqbu5l)AIuojY&WC#663_Kea&|L3 z5f-5OXPf68Q1!eUD&I%oT=)>21OFWca4M66-hUBPf31RumT5q`!h8;%3QyVW?C^Xj z{TPIU@E)jf_$|~t^JlmcE<~s#_pgDH<2OR}&rTozI#hdp39p8Kg6i*8D2MFdCa88b zJ@4}A@ABO3(;tIV$@h%sB!pk`aR!w9oDEgZ#ZcqE8fv^>0U09m0Mt1A!Ka^fv$F#c zTtWIE>K9)%jeC*hg!DR>5)e5>ovnNaV)3aTA9K(+VP@MQQFsQVv;YX2@MdH#~; z<52bdC7cZp37vk=fs=`^glf;rq3U@(RK0KZ>BCU%x(zD-UqO|BCp-$i6)OLG{r!)6 zej2L0&q1~C3sCj@iogE^RQ-Pf)$h+j)nn3t>;I#n($9n%=b1j<4^@vPQ2KB+)O$9; zL*R{YCcGIc- z&4=oTrSKHE&c}zK@-?CA`x>Zn-sJDU4XS_N3sufXp!(~defqfP*P!b4Z&2m@5Gvo# zq5AP@sP;}SIvxkrzSH0|*auaw_5OazvjNr4S3;HldMG)4lfVB#sPTRXs=Uub*}v~W z_3Ja9e}+yJ@0@j_a3PH55hy?hv8xH zZ-si_18_b35R{z$3F`U7x481Az!woue|q-&gsVu@`woG6&ohKMT+7y6PB@M58p5v$ zSCBrRpx?I%?&N_W_z+>7&_|w6!eO7c#P$Cm=y$A7yBdChcnDu^@8BDFY92^` zJ^tdm@Uk?~^ToON|MAz4d(NZW|K?hA%YB5I#6J!V$#-_P*(bnb0~4WE9tFIPG_k1&n6^t}jUfA35yLWgiB@n1pxmJu!`{xH0X@NU8g;Z1~FNskEn#SZrGS^m1}c?)b2 zjwJ8Uj#oy{C2`^T+e};!#}YnB_ys|~Hi2m-``zsGzLbPlHH1Dz{BIb3m9UBYyWk0gBe>oI z^;=~B8uNeQZht)=>U-k8zcL9&=hAN?elGDB`?L!2PZ3rT|0nn^!UqVm2`3Vc^Z7o; zwSF@k%qZOHuUC>M;re{S-w^(aa3vum+(`HhVGVhGw*)se~r+_rl}h1@Lad>j~3| z|25Q4b67-pDQT}DoX7Q2sNW5Qe;_O&{!Vx%;dO+k2>P8u`f_(^?twFi_Yzidy%?^9 z*TLI-o_$g0-h(8r_BSqpHxsTQeKX+^u4nmsdHlgg&VcL5_a}I=PrH)%8m_-W7~nen zJ;}vM3Zy*>C;JKDMNgclLs;gZZ3;YSF22|rZYjGkIpjb3a zXvREOuY`qYD6SNv#;oKy^EZQfoRpfSxTZ(^CG{!Uc)o~WYnTMZs1h}!;&Z+~Dwen% zgfF~U(^F_Q8d0q|%k*ri!~U&EiYDX2S z>S%g8aVsc!O;g%>UQf#4F>C7^VX-raRl5P#&}EfI z6c#(Y)VAL&E*2H&J0~hOvKUbsiW>HM=}@WSvaGivWfKcZv~9Cd`)2A~EhUL$C9EWI zkd2Z?-StB^3-9Np`#zUFVhachg(ykXjrMg&!R#PL))|+mRt#&+gt+RtwL~+WY}*nU z=5w3DK*V!lZHpVDQZoq(G`$%&+`E&~0Hd@eZA3e)709_EYBottsGd)Wtpt!zsVD@> zmrzQAHWHQ6@up%aL8Cg9fNDroYGJ#y#Y&=ms@rl(ss&LsEKyVuAx?tllMb>s8ZqU6N>mR6&J%vNb-Girug0+h&#ulkT7%5;c=?Vz~9?TTYUMN;YW z!e|!P>y=W$_mb0PrAeo~E$K$RW@ZU?q^-e0;>_Yk6iCApddOaEMLtw7XOevNY+qb4 zAv3WyV-XHiBKlP}GcilTq*UmN!qPPxg5F@g?8A(tE7m#V(`Q^BYS2*Mq2Gl<+@c1u zie3tzCzE7TrgLdnDYVqdK_hOlQtifV>4Ra?ME)qaqvj#~%7V(F$D(_gtejWI#3s9L zu$NLtdr_sE?M1zXDkMW@sZ|#bZ@Y-avDC|rC$B8k3YAt7u|cDpbZI`wM4&q<%tp-X z7(A;d1y_u>=1%K;(S^8n&2T`fXBE;cv(uf&#M(6*VJ%@4 zC7Ujr6`<_eN}5?N%cyF(tAz3jGW)J=E-_OqH|gejz$~{`1a(7sofdVavmI7s^u3+2 zhNjOfuQmPLM-VHA31)tk z2{J26l}LXm(4*h1sDwz-ibh-wR{Mc6SH|%cRBKIGH&@ap%yKm@;+CTPP0Y%TYgU_; z(YCM{6>w}SNDaniaPHhf!K^Idu+)GIZpW--=H*XZ*2JG0jtR!6&#W2@wv^hMDr6Uj z5KP&#u6afu)5+QD(?%?mIt8OMNRw;!4{riNxC9A1EfL3OH3PK?o1`K0aJ<7-_l@^G(%?GhGuL$ z&}1lXaTkHmJke*e!A>uNYKvNMKZ&dn#-(Z1>v2O}mkRK->@iL1*1D!oF%T7UV*bcO zLC&TnW;I?Fe@LOdvi~G812O~k^-+tsz}YHJ$++*(z5}NQ%i^sy zJ2hu79cnh~{d4Ao#dsj**${4~Q{aS}W*1 zI3@6^qV3egtc|wPSxF*CazX@evo=`L$jeHtjlHmClHZ2`_6A7`VIAcNe|oTquw%2b zC*<5(k?#xS)n!h{0p^6>q!J@&JnEM;shTMb!Sy}s?o50xpR4#ZwBoo?e1hYVFfNBi<^90v(~4 z0gNAuzj9)%EwEaX3E7MuEAy#jGbm z<hZU^%dr z7rMp4e)kjXaXy1nn6Ab(J9TD1|FpkpU0J$zi>B&SpWKub*k#0oR_kf!KzkzLSXUez z793{1UF%p?m3|JinoTTaMa2Cp2zWAz&?<{C7ErZlq)Yhi4Cn05O|R&S)M5@{s! zHK~@V*s#Aql5Nb4o_$`hVfnhQp32f0Ywo0jGWj9iAf4V##KyCrWtAtlp9#$0VYi4r z*nmIheMFw?dXbEWTg418Bic(%EwVxBMB?Yu>f^u3trOka=7@VJ0>k z5E8S&d7LQ|vjOdGfxH$u!P%(AZo_Q!YtQTghdcFuSPtyF1GbUv6|%C&qJ~rREQ5DN z(hl)c4X)ckbF(f)xa0viX;gkxFI~^3c$ z;P+;OJYgZ4+xRpa<#$e89x%PS{jgd@_eMV|PPYSZpP?tx{Ju2CXj>hl zmWg&>usYJD<<>(yP?L4`x%$iv3~`Y}99S(Ab6u6wzpn89W!cZw?h4aOx}9kK94zI* zOY!4R3%sJ({C0t*i92hVo77cJE4Oa`?lXRK+>of?B-38`ZBt#_?*d^(%Lv)Je3Ha< zpS^Rt8de@n;wIF_K`oT|kfCNh-zRIxo4YG}U27{aB~@uPhw!2RJ6~FY*eflg%s^Nu zOU$H3+B`A?agkK#Wekqh~uVB^t*6+Ojf|ArH0E#Xs&Lj`m1aF3F{ikFHSuYs|fj?Sz=n5WI6{Vw@iMFzwaSOoj23hIN7hbEamuCt*vMHafI*a!!k z#=yQ$yZB^_<7)$R5S1`NezGEPi9IB3`e@Fvzxpe7p^Yc8CF(xZ(* zSD}E<0J9F5$vZA~!D}VeNhb>Kd?ME6MmtHyEvl{aY|_t*hB2n@TmAl-ZGs&azr|^V zG@l?RwwuWAjFr>wP_kj^d~&4+GBqasHYVvquo_nCupZbWtVs>o%SU|wCs9<^m=0|5 zHX==M7Q?TZx)#?8m7S#YCo$Uk;1AxftODEnigM*Hod278OGakVzeblW>}*a}Qm4_0 zyAzM5-^rAJX0)0!t<(*0J;I*rL~SEy&^K6VTQQM$KQ#ZM3)mSc;7JsNwx(exLCTnH z9n2yPqXFVil^i^WkJD_i-RBH}It@o3M`HFott-dMFV+X}-c`lkYu(zgKPV2f#~k+-s>zgV zB5f}Au1U6(ioHu(Taw<5v3qmEt{WcDP;0=xwODGG;yK+X=di2C3T(>ybsKw^dMnt= zED?a=-7i`+NqW6++KGkM0YVey(b)~N>Ny?e%X?cI*Zq=zDK zxOEz$HO#)o=CRSF)vk^0miOGMkSAw)C~6?Cs4%`NlLcRH-%m=<_k4|=%XnmLXMs`X z+3rb+_P#~gSG7CUa76EVVKp1Ul18do?llL0i|Gl=&DPjxrN%CuJvotHw>#r|!Xlj# zB!!_isZouIf`Z3(;cV4ZeLuhCmQ9pFj%GBBbS5P2klNd zu8obh!}0e8VYyJ!{vf+#jFWq!Gdn0VpKA>CWDCEx7;TGf{&r_*FV)i1d$%)Q>x$)Y zM78qIws>YVXpg;j@AmQ0QcJJYX$qEBWxhQl`*E9cV?9Ne#v@2bCK230t+2jrGRUK$ zCrQ}5y~Ivx-14>B@d9eK!8L?hG57JP+|am)-_HUdol^X9i`Muax0JQwx0vn-v0@0= z`1?}Q(@v1HguQPJD>RQyK9>`jYR1)a_GBifKoYMlZ4&K_aa{GrH*jFhuF# zQ~zcuqLTG2yHs{;v_S8s`L*Ttmln1YjjIRcpk2c&p{J{9X^aSpq4vbpS$)B(T3BWs zHK2tl@=!o%sMFYvu7t4{K#iPy=qse0eO3r*-=qyzOC`BsIT}ud7{MzyVn(V3P*QI88uRJ*9a+HMxiyrnIUbqNf+eyluW(7$LG3T9ukW(LxI2qen<;=@KEpDTB zSqCuM*M{Sxm_91aLMJSuL?yQ2njym{$sF4`LPJvN*)bG5GuUDPoEEbTU;tW`7>!1U zr?G`lDvymeS#n5A?fDSJ<3^^$^%xm1VMkJ*MW;gK=-Hzp3`)DxY)b~{RI8Z0t*g&w zQ%*tBrdY*7WRL-zkK9Y+D(5~bs*&_)gEL$uRH=Izj98P3^5oLc04!5JCC!z-vO_P? zl_hqsnqxa>2eh9KFUYLftP)FV5@(&~XOJuM&+Wd#EMr@#Rj(m#SueXj?r82QSHhz1 z4yWqP7rvZ!IC;f1>^m+} zt!g-oYPTi!sw@+~o8#gEt@cV%y0OubB3oqjm>oe)D^d?;9XGjVrjk!+>5HorRzn&} zj81)QC#ETs>De4g8zi%9DcaeiU@+t(rn*j?PO)(3D-u1?=W;koPmT0G&V zo#buZ^a=TZRnC`Xr-_h8I-MTdVHW#7$aGqFu}P&NH)y!g;Q+m7Eughw+?S5p(X*V` zR0dpn!rbpHn?@wHag4KjBJB^ahW3mMtteoYt7D%iX7bRED=fP9?vdBD?=zbuYbw1t zwyQhcw6N>L;Yg?4npiFO0omK0oRZ>fH)&}QrFMRov-60;W-Rb9GU(K#9E^{0@MG)~ zh!Hb>y>YM;H{QICTIod6+_XbwIdijNY}WugTPqH9>SnX6dzc=$VcWpD4N*lc&1QLI ztyM48Frt+CWVnVanN$|%aAv(trU3ntI;(O}{k z9b1+r70N?xF|3r!aHE(zT)~=WbCyz#_g)EOY^Qp;C0nC`xQeGaAQk6Kk@ZB%OfuHI zN^bC>yOrKO>o3TP2(W}!ucWevd#Qy-hlZv?&CK94rSj3DeT8MBgtUoI z=FFRfM8$C$j6&KW*yC0rhfBUlyHjWJ!kALmgyTSVYQ_3?+}a>@@|}T*%UIPR zsxMm`=`_%$k+52Jh6oWIs^BerTxK;$R1so9#RL zmNL9=-Oi`sZ_sr($74I0H}iKg!@543X5G5iElC0tJDq-mIS8R$xugSyr;JtK!Rb?0 zRg6!w-N0Q#C2>s0<5d%cHC#icT2xf znu+Tk&C9Mr``p-n2H&?5&SG%h)b1s4I>;Fk7tP+&^^j@Z2$Iesj6D`Pz-b>a?P0ZO zFjfqATfURjMs66_tRs+z2>ZD<9L809s1XdahLvt`&-&Sjqd%Nfaz0JoW@)LyLb$0K z$?J&Qeqz|6*E+W)n;K{%RDqnwPWCA{s7rz+tUTo4)XDtriRb8ce~suXU3f^OP42fmR0?>sw%rC-+oAI7PPp= zk~h7`E9*hdH#s-dxzJ7@oX0%DmCkuyUjC6}r_NbCd#_zThgHrZxkW2W!EU8A=$UF2 zO7t8HjeOQrOn5;)V>dZ_PYvlWVlvaY%o&tEb0w#Q>`d$?@6658iX~(uyyoLu<_itm zode&>wcWm<`_Ou8H(9d#J_zyZ!&*4L2T|tisP0aF)~>rW*3*;QlF#s7<%7voqik^nIHSNpa1O5RFqB83`n|Kma~V> z$phsSAkKy+m4L;Gonf_~aDbexH0Q48%X#oJF@AP6!hZY#bTapHJea+Es3x<&GZ#4r zCe@Y1x@__?8!7ikJ`NsmRhYQlkEmJ9rkXgB9^5hE6dbc z<=g_d2cZeo`FVW68)4tbSy3wZe5GJj{35%Jcr{fJ|6j^(FWRC?-J;M>yEW(zZ28sS zI&Fd2`8<`vEX6JG?J~+uWyplj>~HPHzvnIaV_TZ+s&*pPH1A_}k5r288;OO~#-tN` zy_?M4RNt&{R^!*lGmIQ69Dm$%HS3EMwr>>Z6x8z0?%3UjeC z|NliF#*nqJO;T!E>eg?uvb?Fz`i{{F&G>uV0xWk$@24AA?EmM#6>Owfqd)Z1Znp>7 zAcON`B@}*JQVx%k__)o=>9$K`3%>P=Er>E^ah8`i?ZqOW1 z-PBjjY%kUGgFj)*$C~8y3lYm7zqKau;YD^OE6HR>+|A7g?RagR+s^NvHe1Jf%&yqG zE`%h=?##C_a0j?s>-sQSM;tIu*1g=-F$!<0*Qblo5l&O{HAq_~prMyPQ>HY>Euma`Eeo{P82B$)EqgsvzE`A$vyx3O2^cgvAgA@ z8zK9awWA5XDFiqO-*h$78gk$FM?otF4K zp(ak;8)EfxpiESi1HnO0PSf+>U1sg8)cce|BfCvRb0&Pd>}Wg6J0R(Vnrf%tQ<qfJzP0y;$)&+}9c{0ZR=1x`5efRb z+%j&{COb377XaJ`O@1bGFVLG%t1aegjW4>Sk5`ov5pF2CSfu z3gpDTxUCd>Kf6P**(Qr&?;6SCt2c+8Leu2Pf=?R3IPs~>Zrf~mKGDFttMebk zv{2sfZkC%iSjTi&{<^xP#@4XgB+)JVA=O8{aMus~ac`eYn#sbnpj0igQ+htLb>-+O zAI-i)rU|L#>}HYm@?R_bLz(z>Gcm%>ZDpKxm2vpnk#-E&*_Pg*_pE$d={vH_UfeoH zTCBy3y(m=-XP7x4mMyq=kG|sYp9i|1cKjuo`8?BXRhgyzN4bz&l$`F?OJe*cDmPRm zit|<5LAh9NQ)H7Bp$<8YDAQs+_0ZTaHxjG#Vqg6(vy?2db)2~E>q5k49Ab}%#PZGD zszyUHD!H}$5$X=MD-Dt~K1v>@I5vV&wbVL>R7Ts+B~I$)w``rx#AUly!L3Ml5qF#P zj>%gQlYRP;bY&5=u^VB(kml~a9)0zZnr0k6*eK!6pdBxrEZQ5O{DPIOMl`ac2 z_6pRM0di##W;Nu*WodPjB_~-P z8=)7w3r)8b$Cz+SW)~T<$8p^GMD`u!4cQZlZ7tkHM=@=(zKW6Tibh$H~RENxxvEMqaa1i%G#RqV}24T>qQw z#A50g?cJk;i>SqfK4UM@jX6h&WEA{j$DdtvRwdm{q`I+{65pxF4QCp2kLVbqH$*uv rkPOb(@@E>|D)s=!8rOz=6Z?w}H9B7xQArR#E9}wuYgxa<)t34H37}g^ literal 0 HcmV?d00001 diff --git a/cms/locale/sk/LC_MESSAGES/django.po b/cms/locale/sk/LC_MESSAGES/django.po index 5fa7a555aff..213c7b6eaf4 100644 --- a/cms/locale/sk/LC_MESSAGES/django.po +++ b/cms/locale/sk/LC_MESSAGES/django.po @@ -2,488 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: django-cms\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:54+0200\n" -"PO-Revision-Date: 2010-02-04 12:28+0100\n" -"Last-Translator: Martin Kosír \n" -"Language-Team: Slovak \n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:39+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural= (n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Pokročilé nastavenia" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Názov" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "Predvolený názov" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "Identifikátor" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "Časť názvu, ktorá je použitá v URL" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Jazyk" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "Aktuálny jazyk polí s obsahom." -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "Už existuje stránka s týmto identifikátorom" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Názov v menu" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Prepísať to, čo sa zobrazuje v menu" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Názov stránky" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" -msgstr "" -"Prepísať to, čo je zobrazené v hornej časti vášho prehliadača alebo v " -"záložkách." +msgstr "Prepísať to, čo je zobrazené v hornej časti vášho prehliadača alebo v záložkách." -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Aplikácia" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Pripojiť aplikáciu na túto stránku." -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Prepísať URL" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." -msgstr "" -"Ponechajte toto pole prázdne, ak chcete, aby sa použila štandardná cesta." +msgstr "Ponechajte toto pole prázdne, ak chcete, aby sa použila štandardná cesta." -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Presmerovanie" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Presmeruje sa na túto URL." -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "Popis stránky, ktorý môžu indexovať vyhľadávače." -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." -msgstr "" -"Zoznam kľúčových slov oddelených čiarkou, ktoré môžu indexovať vyhľadávače." +msgstr "Zoznam kľúčových slov oddelených čiarkou, ktoré môžu indexovať vyhľadávače." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Stránka s takouto hodnotou reverse URL id už existuje." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "Neplatná URL, použite formát /moja/url/adresa." -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "užívateľ" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"Právo na pridanie stránky vyžaduje taktiež prístup k vnoreným stránkam " -"(potomkom). Inak nebude môcť takéto stránky editovať ich autor." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "Právo na pridanie stránky vyžaduje taktiež prístup k vnoreným stránkam (potomkom). Inak nebude môcť takéto stránky editovať ich autor." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "Právo na pridanie stránky vyžaduje taktiež právo na editáciu stránky." -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Prosím, zvoľte najskôr užívateľa alebo skupinu." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Pridať" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Zmeniť" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Vymazať" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Obnoviť stránky" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Notifikovať užívateľa" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Posielať užívateľovi e-mailové notifikácie ohľadom zmeny užívateľského mena " -"alebo hesla. Vyžaduje sa e-mail užívateľa." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Posielať užívateľovi e-mailové notifikácie ohľadom zmeny užívateľského mena alebo hesla. Vyžaduje sa e-mail užívateľa." -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Nové heslo" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Potvrdenie nového hesla" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "Notifikácia vyžaduje platnú e-mailovú adresu." -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" -msgstr "" -"Právo na pridávanie stránok vyžaduje taktiež právo na editáciu stránok!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" +msgstr "Právo na pridávanie stránok vyžaduje taktiež právo na editáciu stránok!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" -msgstr "" -"Právo na pridávanie užívateľov vyžaduje taktiež právo na zmenu užívateľov!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" +msgstr "Právo na pridávanie užívateľov vyžaduje taktiež právo na zmenu užívateľov!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "Pridávanie prístupových práv vyžaduje taktiež právo na ich zmenu!" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Skrytý" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Základné nastavenia" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." -msgstr "" -"Poznámka: táto stránka sa znova načíta ak zmeníte výber. Najskôr ju musíte " -"uložiť." +msgstr "Poznámka: táto stránka sa znova načíta ak zmeníte výber. Najskôr ju musíte uložiť." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Pokročilé nastavenia" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Nastavenia SEO" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "vyššie" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Databázová chyba" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "stránka" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "Stránka bola úspešne schválená." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "Objekt %(name)s s primárnym kľúčom %(key)r neexistuje." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Existuje len jeden preklad tejto stránky" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "Názov a zásuvné moduly pre jazyk %(language)s boli vymazané" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Ste si istý?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "Nemáte právo na publikovanie tejto stránky" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "Nemáte právo meniť status (zobrazenie v navigácii) tejto stránky" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "Nemáte právo meniť túto stránku" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "Jazyk musí byť medzi podporovanými jazykmi" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "Zásuvný modul %(plugin_name)s bol pridaný do %(placeholder)s" -#: admin/pageadmin.py:1129 -#, fuzzy +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" -msgstr "Jazyk musí byť odlišný od kopírovaného jazyka!" +msgstr "" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "Skopírované %(language)s zásuvné moduly do %(placeholder)s" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" -msgstr "" -"Zásuvný modul %(plugin_name)s bol zmenený na pozícii%(position)s v %" -"(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgstr "Zásuvný modul %(plugin_name)s bol zmenený na pozícii%(position)s v %(placeholder)s" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Zásuvné moduly boli presunuté" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." -msgstr "" -"Zásuvný modul %(plugin_name)s na pozícii %(position)s v %(placeholder)s bol " -"vymazaný." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." +msgstr "Zásuvný modul %(plugin_name)s na pozícii %(position)s v %(placeholder)s bol vymazaný." -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Práva k stránkam" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Práva užívateľov a skupín" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Manažment práv k stránkam" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Detaily užívateľa" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Skupiny" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Heslo" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Kopírovať práva" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Kopírovať moderovanie" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Zdediť šablónu od najbližšieho predchodcu" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Prehľad" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Indexy a tabuľky:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Kompletná tabuľka obsahu" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "zobrazuje všetky sekcie a podsekcie" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Hľadať stránku" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "prehľadávať túto dokumentáciu" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Globálny index modulu" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "rýchly prístup ku všetkým modulom" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Všeobecný index" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "všetky funkcie, triedy, pojmy" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Index" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Celý index na jednej stránke" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Indexovanie stránok podľa písmena" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "môže byť veľmi veľké" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Navigácia" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Tabuľka obsahu" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Predchádzajúca téma" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "predchádzajúca kapitola" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Nasledujúca téma" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "nasledujúca kapitola" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Táto stránka" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Zobraziť zdrojový kód" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Rýchle vyhľadávanie" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Choď" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "Zadajte hľadaný výraz, modul, triedu alebo názov funkcie." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "O týchto dokumentoch" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Hľadať" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Copyright" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Zastaralé" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "hľadať" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Výsledky vyhľadávania" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "Neboli nájdené žiadne výsledky." - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "vybrať túto stránku" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "Pridať ďalšie" @@ -491,34 +333,34 @@ msgstr "Pridať ďalšie" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "jazyk" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "pozícia" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "dátum vytvorenia" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "slot" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "názov zásuvného modulu" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -528,7 +370,7 @@ msgstr "názov" msgid "path" msgstr "cesta" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "identifikátor" @@ -536,15 +378,15 @@ msgstr "identifikátor" msgid "everybody" msgstr "každý" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "môže editovať" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "skupina" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "môže publikovať" @@ -566,7 +408,7 @@ msgid "navigation extenders" msgstr "rozšírenia navigácie" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "má prepísanú url" @@ -582,326 +424,321 @@ msgstr "autor" msgid "reverse url id" msgstr "reverzné url id" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "vyžadovať prihlásenie" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "soft root" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "publikovať do dátumu" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "šablóna" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "dátum publikovania" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "v navigácii" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "aplikácia" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "presmerovanie" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "kľúčové slová" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "popis" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "Aktuálna stránka" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Priamy potomkovia stránky" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Stránka a priamy potomkovia" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Nasledovníci stránky" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Stránka a nasledovníci" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Stránka" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Užívateľ" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Moderovať stránku" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "Moderovať potomkov" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "Moderovať nasledovníkov" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "Moderátor stránky" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "vytvorené" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "zmenené" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "zmazané" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "presunuté" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "publikované" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "odpublikované" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "schválené" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "Stav moderovania stránky" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "Stavy moderovania stránky" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "požadované schválenie" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "vymazať" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "schválené a čaká na predkov" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "vytvoril" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "zmenil" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "Aby bola stránka publikovaná treba zmeniť stav na \"publikované\"." -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." -msgstr "" -"Kedy má stránka expirovať. Ponechajte prázdne, ak má mať neobmedzenú " -"platnosť." +msgstr "Kedy má stránka expirovať. Ponechajte prázdne, ak má mať neobmedzenú platnosť." -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Nie všetci predkovia budú zobrazení v navigácii" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" -msgstr "" -"Unikátny indentifikátor, ktorý použije templatetag page_url na vytvorenie " -"odkazu na stránku" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" +msgstr "Unikátny indentifikátor, ktorý použije templatetag page_url na vytvorenie odkazu na stránku" -#: models/pagemodel.py:58 -#, fuzzy +#: models/pagemodel.py:69 msgid "attached menu" -msgstr "flash menu" +msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "publikované" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "Šablóna, ktorý sa použije na zobrazenie obsahu." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "Stránka je dostupná na." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "web" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "stav moderovania" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Prepísať to, čo sa zobrazuje v menu" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "stránky" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "Stránka bola skopírovaná." -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "predvolené" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "môže pridať" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "môže zmazať" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "môže meniť pokročilé nastavenia" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "môže meniť práva" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "na úrovni stránky" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "môže presunúť" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "môže moderovať" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "môže obnoviť stránky" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "môže obnoviť akúkoľvek zmazanú stánku" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "Ak nie je žiadne zvolené, tak má užívateľ prístup ku všetkým webom." -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "weby" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Globálne práva stránky" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Globálne práva stránok" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "Prideliť právo na" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Nastavenia práv stránky" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Užívateľ stránok" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Užívatelia stránok" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Skupina užívateľov stránok" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Skupiny užívateľov stránok" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "šírka" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "prepísať názov v menu" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "Cesta" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "Prepísať title tag v html kóde" @@ -909,21 +746,21 @@ msgstr "Prepísať title tag v html kóde" msgid "File" msgstr "Súbor" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "súbor" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "použite .swf súbor" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "výška" @@ -931,7 +768,7 @@ msgstr "výška" msgid "Missing flash plugin." msgstr "Chýbajúci flash plugin." -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Google mapa" @@ -987,15 +824,15 @@ msgstr "plánovač cesty" msgid "Map" msgstr "Mapa" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "Vaša adresa" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Vypočítať cestu" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "Zdediť zásuvné moduly zo stránky" @@ -1004,12 +841,8 @@ msgid "Language or Page must be filled out" msgstr "Jazyk alebo stránka musia byť vyplnené" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" -msgstr "" -"Vyberte stránku, ktorej zásuvné moduly sa majú vložiť do tejto oblasti. " -"Prázdne pole znamená aktuálnu stránku." +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" +msgstr "Vyberte stránku, ktorej zásuvné moduly sa majú vložiť do tejto oblasti. Prázdne pole znamená aktuálnu stránku." #: plugins/inherit/models.py:11 msgid "Optional: the language of the plugins you want" @@ -1019,28 +852,28 @@ msgstr "Nepovinné: jazyk zásuvného modulu, ktorý požadujete" msgid "Link" msgstr "Odkaz" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "meno" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "odkaz" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "Odkaz na stránku má väčšiu prioritu ako textový odkaz." -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "mailto" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "E-mailová adresa má väčšiu prioritu ako textový odkaz." @@ -1048,40 +881,40 @@ msgstr "E-mailová adresa má väčšiu prioritu ako textový odkaz." msgid "Picture" msgstr "Obrázok" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "vľavo" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "vpravo" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "obrázok" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "klikateľný obrázok, ak je vyplnený" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "alternatívny text" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "textový popis obrázku" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "dlhý popis" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "podrobnejší popis obrázku" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "strana" @@ -1100,25 +933,22 @@ msgid "HTML" msgstr "HTML kód" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " -msgstr "" -"Zadajte cestu k šablóne (napr. \"snippets/plugin_xy.html\"), ktorá sa má " -"zobraziť. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgstr "Zadajte cestu k šablóne (napr. \"snippets/plugin_xy.html\"), ktorá sa má zobraziť. " #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "Úryvky textu" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "Upútavka" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "Obrázok bude klikateľný (ak je zadaný)" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "Obrázok bude klikateľný (ak je zadaný)." @@ -1130,7 +960,7 @@ msgstr "viac" msgid "Text" msgstr "Text" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "telo" @@ -1185,9 +1015,8 @@ msgid "Twitter" msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "twitter užívateľ" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1210,15 +1039,11 @@ msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "Ak je zadaná, tak sa nápoveda zobrazí ako odkaz na váš Twitter profil." #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "užívateľ" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1229,92 +1054,84 @@ msgstr "Video" msgid "Color Settings" msgstr "Nastavenia farieb" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "video" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "použite .flv súbor alebo video kódované v h264" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "url videa" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" -msgstr "" -"vimeo alebo youtube video url. Napr.: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" +msgstr "vimeo alebo youtube video url. Napr.: http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "náhľad obrázku" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "automatické prehrávanie" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "automatické schovávanie" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "celá obrazovka" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "opakovať" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "farba pozadia" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "Hexadecimálne, napr. fff000" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "farba textu" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "farba seekbar" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "farba seekbar" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "farba loadingbar" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "farba pri opustení tlačidla" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "farba tlačidla pri prejdení ponad" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "farba zvýrazneného tlačidla" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" -msgstr "" -"Chýbajúci flash plugin. Stiahnuť ho môžete tuhere" +msgstr "Chýbajúci flash plugin. Stiahnuť ho môžete tu%(page)s may require approvement by you." -msgstr "" -"Stránka %(page)s môže vyžadovať Vaše " -"schválenie." +msgid "Page %(page)s may require approvement by you." +msgstr "Stránka %(page)s môže vyžadovať Vaše schválenie." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Posledné zmeny" @@ -1357,11 +1173,18 @@ msgstr "Posledné zmeny" msgid "Log in to administration here." msgstr "Prihlásiť sa do administrácie." +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Užívateľské meno:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Heslo:" @@ -1447,12 +1270,8 @@ msgstr "Stavy stránky" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." -msgstr "" -"Táto stránka musí byť moderovaná na úrovni %(moderation_level)s. Pošlite " -"správu moderátorovi." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." +msgstr "Táto stránka musí byť moderovaná na úrovni %(moderation_level)s. Pošlite správu moderátorovi." #: templates/admin/cms/page/change_form.html:185 msgid "Request approvemet" @@ -1513,9 +1332,8 @@ msgid "published" msgstr "publikované" #: templates/admin/cms/page/change_list_tree.html:15 -#, fuzzy msgid "start" -msgstr "stav" +msgstr "" #: templates/admin/cms/page/change_list_tree.html:16 msgid "end" @@ -1535,8 +1353,8 @@ msgid "edit this page" msgstr "upraviť túto stránku" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "upraviť" @@ -1592,7 +1410,7 @@ msgid "add" msgstr "pridať" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "Schváliť priamo" @@ -1607,6 +1425,7 @@ msgid "Unpublish" msgstr "Odpublikovať" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Publikovať" @@ -1735,233 +1554,239 @@ msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "Žiadny zásuvný modul. Pridať zásuvný modul do tejto oblasti." #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "Dostupné zásuvné moduly" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "Presunúť do %(name)s " -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "Ste si istí, že chcete zmazať tento zásuvný modul?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "Editovací mód" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "Stav" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "Užívateľské meno" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "prihlásiť" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "Šablóna" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "presunúť" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "Presunúť / pridať stránky" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "pridať potomka" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "Pridať podstránku" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "pridať na rovnakej úrovni" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "Pridať stránku na rovnakej úrovni" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "Odstrániť stránku" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "Správa webu" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "Nastavenia stránky" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "história" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "Zobraziť históriu" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "Odhlásenie" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "Uzamknúť" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "Zatvoriť" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "hore" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "dole" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "Nastavenia" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "Zmazať zásuvný modul" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "Odpojiť moderovanie stránky" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "Odpojiť moderovanie potomkov" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "Odpojiť moderovanie nasledovníkov" -#: templatetags/cms_tags.py:69 -#, fuzzy, python-format +#: templatetags/cms_tags.py:78 +#, python-format msgid "Page not found on %(domain)s" -msgstr "Reverse ID nebolo nájdené na %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:70 -#, fuzzy, python-format +#: templatetags/cms_tags.py:79 +#, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"page_id_url template tag nenašiel reverse_id %(reverse_id)s\n" -"Url adresa stránky bola: http://%(host)s%(path)s" -#: utils/moderator.py:82 -msgid "parent first" -msgstr "najskôr rodič" - -#: utils/moderator.py:89 -msgid "approve" -msgstr "schváliť" - -#: utils/moderator.py:240 -#, python-format -msgid "CMS - Page %s requires approvement." -msgstr "CMS - Stránka %s vyžaduje schválenie." +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" -#: utils/permissions.py:206 -msgid "CMS - your user account was created." -msgstr "CMS - Vaše užívateľské konto bolo vytvorené." +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" -#: utils/permissions.py:208 -msgid "CMS - your user account was changed." -msgstr "CMS - Vaše užívateľské konto bolo zmenené." +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" -#~ msgid "menu login required" -#~ msgstr "menu vyžaduje prihlásenie" +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "zobraziť stránku v menu, iba ak je užívateľ prihlásený" +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" -#~ msgid "" -#~ "A show_placeholder_by_id template tag didn't found a page with the " -#~ "reverse_id %(reverse_id)s\n" -#~ "The url of the page was: http://%(host)s%(path)s" -#~ msgstr "" -#~ "show_placeholder_by_id template tag nenašiel reverse_id %(reverse_id)s\n" -#~ "Url adresa stránky bola http://%(host)s%(path)s" +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" -#~ msgid "Sublevel" -#~ msgstr "Podúroveň" +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" -#~ msgid "Sublevel3" -#~ msgstr "Podúroveň 3" +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" -#~ msgid "Sublevel 2" -#~ msgstr "Podúroveň 2" +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" -#~ msgid "dock" -#~ msgstr "dock" +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" -#~ msgid "overlay" -#~ msgstr "overlay" +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" -#~ msgid "blank" -#~ msgstr "blank" +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" -#~ msgid "self" -#~ msgstr "self" +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" -#~ msgid "parent" -#~ msgstr "parent" +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" -#~ msgid "window" -#~ msgstr "window" +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" -#~ msgid "opaque" -#~ msgstr "opaque" +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" -#~ msgid "transparent" -#~ msgstr "transparent" +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" -#~ msgid "controller style" -#~ msgstr "štýl ovládača" +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" -#~ msgid "click_url" -#~ msgstr "url po kliknutí" +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" -#~ msgid "click target" -#~ msgstr "cieľ po kliknutí" +#: utils/moderator.py:83 +msgid "parent first" +msgstr "najskôr rodič" -#~ msgid "mute" -#~ msgstr "vypnúť zvuk" +#: utils/moderator.py:90 +msgid "approve" +msgstr "schváliť" -#~ msgid "mute only" -#~ msgstr "iba stíšiť" +#: utils/moderator.py:251 +#, python-format +msgid "CMS - Page %s requires approvement." +msgstr "CMS - Stránka %s vyžaduje schválenie." -#~ msgid "volume" -#~ msgstr "hlasitosť" +#: utils/permissions.py:206 +msgid "CMS - your user account was created." +msgstr "CMS - Vaše užívateľské konto bolo vytvorené." -#~ msgid "in range <0, 100>" -#~ msgstr "v rozsahu <0, 100>" +#: utils/permissions.py:208 +msgid "CMS - your user account was changed." +msgstr "CMS - Vaše užívateľské konto bolo zmenené." #~ msgid "fgcolor" #~ msgstr "farba popredia" -#~ msgid "Hexadecimal, eg 13abec" -#~ msgstr "Hexadecimálne, napr. 13abec" - -#~ msgid "wmode" -#~ msgstr "wmode" +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/sk/LC_MESSAGES/djangojs.mo b/cms/locale/sk/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..3c7429125479baec667110fe57bb900712e4cf6c GIT binary patch literal 969 zcmb_a&2G~`5MH1N$w$r{=0eq~-NbP!Qn_){5Ynnr3ZbNk0|;&Gt-Xo8YxXB4c?vE( zKqYtsIJTFl55a|JVT=%!;7|!M(x;uB{rvgcnf-o$b7}3TCBa{pwnV@?`epY^g)xpBZ}@CPdzv$g%Jd1dJcPh+G^ig?zXg6P3@~}*`$(k6d?qRf zfAbp6u-V%1F}wjYmX0)&CTCXZ5Y$8nXcv61N@{VoixinUY%v{iR)jFMZ1PDcB5`)eqX1S{ zLAIl, YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:38+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" -msgstr "" -"Ste si istý, že chcete zmeniť %(field_name)s bez toho, aby ste najskôr " -"uložili stránku?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" +msgstr "Ste si istý, že chcete zmeniť %(field_name)s bez toho, aby ste najskôr uložili stránku?" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -"Nie všetky zásuvné moduly sú uložené. Ste si istý, že chcete uložiť stránku? " -"Obsah všetkých neuložených zásuvných modulov bude stratený." -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" -msgstr "" -"Ste si istý, že chcete zmeniť záložku bez toho, aby ste najskôr uložili " -"stránku?" +msgstr "Ste si istý, že chcete zmeniť záložku bez toho, aby ste najskôr uložili stránku?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Ste si istý, že chcete vymazať tento zásuvný modul?" diff --git a/cms/locale/sv/LC_MESSAGES/django.mo b/cms/locale/sv/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..4424699f6987dacc8423001413a7d6cfcd35df64 GIT binary patch literal 25347 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, YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: django-cms 2.1.0-beta\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-07-01 14:34+0200\n" -"PO-Revision-Date: 2010-07-01 14:33+0100\n" -"Last-Translator: Simon Hedberg \n" -"Language-Team: \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:39+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -"X-Poedit-Language: Swedish\n" -"X-Poedit-Country: SWEDEN\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Avancerade inställningar" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" -msgstr "Rubrik" +msgstr "Namn" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" -msgstr "Standardrubrik" +msgstr "Sidans namn" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" -msgstr "Slug" +msgstr "URL-namn" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" -msgstr "Den del av rubriken som används i URL:en" +msgstr "Den del av namnet som används i webbadressen" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Språk" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." -msgstr "Redigera i detta språk" +msgstr "Det aktiva språket för innehållsfälten." -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" -msgstr "En annan sida med samma slug finns redan" +msgstr "En annan sida med samma URL-namn finns redan" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Menyrubrik" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" -msgstr "Ange för att visa annan text än sidrubrik i menyn" +msgstr "Ange för att visa annan text än sidans namn i menyn" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Sidrubrik" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "Anger vad som visas i webbläsarens topp eller i bokmärken" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Applikation" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Koppla applikation till denna sida." -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "Ändra URL" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "Lämna tomt om den vanliga sökvägen ska användas." -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Omdirigera" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Omdirigerar till denna URL" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "En beskrivning som ibland används av sökmotorer." -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "En kommaseparerad lista med sökord som ibland används av sökmotorer." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "En sida med detta URL-id finns redan." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "Felaktig URL, använd följande format: /min/url." -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "användare" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"Tillåtelse att lägga till sida kräver också tillgång till barn eller " -"efterkommande annars kan inte tillagd sida redigeras av den som skapat den." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "Tillåtelse att lägga till sida kräver också tillgång till barn eller efterkommande annars kan inte tillagd sida redigeras av den som skapat den." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "Tillåtelse att lägga till sida kräver tillåtelse att redigera sidor." -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Ange användare eller grupp först." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Lägg till" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Ändra" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Radera" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Återskapa sidor" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Meddela användare" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Skicka e-postmeddelande till användare om användarnamn eller " -"lösenordsförändring. E-postadress på användare krävs." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Skicka e-postmeddelande till användare om användarnamn eller lösenordsförändring. E-postadress på användare krävs." -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Nytt lösenord" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Nytt lösenord (bekräfta)" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "E-postmeddelande kräver en giltig e-postadress." -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "Tillåtelse att lägga till sidor kräver tillåtelse att redigera sidor!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" -msgstr "" -"Tillåtelse att lägga till användare kröver tillåtelse att redigera användare!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" +msgstr "Tillåtelse att lägga till användare kröver tillåtelse att redigera användare!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "För att lägga till rättigheter måste du också redigera dem." -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Dold" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Grundinställningar" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "Notera: Sidan laddas på nytt om du ändrar detta. Spara först." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Avancerade inställningar" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "SEO-inställningar" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "högre" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Databaserror" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "sida" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "Sidan godkändes." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "%(name)s objekt med primär nycket %(key)r existerar inte." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Det finns endast en språkversion av denna sida" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "Rubrik och plugins för språket %(language)s raderades" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Är du säker?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "Du har inte tillåtelse att publicera denna sida" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "Du har inte tillåtelse att ändra denna sidas 'i navigation'-status" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "Du har inte tillåtelse att redigera denna sida" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "Språket måste vara ett av de som stödjs" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "%(plugin_name)s plugin har lagts till %(placeholder)s" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "Språket måste vara ett annat än det som kopieras!" -#: admin/pageadmin.py:1138 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "%(language)s plugin har kopierats till %(placeholder)s" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" -msgstr "" -"%(plugin_name)s plugin har redigerats på plats %(position)s i %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgstr "%(plugin_name)s plugin har redigerats på plats %(position)s i %(placeholder)s" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Plugins har flyttats" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:210 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." -msgstr "" -"%(plugin_name)s plugin på position %(position)s i %(placeholder)s har " -"raderats." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." +msgstr "%(plugin_name)s plugin på position %(position)s i %(placeholder)s har raderats." -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Rättigheter för sida" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Användar- och grupprättigheter" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Administrera rättigheter för sida" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Användardetaljer" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Grupper" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Lösenord" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Kopieringsrättigheter" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Kopieringsbegränsningar" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "Ärv mall" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Översikt" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "Index och tabeller" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Komplett innehållsförteckning" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "listar alla avdelningar och underavdelningar" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Sök sida" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "sök i denna dokumentation" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Modulindex" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "Snabb åtkomst till alla moduler" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Allmänt index" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "alla funktioner, klasser och benämningar" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "Index" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Komplett index på en sida" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Index med sidor efter bokstav" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "kan vara stor" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Navigation" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "Innehållsförteckning" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Föregående ämne" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "föregående kapitel" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Nästa ämne" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "nästa kapitel" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Denna sida" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Visa källa" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Snabbsök" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Kör" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "Ange sökord eller en modul, klass eller funktionsnamn." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "Om dessa dokument" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Sök" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Upphovsrätt" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Avrådes från användning (föråldrat)" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "sök" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Sökresultat" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "Din sökning gav inget resultat." - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" -msgstr "Välj en giltig sajt" +msgstr "" -#: forms/fields.py:19 +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "Välj en giltig sida" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "Lägg till en till" @@ -483,34 +333,34 @@ msgstr "Lägg till en till" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "språk" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "position" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "skapat datum" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "plats" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "plugin-namn" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -520,7 +370,7 @@ msgstr "rubrik" msgid "path" msgstr "sökväg" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "slug" @@ -528,15 +378,15 @@ msgstr "slug" msgid "everybody" msgstr "alla" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "kan redigera" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "grupp" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "kan publicera" @@ -558,7 +408,7 @@ msgid "navigation extenders" msgstr "navigationsanslutningar" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "har ändrad url" @@ -574,325 +424,321 @@ msgstr "författare" msgid "reverse url id" msgstr "omvänd url id" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "login krävs" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "rot" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "slutdatum för publicering" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "mall" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "publiceringsdatum" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "i navigation" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "applikation" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "omdirigera" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "nyckelord" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "beskrivning" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" -msgstr "nuvarande sida" +msgstr "Denna sida" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Sidans undernivå" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Sida och närmaste undernivå" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "Sidans undernivåer" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "Sida och undernivåer" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 -#: templates/cms/toolbar/toolbar.html:99 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Sida" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Användare" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "Moderera sida" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" -msgstr "Moderera närmaste undernivå" +msgstr "Moderera närmsta undernivå" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" -msgstr "Moderera undernivåer" +msgstr "Moderera alla undernivåer" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "Sidmoderator" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" -msgstr "skapad" +msgstr "skapade" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "ändrad" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." -msgstr "radera krävs." +msgstr "förfrågan om borttagning" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." -msgstr "flytta krävs" +msgstr "flyttförfrågan" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." -msgstr "publicera krävs" +msgstr "publiceringsförfrågan" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." -msgstr "avpublicera krävs" +msgstr "förfrågan om avpublicering" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "godkänd" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "Sidmodereringsläge" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "Sidmodereringslägen" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." -msgstr "req. app." +msgstr "behöver godkännande" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "radera" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." -msgstr "app. par." +msgstr "godkänd, inv. överstående" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" -msgstr "endast för inloggade användare" +msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" -msgstr "endast för anonyma användare" +msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "skapad av" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "ändrad av" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." -msgstr "" -"När sida ska gå live. Status måste vara \"Publicerad\" för att sidan ska gå " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." +msgstr "När sidan ska gå live. Status måste vara \"Publicerad\" för att sidan ska gå live." -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "När sidan ska utgå. Lämna blank för att inaktivera funktionen." -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "Alla ovanstående sidor kommer inte att visas i navigeringen" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" -msgstr "" -"Ett unikt id som används med mallkommandot page_url för att länka till denna " -"sida" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" +msgstr "Ett unikt id som används med mallkommandot page_url för att länka till denna sida" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" -msgstr "tillfogad meny" +msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "är publicerad" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "Mallen som används för att visa innehållet." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "Sajten som sidan är tillgänglig på." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "sajt" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "modereringsläge" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" -msgstr "visning i meny" +msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "begränsa när denna sida ska visas i menyn" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "sidor" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "Sidan har kopierats" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "standard" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "kan lägga till" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "kan ta bort" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "kan ändra avancerade inställningar" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "kan ändra rättigheter" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "på sidnivå" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "kan flytta" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "kan moderera" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "kan återskapa sidor" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "kan återskapa alla sidor" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "Om ingen är vald har användaren rättigheter till alla sajter." -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "sajter" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "Global rättighet för sidan" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "Globala rättigheter för sidor" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" -msgstr "Tillåt" +msgstr "Tillåtelse gäller" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Sidrättighet" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Användare (grupp)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Användare (sida)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Användare grupp (sida)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Användare grupper (sida)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "bredd" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "ändra rubriken i menyn" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "Sökväg" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "ändra sidrubriken (title-taggen i html)" @@ -900,21 +746,21 @@ msgstr "ändra sidrubriken (title-taggen i html)" msgid "File" msgstr "Fil" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "fil" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "använd swf-fil" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "höjd" @@ -922,7 +768,7 @@ msgstr "höjd" msgid "Missing flash plugin." msgstr "Flash insticksprogram saknas" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Google Map" @@ -978,15 +824,15 @@ msgstr "Ruttplanerare" msgid "Map" msgstr "Karta" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "Din adress" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Beräkna rutt" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "Ärv plugins från sida" @@ -995,12 +841,8 @@ msgid "Language or Page must be filled out" msgstr "Språk eller Sida måste vara ifylld" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" -msgstr "" -"Välj en sida för att inkludera dess plugins till denna platshållare, lämna " -"blankt för nuvarande sida" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" +msgstr "Välj en sida för att inkludera dess plugins till denna platshållare, lämna blankt för nuvarande sida" #: plugins/inherit/models.py:11 msgid "Optional: the language of the plugins you want" @@ -1010,28 +852,28 @@ msgstr "Valfritt: språk på de plugins du vill ha" msgid "Link" msgstr "Länk" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "namn" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "länk" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "En länk till en sida får prioritet över en textlänk." -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "mailto" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "En e-postadress får prioritet över en textlänk." @@ -1039,40 +881,40 @@ msgstr "En e-postadress får prioritet över en textlänk." msgid "Picture" msgstr "Bild" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "vänster" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "höger" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "bild" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "om angiven blir bilden klickbar" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "alternativ text" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "beskrivning av bilden" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "lång beskrivning" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "ytterligare beskrivning av bilden" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "sida" @@ -1091,24 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " -msgstr "" -"Ange en mall (t.ex. \"snippets/plugin_xy.html\") som kommer att användas." +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgstr "Ange en mall (t.ex. \"snippets/plugin_xy.html\") som kommer att användas." #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "Kodstycken" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "Locktext/Teaser" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "Värde gör bilden klickbar." -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "Värde gör bilden klickbar." @@ -1120,7 +960,7 @@ msgstr "mer" msgid "Text" msgstr "Text" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "innehåll" @@ -1176,7 +1016,7 @@ msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 msgid "Twitter Search" -msgstr "Twitter-sökning" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1200,17 +1040,11 @@ msgstr "Länktipset visas som en länk till din Twitter-profil." #: plugins/twitter/models.py:16 msgid "query" -msgstr "förfrågan" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" -"Exempel: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"från användaren \"umbrella\" till användaren \"nemesis\" som innehåller " -"orden \"brains\" och \"zombies\"" #: plugins/video/cms_plugins.py:10 msgid "Video" @@ -1220,92 +1054,84 @@ msgstr "Video" msgid "Color Settings" msgstr "Färginställningar" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "film fil" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "använd .flv-fil eller en h264-kodad videofil" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "film url" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" -msgstr "" -"vimeo eller youtube video url. Exampel: http://www.youtube.com/watch?" -"v=YFa59lK-kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" +msgstr "vimeo eller youtube video url. Exampel: http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "förhandsvisa filmfil" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "spela automatiskt" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "göm automatiskt" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "fullskärm" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "loopa" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "bakgrundsfärg" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "Hexadecimal, t.ex. ff00cc" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "textfärg" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "tidslinje färg" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "tidslinje bg-färg" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "färg laddningsikon" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "knappfärg utanför" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "knappfärg över" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "knappfärg aktiv" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" -msgstr "" -"Flash-plugin saknas. Ladda ner här" +msgid "Missing flash plugin. Download here" +msgstr "Flash-plugin saknas. Ladda ner här" #: templates/admin/page_submit_line.html:3 #: templates/admin/cms/page/change_form.html:273 @@ -1332,13 +1158,13 @@ msgid "Save and continue editing" msgstr "Spara och fortsätt redigera" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." -msgstr "" -"Sida %(page)s kan behöva godkännande av dig." +msgid "Page %(page)s may require approvement by you." +msgstr "Sida %(page)s kan behöva godkännande av dig." #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Senaste ändringar" @@ -1347,11 +1173,18 @@ msgstr "Senaste ändringar" msgid "Log in to administration here." msgstr "Logga in på administrationssida här." +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Användarnamn:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Lösenord:" @@ -1432,16 +1265,12 @@ msgstr "Laddar..." #: templates/admin/cms/page/change_form.html:160 msgid "Page states" -msgstr "Sidlägen" +msgstr "Sidstatus" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." -msgstr "" -"Denna sida måste godkännas på nivå %(moderation_level)s, skicka ett " -"meddelande till moderatorn." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." +msgstr "Denna sida måste godkännas på nivå %(moderation_level)s, skicka ett meddelande till moderatorn." #: templates/admin/cms/page/change_form.html:185 msgid "Request approvemet" @@ -1495,7 +1324,7 @@ msgstr "åtgärder" #: templates/admin/cms/page/change_list_tree.html:10 msgid "moderate" -msgstr "moderera" +msgstr "moderering" #: templates/admin/cms/page/change_list_tree.html:13 msgid "published" @@ -1523,8 +1352,8 @@ msgid "edit this page" msgstr "redigera denna sida" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "redigera" @@ -1580,7 +1409,7 @@ msgid "add" msgstr "lägg till" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "Godkänn direkt" @@ -1595,6 +1424,7 @@ msgid "Unpublish" msgstr "Avpublicera" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Publicera" @@ -1683,8 +1513,7 @@ msgstr "Återgå till %(verbose_name)s" #: templates/admin/cms/page/revision_form.html:24 msgid "Press the save button below to revert to this version of the object." -msgstr "" -"Tryck på spara-knappen nedan för att återgå till denna version av objektet." +msgstr "Tryck på spara-knappen nedan för att återgå till denna version av objektet." #: templates/admin/cms/page/dialog/copy.html:4 msgid "Copy options" @@ -1696,7 +1525,7 @@ msgstr "Välj kopieringsalternativ" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:7 msgid "Generic" -msgstr "Allmän" +msgstr "" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:15 #: templates/cms/toolbar/add_plugins.html:6 @@ -1725,203 +1554,238 @@ msgstr "Inget plugin har lagts till. Lägg till ett plugin till denna plats." #: templates/cms/toolbar/add_plugins.html:10 msgid "Available plugins" -msgstr "Plugins" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "Flytta till %(name)s" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "Är du säker på att du vill ta bort detta plugin?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "Redigeringsläge" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "Status" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "Användarnamn" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "login" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "Mall" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "flytta" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "Flytta/lägg till sidor" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "lägg till undersida" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "Lägg till undersida" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "lägg till syskon" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "Lägg till syskon-sida" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "Radera sida" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "Sajtadministration" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "Sidinställningar" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "historik" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "Visa historik" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "Logga ut" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "Fäst" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "Stäng" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "upp" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "ner" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "Inställningar" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "Radera plugin" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "Frigör från sidmoderering" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "Frigör undersidor från moderering" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "Frigör undernivåer från moderering" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" -msgstr "Sidan hittades inte på %(domain)s" +msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"Ett mallkommando kunde inte hitta sidan med sökparametrarna `%(page_lookup)" -"s\n" -"`. Efterfrågad URL var: http://%(host)s%(path)s" -#: utils/moderator.py:82 -msgid "parent first" -msgstr "förälder först" +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" -#: utils/moderator.py:89 -msgid "approve" -msgstr "godkänn" +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" -#: utils/moderator.py:240 -#, python-format -msgid "CMS - Page %s requires approvement." -msgstr "CMS - Sida %s kräver godkännande." +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" -#: utils/permissions.py:206 -msgid "CMS - your user account was created." -msgstr "CMS - ditt användarkonto har skapats." +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" -#: utils/permissions.py:208 -msgid "CMS - your user account was changed." -msgstr "CMS - ditt användarkonto har ändrats." +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" -#~ msgid "menu login required" -#~ msgstr "meny - login krävs" +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "visa denna sida i menyn endast om användaren är inloggad" +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" -#~ msgid "Twitter recent entries plugin" -#~ msgstr "Twitter senaste inlägg-plugin" +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" -#~ msgid "overlay" -#~ msgstr "överlägg" +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" -#~ msgid "blank" -#~ msgstr "tom" +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" -#~ msgid "self" -#~ msgstr "själv" +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" -#~ msgid "parent" -#~ msgstr "förälder" +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" -#~ msgid "opaque" -#~ msgstr "ogenomskinlig" +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" -#~ msgid "transparent" -#~ msgstr "transparent" +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" -#~ msgid "controller style" -#~ msgstr "stil på kontroller" +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" -#~ msgid "mute" -#~ msgstr "ljudlöst" +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" -#~ msgid "mute only" -#~ msgstr "endast ljudlöst" +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" -#~ msgid "volume" -#~ msgstr "volym" +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" -#~ msgid "in range <0, 100>" -#~ msgstr "i området <0, 100>" +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 +msgid "parent first" +msgstr "förälder först" + +#: utils/moderator.py:90 +msgid "approve" +msgstr "godkänn" + +#: utils/moderator.py:251 +#, python-format +msgid "CMS - Page %s requires approvement." +msgstr "CMS - Sida %s behöver godkännande." + +#: utils/permissions.py:206 +msgid "CMS - your user account was created." +msgstr "CMS - ditt användarkonto har skapats." + +#: utils/permissions.py:208 +msgid "CMS - your user account was changed." +msgstr "CMS - ditt användarkonto har ändrats." -#~ msgid "Revisions" -#~ msgstr "Revisioner" +#~ msgid "fgcolor" +#~ msgstr "fg-färg" #~ msgid "Wanted language has not been translated yet." #~ msgstr "Önskad språk har inte översatts än." diff --git a/cms/locale/sv/LC_MESSAGES/djangojs.mo b/cms/locale/sv/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..5c613a9a557abc23c7231d2b71aad89c3b9c33dd GIT binary patch literal 901 zcmbV~!EO^V5QYu3LfRu|4#NSd6*#*|5vjIG+YpkfQUW1LIUylu?QERx+KWA#(mNL( zfHx?Q07ou)51xhD2sNT0AsFeC$K&zuu|41KZGB>7Tf}{$MQjsqh{_70OS~gq5nqVM z#NAtreI%X`eVTu}&Dem(?K_M$XdKf>ON_#6tMn2v?ciRr*k0;0$NDs!lVjN zOg&s^oZAw?i={Rx;9Nl=XmO^U$D_Y%Q2xW6nO2#6YecSg|6ft6Od(Y@*B*+jOtm>; zBWD*XL4GRvYvsJQCI-2n>Mc)lABs< zY8!5LhT8j5`C#;N!n;lhBxU|wpo*ap)$2TJ@TdtRyZkJVCF75tu8-;4K} zk0P>QAUyJk6UJu(t&71fw1!r$jw`2@%nvEWq$NEupD2;XFzCEEIqRJCpfwmAXS!xx zdKe5(hrP{>>$NE8T7$}v_GLjuqI!>EkqK=Ms^4^8Vf$>-=lh$ys)m_zyk`1$)y zpK825JqEuFMp@}Z#{1UgJ_bXtPE+4*98@1bZhObTgErK61Gf6$KvFNQuFjQ%V)YpW zVij5HEQ8gRkxo<{HH8v|SugrRP|Ryd^V#a_x}ScP`GdrbX8H%Qn>9Hh6`d~?qPT9T EACfK_WB>pF literal 0 HcmV?d00001 diff --git a/cms/locale/sv/LC_MESSAGES/djangojs.po b/cms/locale/sv/LC_MESSAGES/djangojs.po index c2103cd2c0a..309fe855ce4 100644 --- a/cms/locale/sv/LC_MESSAGES/djangojs.po +++ b/cms/locale/sv/LC_MESSAGES/djangojs.po @@ -2,18 +2,20 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: django-cms 2.1.0-beta\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-07-01 14:49+0200\n" -"PO-Revision-Date: 2010-07-01 14:54+0100\n" -"Last-Translator: Simon Hedberg \n" -"Language-Team: \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: media/cms/js/change_form.js:31 msgid "Are you sure you want to change the %(field_name)s without saving the page first?" @@ -24,8 +26,6 @@ msgid "" "Not all plugins are saved. Are you sure you want to save the page?\n" "All unsaved plugin content will tried to save." msgstr "" -"Alla plugin har inte sparats. Är du säker på att du vill spara sidan?\n" -"Plugin-innehåll kommer att försöka sparas." #: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" @@ -34,4 +34,3 @@ msgstr "Är du säker på att du vill ändra tabb utan att spara sidan först?" #: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Är du säker på att du vill radera detta plugin?" - diff --git a/cms/locale/tr/LC_MESSAGES/django.mo b/cms/locale/tr/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..240d6dbeacb4e22edd06c2dc97ae2895663888e1 GIT binary patch literal 19397 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 C&)kIo literal 0 HcmV?d00001 diff --git a/cms/locale/tr/LC_MESSAGES/django.po b/cms/locale/tr/LC_MESSAGES/django.po index 97ff18085a9..b3239e6f710 100644 --- a/cms/locale/tr/LC_MESSAGES/django.po +++ b/cms/locale/tr/LC_MESSAGES/django.po @@ -1,481 +1,331 @@ +# 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 , YEAR. +# msgid "" msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:54+0200\n" -"PO-Revision-Date: 2010-01-15 12:29+0200\n" -"Last-Translator: Ekrem SEREN \n" -"Language-Team: Turkish \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:39+0000\n" +"Last-Translator: ojii \n" +"Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Language: tr\n" +"Plural-Forms: nplurals=1; plural=0\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "Gelişmiş seçenekler" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "Başlık" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "Öntanımlı başlık" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "Başlığın URL'de kullanılan kısmı" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "Dil" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "İçerik alanlarının geçerli dili." -#: admin/forms.py:82 -#, fuzzy +#: admin/forms.py:110 msgid "Another page with this slug already exists" -msgstr "Bu slug ile başka bir sayfa zaten var" +msgstr "" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "Menü Başlığı" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "Menüde gösterilenin üstüne yaz" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "Sayfa Başlığı" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "Tarayıcınızın üstünde veya yerimlerinde yazanın üzerine yaz" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "Uygulama" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "Uygulamayı bu sayfaya bağla." -#: admin/forms.py:107 -#, fuzzy +#: admin/forms.py:135 msgid "Overwrite URL" -msgstr "URL'nin üzerine yaz" +msgstr "" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "Standart yolu kullanmak için bu alanı boş bırakın." -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "Yönlendir" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "Bu URL'ye yönlendir." -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "Sayfanın açıklaması, bazen arama motorları tarafından kullanılır." -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." -msgstr "" -"Virgül ile ayrılmış anahtar kelimeler, bazen arama motorları tarafından " -"kullanılır." +msgstr "Virgül ile ayrılmış anahtar kelimeler, bazen arama motorları tarafından kullanılır." -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "Bu ters URL id'si ile bir sayfa zaten var." -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "Geçersiz URL, /benim/url biçiminde girin." -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "kullanıcı" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"Sayfa ekleme yetkisi aynı zamanda alt başlıkların yetkilerine de ihtiyaç " -"duyar, yoksa sayfa ekleyen kişi içeriğini değiştiremez." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "Sayfa ekleme yetkisi aynı zamanda alt başlıkların yetkilerine de ihtiyaç duyar, yoksa sayfa ekleyen kişi içeriğini değiştiremez." -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." -msgstr "" -"Sayfa ekleme yetkisi aynı zamanda sayfa düzenleme yetkisi de gerektirir." +msgstr "Sayfa ekleme yetkisi aynı zamanda sayfa düzenleme yetkisi de gerektirir." -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "Lütfen önce kullanıcı veya grup ekleyin." -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "Ekle" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "Düzenle" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "Sil" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "Sayfaları (herhangi) kurtar" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "Kullanıcıyı bilgilendir" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"Kullanıcıya, kullanıcı adı ve parola değişikliği ile ilgili eposta gönder. " -"Kullanıcının epostası olması gerekir." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "Kullanıcıya, kullanıcı adı ve parola değişikliği ile ilgili eposta gönder. Kullanıcının epostası olması gerekir." -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "Yeni parola" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "Yeni parola onayı" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "Eposta bilgilendirmeleri geçerli bir eposta adresi gerektirir." -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "Sayfa ekleme yetkisi, sayfa düzenleme yetkisi de gerektirir!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "Kullanıcı ekleme yetkisi, kullanıcı düzenleme yetkisi de gerektirir!" -#: admin/forms.py:336 -#, fuzzy +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" -msgstr "Yetkileri eklemek için aynı zamanda düzenleyebilmelisiniz de!" +msgstr "" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "Gizli" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "Temel Ayarlar" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "Not: Bu sayfa eğer seçimi değiştirirseniz güncellenir. Önce kaydedin." -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "Gelişmiş Ayarlar" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "Arama Motoru (SEO) Ayarları" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "daha yüksek" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "Veritabanı hatası" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "sayfa" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "Sayfa başarı ile onaylandı." -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "%(key)r birincil anahtarlı %(name)s nesnesi mevcut değil." -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "Bu sayfa için sadece bir çeviri mevcut" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "%(language)s dilindeki başlık ve eklenti silindi" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "Emin misiniz?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "Bu sayfayı yayınlamak için yetkiniz yok" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "Bu sayfayı değiştirmek için yetkiniz yok" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "Dil, desteklenen bir dile ayarlanmalı!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "%(placeholder)s yer tutucusuna %(plugin_name)s eklentisi eklendi" -#: admin/pageadmin.py:1129 -#, fuzzy +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" -msgstr "Dil, desteklenen bir dile ayarlanmalı!" +msgstr "Dil, kopyalanan dilden farklı olmalı!" -#: admin/pageadmin.py:1139 -#, fuzzy, python-format +#: admin/pageadmin.py:1179 +#, python-format msgid "Copied %(language)s plugins to %(placeholder)s" -msgstr "%(placeholder)s yer tutucusuna %(plugin_name)s eklentisi eklendi" +msgstr "" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "Eklentiler taşındı" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "Sayfa yetkileri" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "Kullanıcı & Grup yetkileri" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "Sayfa yetki yönetimi" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "Kullanıcı detayları" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "Gruplar" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "Parola" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "Kopyalama yetkileri" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "Kopyalama moderasyonu" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "En yakın üst sayfanın şablonunu kullan" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "Genel Bakış" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "İndisler ve tablolar" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "Eksiksiz İçindekiler Sayfası" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "tüm kısımları ve alt kısımları listele" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "Sayfa Ara" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "bu belgeleri ara" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "Küresel Modül İndeksi" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "tüm modüllere hızlı erişim" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "Genel İndeks" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "tüm fonksiyonlar, sınıflar, terimler" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "İndeks" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "Bir sayfada tüm indeks" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "Alfabetik olarak indeks sayfaları" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "çok büyük olabilir" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "Navigasyon" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "İçindekiler" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "Önceki konu" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "önceki bölüm" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "Sonraki konu" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "sonraki bölüm" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "Bu Sayfa" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "Kaynağı Göster" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "Hızlı Arama" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "Git" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "Arama kelimelerini veya bir modül, sınıf veya fonksiyon adını girin." - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "Bu belgeler hakkında" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "Ara" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "Telif Hakkı" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "Tercih Edilmeyen" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "ara" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "Arama Sonuçları" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "Hiç bir sonuç bulunamadı." - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "bu sayfayı seç" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "Bir tane daha ekle" @@ -483,34 +333,34 @@ msgstr "Bir tane daha ekle" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "dil" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "konum" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "yaratma tarihi" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "eklenti_adı" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -520,7 +370,7 @@ msgstr "başlık" msgid "path" msgstr "yol" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "" @@ -528,15 +378,15 @@ msgstr "" msgid "everybody" msgstr "herkes" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "düzenleyebilir" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "grup" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "yayınlayabilir" @@ -558,7 +408,7 @@ msgid "navigation extenders" msgstr "navigaston genişleticiler" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "url üzerine yazılması var" @@ -574,323 +424,321 @@ msgstr "yazar" msgid "reverse url id" msgstr "ters url id'si" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "giriş yapılmış olması gerekiyor" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "yayınlama bitiş tarihi" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "şablon" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "yayınlanma tarihi" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "uygulama" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "yönlendirme" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "anahtar kelimeler" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "açıklama" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "Geçerli sayfa" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "Alt sayfa (hemen)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "Sayfa ve Alt sayfa (hemen)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "Sayfa" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "Kullanıcı" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" -msgstr "" +msgstr "Sayfayı düzenle" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "yaratıldı" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "değiştirildi" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "onaylanmış" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "sil" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "oluşturan" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "değiştiren" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." -msgstr "" -"Sayfa ne zaman yayında olacağı. Sayfanın yayında olması için durumunun " -"\"Yayınlanmış\" olması gerekir." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." +msgstr "Sayfa ne zaman yayında olacağı. Sayfanın yayında olması için durumunun \"Yayınlanmış\" olması gerekir." -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "Sayfa ne zaman yayından kaldırılacağı. Hiç bir zaman için boş bırakın." -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "yayınlanmış" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "İçeriği göstermek için kullanılan şablon" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "Sayfanın erişilebileceği site." -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" -msgstr "" +msgstr "site" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "Menüde gösterilenin üstüne yaz" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "sayfalar" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "Sayfa kopyalanmıştı." -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "öntanımlı" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "ekleyebilir" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "silebilir" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "gelişmiş seçenekleri değiştirebilir" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "yetkileri değiştirebilir" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "sayfa seviyesinde" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "taşıyabilir" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" -msgstr "" +msgstr "düzenleyebilir" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" -msgstr "" +msgstr "siteler" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "Sayfa yetkileri" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "Kullanıcı (sayfa)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "Kullanıcılar (sayfa)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "Kullanıcı grubu (sayfa)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "Kullanıcı grupları (sayfa)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "genişlik" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "menüdeki başlığın üzerine yaz" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "Yol" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "başlık etiketini belirle (html title etiketi)" @@ -898,21 +746,21 @@ msgstr "başlık etiketini belirle (html title etiketi)" msgid "File" msgstr "Dosya" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "dosya" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" -msgstr "" +msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "swf dosyası kullan" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "yükseklik" @@ -920,7 +768,7 @@ msgstr "yükseklik" msgid "Missing flash plugin." msgstr "Flash eklentisi yok." -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "Google Haritalar" @@ -976,15 +824,15 @@ msgstr "rota planlayıcı" msgid "Map" msgstr "Harita" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "Adresiniz" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "Rota hesapla" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "Eklentileri sayfadan al" @@ -993,12 +841,8 @@ msgid "Language or Page must be filled out" msgstr "Dil veya Sayfa doldurulmalı" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" -msgstr "" -"Eklentilerini bu yer tutucuda kullanmak için bir sayfa seçin, boş " -"bırakırsanız geçerli sayfa seçilecek." +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" +msgstr "Eklentilerini bu yer tutucuda kullanmak için bir sayfa seçin, boş bırakırsanız geçerli sayfa seçilecek." #: plugins/inherit/models.py:11 msgid "Optional: the language of the plugins you want" @@ -1008,28 +852,28 @@ msgstr "Seçimlik: istediğiniz eklentilerin dili" msgid "Link" msgstr "Bağlantı" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "isim" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "bağlantı" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "Bir sayfaya bağlantı, bir yazı bağlantısından önceliklidir." -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" -msgstr "" +msgstr "mailto" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "Bir eposta adresi, bir yazı bağlantısından önceliklidir." @@ -1037,40 +881,40 @@ msgstr "Bir eposta adresi, bir yazı bağlantısından önceliklidir." msgid "Picture" msgstr "Resim" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "sol" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "sağ" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "resim" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "şu anki resim tıklanabilir olacak mı " -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "alternatif metin" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "Resmin açıklaması" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "Uzun açıklama" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "Resmin ek açıklamaları" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "yan" @@ -1089,23 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "Kullanılacak şablonu (ör. \"snippets/plugin_xy.html\") girin." #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "şu anki resim tıklanabilir olacak mı" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "şu anki resim tıklanabilir olacak mı." @@ -1117,7 +960,7 @@ msgstr "daha fazla" msgid "Text" msgstr "Metin" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "gövde" @@ -1169,12 +1012,11 @@ msgstr "Eklenti Ekle" #: plugins/twitter/cms_plugins.py:10 msgid "Twitter" -msgstr "" +msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "twitter kullanıcısı" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1194,111 +1036,101 @@ msgstr "bağlantı ipucu" #: plugins/twitter/models.py:9 msgid "If given, the hint is displayed as link to your Twitter profile." -msgstr "" -"Eğer verilirse ipucu, Twitter hesabınıza bir bağlantı şeklinde gösterilecek. " +msgstr "Eğer verilirse ipucu, Twitter hesabınıza bir bağlantı şeklinde gösterilecek. " #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "kullanıcı" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 msgid "Video" -msgstr "" +msgstr "Video" #: plugins/video/cms_plugins.py:42 msgid "Color Settings" msgstr "Renk Ayarları" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "görüntü" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "görüntü" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" msgstr "" -#: plugins/video/models.py:12 -#, fuzzy +#: plugins/video/models.py:11 msgid "preview image file" -msgstr "resim dosyası kullan" +msgstr "" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "otomatik oynat" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "otomatik gizle" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "tam ekran" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "sürekli oynat" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "arkaplan rengi" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "metin rengi" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "yükleme çubuğu rengi" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "" #: templates/admin/page_submit_line.html:3 @@ -1310,7 +1142,7 @@ msgstr "Kaydet" #: templates/admin/page_submit_line.html:7 #, python-format msgid "Delete %(language)s translation" -msgstr "" +msgstr "%(language)s tercümeyi silin" #: templates/admin/page_submit_line.html:11 msgid "Save as new" @@ -1326,12 +1158,13 @@ msgid "Save and continue editing" msgstr "Kaydet ve düzenlemeye devam et" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "" #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "Son değişiklikler" @@ -1340,11 +1173,18 @@ msgstr "Son değişiklikler" msgid "Log in to administration here." msgstr "" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "Kullanıcı adı:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "Parola:" @@ -1428,9 +1268,7 @@ msgstr "Sayfa durumu" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "" #: templates/admin/cms/page/change_form.html:185 @@ -1450,9 +1288,9 @@ msgid "An error occured. Please reload the page" msgstr "Bir hata oluştu. Lütfen sayfayı tekrar yükleyin." #: templates/admin/cms/page/change_list.html:82 -#, fuzzy, python-format +#, python-format msgid "Recover deleted %(name)s" -msgstr "Silinmişleri geri getir: %(name)s" +msgstr "" #: templates/admin/cms/page/change_list.html:85 #, python-format @@ -1460,9 +1298,8 @@ msgid "Add %(name)s" msgstr "%(name)s ekle" #: templates/admin/cms/page/change_list.html:97 -#, fuzzy msgid "Pages on:" -msgstr "Sayfalar:" +msgstr "" #: templates/admin/cms/page/change_list.html:114 msgid "Filter:" @@ -1486,16 +1323,15 @@ msgstr "" #: templates/admin/cms/page/change_list_tree.html:10 msgid "moderate" -msgstr "" +msgstr "düzenle" #: templates/admin/cms/page/change_list_tree.html:13 msgid "published" msgstr "yayınlanmış" #: templates/admin/cms/page/change_list_tree.html:15 -#, fuzzy msgid "start" -msgstr "durum" +msgstr "" #: templates/admin/cms/page/change_list_tree.html:16 msgid "end" @@ -1515,8 +1351,8 @@ msgid "edit this page" msgstr "bu sayfayı düzenle" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "düzenle" @@ -1572,22 +1408,22 @@ msgid "add" msgstr "ekle" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" -msgstr "Hemen onayla" +msgstr "" #: templates/admin/cms/page/menu_item.html:67 #: templates/admin/cms/page/menu_item.html:79 #: templates/admin/cms/page/menu_item.html:81 msgid "view" -msgstr "" +msgstr "göster" #: templates/admin/cms/page/menu_item.html:72 msgid "Unpublish" msgstr "Yayından kaldır" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "Yayınla" @@ -1600,9 +1436,8 @@ msgid "Action" msgstr "" #: templates/admin/cms/page/moderation_messages.html:5 -#, fuzzy msgid "Created" -msgstr "Oluşturma" +msgstr "" #: templates/admin/cms/page/moderation_messages.html:7 msgid "Message" @@ -1638,9 +1473,8 @@ msgstr "Taşıyabilir" #: templates/admin/cms/page/permissions.html:20 #: templates/admin/cms/page/permissions.html:21 -#, fuzzy msgid "(global)" -msgstr "(genel)" +msgstr "" #: templates/admin/cms/page/permissions.html:25 msgid "(current)" @@ -1663,9 +1497,9 @@ msgid "Plugin saved successfully." msgstr "Eklenti başarı ile kaydedildi." #: templates/admin/cms/page/recover_form.html:17 -#, fuzzy, python-format +#, python-format msgid "Recover deleted %(verbose_name)s" -msgstr "%(verbose_name)s silinmişlerini kurtar" +msgstr "" #: templates/admin/cms/page/recover_form.html:24 msgid "Press the save button below to recover this version of the object." @@ -1698,14 +1532,12 @@ msgid "Add Plugin" msgstr "Eklenti Ekle" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:18 -#, fuzzy msgid "From Language" -msgstr "Dil" +msgstr "" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:25 -#, fuzzy msgid "Copy Plugins" -msgstr "Eklentiler" +msgstr "" #: templates/admin/cms/page/widgets/plugin_editor.html:12 msgid "You must save the page first to add plugins." @@ -1720,148 +1552,225 @@ msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "Hiç eklenti yok. Yer tutucuya bir eklenti ekle." #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "Mevcut Eklentiler" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "%(name)s'a taşı" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "Bu eklentiyi silmek istediğinize emin misiniz?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "Düzenleme modu" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "Durum" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "Kullanıcı adı" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "giriş" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "Şablon" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "taşı" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "Sayfa Taşı/Ekle" -#: templates/cms/toolbar/toolbar.html:103 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" -msgstr "Alt Sayfa Ekle" +msgstr "" -#: templates/cms/toolbar/toolbar.html:103 -#, fuzzy +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" -msgstr "Alt Sayfa Ekle" +msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "Sayfayı Sil" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "Site Yönetimi" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "Sayfa Ayarları" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "geçmiş" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "Geçmişi Gör" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "Çıkış" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "Kilitle" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "Kapat" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "yukarı" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "aşağı" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "Ayarlar" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "Eklentiyi Sil" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "" -#: templatetags/cms_tags.py:69 +#: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" msgstr "" -#: templatetags/cms_tags.py:70 +#: templatetags/cms_tags.py:79 #, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "önce üst" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "onayla" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "CMS - %s sayfası onay bekliyor." @@ -1874,44 +1783,8 @@ msgstr "CMS - kullanıcı hesabınız yaratıldı." msgid "CMS - your user account was changed." msgstr "CMS - kullanıcı hesabınız güncellendi." -#~ msgid "Sublevel" -#~ msgstr "Altseviye" - -#~ msgid "Sublevel3" -#~ msgstr "Altseviye3" - -#~ msgid "Sublevel 2" -#~ msgstr "Altseviye2" - -#~ msgid "blank" -#~ msgstr "boşluk" - -#~ msgid "window" -#~ msgstr "pencere" - -#~ msgid "opaque" -#~ msgstr "ışık geçirmez" - -#~ msgid "transparent" -#~ msgstr "saydam" - -#~ msgid "controller style" -#~ msgstr "kontrol tarzı" - -#~ msgid "click_url" -#~ msgstr "tıklama_bağlantısı" - -#~ msgid "click target" -#~ msgstr "tıklama hedefi" - -#~ msgid "mute" -#~ msgstr "sessiz" - -#~ msgid "mute only" -#~ msgstr "sadece sessiz" - -#~ msgid "volume" -#~ msgstr "ses" +#~ msgid "fgcolor" +#~ msgstr "" -#~ msgid "in range <0, 100>" -#~ msgstr "<0, 100> arasında" +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "İstanen dil henüz tercüme edilmedi." diff --git a/cms/locale/tr/LC_MESSAGES/djangojs.mo b/cms/locale/tr/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..e6115a2802c480ecc2cb4a5972c9f469aaa8f4fb GIT binary patch literal 898 zcmbV~!EVz)5QYsDA^FIe!(0#`*w{%CsobQ2hE}RXN{9?6B($+7_9XVM*ze0%VjeTc9G_kPz3<)dyny2we|gK})lghy52$kf`1sUr`S8H(o-TMo|B7LW1i4Xo?F~tHMca@Wcs;DzkBX4T- z5)&tmQt<|jC9NVzm)yM;NooBVR@yi*u^FXezs{_Pbp*L{m5qWRuyKe{f8l& z|3X?PVk4C;q|+t>y(EG`iBDUnljM7xqOzJtEMk;p1aWOvWOEoCYlVCM<&ZU`}Rd8$Pc4g$maYERs2a%Mhe^eoEg@ x9hnkWK-OVOyrSqM0+ytp, YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:38+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" +"Language-Team: Turkish \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=1; plural=0\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" -msgstr "" -"Önce sayfayı kaydetmeden %(field_name)s'i kaydetmek istediğinize emin " -"misiniz?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" +msgstr "Önce sayfayı kaydetmeden %(field_name)s'i kaydetmek istediğinize emin misiniz?" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -"Tüm eklentiler kaydedilmedi. Sayfayı kaydetmek istediğinize emin misiniz? " -"Kaydedilmemiş eklenti içeriği kaybedilecek." -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" -msgstr "" -"Önce sayfayı kaydetmeden sekmeleri değiştirmek istediğinize emin misiniz?" +msgstr "Önce sayfayı kaydetmeden sekmeleri değiştirmek istediğinize emin misiniz?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "Bu eklentiyi silmek istediğinize emin misiniz?" diff --git a/cms/locale/zh_CN/LC_MESSAGES/django.mo b/cms/locale/zh_CN/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..2f035a519c03250a24db9cd62c4320be35077676 GIT binary patch literal 24162 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 H5X=7$|2_u; literal 0 HcmV?d00001 diff --git a/cms/locale/zh_CN/LC_MESSAGES/django.po b/cms/locale/zh_CN/LC_MESSAGES/django.po index 9b7c685a7da..8281dd133be 100644 --- a/cms/locale/zh_CN/LC_MESSAGES/django.po +++ b/cms/locale/zh_CN/LC_MESSAGES/django.po @@ -2,470 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: v2.1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:54+0200\n" -"PO-Revision-Date: 2010-04-18 11:33+0800\n" -"Last-Translator: 张昆 \n" -"Language-Team: HanMing Software \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:38+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "高级选项" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "标题" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "默认标题" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "缩略名" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "部分标题被用在了URL中" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "语言" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "本内容当前使用的语言。" -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "其他页面已经使用了该缩略名" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "菜单标题" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "覆盖菜单上的显示" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "页面标题" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "覆盖显示在浏览器顶部标题栏或书签中的信息" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "应用" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "附加第三方应用到本页面。" -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "URL重写" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "如果使用标准路径则本项目为空。" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "转向" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "转到这个链接" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "页面的描述,有时被搜索引擎使用。" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "被搜索引擎收录的常见关键字列表" -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "该URL id已经被使用。" -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "无效的URL, 正确格式:/my/url" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "用户" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." msgstr "新增页面的权限同时赋予其子页面,否则新增页面不能被其建立者修改" -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "添加页面的权限同时需要有编辑页面的权限" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "请首先选择用户或组。" -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "新建" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "修改" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "删除" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "恢复(任何)页面" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "通知用户" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." msgstr "发送电子邮件通知用户关于用户名或密码变更的消息。需要用户的邮件地址。" -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "新的密码" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "再输一次新密码" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "需要有效的电子邮件地址来发送邮件通知。" -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "添加一个新页面要求有修改页面的权限" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "添加一个新用户要求有修改用户的权限" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "修改权限要求你有权限编辑他们" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "隐藏" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "基本设置" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "注意:如果你修改了选项,页面将会重新载入。请先保存" -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "高级设置" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "SEO设置" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "更高" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "数据库错误" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "页面" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "本页已获批准。" -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "拥有 %(key)r 主键的 %(name)s 对象不存在。" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "当前页面仅有一种译文" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "使用 %(language)s 译文的标题和插件被删除" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "您确认码?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "你没有权限发布此页" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "你没有权限修改这个页面的浏览模式" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "您没有权限修改本页面" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "语言项目必须被设置为支持的语言!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "%(plugin_name)s 插件被加载到 %(placeholder)s" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "该语言必须和被复制的语言不同!" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "复制%(language)s 插件到 %(placeholder)s" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "%(plugin_name)s 插件在 %(placeholder)s 的位置 %(position)s 处被修改" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "已移动的插件" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "%(plugin_name)s 插件在 %(placeholder)s 的位置 %(position)s 处被删除" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "页面权限" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "用户/组权限" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "页面权限管理" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "用户详情" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "组" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "密码" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "复制权限" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "复制核对选项" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "继承最近的上级页面模板" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "覆盖" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "索引表:" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "复杂目录" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "列出所有的章节" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "搜索页面" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "检索本文档" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "全局模块索引" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "快速存取所有的模块" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "通用索引" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "所有的函数,类,术语" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "索引" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "在一个页面完全索引" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "按字母顺序索引页面" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "可能会很大" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "导航" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "目录" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "前一主题" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "前一章" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "下一主题" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "下一章" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "当前页" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "显示源代码" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "快速搜索" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "开始" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "输入关键词或模块,类以及函数名称。" - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "关于这些文档" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "搜索" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "版权所有" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "位置" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "检索" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "检索结果" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "没有检索到任何内容。" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "选择当前页面" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "添加其他" @@ -473,34 +333,34 @@ msgstr "添加其他" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "语言" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "位置" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "创建日期" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "插槽" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "插件名称" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -510,7 +370,7 @@ msgstr "标题" msgid "path" msgstr "路径" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "缩略名" @@ -518,15 +378,15 @@ msgstr "缩略名" msgid "everybody" msgstr "所有人" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "可以修改" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "组" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "可以发布" @@ -548,7 +408,7 @@ msgid "navigation extenders" msgstr "导航扩展" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "有URL覆盖" @@ -564,322 +424,321 @@ msgstr "作者" msgid "reverse url id" msgstr "URL id 倒序" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "需要登录" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "伪根节点" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "发表结束日期" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "模板" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "发表日期" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "导航中" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "应用" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "编号" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "转向" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "关键字" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "详细描述" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "当前页" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "最接近的子页面" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "页面以及最接近的子页面" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "子页面" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "页面及所有下级页面" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "页" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "用户" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "核对页面" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "核对子页面" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "核对下级页面" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "页面核对" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "已创建" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "已变更" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "(删除)请求" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "(移动)请求" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "(发表)请求" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "(取消发表)请求" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "已批准" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "页面核对状态" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "页面核对状态" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "需要批准" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "删除" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "需上一级权限批准" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "创建者" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "修正者" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "要使得本页面可用,页面状态必须设置为“已发布”。" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "页面失效时间,留空则永不过期。" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "所有的上级页面将不会在导航中显示" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "一个唯一的标志使用模板标记 page_url 来链接到本页面" -#: models/pagemodel.py:58 -#, fuzzy +#: models/pagemodel.py:69 msgid "attached menu" -msgstr "播放菜单" +msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "已被发表" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "该模板用来生成页面内容。" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "页面进入点" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "站点" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "核对状态" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "覆盖菜单上的显示" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "页面" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "页面已被复制。" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "默认" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "允许新建" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "允许删除" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "允许修改高级设置" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "允许修改权限" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "在页面级别" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "可以移动" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "可以核对" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "允许恢复页面" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "能恢复任何已删除的页面" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "如果没有选择,所有用户将授予整个网站的权限" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "站点" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "页面全局权限" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "页面全局权限" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "授权给" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "页面权限" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "用户(页面)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "用户(页面)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "用户组(页面)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "用户组(页面)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "宽" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "代用的菜单标题" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "路径" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "代用标题(HTML标题)" @@ -887,21 +746,21 @@ msgstr "代用标题(HTML标题)" msgid "File" msgstr "文件" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "文件" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "使用swf文件" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "高" @@ -909,7 +768,7 @@ msgstr "高" msgid "Missing flash plugin." msgstr "没有找到Flash插件" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "谷歌地图" @@ -965,15 +824,15 @@ msgstr "路由计划" msgid "Map" msgstr "地图" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "你的地址" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "路由计算" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "从页面继承插件" @@ -982,9 +841,7 @@ msgid "Language or Page must be filled out" msgstr "语言或页面必须被填写" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "选择一个页面将它所含的插件放置到当前位置,留空将选择当前页面" #: plugins/inherit/models.py:11 @@ -995,28 +852,28 @@ msgstr "可选的:您希望插件使用的语言" msgid "Link" msgstr "链接" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "名称" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "链接" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "链接到一个页面的地址优先文字链接" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "电子邮件地址" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "E-mail邮箱地址优先文字链接" @@ -1024,40 +881,40 @@ msgstr "E-mail邮箱地址优先文字链接" msgid "Picture" msgstr "图片" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "左" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "右" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "图像" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "如果提供的话,该图片将可被点击" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "可选文本" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "图片的文本描述" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "详细描述" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "图像的附加描述" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "位置" @@ -1076,23 +933,22 @@ msgid "HTML" msgstr "HTML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "输入用来生成页面的模板(例如 \"snippets/plugin_xy.html\")" #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "代码片段" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "前言" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "如果提供,该图片将可以被点击" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "如果提供,该图片将可以被点击。" @@ -1104,7 +960,7 @@ msgstr "更多" msgid "Text" msgstr "文本" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "内容" @@ -1159,9 +1015,8 @@ msgid "Twitter" msgstr "推特" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "Twitter用户" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1184,15 +1039,11 @@ msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "如果填写了Twitter账号,这个提示将链接到他的Twitter页面" #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "用户" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1203,90 +1054,84 @@ msgstr "视频" msgid "Color Settings" msgstr "色彩设置" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "电影文件" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "使用.flv或者h264编码的视频文件" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "电影url" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" -msgstr "" -"vimeo或youtube视频的url。例如: http://www.youtube.com/watch?v=YFa59lK-kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" +msgstr "vimeo或youtube视频的url。例如: http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "预览图片文件" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "自动播放" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "自动隐藏" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "全屏" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "循环播放" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "背景色" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "十六进制,如 fff000" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "字体颜色" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "搜索条颜色" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "搜索条背景色" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "装载进度条颜色" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "按钮指针移出颜色" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "按钮指针移入颜色" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "按钮按下颜色" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" -msgstr "" -"flash插件缺失. 请在 这里下载" +msgid "Missing flash plugin. Download here" +msgstr "flash插件缺失. 请在 这里下载" #: templates/admin/page_submit_line.html:3 #: templates/admin/cms/page/change_form.html:273 @@ -1313,12 +1158,13 @@ msgid "Save and continue editing" msgstr "保存并继续编辑" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "页面 %(page)s 需要你的授权" #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "最新的变更" @@ -1327,11 +1173,18 @@ msgstr "最新的变更" msgid "Log in to administration here." msgstr "登录到管理界面 请点这里。" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "用户名:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "密码:" @@ -1395,11 +1248,9 @@ msgstr "查看结果" #: templates/admin/cms/page/change_form.html:128 #: templates/admin/cms/page/plugin_change_form.html:84 -#, fuzzy msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "请更正以下的错误。" -msgstr[1] "请更正以下的错误。" #: templates/admin/cms/page/change_form.html:148 msgid "All permissions" @@ -1417,9 +1268,7 @@ msgstr "页面状态" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "本页面必须在 %(moderation_level)s 级别进行核对,请发送消息进行核对。" #: templates/admin/cms/page/change_form.html:185 @@ -1502,8 +1351,8 @@ msgid "edit this page" msgstr "编辑当前页面" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "编辑" @@ -1559,7 +1408,7 @@ msgid "add" msgstr "添加" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "立即获准" @@ -1574,6 +1423,7 @@ msgid "Unpublish" msgstr "取消发表" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "发表" @@ -1702,233 +1552,239 @@ msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "当前没有插件。请添加插件到这个预留的位置。" #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "可用的插件" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "移动到%(name)s" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "您确认要删除当前插件吗?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "编辑模式" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "状态" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "用户名" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "登录" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "模板" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "移动" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "移动/添加页面" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "添加子页面" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "添加子页面" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "添加同级页面" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "添加同级页面" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "删除页" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "站点管理" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "页面设置" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "历史" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "查看履历" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "注销" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "锁定" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "关闭" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "上" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "下" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "设置" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "删除插件" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "取消页面核对" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "取消子页面核对" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "取消下级页面核对" -#: templatetags/cms_tags.py:69 -#, fuzzy, python-format +#: templatetags/cms_tags.py:78 +#, python-format msgid "Page not found on %(domain)s" -msgstr "在 %(domain)s 中未找到标志ID。" +msgstr "" -#: templatetags/cms_tags.py:70 -#, fuzzy, python-format +#: templatetags/cms_tags.py:79 +#, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"模板标记 page_id_url 没有找到标志ID %(reverse_id)s 对应的页面\n" -"该页面的URL是:http://%(host)s%(path)s" - -#: utils/moderator.py:82 -msgid "parent first" -msgstr "父级优先" -#: utils/moderator.py:89 -msgid "approve" -msgstr "批准" - -#: utils/moderator.py:240 -#, python-format -msgid "CMS - Page %s requires approvement." -msgstr "CMS - 页面[%s]请求批准。" +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" -#: utils/permissions.py:206 -msgid "CMS - your user account was created." -msgstr "CMS - 您的用户帐号已创建。" +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" -#: utils/permissions.py:208 -msgid "CMS - your user account was changed." -msgstr "CMS - 您的用户帐号已变更。" +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" -#~ msgid "menu login required" -#~ msgstr "需要菜单登录" +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "仅当用户已经登录后才在菜单中展示此页面" +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" -#~ msgid "" -#~ "A show_placeholder_by_id template tag didn't found a page with the " -#~ "reverse_id %(reverse_id)s\n" -#~ "The url of the page was: http://%(host)s%(path)s" -#~ msgstr "" -#~ "模板标记 show_placeholder_by_id 没有找到标志ID %(reverse_id)s 对应的页面\n" -#~ "该页面的URL是:http://%(host)s%(path)s" +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" -#~ msgid "Sublevel" -#~ msgstr "下层" +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" -#~ msgid "Sublevel3" -#~ msgstr "下层3" +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" -#~ msgid "Sublevel 2" -#~ msgstr "下层2" +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" -#~ msgid "dock" -#~ msgstr "停靠" +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" -#~ msgid "overlay" -#~ msgstr "覆盖" +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" -#~ msgid "blank" -#~ msgstr "空白" +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" -#~ msgid "self" -#~ msgstr "自身" +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" -#~ msgid "parent" -#~ msgstr "父" +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" -#~ msgid "window" -#~ msgstr "窗口" +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" -#~ msgid "opaque" -#~ msgstr "不透明" +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" -#~ msgid "transparent" -#~ msgstr "透明" +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" -#~ msgid "controller style" -#~ msgstr "控制器风格" +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" -#~ msgid "click_url" -#~ msgstr "点击后转到(URL)" +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" -#~ msgid "click target" -#~ msgstr "点击后转到" +#: utils/moderator.py:83 +msgid "parent first" +msgstr "父级优先" -#~ msgid "mute" -#~ msgstr "静音" +#: utils/moderator.py:90 +msgid "approve" +msgstr "批准" -#~ msgid "mute only" -#~ msgstr "静音" +#: utils/moderator.py:251 +#, python-format +msgid "CMS - Page %s requires approvement." +msgstr "CMS - 页面[%s]请求批准。" -#~ msgid "volume" -#~ msgstr "音量" +#: utils/permissions.py:206 +msgid "CMS - your user account was created." +msgstr "CMS - 您的用户帐号已创建。" -#~ msgid "in range <0, 100>" -#~ msgstr "从0到100" +#: utils/permissions.py:208 +msgid "CMS - your user account was changed." +msgstr "CMS - 您的用户帐号已变更。" #~ msgid "fgcolor" #~ msgstr "前景色" -#~ msgid "Hexadecimal, eg 13abec" -#~ msgstr "十六进制,如 13abec" - -#~ msgid "wmode" -#~ msgstr "窗口模式" +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/zh_CN/LC_MESSAGES/djangojs.mo b/cms/locale/zh_CN/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..26a1732e14d21a519d8ebbc39a14350fad0ff81c GIT binary patch literal 874 zcmbV~-%C_M6vwABg8SHW5A#q^)a>5XXyxjv+q#OdYbI+?fz0k5?;W{2bDNo~*;_$B zB*N$iDJW@3NTftyWWW4RdfL0LPyGv>8`4reL>>5W&dfRYd(X_7ug5!{BCrnN1kei{ z1+D^#g+Kwg23!WVfpfsILkQgl&I3hQe>jZLAb4~Hp_AZ>;30)z`-dg^u!T@wF+3+D ztfPZqmI{N7#5JD^k6}Zr8qad$%gA6&XSndN@fi*&B&WF2rvL96P=D(56lZ}uDQKOY z`F};11(T3uV?ER@QSvi7)3E=Hav z73pB#m{2?Ev&?&SZ$)N$f1P zvrZ=j7i=2}$vB(gNe6${WxAZM>{%PkDp74nMNy#xYNT?ooaP+&*4aQ3q-uU2ln5_^ zD<&02>kcmEM~5f!!$sU%Dh&iYC6(7_l}F0O_K7no+bT$5m;mj$5SldXx=Dut<)SB< zrqayhCMrXuyIq&`FvS!pikfs`v<~jBa`W@=4!+?}7DlbHAW}3SLsHeXg9ThXEOjo^ zlgt3ZoNb}zt&P34t=86h{N_%)ywQBS)?A)%?5@O{i_PWN`)k|#D=!*5_v85o%_lqY z!eadSaT2fI-P`;E+4$kJZ=at3v&yf}>UWXW%bW4N)%~UQ*6vc{{j27}qsGT~2Swij DcoaiI literal 0 HcmV?d00001 diff --git a/cms/locale/zh_CN/LC_MESSAGES/djangojs.po b/cms/locale/zh_CN/LC_MESSAGES/djangojs.po index e21aa8129f9..e2c05f73691 100644 --- a/cms/locale/zh_CN/LC_MESSAGES/djangojs.po +++ b/cms/locale/zh_CN/LC_MESSAGES/djangojs.po @@ -2,35 +2,35 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:38+0100\n" -"PO-Revision-Date: 2010-01-02 10:23+0800\n" -"Last-Translator: 张昆 \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "您确认将在没有保存本页面之前改变%(field_name)s吗?" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." -msgstr "如果现在就保存本页面,部分尚未完成的插件设置将会丢失,您确认吗?" +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." +msgstr "" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "您确认将在没有保存本页面之前改变当前标签页吗?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "您确认要删除这个插件吗?" diff --git a/cms/locale/zh_TW/LC_MESSAGES/django.mo b/cms/locale/zh_TW/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..2a1478d9216dd7806678d43c12c7e49de92e0617 GIT binary patch literal 24499 zcmb7~37pjBeg7Y$Nf56@qcMm2lS*WbyWkNI6crH^BT57{rio^Dca|NU-P!ESvXXN_ zkVTF~fkiGk6hx3yZWd_HHcc9vG*|yMY1-@@+kYC`q-mNqZTkK^&-XVoi&r|YefIs_ z=lA(O-{+b6>Di|&b9_2aa_)oh`=>egTl@>&t61lnFLLfWn1UnW26zwr9-Ih=Mb4cH z({Ko!4zGq^g37-K-T?b899`_(ZGMI=l>C zcuDBTMEFj^_d&J)DX8|+@Lc!>csX1G&wzgh)sOE$<^LI^N_QOc=gt`(cpX%KJ_YHT zYk_KKF+2}G12yg)Q1g4p_*JO+`8L%2{TQm2FTh*iYIqa;3Di1#uqLe6&G3DM8=%(r3sC*o0wZ_;UIYIY4uS7N zXe9sdgSGH(sCEB5)I6_)>fbh~dUnI1@Xsv%TW~btzlIvmX&(;reKu6S^Pt9YF_hfZ zz`NniQ1Z42YM$3Y)xQ^N9lr{-Uf+l6$Iqe0^)K)WIF!Mu-5a6grqehdjw8Glo(6vo zr6-O<$1T`z^K~w~mG~NX8%#r$-(@@qHLqWWYX1i?g1>}n|11_k z<2)Z~d?Vr6a6FVM{y01xwn6pp3sCbh3u@k$L#@v)_y9ZtRqwf1hITK6Dt9GRzpjN! zzZpu-?to{*dn{ZJm7aoHhjys)&p?*at$|E|`xZom+<(D$!%MFU>DR+M2v0NagxUwc zgCpPtSBLTwp!Dr@sD1njybk^VvZU_JkA(h?ftvU6P;&EWsQLOL)H*JMIuF)D_47wi z^ZY8*y!-}g{!U`Es-I`Vvta}^&a0s6xe+Sg1gQQ@vG9Y&CSw*(BE1VzwfhcKe@~$k zskmot75zKd`-)V!>K=fP(!elOH~d;_YzA4AFe&!F=CH+&C#&-G#7)Xq3Zo_sQTW9GE;a6)clYdxDcxR(@^uW+QKhb`YtGW z*atPA--4QlSD?oIJ$MQH8I<0A`;DRg;ZXg(3~F9RS^OBNb-Wd-Uw1?8g9o6-`3O{d zpMxs57^;73pz^<9;hj+Pa0sfMZ$jmN1**PRq3Syh)lWAjgwKQ;|3$`2pr2O@k2GEl z)$a9B?T&-WcNg?>V(||`&09T;U<*{fMNs`&3f10vsQzw(n!mkJ{W<_gz;8h1KMs}u z_r{YjQtl!A4ybzXhw9HKq1sKt!b!*@M1{I11`eRr(e1GI*0Q1ur4I6y669LXG3B@ge^hsCw?S@W+e~LACoRycm8F zs{iXOeW&pVlpOyhycGVE@$3nq{?Sn7Z?|v?s@~}qo@eYeK4;ts-$A}3Q2D=^up}_q|Z#df4I@TKrO|^6M?U$M|I^dHs%se+<=L9%`Jwu<-BU`w5?XM`-6l zfLfo`Q2jazF)iG;pvt+A zhW<@}lCw$1FG97m18Tm$12vAHLe-Nu{>tM206DtdJMIekZZeLC%72%IAA~wrKMl1H zJE7|TI@CJ;0G@LiO`0cq)9x!W)b)LapCU<10}0 z{?gJg_T1LXB??RDX8E2!03paX`uI@1gp4-n}8d2ELc@HBj?) zH&nf8sCCLh^=AP*8*YGUxECtluqjrL@fxW9jx$by%GUr@{t*j*!8jX6#Lu_zOYl;{ zFB|_3YM-1uHMBDVD*s2I_V@k9g;4pv1~s1pQ1dY4KIi@vUINvRE_fxJ3swFQRDb^! zo(oU9KaBgmQ2iYRHGkvaWpFZ7J)eV`pIPusxC$!&7Wf``#P~g^@6P+Xz9N){sF4p(?1b-9#r`VYMpDL>c7|0lg13xxMmo;EPk$qpR({XQ1xxF_#MW5 z#v_*gH4A?io=pB9TliJu&!Ou1Cky`;s^9-(;UNg0!e>GC>wQq`A6a;$@fzb8<8AP5 z3c2Q2i3oC8vhEazVAZW zIsX7Z08jc<=;sB-OQ7<7*upnJ_5W52-vc$i`z=0Y;prBh2Q_cK7G7uE2G1b=5LCbZ z!s5RTRo~x2$^9=Z{Pu@JyXQmA|8V2w#;c5@q53x#s^51TAF}jTV~6qcQ28H++Q*A6 zev^f_S@^3^{rXF&{{95&9Q_A43jPAV8(#2m=-)`=H4xS5##s1isPob5m z>V51(*d8a~{|0UZ?s{DOxdKl*4j7lg3veSTI|cV&_%DH|H*c4H3;q?3W1##wi}X`) z`ZNZ(UmJywllBt}zXGo&JQnvAi@V1te8B3N3_pTPDiSUPzry{i!hC+_|8rL%jVprx z{FML4aX$`0_XGG*(z7^yUcl|eU5on|acAOk`1KirACtwM0Uv|Y6v^jQ!fm(={#`x> zeNXse+~tH5P@h`(WjI{%7WWk42k?tX;HkKAxc3l#7u1U|0D2G+&l1pAL{cWZV&D+aI%l%;No+Hsc=KM^+>|0EbeeNy;);b(jZ zok93__%Fh(!JSU{&)`E)pGR=5xc|ZZ5~t5^aaWN3w{RxzT>O6u_4y9&K`VPLyo_)I z?z6Z@Egr9b)13?dAMSkIKAiN`?{WW$(;50FxCe3Z=T0ks61)<3yCvL@e=Yv&;R^Vd z7Jn1r_v893{J8Nwa4K#a?nf3U+=%-S`McpT+;4FIf$PGZgG=Cc;PlyyTZ;QO?jLZ+ za4+HJJpPGr67Jt{`n-*}hl2M_|Bog04)We&xkkbk+U(+5nW|G;c zHIs{ykEOD?ItsR>JEo;tAGY!#6eSuPlZ{a>L%Fteq9NIwNjE0jYqD>cKNq!SvZ-7u z)2bror9UYjuC5~LOk|_RWICBkHojr|$;K4PQR0uU){SWBXm3xp=4#xCY3WRTB8{g# z`I(MXJ0niCwY6uaCtFBYrNc+GWEf9E{e3u{oSsb6)j&65My4ZbNVG<6$@Zp9drOpP zP&THvHOe)ovQb-NS~6;++J;Zs2_nB5kH`ICZIi=jPASlt|-+QB!ekSw2HXrmY)902{HY-_4q_df*yh>X2Fb|b1 zv`?camMa(W6(kxOlG&`L(Km+_TpneRb=D=>+L&m~WeKaFohgPHWZT!sGGCgD>XVd9 zv`!0al*(nJ28N!?w1>8{sd`pvT0Ds9iPi>kPD$o+#AfN9#bmq$5Rp#HMaq|@mMpuG zpf(*XHKwxcs2SA2){v;QCZ?yRc}eu8DkG<+)+pJMNKsWILY$4>N;=5i-p;@?4eSMW zS2Q`DOfcg1WIB^zJDXstUiLH5(^GyGkSFBNFPfKp>uNSJJ=u7%a(A?*KGTszIM_d_ zrW9hCYi1j<8N6hhC9xT8Id%(gJfTr!uK7O{!E_-YPWqVgW1V!tS1aVz4Or6aNQ znJ~JsZEfjPgUwRd%Zk&UHeFH)+RiLT_?7kw2Z?iI+mn%Yc$OLRo=)UL{R%3{y65NO z=0TYWO=m3<_30$@DxH~iw95i8JE!?W+o=QpIg%^!D$ z!M)41Ct9>ny9lm z#mVMZ5G{ua=6sb3auZVNr2bK%VYHi&P9Q}S+A}TDUA9o}_Dp6PTWeCH&E3wNaLTpf z$#f{l|E#-X>ZH5e9m&TMjmZWKn>12`a%mbhs-eN%k-}hU1yZ;(+#Q^}{L4J5gFjXr zgOpF5o7fahOHJ2NA-&j)U`n4=)HC}rKAio2nu>_{Wi3^ED}b8%82K#fet?^HS795rcD zrGm;S8eXiAWjgpn2SY^4AwHwXj56Zz4dOPjHAn>(fge>gvSr3d>2(=I3CzZiCX;PJ zRdO0|l!X18YKpSC1Sf90PHZgDY;&fAR0KljM4c-ycI=5-I_QNz7Mq$77$$?0B^-KBVuucA=Tt913MwLUqU?$gkH11 zInpA=rVA8xq?%^3i;FY~cvbCe<;HCah_)Pjv+Ci$SN7FQmcsq@uU4ryO+kbmz*W0Xab zgQleg!vnLXCKOX@wRrj>u>`+1`)ji5#w#m7Wr{MXpxCgn zeB&oXhS_>e(JIX!id980VXe%buA?E%*KQSgOVH~+>zg979sZ8f)R9ilh^H8Zs{Yuv z&b0dwM~}b#R`n;;s|)OCve;IQJ&MXTyUD4B92T*&8$*!y%7)3!Xye2ioaoJ0W@eg> z=Xg7WV<_@hhe4fI>0mS)5m1yPMh%w?H`(8B{7%#Ms_)3tfo=SGQ$!6%@YYmS;YHI9Ih~t8#Ty-ISZ30c!W2M^T zin|xVW+=I`$14cmA5PjjqBR@wO+*`tGn!b>c-47RAj%JB_=po4m@@vJ$~Kdta$Z|$ z3rS-qumG9#N+c?pODs1#nfjbRmck1Wb1(%P&g??URV+u=Bivl-IncaUCxcW-d=A)= zS{JG7{{6)l@HS>0_1evOinQC1i_iA3vRocYWK~u z2O~SSdAI_c`06#4Cl#{tuA+g{^Ku5WB;pCNlLB+?O>=V>M7VT-2WeD(PL22ubE2}> zw9C}-wv**;Og1Gt(g>)x3skx-fxMc%=3`|VRW9A8_7NQ4RzVPn0{uH5@?nvvlK2Vm zay??oOyJE<*Z7mvLPW@2f^RSGf*mR3E{M; zPWCa`s47bO#21xkwD*Lty_R}U3HYi^@R6we*;z?9pWyb$AZ>`)Q1!`clbJK zLt3uf=H=J(Urf5vk!!{X0=#zV2H}0W1-be}!=n;2Z6iGxx%x~avBAn{PEBi0}el7H*;$+=Y zKFQ70D+Q+qZ#_F`g#I$*nv+^7r!_+dA;12;r&;eksYb`e?XBKaf~0YHRyK_b$9I&d zmpoa(+n#ZNI0=-x9t=aKDE`L9#fl$K)oVhmSDkLOPA^IRpMPj_y1rvA)F)zr@{a~Y z^K=lO){O))D5__)te{ECw7C|vYAyqKit#5?Sz5|xmR(y~GMM%+)QyY36O;5ISnXcw&>-j}G)gP7R~@kV&nAnVyIvg4VE0RYmK1q4Ecn z{$-tBFZhQAEX}~PzJmCICx<=gbWudV$95AQjMz}Uyd7xVDv62B#~}1UNOJa$DND`i zUgtVugCNWcFRp|4966)9ru1|#EVA>Pue|1Jo;Vt?DH@~cI*@}LDPy*?sT^o`S|Ksf)%xmf(e%R~UQ4>g?>Svuyq)t22>nXuf&+mf5y|*$s*QoOD?gjz#nT&g+yOKC`nz^wW9|LnmN+_Ue1sR~Ol?C;cIdrHy%N?= z%1%o)*52ANEn7P^6I#yle1`4Q+)?jaZA?v1Wkyy?j^ufcyV%gl_e`xFXZo;~H-7qk z<)|yJs2z1>?Wk*`QP+;Xa#Zc8YetPCV=Z?y|Lxjq^IdV(=&P>#@F+e*??PqNPBlw5 z(>^-NJd#R9H?|~ik*BVq`6jZ2Z!&7R>a;K%b&Z7R#zwSfI>XVDy(NykY3QVhlg3xZ zens7=q2s~Dmdr2xmt}t!z|+*)dn#phq^mV@3`AcZ^9aq<3d+PM;*B)`cf`9PN!1)jM34Q2PRJa#Q1yf8hiI`LtSCX%);t< znDF5@4gCiW7x!$)_bnS(xVN}+Ht|wpHQA^*@5TPZ`}z+o%x`-pzk2h}yJk6k162Kc zheFTOWGQXfntyU#zI!KSnVdKIy+g=f=`Pn9d1N%)%N_nh5XbZKWB4s>k2#rtGh~@W-?rQXy-uH6(`E?dcL@4 zWntZc{M;wVU6{2w-?O9t@W$e*J%vRZDOT9_d~x6Ifps(UYxkGdFDNWo*nebojVnhp z$kLWAg=ZF#Wnj&Q<9!QQi^7Uoh1HKU(8A)?VJ!+v7WE%FR$S_5eW2?(CO1?|d4k2g zi}SO$Ia|PYkSFsshVbv$kZ)cP}rk-~30l*?*ub z-!-4U6;~a|FJ3?``JRRO#ZSdQb0EUTxqo+Y-;#=mgb}+!@6P;&XI)|cVMK$u3^HZm ze9tE8M{?ruw#A_`3kNZIZKAKUJP(DJo*Y=Qxc}hVux9G3U)B>cXih?JPDm)1EIoci z{qO0`$NeaD_x2x{uf_Ij$&BR}Z_3Y`o8SJpX5#Rnfv$C>t~vRgbBnXr7hYbL-?^|b zugh8~&&{KO# zS~^&?Z|FaT!>@qxk$GL@vK`QK@@N|AB2*Ak2#!Saq233_QMZ?`Q<$bfFb zB8`9T5L$n|qb%fh0k*~=P~5&g-@VVKDnwbUmf7nmFTV5kvPMXrP95uPe%_XR_gq(c zd2XS1MgGv%u>V{<*VWzHx<2B!+6>2JHXO~@}xZ>W~#iP&1xMMuOfyghMnV+)_<;$W;v2U6c{|sVa<*w559?t6h`JUZwU{fzW zaR_F$Dk&^l#ptS((xzF3XIJOfZ_V%6D)si_?n2LE^m1827iS#`b5YS~ew#<}FCxNz zXZ=f?pVXk~5H%KdKaHAW*!_nO_a9ltsesf-`h#{r`WJQgAL_OvV&8787cH$9wMs2P zUuu+`U8{SG{AZu_>=-!wY+=ch*3?^NI{Iu7h~mM%!n|X#jD-N!(y^y#xcY<&i|)v% znF`ua$A*^~*$I{=UBQFC;XEb$!TfWelkI!l7O?RsQHxtOPTRN(_ZV zMGOf=!6X-6nvJ69Kenc@U?wV}xZ;Rvi3P;VN&eWJfpy)5XE>R#W^`yECDdm-S;m>f zNrzbQg#u^{oo;?9i<`GgCokQhR$f~G(;-ZkmBf1W!r{=q9Hwf~t5!~YnQ_iCd&|s) zqn4vwznK_V)Jvn-bGxd(MIQ9~2*j|oVwt`}F0MGtWXnq2zP`Bl35{D(a}PP&652q$ z+rv@GiST4$<_=eQX-+yQ0bdXt|?ptdm7!x1FgOqxR1FpWCYV&{4YSl2A2n>&)- zF}U>Uu15KqxLh~ZNX6QBubXvHj!-KL8g!ybO*rR6TDVY}Q4pfSPAJarD$JR0Ex%6G z;35pNy4DZ~dpxe9y1rm924z+?FQ}{T#rY@Kq6};=T79+66>b*3yOmf=WIJJJ=I1YS zg$47lUsw~CF$g~~1KrDHL>zrFzi4gPS`w0Nx>|5CVH5cZ-?-$!tl4i?a$wzJgd4r; z?c31Ih_LiEVTE0Y)J4VHV>Dm6`ks(R0?+c*zi$XTo7)`MY*!s9D;&QanE@U{LIcuF zyEx+5zq@AHRVIw$wbfU@E$Ak=pmzj6c&M>W6DH9G^dHz16kfQfqv|RNNPO|og4q1; z*@TwlTtoxM#@dR$fv%a=reU>8l1;OGHS=P2%;JSbE*{;zroK5&w?B#UW1+%E5823H zU17M*YB4K2UiOba`dqQ=XfO_iZj3cU@&aL zwINtO%t)|LRG9>G^R`$Q^K^yQrgz)QS$Rz0F~~CLu-p)vbg_OZTlV4FW(q4#l{sX^ zy!lD%K@*)=Y;dZIp|y2#_?t7evP>KnTGjZSOaoAuTfevd!-&;_pK?E0ao&8-76eG! zdGmI=1%;Y}Q4lOHnq!^b@a;}I#9!Eg@yKpQT!TSW+`Fl)4t=}+VF3})`$GQd1?4l6 z`m64YVIinD?8*K^PiR9j$Gm)nY0?osYcm_OJYS~B{f&!zZ@%j(KgWwU7v~)uVK;*s zoxFv8-R0vbbk1U{&!a&J)rXDcjj!bXMX`t_eP|QI(X$<%quWbcjs+_*yu-#T(!I|w z3~v$S^=i7j?v^kjw8c5<7ryl3%f&rA!%fzrLb((2y>4XQtAe;iAJ7RCYA#ohKe8+T zc#kWr-B?^b-!5vhJN(5z#3HGELDIOCSQIxXy|Kn}Bz?K@(qOSSk?JOhc!!~+S2wV<(da(E-I{EOIm6E#_&+VEkth>I}e}>%BhrG z7wp6!2*KVf*YXz0EW-)ETQD_tLakvCgKD)c5?hR6Soxz17%0Y7wUw*!#c#R(?eewH zv9I%_xqe~(`QEUF%_^X?13or9d;9yynl4vZ#Z7XRX-%0eTNa`!*eJzq^YTaMg!?3W zD#W|$E4V$@=|RPgJf7HP!Ib81!8Wj4dSx{Rgs{|c-lYdQ>Pm;# z7P?+2tUHKqA6PKk(&D$D@XbQ_s)CBjyL^WoQK9m%%5hO|`~;(<+6)N`Jt$Kg#oYTd z*PiM$k@>ZY@&`Cw{RqrneYv7O?-`QRcn z-<1~5D{ek!uT$|O)#{h@;=--Cu!h%F|N7m3=urF&glSrOc0>N)viLcNvmnxUt>OCN z2DUzfK0~th;5*?JhcBVSZXlWV7Q5E(lH_xhk zt0U3WITI|!^4Bl%Q^bic0YM{EXjA+s5Z(sDOOibb6gI3WtUqSL7q0uxY$Sj8cR~9W zmOWECw$laOjy<}i`1DTf_SyD5KsN#ZMrOu<$y7jo$$C>H1HHRS+q>8$#jWd{Nn3!e zq|C7+yUgSZ0pyAA7@Xb(3R>RJ`lsD(Vu^$ z%YLw%=ab$p&~eNN^(|W&oKpU)x$qrFd@->*ML1f*>E^8^?x=pDD>iHYk!};?uxddF z2SwS?S=)GF{Z%|R*!>rWrmpO}GW+>MzUO6ih_`sX%P-qHC}0bLb)MfjKP>WKZB>;J zYa@TjLa%EAY*b7Kww0zsVBEY$3^s*N)HNrDSs+Yh7hA;M`eMcWmy7<{yrR%UY@w$| zq81Mz*e>?_h?;P2^Wd)ApB5TJCQO@6Bb&)pZQfw3h963VRpC|;eky^LECZg4oG)@1LOh# literal 0 HcmV?d00001 diff --git a/cms/locale/zh_TW/LC_MESSAGES/django.po b/cms/locale/zh_TW/LC_MESSAGES/django.po index 895fbe28bd6..411c6e68fdc 100644 --- a/cms/locale/zh_TW/LC_MESSAGES/django.po +++ b/cms/locale/zh_TW/LC_MESSAGES/django.po @@ -2,474 +2,330 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: django-cms\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-09 01:54+0200\n" -"PO-Revision-Date: 2010-03-10 16:00+0500\n" -"Last-Translator: Kochin Chang\n" -"Language-Team: zh-TW\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:20-0600\n" +"PO-Revision-Date: 2011-02-07 13:38+0000\n" +"Last-Translator: ojii \n" +"Language-Team: divio.ch \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" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0\n" +"X-Poedit-Language: English\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Country: SWITZERLAND\n" #: plugin_base.py:100 msgid "Advanced options" msgstr "進階選項" -#: admin/forms.py:28 +#: admin/forms.py:52 msgid "Title" msgstr "標題" -#: admin/forms.py:29 +#: admin/forms.py:53 msgid "The default title" msgstr "預設標題" -#: admin/forms.py:30 +#: admin/forms.py:54 msgid "Slug" msgstr "簡略標題" -#: admin/forms.py:31 +#: admin/forms.py:55 msgid "The part of the title that is used in the URL" msgstr "在 URL 中使用的部分標題" -#: admin/forms.py:32 +#: admin/forms.py:56 msgid "Language" msgstr "語言" -#: admin/forms.py:33 +#: admin/forms.py:57 msgid "The current language of the content fields." msgstr "內容欄位目前使用的語言。" -#: admin/forms.py:82 +#: admin/forms.py:110 msgid "Another page with this slug already exists" msgstr "已存在有相同簡略標題的另一網頁" -#: admin/forms.py:100 +#: admin/forms.py:128 msgid "Menu Title" msgstr "選單標題" -#: admin/forms.py:101 +#: admin/forms.py:129 msgid "Overwrite what is displayed in the menu" msgstr "取代在選單中的顯示標題" -#: admin/forms.py:102 +#: admin/forms.py:130 msgid "Page Title" msgstr "網頁標題" -#: admin/forms.py:103 +#: admin/forms.py:131 msgid "Overwrites what is displayed at the top of your browser or in bookmarks" msgstr "取代在瀏覽器頂端或書籤內的顯示標題" -#: admin/forms.py:104 +#: admin/forms.py:132 msgid "Application" msgstr "應用套件" -#: admin/forms.py:106 +#: admin/forms.py:134 msgid "Hook application to this page." msgstr "將應用套件掛入此網頁" -#: admin/forms.py:107 +#: admin/forms.py:135 msgid "Overwrite URL" msgstr "取代 URL" -#: admin/forms.py:108 +#: admin/forms.py:136 msgid "Keep this field empty if standard path should be used." msgstr "如果標準路徑應該被使用,請將這一欄位保持空白。" -#: admin/forms.py:114 +#: admin/forms.py:142 msgid "Redirect" msgstr "重新導向" -#: admin/forms.py:115 +#: admin/forms.py:143 msgid "Redirects to this URL." msgstr "重新導向到這個 URL" -#: admin/forms.py:117 +#: admin/forms.py:145 msgid "A description of the page sometimes used by search engines." msgstr "此網頁的說明頁面,有時會被搜索引擎使用。" -#: admin/forms.py:119 +#: admin/forms.py:147 msgid "A list of comma seperated keywords sometimes used by search engines." msgstr "用逗號分隔的關鍵字列表,有時會被搜索引擎使用。" -#: admin/forms.py:134 +#: admin/forms.py:163 msgid "A page with this reverse URL id exists already." msgstr "一個有相同的反向 URL id 的網頁已經存在。" -#: admin/forms.py:141 +#: admin/forms.py:171 msgid "Invalid URL, use /my/url format." msgstr "無效的 URL,請使用類似 /my/url 的格式。" -#: admin/forms.py:152 admin/forms.py:153 migrations/0001_initial.py:41 -#: models/permissionmodels.py:16 +#: admin/forms.py:182 admin/forms.py:183 migrations/0001_initial.py:41 +#: models/permissionmodels.py:17 msgid "user" msgstr "用戶" -#: admin/forms.py:185 -msgid "" -"Add page permission requires also access to children, or descendants, " -"otherwise added page can't be changed by its creator." -msgstr "" -"新增網頁的權限也需要能存取子網頁或下層網頁,否則它的建造者將無法對所新增的網" -"頁做更改。" +#: admin/forms.py:215 +msgid "Add page permission requires also access to children, or descendants, otherwise added page can't be changed by its creator." +msgstr "新增網頁的權限也需要能存取子網頁或下層網頁,否則它的建造者將無法對所新增的網頁做更改。" -#: admin/forms.py:188 +#: admin/forms.py:218 msgid "Add page permission also requires edit page permission." msgstr "新增網頁的權限也需要有編輯網頁的權限。" -#: admin/forms.py:215 +#: admin/forms.py:245 msgid "Please select user or group first." msgstr "請先選擇用戶或組群。" -#: admin/forms.py:222 admin/forms.py:229 admin/forms.py:233 +#: admin/forms.py:252 admin/forms.py:259 admin/forms.py:263 #: templates/admin/cms/page/change_form.html:65 #: templates/admin/cms/page/plugin_change_form.html:70 msgid "Add" msgstr "新增" -#: admin/forms.py:223 admin/forms.py:230 admin/forms.py:234 +#: admin/forms.py:253 admin/forms.py:260 admin/forms.py:264 msgid "Change" msgstr "修改" -#: admin/forms.py:224 admin/forms.py:231 admin/forms.py:235 +#: admin/forms.py:254 admin/forms.py:261 admin/forms.py:265 #: templates/admin/page_submit_line.html:5 #: templates/admin/cms/page/menu_item.html:44 msgid "Delete" msgstr "刪除" -#: admin/forms.py:225 +#: admin/forms.py:255 msgid "Recover (any) pages" msgstr "復原(任何)網頁" -#: admin/forms.py:288 +#: admin/forms.py:295 msgid "Notify user" msgstr "通知用戶" -#: admin/forms.py:289 -msgid "" -"Send email notification to user about username or password change. Requires " -"user email." -msgstr "" -"發送電子郵件通知用戶有關的用戶名稱或密碼的變更。需要用戶的電子郵件地址。" +#: admin/forms.py:296 +msgid "Send email notification to user about username or password change. Requires user email." +msgstr "發送電子郵件通知用戶有關的用戶名稱或密碼的變更。需要用戶的電子郵件地址。" -#: admin/forms.py:309 +#: admin/forms.py:316 msgid "New password" msgstr "新的密碼" -#: admin/forms.py:311 +#: admin/forms.py:318 msgid "New password confirmation" msgstr "新密碼確認" -#: admin/forms.py:330 +#: admin/forms.py:337 msgid "Email notification requires valid email address." msgstr "電子郵件通知需要有效的電子郵件地址。" -#: admin/forms.py:332 -msgid "" -"The permission to add new pages requires the permission to change pages!" +#: admin/forms.py:339 +msgid "The permission to add new pages requires the permission to change pages!" msgstr "新增網頁的權限需要有修改網頁的權限!" -#: admin/forms.py:334 -msgid "" -"The permission to add new users requires the permission to change users!" +#: admin/forms.py:341 +msgid "The permission to add new users requires the permission to change users!" msgstr "新增用戶的權限需要有修改用戶的權限!" -#: admin/forms.py:336 +#: admin/forms.py:343 msgid "To add permissions you also need to edit them!" msgstr "要增加權限,您還需要有權限編輯它們!" -#: admin/pageadmin.py:118 admin/pageadmin.py:134 +#: admin/pageadmin.py:123 admin/pageadmin.py:139 msgid "Hidden" msgstr "隱藏" -#: admin/pageadmin.py:129 +#: admin/pageadmin.py:134 msgid "Basic Settings" msgstr "基本設置" -#: admin/pageadmin.py:132 +#: admin/pageadmin.py:137 msgid "Note: This page reloads if you change the selection. Save it first." msgstr "注意:如果你更改選擇,本網頁將重新載入。請先儲存。" -#: admin/pageadmin.py:138 +#: admin/pageadmin.py:143 msgid "Advanced Settings" msgstr "進階設置" -#: admin/pageadmin.py:147 +#: admin/pageadmin.py:152 msgid "SEO Settings" msgstr "搜索引擎優化(SEO)設置" -#: admin/pageadmin.py:477 +#: admin/pageadmin.py:504 msgid "higher" msgstr "更高" -#: admin/pageadmin.py:649 +#: admin/pageadmin.py:676 msgid "Database error" msgstr "資料庫錯誤" -#: admin/pageadmin.py:748 migrations/0001_initial.py:13 +#: admin/pageadmin.py:768 migrations/0001_initial.py:13 #: migrations/0001_initial.py:26 migrations/0001_initial.py:40 #: migrations/0001_initial.py:78 migrations/0003_remove_placeholder.py:21 -#: models/pagemodel.py:82 models/permissionmodels.py:68 -#: models/titlemodels.py:22 plugins/inherit/forms.py:9 plugins/link/forms.py:9 -#: plugins/link/models.py:13 plugins/link/migrations/0001_initial.py:19 -#: plugins/picture/models.py:22 plugins/teaser/models.py:15 +#: models/pagemodel.py:99 models/permissionmodels.py:69 +#: models/titlemodels.py:21 plugins/inherit/forms.py:9 plugins/link/forms.py:9 +#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:19 +#: plugins/picture/models.py:20 plugins/teaser/models.py:13 msgid "page" msgstr "網頁" -#: admin/pageadmin.py:873 +#: admin/pageadmin.py:896 msgid "Page was successfully approved." msgstr "網頁被成功地核准。" -#: admin/pageadmin.py:928 +#: admin/pageadmin.py:966 #, python-format msgid "%(name)s object with primary key %(key)r does not exist." msgstr "擁有 %(key)r 主索引鍵的 %(name)s 物件不存在。" -#: admin/pageadmin.py:931 +#: admin/pageadmin.py:969 msgid "There only exists one translation for this page" msgstr "此網頁只有一種翻譯" -#: admin/pageadmin.py:946 +#: admin/pageadmin.py:991 #, python-format msgid "Title and plugins with language %(language)s was deleted" msgstr "標題和插件的 %(language)s 語言被刪除了" -#: admin/pageadmin.py:969 +#: admin/pageadmin.py:1012 msgid "Are you sure?" msgstr "您確定嗎?" -#: admin/pageadmin.py:1029 +#: admin/pageadmin.py:1072 msgid "You do not have permission to publish this page" msgstr "你沒有權限發佈此網頁" -#: admin/pageadmin.py:1047 +#: admin/pageadmin.py:1088 msgid "You do not have permission to change this page's in_navigation status" msgstr "你沒有權限更改此網頁的 in_navigation 狀態" -#: admin/pageadmin.py:1092 admin/pageadmin.py:1125 +#: admin/pageadmin.py:1133 admin/pageadmin.py:1167 msgid "You do not have permission to change this page" msgstr "你沒有權限更改此網頁" -#: admin/pageadmin.py:1096 admin/pageadmin.py:1127 +#: admin/pageadmin.py:1137 admin/pageadmin.py:1169 msgid "Language must be set to a supported language!" msgstr "語言必須設定為一種被支持的語言!" -#: admin/pageadmin.py:1108 +#: admin/pageadmin.py:1149 #, python-format msgid "%(plugin_name)s plugin added to %(placeholder)s" msgstr "%(plugin_name)s 插件被加到 %(placeholder)s" -#: admin/pageadmin.py:1129 +#: admin/pageadmin.py:1171 msgid "Language must be different than the copied language!" msgstr "語言必須是不同的於被複製的語言!" -#: admin/pageadmin.py:1139 +#: admin/pageadmin.py:1179 #, python-format msgid "Copied %(language)s plugins to %(placeholder)s" msgstr "複製 %(language)s 插件到 %(placeholder)s" -#: admin/pageadmin.py:1213 +#: admin/pageadmin.py:1260 #, python-format -msgid "" -"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" +msgid "%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s" msgstr "%(plugin_name)s 插件於 %(position)s 位置的 %(placeholder)s 內被編輯" -#: admin/pageadmin.py:1271 +#: admin/pageadmin.py:1318 msgid "Plugins where moved" msgstr "插件被移動" -#: admin/pageadmin.py:1293 admin/placeholderadmin.py:207 +#: admin/pageadmin.py:1345 admin/placeholderadmin.py:216 #, python-format -msgid "" -"%(plugin_name)s plugin at position %(position)s in %(placeholder)s was " -"deleted." +msgid "%(plugin_name)s plugin at position %(position)s in %(placeholder)s was deleted." msgstr "%(plugin_name)s 插件於 %(position)s 位置的 %(placeholder)s 內被刪除。" -#: admin/permissionadmin.py:113 models/permissionmodels.py:74 +#: admin/permissionadmin.py:114 models/permissionmodels.py:75 msgid "Page permissions" msgstr "網頁的權限" -#: admin/permissionadmin.py:114 +#: admin/permissionadmin.py:115 msgid "User & Group permissions" msgstr "用戶和組群的權限" -#: admin/permissionadmin.py:115 +#: admin/permissionadmin.py:116 msgid "Page permissions management" msgstr "網頁權限管理" -#: admin/useradmin.py:22 +#: admin/useradmin.py:23 msgid "User details" msgstr "用戶詳細資料" -#: admin/useradmin.py:23 +#: admin/useradmin.py:24 msgid "Groups" msgstr "組群" -#: admin/useradmin.py:33 templates/cms/toolbar/toolbar.html:76 +#: admin/useradmin.py:34 templates/cms/toolbar/toolbar.html:155 msgid "Password" msgstr "密碼" -#: admin/dialog/forms.py:8 +#: admin/dialog/forms.py:9 msgid "Copy permissions" msgstr "複製權限" -#: admin/dialog/forms.py:11 +#: admin/dialog/forms.py:16 msgid "Copy moderation" msgstr "複製管制權限" -#: conf/patch.py:26 +#: conf/patch.py:27 msgid "Inherit the template of the nearest ancestor" msgstr "繼承最近的上層網頁模板" -#: docs/templates/defindex.html:2 -msgid "Overview" -msgstr "概述" - -#: docs/templates/defindex.html:11 -msgid "Indices and tables:" -msgstr "索引與資料表" - -#: docs/templates/defindex.html:14 -msgid "Complete Table of Contents" -msgstr "完整目錄" - -#: docs/templates/defindex.html:15 -msgid "lists all sections and subsections" -msgstr "列出所有的章節和段落" - -#: docs/templates/defindex.html:16 -msgid "Search Page" -msgstr "搜尋網頁" - -#: docs/templates/defindex.html:17 -msgid "search this documentation" -msgstr "搜索這份文件" - -#: docs/templates/defindex.html:19 docs/templates/modindex.html:2 -#: docs/templates/modindex.html.py:13 -msgid "Global Module Index" -msgstr "全站模組索引" - -#: docs/templates/defindex.html:20 -msgid "quick access to all modules" -msgstr "快速取用所有模組" - -#: docs/templates/defindex.html:21 -msgid "General Index" -msgstr "總索引" - -#: docs/templates/defindex.html:22 -msgid "all functions, classes, terms" -msgstr "所有的函數、類別、用語" - -#: docs/templates/genindex-single.html:2 docs/templates/genindex-split.html:2 -#: docs/templates/genindex-split.html:5 docs/templates/genindex.html:2 -#: docs/templates/genindex.html.py:5 docs/templates/genindex.html:48 -#: docs/templates/layout.html:131 -msgid "Index" -msgstr "索引" - -#: docs/templates/genindex-single.html:44 -#: docs/templates/genindex-split.html:14 docs/templates/genindex-split.html:27 -#: docs/templates/genindex.html:54 -msgid "Full index on one page" -msgstr "顯示完整索引於一頁" - -#: docs/templates/genindex-split.html:7 -msgid "Index pages by letter" -msgstr "索引頁依照字母順序" - -#: docs/templates/genindex-split.html:15 -msgid "can be huge" -msgstr "可能會很大" - -#: docs/templates/layout.html:10 -msgid "Navigation" -msgstr "導航" - -#: docs/templates/layout.html:42 -msgid "Table Of Contents" -msgstr "目錄" - -#: docs/templates/layout.html:48 -msgid "Previous topic" -msgstr "前一主題" - -#: docs/templates/layout.html:50 -msgid "previous chapter" -msgstr "前一章" - -#: docs/templates/layout.html:53 -msgid "Next topic" -msgstr "後一主題" - -#: docs/templates/layout.html:55 -msgid "next chapter" -msgstr "後一章" - -#: docs/templates/layout.html:60 -msgid "This Page" -msgstr "此頁" - -#: docs/templates/layout.html:63 -msgid "Show Source" -msgstr "顯示原始程式碼" - -#: docs/templates/layout.html:73 -msgid "Quick search" -msgstr "快速搜尋" - -#: docs/templates/layout.html:76 -msgid "Go" -msgstr "執行" - -#: docs/templates/layout.html:81 -msgid "Enter search terms or a module, class or function name." -msgstr "輸入檢索詞或一個模組、類別或函數的名稱。" - -#: docs/templates/layout.html:128 -msgid "About these documents" -msgstr "關於這些文件" - -#: docs/templates/layout.html:134 docs/templates/search.html:2 -#: docs/templates/search.html.py:5 -msgid "Search" -msgstr "搜尋" - -#: docs/templates/layout.html:137 -msgid "Copyright" -msgstr "版權" - -#: docs/templates/modindex.html:36 -msgid "Deprecated" -msgstr "已過時" - -#: docs/templates/search.html:21 -msgid "search" -msgstr "搜尋" - -#: docs/templates/search.html:25 -msgid "Search Results" -msgstr "搜尋結果" - -#: docs/templates/search.html:27 -msgid "Your search did not match any results." -msgstr "您的搜尋找不到任何匹配的結果。" - -#: forms/fields.py:18 +#: forms/fields.py:19 msgid "Select a valid site" msgstr "" -#: forms/fields.py:19 -#, fuzzy +#: forms/fields.py:20 msgid "Select a valid page" -msgstr "選擇此頁" +msgstr "" -#: forms/widgets.py:172 +#: forms/widgets.py:173 msgid "Add Another" msgstr "添加另一件" @@ -477,34 +333,34 @@ msgstr "添加另一件" #: migrations/0001_initial.py:75 migrations/0003_remove_placeholder.py:18 #: migrations/0010_5char_language.py:12 migrations/0010_5char_language.py:15 #: migrations/0010_5char_language.py:22 migrations/0010_5char_language.py:25 -#: models/pluginmodel.py:44 models/titlemodels.py:11 +#: models/pluginmodel.py:61 models/titlemodels.py:10 #: plugins/inherit/models.py:11 msgid "language" msgstr "語言" #: migrations/0001_initial.py:14 migrations/0004_textobjects.py:12 -#: migrations/0004_textobjects.py:22 models/pluginmodel.py:43 +#: migrations/0004_textobjects.py:22 models/pluginmodel.py:60 msgid "position" msgstr "位置" #: migrations/0001_initial.py:15 migrations/0001_initial.py:29 -#: models/pluginmodel.py:46 models/titlemodels.py:23 +#: models/pluginmodel.py:63 models/titlemodels.py:22 msgid "creation date" msgstr "創建日期" #: migrations/0001_initial.py:16 migrations/0001_initial.py:77 -#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:27 +#: migrations/0003_remove_placeholder.py:20 models/placeholdermodel.py:11 msgid "slot" msgstr "插槽" -#: migrations/0001_initial.py:18 models/pluginmodel.py:45 +#: migrations/0001_initial.py:18 models/pluginmodel.py:62 msgid "plugin_name" msgstr "插件名稱" #: migrations/0001_initial.py:25 migrations/0011_title_overwrites.py:12 -#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:12 -#: models/titlemodels.py:13 models/titlemodels.py:21 plugins/file/models.py:26 -#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:11 +#: migrations/0011_title_overwrites.py:15 models/titlemodels.py:11 +#: models/titlemodels.py:12 models/titlemodels.py:20 plugins/file/models.py:25 +#: plugins/file/migrations/0001_initial.py:18 plugins/teaser/models.py:9 #: plugins/twitter/models.py:6 plugins/twitter/models.py:15 #: templates/admin/cms/page/change_list_tree.html:6 msgid "title" @@ -514,7 +370,7 @@ msgstr "標題" msgid "path" msgstr "路徑" -#: migrations/0001_initial.py:30 models/titlemodels.py:14 +#: migrations/0001_initial.py:30 models/titlemodels.py:13 msgid "slug" msgstr "簡略標題" @@ -522,15 +378,15 @@ msgstr "簡略標題" msgid "everybody" msgstr "所有人" -#: migrations/0001_initial.py:37 models/permissionmodels.py:20 +#: migrations/0001_initial.py:37 models/permissionmodels.py:21 msgid "can edit" msgstr "可以編輯" -#: migrations/0001_initial.py:38 models/permissionmodels.py:17 +#: migrations/0001_initial.py:38 models/permissionmodels.py:18 msgid "group" msgstr "組群" -#: migrations/0001_initial.py:39 models/permissionmodels.py:24 +#: migrations/0001_initial.py:39 models/permissionmodels.py:25 msgid "can publish" msgstr "可以發佈" @@ -552,7 +408,7 @@ msgid "navigation extenders" msgstr "導航擴展" #: migrations/0001_initial.py:54 migrations/0006_apphook.py:12 -#: migrations/0006_apphook.py:46 models/titlemodels.py:16 +#: migrations/0006_apphook.py:46 models/titlemodels.py:15 msgid "has url overwrite" msgstr "有 url 取代" @@ -568,321 +424,321 @@ msgstr "作者" msgid "reverse url id" msgstr "反向 url id" -#: migrations/0001_initial.py:59 models/pagemodel.py:71 +#: migrations/0001_initial.py:59 models/pagemodel.py:82 msgid "login required" msgstr "需要登入" -#: migrations/0001_initial.py:60 models/pagemodel.py:56 +#: migrations/0001_initial.py:60 models/pagemodel.py:67 msgid "soft root" msgstr "軟性根目錄" -#: migrations/0001_initial.py:63 models/pagemodel.py:54 +#: migrations/0001_initial.py:63 models/pagemodel.py:65 msgid "publication end date" msgstr "發佈結束日期" -#: migrations/0001_initial.py:64 models/pagemodel.py:61 +#: migrations/0001_initial.py:64 models/pagemodel.py:72 #: plugins/snippet/models.py:14 msgid "template" msgstr "模板" -#: migrations/0001_initial.py:66 models/pagemodel.py:53 +#: migrations/0001_initial.py:66 models/pagemodel.py:64 msgid "publication date" msgstr "發佈日期" -#: migrations/0001_initial.py:67 models/pagemodel.py:55 +#: migrations/0001_initial.py:67 models/pagemodel.py:66 #: templates/admin/cms/page/change_list_tree.html:9 msgid "in navigation" msgstr "出現在導航中" #: migrations/0006_apphook.py:15 migrations/0007_apphook_longer.py:11 -#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:17 +#: migrations/0007_apphook_longer.py:17 models/titlemodels.py:16 msgid "application" msgstr "應用套件" -#: migrations/0006_apphook.py:65 models/pagemodel.py:57 +#: migrations/0006_apphook.py:65 models/pagemodel.py:68 msgid "id" msgstr "id" -#: migrations/0008_redirects.py:11 models/titlemodels.py:18 +#: migrations/0008_redirects.py:11 models/titlemodels.py:17 msgid "redirect" msgstr "重新導向" -#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:20 +#: migrations/0009_added_meta_fields.py:12 models/titlemodels.py:19 msgid "keywords" msgstr "關鍵字" -#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:19 -#: plugins/teaser/models.py:22 +#: migrations/0009_added_meta_fields.py:15 models/titlemodels.py:18 +#: plugins/teaser/models.py:20 msgid "description" msgstr "說明" -#: models/moderatormodels.py:24 +#: models/moderatormodels.py:25 msgid "Current page" msgstr "目前網頁" -#: models/moderatormodels.py:25 +#: models/moderatormodels.py:26 msgid "Page children (immediate)" msgstr "子網頁(直接的)" -#: models/moderatormodels.py:26 +#: models/moderatormodels.py:27 msgid "Page and children (immediate)" msgstr "網頁與子網頁(直接的)" -#: models/moderatormodels.py:27 +#: models/moderatormodels.py:28 msgid "Page descendants" msgstr "下層網頁" -#: models/moderatormodels.py:28 +#: models/moderatormodels.py:29 msgid "Page and descendants" msgstr "網頁與下層網頁" -#: models/moderatormodels.py:44 templates/admin/cms/page/permissions.html:5 +#: models/moderatormodels.py:45 templates/admin/cms/page/permissions.html:5 +#: templates/cms/toolbar/toolbar.html:193 msgid "Page" msgstr "網頁" -#: models/moderatormodels.py:45 +#: models/moderatormodels.py:46 #: templates/admin/cms/page/moderation_messages.html:6 #: templates/admin/cms/page/permissions.html:6 msgid "User" msgstr "用戶" -#: models/moderatormodels.py:49 templatetags/cms_admin.py:65 +#: models/moderatormodels.py:50 templatetags/cms_admin.py:85 msgid "Moderate page" msgstr "管制網頁" -#: models/moderatormodels.py:50 templatetags/cms_admin.py:66 +#: models/moderatormodels.py:51 templatetags/cms_admin.py:86 msgid "Moderate children" msgstr "管制子網頁" -#: models/moderatormodels.py:51 templatetags/cms_admin.py:67 +#: models/moderatormodels.py:52 templatetags/cms_admin.py:87 msgid "Moderate descendants" msgstr "管制下層網頁" -#: models/moderatormodels.py:54 models/moderatormodels.py:55 +#: models/moderatormodels.py:55 models/moderatormodels.py:56 msgid "PageModerator" msgstr "網頁管制者" -#: models/moderatormodels.py:97 +#: models/moderatormodels.py:98 msgid "created" msgstr "創建" -#: models/moderatormodels.py:98 models/pagemodel.py:35 +#: models/moderatormodels.py:99 models/pagemodel.py:42 msgid "changed" msgstr "已變更" -#: models/moderatormodels.py:99 +#: models/moderatormodels.py:100 msgid "delete req." msgstr "刪除請求" -#: models/moderatormodels.py:100 +#: models/moderatormodels.py:101 msgid "move req." msgstr "搬移請求" -#: models/moderatormodels.py:101 +#: models/moderatormodels.py:102 msgid "publish req." msgstr "發佈請求" -#: models/moderatormodels.py:102 +#: models/moderatormodels.py:103 msgid "unpublish req." msgstr "取消發佈請求" -#: models/moderatormodels.py:103 models/pagemodel.py:38 +#: models/moderatormodels.py:104 models/pagemodel.py:45 msgid "approved" msgstr "已核准" -#: models/moderatormodels.py:115 +#: models/moderatormodels.py:116 msgid "Page moderator state" msgstr "網頁管制狀態" -#: models/moderatormodels.py:116 +#: models/moderatormodels.py:117 msgid "Page moderator states" msgstr "網頁管制狀態" -#: models/pagemodel.py:36 +#: models/pagemodel.py:43 msgid "req. app." msgstr "需要認可" -#: models/pagemodel.py:37 templates/admin/cms/page/menu_item.html:44 -#: templates/cms/toolbar/toolbar.html:106 -#: templates/cms/toolbar/toolbar.html:143 utils/moderator.py:89 +#: models/pagemodel.py:44 templates/admin/cms/page/menu_item.html:44 +#: templates/cms/toolbar/toolbar.html:200 +#: templates/cms/toolbar/toolbar.html:239 utils/moderator.py:90 msgid "delete" msgstr "刪除" -#: models/pagemodel.py:39 +#: models/pagemodel.py:46 msgid "app. par." msgstr "已認可,等待上層被認可" -#: models/pagemodel.py:43 +#: models/pagemodel.py:50 msgid "for logged in users only" msgstr "" -#: models/pagemodel.py:44 +#: models/pagemodel.py:51 msgid "for anonymous users only" msgstr "" -#: models/pagemodel.py:49 +#: models/pagemodel.py:59 msgid "created by" msgstr "創建者" -#: models/pagemodel.py:50 templates/admin/cms/page/change_list_tree.html:19 +#: models/pagemodel.py:60 templates/admin/cms/page/change_list_tree.html:19 msgid "changed by" msgstr "修改者" -#: models/pagemodel.py:53 -msgid "" -"When the page should go live. Status must be \"Published\" for page to go " -"live." +#: models/pagemodel.py:64 +msgid "When the page should go live. Status must be \"Published\" for page to go live." msgstr "何時此網頁要正式發表。狀態必須是\"發佈\"才會使網頁發表出去。" -#: models/pagemodel.py:54 +#: models/pagemodel.py:65 msgid "When to expire the page. Leave empty to never expire." msgstr "何時讓此網頁過期。若留空白則永不過期。" -#: models/pagemodel.py:56 +#: models/pagemodel.py:67 msgid "All ancestors will not be displayed in the navigation" msgstr "所有的上層網頁將不會顯示在導航中" -#: models/pagemodel.py:57 -msgid "" -"An unique identifier that is used with the page_url templatetag for linking " -"to this page" +#: models/pagemodel.py:68 +msgid "An unique identifier that is used with the page_url templatetag for linking to this page" msgstr "一個唯一的識別碼,與 page_url 模板標籤一起用於做連結到此網頁" -#: models/pagemodel.py:58 +#: models/pagemodel.py:69 msgid "attached menu" msgstr "" -#: models/pagemodel.py:59 +#: models/pagemodel.py:70 msgid "is published" msgstr "已被發佈" -#: models/pagemodel.py:61 +#: models/pagemodel.py:72 msgid "The template used to render the content." msgstr "用於呈現內容的模板。" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "The site the page is accessible at." msgstr "可在這個網站取用此網頁。" -#: models/pagemodel.py:62 +#: models/pagemodel.py:73 msgid "site" msgstr "網站" -#: models/pagemodel.py:64 +#: models/pagemodel.py:75 msgid "moderator state" msgstr "管制員狀態" -#: models/pagemodel.py:72 +#: models/pagemodel.py:83 msgid "menu visibility" msgstr "" -#: models/pagemodel.py:72 -#, fuzzy +#: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "取代在選單中的顯示標題" +msgstr "" -#: models/pagemodel.py:83 +#: models/pagemodel.py:100 msgid "pages" msgstr "網頁" -#: models/pagemodel.py:190 +#: models/pagemodel.py:243 msgid "Page was copied." msgstr "網頁已被複製。" -#: models/pagemodel.py:495 +#: models/pagemodel.py:712 msgid "default" msgstr "預設" -#: models/permissionmodels.py:21 +#: models/permissionmodels.py:22 msgid "can add" msgstr "可以添加" -#: models/permissionmodels.py:22 +#: models/permissionmodels.py:23 msgid "can delete" msgstr "可以刪除" -#: models/permissionmodels.py:23 +#: models/permissionmodels.py:24 msgid "can change advanced settings" msgstr "可以更改進階設置" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "can change permissions" msgstr "可以更改權限" -#: models/permissionmodels.py:25 +#: models/permissionmodels.py:26 msgid "on page level" msgstr "於網頁層級" -#: models/permissionmodels.py:26 +#: models/permissionmodels.py:27 msgid "can move" msgstr "可搬移" -#: models/permissionmodels.py:27 +#: models/permissionmodels.py:28 msgid "can moderate" msgstr "可管制" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover pages" msgstr "可以復原網頁" -#: models/permissionmodels.py:51 +#: models/permissionmodels.py:52 msgid "can recover any deleted page" msgstr "可以復原任何已刪除的網頁" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "If none selected, user haves granted permissions to all sites." msgstr "如果沒有選任何項目,用戶則授予所有網站的權限。" -#: models/permissionmodels.py:52 +#: models/permissionmodels.py:53 msgid "sites" msgstr "網站" -#: models/permissionmodels.py:57 +#: models/permissionmodels.py:58 msgid "Page global permission" msgstr "網頁全站權限" -#: models/permissionmodels.py:58 +#: models/permissionmodels.py:59 msgid "Pages global permissions" msgstr "網頁全站權限" -#: models/permissionmodels.py:67 templates/admin/cms/page/permissions.html:14 +#: models/permissionmodels.py:68 templates/admin/cms/page/permissions.html:14 msgid "Grant on" msgstr "授權於" -#: models/permissionmodels.py:73 +#: models/permissionmodels.py:74 msgid "Page permission" msgstr "網頁權限" -#: models/permissionmodels.py:87 +#: models/permissionmodels.py:88 msgid "User (page)" msgstr "用戶(網頁)" -#: models/permissionmodels.py:88 +#: models/permissionmodels.py:89 msgid "Users (page)" msgstr "用戶(網頁)" -#: models/permissionmodels.py:100 +#: models/permissionmodels.py:101 msgid "User group (page)" msgstr "用戶組群(網頁)" -#: models/permissionmodels.py:101 +#: models/permissionmodels.py:102 msgid "User groups (page)" msgstr "用戶組群(網頁)" -#: models/placeholdermodel.py:28 plugins/flash/models.py:10 -#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:14 +#: models/placeholdermodel.py:12 plugins/flash/models.py:9 +#: plugins/flash/migrations/0001_initial.py:16 plugins/video/models.py:13 msgid "width" msgstr "寬度" -#: models/titlemodels.py:13 +#: models/pluginmodel.py:122 +msgid "" +msgstr "" + +#: models/titlemodels.py:12 msgid "overwrite the title in the menu" msgstr "取代在選單上的標題" -#: models/titlemodels.py:15 +#: models/titlemodels.py:14 msgid "Path" msgstr "路徑" -#: models/titlemodels.py:21 +#: models/titlemodels.py:20 msgid "overwrite the title (html title tag)" msgstr "取代標題(html title 標籤)" @@ -890,21 +746,21 @@ msgstr "取代標題(html title 標籤)" msgid "File" msgstr "檔案" -#: plugins/file/models.py:25 plugins/file/migrations/0001_initial.py:17 -#: plugins/flash/models.py:9 plugins/flash/migrations/0001_initial.py:18 +#: plugins/file/models.py:24 plugins/file/migrations/0001_initial.py:17 +#: plugins/flash/models.py:8 plugins/flash/migrations/0001_initial.py:18 msgid "file" msgstr "檔案" -#: plugins/flash/cms_plugins.py:11 +#: plugins/flash/cms_plugins.py:9 msgid "Flash" msgstr "Flash" -#: plugins/flash/models.py:9 +#: plugins/flash/models.py:8 msgid "use swf file" msgstr "使用 swf 檔案" -#: plugins/flash/models.py:11 plugins/flash/migrations/0001_initial.py:19 -#: plugins/video/models.py:15 +#: plugins/flash/models.py:10 plugins/flash/migrations/0001_initial.py:19 +#: plugins/video/models.py:14 msgid "height" msgstr "高度" @@ -912,7 +768,7 @@ msgstr "高度" msgid "Missing flash plugin." msgstr "欠缺 flash 插件。" -#: plugins/googlemap/cms_plugins.py:11 +#: plugins/googlemap/cms_plugins.py:10 msgid "Google Map" msgstr "谷歌地圖" @@ -968,15 +824,15 @@ msgstr "路線計畫" msgid "Map" msgstr "地圖" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:72 -msgid "Your address" -msgstr "你的地址" +#: plugins/googlemap/templates/cms/plugins/googlemap.html:11 +msgid "Your address: " +msgstr "" -#: plugins/googlemap/templates/cms/plugins/googlemap.html:75 +#: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" msgstr "計算路線" -#: plugins/inherit/cms_plugins.py:17 +#: plugins/inherit/cms_plugins.py:18 msgid "Inherit Plugins from Page" msgstr "從網頁繼承插件" @@ -985,9 +841,7 @@ msgid "Language or Page must be filled out" msgstr "語言或網頁必須被填寫" #: plugins/inherit/models.py:10 -msgid "" -"Choose a page to include its plugins into this placeholder, empty will " -"choose current page" +msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" msgstr "選擇一個網頁來將它的插件放入這個佔位空間,留空則會選用目前的網頁" #: plugins/inherit/models.py:11 @@ -998,28 +852,28 @@ msgstr "選填:你想要插件的語言" msgid "Link" msgstr "連結" -#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:18 +#: plugins/link/models.py:10 plugins/link/migrations/0001_initial.py:18 #: plugins/link/migrations/0004_larger_link_names.py:11 #: plugins/link/migrations/0004_larger_link_names.py:17 #: plugins/snippet/models.py:12 plugins/snippet/migrations/0001_initial.py:17 msgid "name" msgstr "名稱" -#: plugins/link/models.py:12 plugins/link/migrations/0001_initial.py:16 -#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:16 -#: plugins/teaser/models.py:21 +#: plugins/link/models.py:11 plugins/link/migrations/0001_initial.py:16 +#: plugins/picture/models.py:19 plugins/picture/migrations/0001_initial.py:16 +#: plugins/teaser/models.py:19 msgid "link" msgstr "連結" -#: plugins/link/models.py:13 +#: plugins/link/models.py:12 msgid "A link to a page has priority over a text link." msgstr "連到網頁的連結優先於文字連結。" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "mailto" msgstr "寄郵件到" -#: plugins/link/models.py:14 +#: plugins/link/models.py:13 msgid "An email adress has priority over a text link." msgstr "電子郵件地址優先於文字連結。" @@ -1027,40 +881,40 @@ msgstr "電子郵件地址優先於文字連結。" msgid "Picture" msgstr "圖片" -#: plugins/picture/models.py:15 +#: plugins/picture/models.py:13 msgid "left" msgstr "左" -#: plugins/picture/models.py:16 +#: plugins/picture/models.py:14 msgid "right" msgstr "右" -#: plugins/picture/models.py:20 plugins/picture/migrations/0001_initial.py:17 -#: plugins/teaser/models.py:12 plugins/video/models.py:12 +#: plugins/picture/models.py:18 plugins/picture/migrations/0001_initial.py:17 +#: plugins/teaser/models.py:10 plugins/video/models.py:11 msgid "image" msgstr "圖片" -#: plugins/picture/models.py:21 plugins/picture/models.py:22 +#: plugins/picture/models.py:19 plugins/picture/models.py:20 msgid "if present image will be clickable" msgstr "如果存在,則圖片將可點擊" -#: plugins/picture/models.py:23 plugins/picture/migrations/0001_initial.py:19 +#: plugins/picture/models.py:21 plugins/picture/migrations/0001_initial.py:19 msgid "alternate text" msgstr "替換文字" -#: plugins/picture/models.py:23 +#: plugins/picture/models.py:21 msgid "textual description of the image" msgstr "圖片的文字描述" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "long description" msgstr "詳細敘述" -#: plugins/picture/models.py:24 +#: plugins/picture/models.py:22 msgid "additional description of the image" msgstr "圖片的額外說明" -#: plugins/picture/models.py:25 +#: plugins/picture/models.py:23 msgid "side" msgstr "位置" @@ -1079,23 +933,22 @@ msgid "HTML" msgstr "HEML" #: plugins/snippet/models.py:15 -msgid "" -"Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " +msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " msgstr "輸入一個模板(即 \"snippets/plugin_xy.html\")用來呈現頁面。" #: plugins/snippet/models.py:25 msgid "Snippets" msgstr "原始碼片段" -#: plugins/teaser/cms_plugins.py:9 +#: plugins/teaser/cms_plugins.py:8 msgid "Teaser" msgstr "逗引" -#: plugins/teaser/models.py:16 +#: plugins/teaser/models.py:14 msgid "If present image will be clickable" msgstr "如果存在,則圖片將可點擊" -#: plugins/teaser/models.py:21 +#: plugins/teaser/models.py:19 msgid "If present image will be clickable." msgstr "如果存在,則圖片將可點擊" @@ -1107,7 +960,7 @@ msgstr "閱讀文章" msgid "Text" msgstr "文字" -#: plugins/text/models.py:15 plugins/text/migrations/0001_initial.py:16 +#: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" msgstr "本文" @@ -1162,9 +1015,8 @@ msgid "Twitter" msgstr "推特(Twitter)" #: plugins/twitter/cms_plugins.py:31 -#, fuzzy msgid "Twitter Search" -msgstr "推特(twitter)用戶" +msgstr "" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1187,15 +1039,11 @@ msgid "If given, the hint is displayed as link to your Twitter profile." msgstr "如果填寫,該提示會顯示為一個連結到您的 Twitter 用戶資訊。" #: plugins/twitter/models.py:16 -#, fuzzy msgid "query" -msgstr "用戶" +msgstr "" #: plugins/twitter/models.py:16 -msgid "" -"Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets " -"from the user \"umbrella\" to the user \"nemesis\" that contain the words " -"\"brains\" and \"zombies\"" +msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" msgstr "" #: plugins/video/cms_plugins.py:10 @@ -1206,88 +1054,83 @@ msgstr "影像" msgid "Color Settings" msgstr "顏色設置" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "movie file" msgstr "電影檔案" -#: plugins/video/models.py:10 +#: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" msgstr "使用 .flv 檔案或 h264 編碼的影像檔案" -#: plugins/video/models.py:11 +#: plugins/video/models.py:10 msgid "movie url" msgstr "電影網址" -#: plugins/video/models.py:11 -msgid "" -"vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-" -"kpo" -msgstr "" -"vimeo 或 YouTube 影像網址。例如:http://www.youtube.com/watch?v=YFa59lK-kpo" +#: plugins/video/models.py:10 +msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" +msgstr "vimeo 或 YouTube 影像網址。例如:http://www.youtube.com/watch?v=YFa59lK-kpo" -#: plugins/video/models.py:12 +#: plugins/video/models.py:11 msgid "preview image file" msgstr "預覽圖片檔案" -#: plugins/video/models.py:17 +#: plugins/video/models.py:16 msgid "auto play" msgstr "自動播放" -#: plugins/video/models.py:18 +#: plugins/video/models.py:17 msgid "auto hide" msgstr "自動隱藏" -#: plugins/video/models.py:19 +#: plugins/video/models.py:18 msgid "fullscreen" msgstr "全螢幕" -#: plugins/video/models.py:20 +#: plugins/video/models.py:19 msgid "loop" msgstr "循環" -#: plugins/video/models.py:23 +#: plugins/video/models.py:22 msgid "background color" msgstr "背景顏色" -#: plugins/video/models.py:23 plugins/video/models.py:24 -#: plugins/video/models.py:25 plugins/video/models.py:26 -#: plugins/video/models.py:27 plugins/video/models.py:28 -#: plugins/video/models.py:29 plugins/video/models.py:30 +#: plugins/video/models.py:22 plugins/video/models.py:23 +#: plugins/video/models.py:24 plugins/video/models.py:25 +#: plugins/video/models.py:26 plugins/video/models.py:27 +#: plugins/video/models.py:28 plugins/video/models.py:29 msgid "Hexadecimal, eg ff00cc" msgstr "十六進制,如 ff00cc" -#: plugins/video/models.py:24 +#: plugins/video/models.py:23 msgid "text color" msgstr "文字顏色" -#: plugins/video/models.py:25 +#: plugins/video/models.py:24 msgid "seekbar color" msgstr "搜尋條桿顏色" -#: plugins/video/models.py:26 +#: plugins/video/models.py:25 msgid "seekbar bg color" msgstr "搜尋條桿背景顏色" -#: plugins/video/models.py:27 +#: plugins/video/models.py:26 msgid "loadingbar color" msgstr "載入條桿顏色" -#: plugins/video/models.py:28 +#: plugins/video/models.py:27 msgid "button out color" msgstr "離開按鈕顏色" -#: plugins/video/models.py:29 +#: plugins/video/models.py:28 msgid "button over color" msgstr "進入按鈕顏色" -#: plugins/video/models.py:30 +#: plugins/video/models.py:29 msgid "button highlight color" msgstr "按鈕突出顯示顏色" #: plugins/video/templates/cms/plugins/video.html:3 -msgid "" -"Missing flash plugin. Download here" +msgid "Missing flash plugin. Download here" msgstr "欠缺 flash 插件。這裡下載" #: templates/admin/page_submit_line.html:3 @@ -1315,12 +1158,13 @@ msgid "Save and continue editing" msgstr "儲存並繼續編輯" #: templates/admin/cms/mail/approvement_required.html:5 +#: templates/admin/cms/mail/approvement_required.txt:5 #, python-format -msgid "" -"Page %(page)s may require approvement by you." +msgid "Page %(page)s may require approvement by you." msgstr "網頁%(page)s可能需要你的核准。" #: templates/admin/cms/mail/approvement_required.html:8 +#: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" msgstr "最新的更改" @@ -1329,11 +1173,18 @@ msgstr "最新的更改" msgid "Log in to administration here." msgstr "由此處登入到管理。" +#: templates/admin/cms/mail/base.txt:8 +#, python-format +msgid "Login url: %(login_url)s" +msgstr "" + #: templates/admin/cms/mail/page_user_change.html:7 +#: templates/admin/cms/mail/page_user_change.txt:5 msgid "Username:" msgstr "用戶名稱:" #: templates/admin/cms/mail/page_user_change.html:11 +#: templates/admin/cms/mail/page_user_change.txt:6 msgid "Password:" msgstr "密碼:" @@ -1399,8 +1250,7 @@ msgstr "於網站上查看" #: templates/admin/cms/page/plugin_change_form.html:84 msgid "Please correct the error below." msgid_plural "Please correct the errors below." -msgstr[0] "請更正以下的錯誤。" -msgstr[1] "請更正以下的錯誤。" +msgstr[0] "" #: templates/admin/cms/page/change_form.html:148 msgid "All permissions" @@ -1418,9 +1268,7 @@ msgstr "網頁狀態" #: templates/admin/cms/page/change_form.html:183 #, python-format -msgid "" -"This page must be moderated at level %(moderation_level)s, post a message " -"for moderator." +msgid "This page must be moderated at level %(moderation_level)s, post a message for moderator." msgstr "這個頁面必須在 %(moderation_level)s 層級被管制,請發送訊息給管制者。" #: templates/admin/cms/page/change_form.html:185 @@ -1503,8 +1351,8 @@ msgid "edit this page" msgstr "編輯本頁" #: templates/admin/cms/page/menu_item.html:6 -#: templates/cms/toolbar/toolbar.html:112 -#: templates/cms/toolbar/toolbar.html:136 +#: templates/cms/toolbar/toolbar.html:206 +#: templates/cms/toolbar/toolbar.html:232 msgid "edit" msgstr "編輯" @@ -1560,7 +1408,7 @@ msgid "add" msgstr "添加" #: templates/admin/cms/page/menu_item.html:65 -#: templates/cms/toolbar/toolbar.html:85 +#: templates/cms/toolbar/toolbar.html:166 msgid "Approve directly" msgstr "直接核准" @@ -1575,6 +1423,7 @@ msgid "Unpublish" msgstr "取消發佈" #: templates/admin/cms/page/menu_item.html:73 +#: templates/cms/toolbar/toolbar.html:171 msgid "Publish" msgstr "發佈" @@ -1703,148 +1552,225 @@ msgid "No Plugins present. Add a plugin to this placeholder-slot." msgstr "沒有任何插件存在。請添加插件到這個佔位空間插槽。" #: templates/cms/toolbar/add_plugins.html:10 -#, fuzzy msgid "Available plugins" -msgstr "可用插件" +msgstr "" -#: templates/cms/toolbar/toolbar.html:26 +#: templates/cms/toolbar/toolbar.html:33 #, python-format msgid "Move to %(name)s" msgstr "搬移到 %(name)s" -#: templates/cms/toolbar/toolbar.html:27 +#: templates/cms/toolbar/toolbar.html:34 msgid "Are you sure you want to delete this plugin?" msgstr "你確定要刪除這個插件?" -#: templates/cms/toolbar/toolbar.html:56 +#: templates/cms/toolbar/toolbar.html:136 msgid "Edit mode" msgstr "編輯模式" -#: templates/cms/toolbar/toolbar.html:63 +#: templates/cms/toolbar/toolbar.html:142 msgid "Status" msgstr "狀態" -#: templates/cms/toolbar/toolbar.html:74 +#: templates/cms/toolbar/toolbar.html:153 msgid "Username" msgstr "用戶名稱" -#: templates/cms/toolbar/toolbar.html:78 templates/cms/toolbar/toolbar.html:79 +#: templates/cms/toolbar/toolbar.html:157 +#: templates/cms/toolbar/toolbar.html:158 msgid "login" msgstr "登入" -#: templates/cms/toolbar/toolbar.html:90 +#: templates/cms/toolbar/toolbar.html:175 +msgid "Request Approval" +msgstr "" + +#: templates/cms/toolbar/toolbar.html:184 msgid "Template" msgstr "模板" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "move" msgstr "搬移" -#: templates/cms/toolbar/toolbar.html:101 +#: templates/cms/toolbar/toolbar.html:195 msgid "Move/add Pages" msgstr "搬移/添加頁面" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "add child" msgstr "添加子網頁" -#: templates/cms/toolbar/toolbar.html:103 +#: templates/cms/toolbar/toolbar.html:197 msgid "Add child page" msgstr "添加子網頁" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "add sibling" msgstr "添加同級網頁" -#: templates/cms/toolbar/toolbar.html:104 +#: templates/cms/toolbar/toolbar.html:198 msgid "Add sibling page" msgstr "添加同級網頁" -#: templates/cms/toolbar/toolbar.html:106 +#: templates/cms/toolbar/toolbar.html:200 msgid "Delete Page" msgstr "刪除網頁" -#: templates/cms/toolbar/toolbar.html:112 +#: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" msgstr "網站管理" -#: templates/cms/toolbar/toolbar.html:114 +#: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" msgstr "網頁設置" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "history" msgstr "歷史" -#: templates/cms/toolbar/toolbar.html:116 +#: templates/cms/toolbar/toolbar.html:210 msgid "View History" msgstr "查看歷史" -#: templates/cms/toolbar/toolbar.html:123 -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:218 +#: templates/cms/toolbar/toolbar.html:219 msgid "Logout" msgstr "登出" -#: templates/cms/toolbar/toolbar.html:124 +#: templates/cms/toolbar/toolbar.html:219 msgid "Lock" msgstr "鎖定" -#: templates/cms/toolbar/toolbar.html:127 +#: templates/cms/toolbar/toolbar.html:223 msgid "Close" msgstr "關閉" -#: templates/cms/toolbar/toolbar.html:138 +#: templates/cms/toolbar/toolbar.html:234 msgid "up" msgstr "上" -#: templates/cms/toolbar/toolbar.html:139 +#: templates/cms/toolbar/toolbar.html:235 msgid "down" msgstr "下" -#: templates/cms/toolbar/toolbar.html:141 +#: templates/cms/toolbar/toolbar.html:237 msgid "Settings" msgstr "設置" -#: templates/cms/toolbar/toolbar.html:143 +#: templates/cms/toolbar/toolbar.html:239 msgid "Delete Plugin" msgstr "刪除插件" -#: templatetags/cms_admin.py:65 +#: templatetags/cms_admin.py:85 msgid "Unbind page moderation" msgstr "取消網頁管制" -#: templatetags/cms_admin.py:66 +#: templatetags/cms_admin.py:86 msgid "Unbind children moderation" msgstr "取消子網頁管制" -#: templatetags/cms_admin.py:67 +#: templatetags/cms_admin.py:87 msgid "Unbind descendants moderation" msgstr "取消下層網頁管制" -#: templatetags/cms_tags.py:69 -#, fuzzy, python-format +#: templatetags/cms_tags.py:78 +#, python-format msgid "Page not found on %(domain)s" -msgstr "沒有在 %(domain)s 找到反向 ID" +msgstr "" -#: templatetags/cms_tags.py:70 -#, fuzzy, python-format +#: templatetags/cms_tags.py:79 +#, python-format msgid "" -"A template tag couldn't find the page with lookup arguments `%(page_lookup)" -"s\n" +"A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" -"一個 page_id_url 模板標籤沒有找到 reverse_id 是%(reverse_id)s 的網頁\n" -"該網頁的 url 是:http://%(host)s%(path)s" -#: utils/moderator.py:82 +#: test/run_tests.py:137 test/project/settings.py:116 +msgid "English" +msgstr "" + +#: test/run_tests.py:138 test/project/settings.py:117 +msgid "French" +msgstr "" + +#: test/run_tests.py:139 test/project/settings.py:118 +msgid "German" +msgstr "" + +#: test/run_tests.py:140 test/project/settings.py:119 +msgid "Brazil" +msgstr "" + +#: test/run_tests.py:141 test/project/settings.py:120 +msgid "Dutch" +msgstr "" + +#: test/run_tests.py:158 test/project/settings.py:137 +msgid "two columns" +msgstr "" + +#: test/run_tests.py:159 test/project/settings.py:138 +msgid "three columns" +msgstr "" + +#: test/run_tests.py:160 test/project/settings.py:139 +msgid "navigation examples" +msgstr "" + +#: test/run_tests.py:167 test/project/settings.py:148 +msgid "sidebar column" +msgstr "" + +#: test/run_tests.py:173 test/project/settings.py:154 +msgid "left column" +msgstr "" + +#: test/run_tests.py:179 test/project/settings.py:160 +msgid "right column" +msgstr "" + +#: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 +msgid "Articles" +msgstr "" + +#: test/apps/sampleapp/cms_app.py:7 +msgid "Sample App" +msgstr "" + +#: test/apps/sampleapp/menu.py:17 +msgid "sample root page" +msgstr "" + +#: test/apps/sampleapp/menu.py:18 +msgid "sample settings page" +msgstr "" + +#: test/apps/sampleapp/menu.py:19 +msgid "sample account page" +msgstr "" + +#: test/apps/sampleapp/menu.py:20 +msgid "sample my profile page" +msgstr "" + +#: test/apps/sampleapp/menu.py:32 +msgid "Static Menu" +msgstr "" + +#: test/apps/sampleapp/menu.py:48 +msgid "Static Menu2" +msgstr "" + +#: utils/moderator.py:83 msgid "parent first" msgstr "父層級優先" -#: utils/moderator.py:89 +#: utils/moderator.py:90 msgid "approve" msgstr "核准" -#: utils/moderator.py:240 +#: utils/moderator.py:251 #, python-format msgid "CMS - Page %s requires approvement." msgstr "CMS - 網頁 %s 需要核准。" @@ -1857,26 +1783,8 @@ msgstr "CMS - 您的用戶帳號已被建立。" msgid "CMS - your user account was changed." msgstr "CMS - 您的用戶帳號已被更改。" -#~ msgid "menu login required" -#~ msgstr "選單需要登入" - -#~ msgid "only show this page in the menu if the user is logged in" -#~ msgstr "如果當用戶登入後,才顯示此網頁面於選單中" - -#~ msgid "" -#~ "A show_placeholder_by_id template tag didn't found a page with the " -#~ "reverse_id %(reverse_id)s\n" -#~ "The url of the page was: http://%(host)s%(path)s" +#~ msgid "fgcolor" #~ msgstr "" -#~ "一個 show_placeholder_by_id 模板標籤沒有找到 reverse_id 是%(reverse_id)s " -#~ "的網頁\n" -#~ "該網頁的 url 是:http://%(host)s%(path)s" - -#~ msgid "Sublevel" -#~ msgstr "下層" -#~ msgid "Sublevel3" -#~ msgstr "下層 3" - -#~ msgid "Sublevel 2" -#~ msgstr "下層 2" +#~ msgid "Wanted language has not been translated yet." +#~ msgstr "" diff --git a/cms/locale/zh_TW/LC_MESSAGES/djangojs.mo b/cms/locale/zh_TW/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000000000000000000000000000000000..a7700f50bcad8d8b8630b275c103c20cf1da5e36 GIT binary patch literal 864 zcmbV~&ubGw6vtPs2z&JGVGat4PO?eG)J@Vh#-tPyjV0BKP$t>w?u5iVr@#_jcZV=gqwRvUlXZ0X72c19HG_ z;5-mp02F}>z!~5@a0J-1!!VYCqrh>c!`@v^-83rsFkp8e(A3hmIK~l6R zLZrfw<85#(waaFm@!6!mj z;kvMqr*)w0WYUGJg^fg0w380&Fp(VYOfscHs?6HyIxb2|G$`YfL{l53tyBtIX>4VX zm9f(h9J4Ga#51(R;tqbVOO4v2nZp*CSs_Z}x+GlrL0O$O1K-s z6XQB1Z5vezr>15LQzewER3?3v5YinttJBre@W!cxWfle3l!NwS08MIoQ6~eRFrJO4 zDHYZE*?Jj|4eR0_=BdOb-V_du)<$CurngVG(Is!Le$K4lR^sc_`zgX(8-|Rhk7j>@>o-g$;-`f0mJ6i5SJb1biU3(L) qJ&YdQ`TF_UA9w!x&unW%uW$U5Ow@ffc(mGETkYMwxB2NqeAai&-8uIF literal 0 HcmV?d00001 diff --git a/cms/locale/zh_TW/LC_MESSAGES/djangojs.po b/cms/locale/zh_TW/LC_MESSAGES/djangojs.po index e1c058f9157..c8acb06b671 100644 --- a/cms/locale/zh_TW/LC_MESSAGES/djangojs.po +++ b/cms/locale/zh_TW/LC_MESSAGES/djangojs.po @@ -1,38 +1,36 @@ -# Traditional Chinese translation for django-cms +# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# Cheng-Chia Tseng , 2010 -# +# FIRST AUTHOR , YEAR. +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-15 13:38+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"Project-Id-Version: django-cms\n" +"Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" +"POT-Creation-Date: 2011-02-07 07:22-0600\n" +"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"Last-Translator: ojii \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0\n" #: media/cms/js/change_form.js:31 -msgid "" -"Are you sure you want to change the %(field_name)s without saving the page " -"first?" +msgid "Are you sure you want to change the %(field_name)s without saving the page first?" msgstr "您確定您想要變更 %(field_name)s 而不先將頁面儲存嗎?" -#: media/cms/js/change_form.js:68 +#: media/cms/js/change_form.js:69 msgid "" -"Not all plugins are saved. Are you sure you want to save the page? All " -"unsaved plugin content will be lost." +"Not all plugins are saved. Are you sure you want to save the page?\n" +"All unsaved plugin content will tried to save." msgstr "" -"不是所有的插件都會被儲存。您確定您想要儲存這個頁面嗎?所有未儲存的插件內容將" -"會遺失。" -#: media/cms/js/change_form.js:115 +#: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" msgstr "您確定您想要變更分頁而不先頁面儲存嗎?" -#: media/cms/js/plugin_editor.js:111 +#: media/cms/js/plugin_editor.js:125 msgid "Are you sure you want to delete this plugin?" msgstr "您確定您想要刪除此插件?" diff --git a/cms/test/project/settings.py b/cms/test/project/settings.py new file mode 100644 index 00000000000..ddcd811e49a --- /dev/null +++ b/cms/test/project/settings.py @@ -0,0 +1,194 @@ +# Django settings for cms project. +import os +PROJECT_DIR = os.path.abspath(os.path.dirname(__file__)) + +DEBUG = True +TEMPLATE_DEBUG = DEBUG + +ADMINS = ( +) + +CACHE_BACKEND = 'locmem:///' + +MANAGERS = ADMINS + +DATABASE_ENGINE = 'sqlite3' +DATABASE_NAME = 'cms.sqlite' + +TEST_DATABASE_CHARSET = "utf8" +TEST_DATABASE_COLLATION = "utf8_general_ci" + +DATABASE_SUPPORTS_TRANSACTIONS = True + +TIME_ZONE = 'America/Chicago' + +SITE_ID = 1 + +USE_I18N = True + +MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media/') + +CMS_MEDIA_ROOT = os.path.join(PROJECT_DIR, '../../cms/media/cms/') +MEDIA_URL = '/media/' + +ADMIN_MEDIA_PREFIX = '/media/admin/' + +EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend' + +FIXTURE_DIRS = [os.path.join(PROJECT_DIR, 'fixtures')] + +SECRET_KEY = '*xq7m@)*f2awoj!spa0(jibsrz9%c0d=e(g)v*!17y(vx0ue_3' + +TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', + 'django.template.loaders.eggs.Loader', +) + +TEMPLATE_CONTEXT_PROCESSORS = ( + "django.core.context_processors.auth", + "django.core.context_processors.i18n", + "django.core.context_processors.debug", + "django.core.context_processors.request", + "django.core.context_processors.media", + 'django.core.context_processors.csrf', + "cms.context_processors.media", +) + +INTERNAL_IPS = ('127.0.0.1',) + +MIDDLEWARE_CLASSES = ( + 'django.contrib.sessions.middleware.SessionMiddleware', + 'cms.middleware.multilingual.MultilingualURLMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.doc.XViewMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'cms.middleware.media.PlaceholderMediaMiddleware', + 'cms.middleware.user.CurrentUserMiddleware', + 'cms.middleware.page.CurrentPageMiddleware', + 'cms.middleware.toolbar.ToolbarMiddleware', + +) + +ROOT_URLCONF = 'testapp.urls' + + +TEMPLATE_DIRS = ( + os.path.join(PROJECT_DIR, 'templates'), +) + +INSTALLED_APPS = ( + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.admin', + 'django.contrib.sites', + 'cms', + 'publisher', + 'menus', + 'cms.plugins.text', + 'cms.plugins.picture', + 'cms.plugins.file', + 'cms.plugins.flash', + 'cms.plugins.link', + 'cms.plugins.snippet', + 'cms.plugins.googlemap', + 'cms.plugins.teaser', + 'cms.plugins.video', + 'cms.plugins.twitter', + 'cms.plugins.inherit', + 'mptt', + 'testapp.sampleapp', + 'testapp.placeholderapp', + 'testapp.pluginapp', + 'testapp.pluginapp.plugins.manytomany_rel', + 'testapp.fakemlng', + 'south', + 'reversion', +) + +gettext = lambda s: s + +LANGUAGE_CODE = "en" + +LANGUAGES = ( + ('en', gettext('English')), + ('fr', gettext('French')), + ('de', gettext('German')), + ('pt-BR', gettext("Brazil")), + ('nl', gettext("Dutch")), +) + +CMS_LANGUAGE_CONF = { + 'de':['fr', 'en'], + 'en':['fr', 'de'], +} + +CMS_SITE_LANGUAGES = { + 1:['en','de','fr','pt-BR'], + 2:['de','fr'], + 3:['nl'], +} + +APPEND_SLASH = True + +CMS_TEMPLATES = ( + ('col_two.html', gettext('two columns')), + ('col_three.html', gettext('three columns')), + ('nav_playground.html', gettext('navigation examples')), +) + + + +CMS_PLACEHOLDER_CONF = { + 'col_sidebar': { + 'plugins': ('FilePlugin', 'FlashPlugin', 'LinkPlugin', 'PicturePlugin', + 'TextPlugin', 'SnippetPlugin'), + 'name': gettext("sidebar column") + }, + + 'col_left': { + 'plugins': ('FilePlugin', 'FlashPlugin', 'LinkPlugin', 'PicturePlugin', + 'TextPlugin', 'SnippetPlugin','GoogleMapPlugin',), + 'name': gettext("left column") + }, + + 'col_right': { + 'plugins': ('FilePlugin', 'FlashPlugin', 'LinkPlugin', 'PicturePlugin', + 'TextPlugin', 'SnippetPlugin','GoogleMapPlugin',), + 'name': gettext("right column") + }, + 'extra_context': { + "plugins": ('TextPlugin',), + "extra_context": {"width": 250}, + "name": "extra context" + }, +} + +CMS_SOFTROOT = True +CMS_MODERATOR = True +CMS_PERMISSION = True +CMS_REDIRECTS = True +CMS_SEO_FIELDS = True +CMS_FLAT_URLS = False +CMS_MENU_TITLE_OVERWRITE = True +CMS_HIDE_UNTRANSLATED = False +CMS_URL_OVERWRITE = True + +CMS_PLUGIN_PROCESSORS = tuple() + +CMS_PLUGIN_CONTEXT_PROCESSORS = tuple() + +SOUTH_TESTS_MIGRATE = False + +CMS_NAVIGATION_EXTENDERS = ( + ('testapp.sampleapp.menu_extender.get_nodes', 'SampleApp Menu'), +) + +try: + from local_settings import * +except ImportError: + pass + +TEST_RUNNER = 'testapp.testrunner.CMSTestSuiteRunner' From 7339873c699b2f57f7c67fa9803ddd8f24b01550 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Mon, 7 Feb 2011 15:17:37 +0100 Subject: [PATCH 051/689] updated german translations --- cms/locale/bn/LC_MESSAGES/django.mo | Bin 570 -> 570 bytes cms/locale/bn/LC_MESSAGES/django.po | 2 +- cms/locale/bn/LC_MESSAGES/djangojs.mo | Bin 459 -> 459 bytes cms/locale/bn/LC_MESSAGES/djangojs.po | 2 +- cms/locale/cy/LC_MESSAGES/django.mo | Bin 576 -> 576 bytes cms/locale/cy/LC_MESSAGES/django.po | 2 +- cms/locale/cy/LC_MESSAGES/djangojs.mo | Bin 465 -> 465 bytes cms/locale/cy/LC_MESSAGES/djangojs.po | 2 +- cms/locale/da/LC_MESSAGES/django.mo | Bin 570 -> 570 bytes cms/locale/da/LC_MESSAGES/django.po | 2 +- cms/locale/da/LC_MESSAGES/djangojs.mo | Bin 459 -> 459 bytes cms/locale/da/LC_MESSAGES/djangojs.po | 2 +- cms/locale/de/LC_MESSAGES/django.mo | Bin 26879 -> 28811 bytes cms/locale/de/LC_MESSAGES/django.po | 66 ++++++++++++----------- cms/locale/es_AR/LC_MESSAGES/djangojs.mo | Bin 462 -> 462 bytes cms/locale/es_AR/LC_MESSAGES/djangojs.po | 2 +- cms/locale/et/LC_MESSAGES/djangojs.mo | Bin 459 -> 459 bytes cms/locale/et/LC_MESSAGES/djangojs.po | 2 +- cms/locale/eu/LC_MESSAGES/django.mo | Bin 570 -> 570 bytes cms/locale/eu/LC_MESSAGES/django.po | 2 +- cms/locale/eu/LC_MESSAGES/djangojs.mo | Bin 459 -> 459 bytes cms/locale/eu/LC_MESSAGES/djangojs.po | 2 +- cms/locale/he/LC_MESSAGES/django.mo | Bin 570 -> 570 bytes cms/locale/he/LC_MESSAGES/django.po | 2 +- cms/locale/he/LC_MESSAGES/djangojs.mo | Bin 459 -> 459 bytes cms/locale/he/LC_MESSAGES/djangojs.po | 2 +- cms/locale/hu/LC_MESSAGES/django.mo | Bin 570 -> 570 bytes cms/locale/hu/LC_MESSAGES/django.po | 2 +- cms/locale/hu/LC_MESSAGES/djangojs.mo | Bin 459 -> 459 bytes cms/locale/hu/LC_MESSAGES/djangojs.po | 2 +- 30 files changed, 48 insertions(+), 46 deletions(-) diff --git a/cms/locale/bn/LC_MESSAGES/django.mo b/cms/locale/bn/LC_MESSAGES/django.mo index 7f069de021db0a3c2557a7a54ea2f76e387dd156..f88646af1057a8a8db398ff68ea13607f0184851 100644 GIT binary patch delta 12 TcmdnRvWsQHBSyoGkHZ-OA{_+{ delta 12 TcmdnRvWsQHBSwRbkHZ-OA{Ye> diff --git a/cms/locale/bn/LC_MESSAGES/django.po b/cms/locale/bn/LC_MESSAGES/django.po index b4d64e9991f..90445fdea0a 100644 --- a/cms/locale/bn/LC_MESSAGES/django.po +++ b/cms/locale/bn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"PO-Revision-Date: 2011-02-07 14:16+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/bn/LC_MESSAGES/djangojs.mo b/cms/locale/bn/LC_MESSAGES/djangojs.mo index 54c809bd8044444c8d87e7f6f2f74c45afbe3bdf..91a84ddc2ec8cb2093c245b8f41a0ecdb3fc1cb4 100644 GIT binary patch delta 11 TcmX@je42T}BSyoCk6!=)9)ks) delta 11 TcmX@je42T}BSwRXk6!=)9)AU# diff --git a/cms/locale/bn/LC_MESSAGES/djangojs.po b/cms/locale/bn/LC_MESSAGES/djangojs.po index cd2e1c58c5e..106407a76f2 100644 --- a/cms/locale/bn/LC_MESSAGES/djangojs.po +++ b/cms/locale/bn/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"PO-Revision-Date: 2011-02-07 14:16+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/cy/LC_MESSAGES/django.mo b/cms/locale/cy/LC_MESSAGES/django.mo index 683bf00998aa5eee8b0650a0ea6080b969f4c573..abd43bbd3254fd8df041e529ae1ff0b4daede352 100644 GIT binary patch delta 12 TcmX@Wa)4#RBSyoGk7F4DBCQ1< delta 12 TcmX@Wa)4#RBSwRbk7F4DBB%u( diff --git a/cms/locale/cy/LC_MESSAGES/django.po b/cms/locale/cy/LC_MESSAGES/django.po index 0ebef486c50..6a915b5c6ee 100644 --- a/cms/locale/cy/LC_MESSAGES/django.po +++ b/cms/locale/cy/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"PO-Revision-Date: 2011-02-07 14:16+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/cy/LC_MESSAGES/djangojs.mo b/cms/locale/cy/LC_MESSAGES/djangojs.mo index ef932841f64c35a5602d4f24d7a6e6085be533b1..56122a897942085a8411d2c67618465f55df42e7 100644 GIT binary patch delta 11 Tcmcb}e35y=BSyoCkKX|R9{~lg delta 11 Tcmcb}e35y=BSwRXkKX|R9{mNb diff --git a/cms/locale/cy/LC_MESSAGES/djangojs.po b/cms/locale/cy/LC_MESSAGES/djangojs.po index a1ff44572c0..6c1e7c6172e 100644 --- a/cms/locale/cy/LC_MESSAGES/djangojs.po +++ b/cms/locale/cy/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"PO-Revision-Date: 2011-02-07 14:16+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/da/LC_MESSAGES/django.mo b/cms/locale/da/LC_MESSAGES/django.mo index a00d31df3d30a2a50be4dfc64acba9794db9baa5..6dad15c35dc7d3f8d7a524e7eaeb3e4f51a52e9b 100644 GIT binary patch delta 12 TcmdnRvWsQHBSyoGkHZ-OA{_+{ delta 12 TcmdnRvWsQHBSwRbkHZ-OA{Ye> diff --git a/cms/locale/da/LC_MESSAGES/django.po b/cms/locale/da/LC_MESSAGES/django.po index a40e1b643d5..af707d64cec 100644 --- a/cms/locale/da/LC_MESSAGES/django.po +++ b/cms/locale/da/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"PO-Revision-Date: 2011-02-07 14:16+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/da/LC_MESSAGES/djangojs.mo b/cms/locale/da/LC_MESSAGES/djangojs.mo index 0acc39ece31d44b7c6d07a4c810b28b3d381fb9d..3e4891ce074a99535f712d63c48728b7065b1d4b 100644 GIT binary patch delta 11 TcmX@je42T}BSyoCk6!=)9)ks) delta 11 TcmX@je42T}BSwRXk6!=)9)AU# diff --git a/cms/locale/da/LC_MESSAGES/djangojs.po b/cms/locale/da/LC_MESSAGES/djangojs.po index 98679c311bd..24f0693f9ce 100644 --- a/cms/locale/da/LC_MESSAGES/djangojs.po +++ b/cms/locale/da/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"PO-Revision-Date: 2011-02-07 14:16+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/de/LC_MESSAGES/django.mo b/cms/locale/de/LC_MESSAGES/django.mo index fc857158991b3dff7da90b64ddcddd0fba92d60d..8b104b863da17a6ff5b46c6194ac98e8e04d7395 100644 GIT binary patch delta 10265 zcmZwM2Y6If-pBEq1V{*>NeCT=5=cTvYA7L)P(qbng(10_8JNt3nF$zR9Z*qLM8Oec zL6-$lkwry$6nX<13w92t|<8tY*;s>6Pmih0-o zi*NwW#+A4U8)5yOmp2Us7|XjCiI5;dTXlK!oJB-FrYWL2yg$Rb!Pj5|;Rd=6P{ z>jWm_Pndzfp;jUz+v%XaF$Xo!E3ppdp$0Mv=ioGqHX-paiP~6=8pzA2l{ksDFqvs< z3(`;nX<_o&s2TT14QR9}pM+ZCd8qalq6QGecDM{Ruq`>Pzeco+0u5k4*2P1Zj?bVT zcoTc!52%hhcV)k^2Wo(os1B}0-Cv7pZ-Xh1q59co?(Z?>`@6FKsoZ#sf)qT8dhnR3 za2(aaNz_uGHs$9~9sOeNC$Z6O$*16O?1ID4i`ugLQCs^8>c#pB`Oiv;c6UbB4_y?D z#Qs=<8qjvs>$DsB&w7VH)KD_}lZIVU100C;aVTm+<4pMs%q2e;wL)7^TXQ$6UUVl3 z&14_y)E>l%_zLQjw%{e!R&+&mFdVh#6R`m%1P z_4NJ+Na(|}0_oGb6V=fR*ac7EX#5XqrUkS<7RRFM#ZWWZiEVHnYQV3c2J`_o!V8#* zsePQS?1kxi|3{P1%;%v762gXf8|uLw*b4U}Beq^OR!pm3Y(!0aWB*s z=9>IS)C4A=R(uK$r+;e>33a?3byyB#OFV_D_#-yKi#P(W;6N1MbkzNA#$Bj-dr<>< z3SIa%Y9QxPhd801GvVeK)eL)(xB~OA8BRg%>0;Efg07g4jj;@MKZ;}ULF11DSbx1vdHlp>VKJ(KTW}UWiTWNi9pwB9wn81! zX{Z@ok9rH%qqb}t>JUDP8Te1sS@;a;(>jM5a5r9!=GZ$*LNhNy&3p!G#KowYSDeuzJPI|?$*6(NL#7{5R* z(XXf_OdRTzw?M5-4ywZ;*cuB^_1vh#c@65&Za{Uo6}4hJP5vR&z#hZadjG3QsNoM$ z4S$Df;Ahl8YV#qNsi-Ayh^p5VRj&=|{m(+JSbuXr7d6uns1C;(r=!|)V{N_vrKZ4- zTEeBMhE}7N@&6>4wL^oYC`)_TYV&t^;gHoDA3H0 zn;RdRir=Cd`UN#3Yq--uGU^lE7&VagCZB_j9QVc*a`2$c6bccz~`t5e1lrCA5rB=`OeH!Py4T38S25XDPM(Jp&QNp&8X+L8~30(cog-ieF^neyoc)WdsK(DMwqt=HL+-p zDHw)Acyg@1YUa_ zruYA$Lg!y5U*aq(WRG&Z4mHD5s0RLxSK?QgjU7fiGaZiiTemqVgUyMia5O%?(Mb7u&FUA9?l{kjH z;?^6eb{md!{!ZBu`8lxWpzd$RXgP@!Bs8-+LSk) z;Cx^@qXyms)p5SbPsa}Ay_k*bQ4@G{0_(5$_%sEb@Jm!jS4?#N%GD9;lg~rdn}E7M zADdzTlko;qehbbge>b+mUoaJ$aUe9X4#-#C>W3*9p2YgA!BrHf!423D@4;qRg{pWA z8{i2{!!y_rzd_x%COb2%i>lWRb$>9b{y5_-)c3>2uDCWzB9Fu)sD{2p&ERL$>78|z zb7-zc&D2Jfm!TRCV?A7rb@3Kdy)CGj|J9T~fI56t=Kc}XS&1Gcp&ykOQ4M@(Dtw0O z=sWC*=aJp9vN(xy8R~RDXH1^z{2Ujd-U1Ic!kwrI9zf2m^&M(}L#D+KWz;Glp$aRp z8$N;BtFx#P{(@@An(i!VV^jm}k-n{L)XJ?w4R|eT=Ic=t+JZWKf5SysjV|mwL;qxp z^7nrd>Yx;Lx|gFWY(nkj0h50g`DR!jqh`{1rgKKhQ3GCwSL1fnivEmUun8ZP-Z&VW zU>R!f*Wft%w;m*+kzc^k_#3Lh(X*Ysor5{#OR+6(!Zx_y+5!ZXCPxyGrS73 zZ~8e_JcAi}|Gy@o!&S%Q z9Ey&ZNq!(|ORh$}Hl^4WD^U$>MV+19CjXGhA3@FZIn?1hg__vcSO+by^L`uO+&v|YrYM^sa&zE3r3}G~d z#5E)|vNfogtwVhe?lAeCCjTI+{t;s}>NR@R-2VvG&R3X>KcGIvzoJ$og?+1q?Tnok zv;G=MHU%BAC+anvit1=7s=*bgl~{wSf43>W2i4JDQ+@yw$sb0YjVDkYUPQH*w8YuU zG-JCZtbcQE^r1jYIu7+(%|$g_W-3;o_HrF+0C%BQXcwx3hp{dmL~X@WCjSrA*?GtK z1*)CjupTyv`kfz{cBldLKn-9Rrs8DO(#=J66hb|?9OJJMs@`_g4DZAEfKXd=5H*08 zF$v!@eu(NX`Y#fhB+j9hzGay+!-1%!ABI}`LR7*%J52t5)S-O> z)zL}Rik?M1_YG1%YF!|qpV_p4(_t&DPrd`DVK3B7hhhVqj%u(3)o}#1LhDdlxdZk5 zVN?DBYRgWe+B<_9$TxA>|MMg?Gb`v=8#TgIV-r*Ztx+q|0o6b@YUz8UIv#@RU^=S) zBGgKGO?f413vNVxId8^VdjIbwp_%N(e)tq>DbJw>l3ecC2&a&5ff|S()nOPlkky!g zx?XmOZ>f^}URm|IIgglc?%jauKYoR{QJ2_DPNUT2CjSHOCkB$%)!!lhrE(ZzVbqSCIc7)b(c~Kwdw^x<-*6Lg?yDyhT(gQ?vfdxOtKMP!)3N9S>8MU>=GW z@`nzNF8zkz$i1#aOJXK@{XO7aqUOpY(S^9xwDAk+jl^tXBxPfX=uKo+6Fte?jKhgV z=7HOcI*fHpnxr+AbP2IVnai#2^Z;(M9r07lQ71(i<1=KO9du|L5a& z(t70*iS<3D3X1S5;x}R#50TKB9+LXtdh8fbVtE^Y5gZQQpg`8?`=GMPj+BGM*bbCVdbq$lpx-NIHsM{D63!I7H~Wh4P=! zO{^uZCBKUJ7wOLUJ?hFPo`|QMKbj}7gGp5QmHa58H|cDm{biNPO!_ST)ugkivyk|i z{6C4ii6D7hSK}STB+?%eUlX;7n(IpvHxdnqJk2Q4JotYUTu10ir|fgwN@Nj_61w&f z{~J&7Avb2=a_XNn`OSEO7)RMs;wGZzDm3X1*o0{5<&U?yJBCWp*GEb}h`z(%l8ljqGsh!XB<^JTiUCcvrAA{&dJ*T49GHuI27;|p9~QeO3G zr}D(w1r?EEZ){eVaBYv@7xu

f&v02a3Jcs8F!XHQpWYR4^`Uv>mWRzG4iOxdT;$ zv!1P!5ePE3U(<^NFYXRBi2ZF|olk7BOOn zTvKg#sMuSzx!>)H4Q2-`LN0enNyrYfK2@Cu&Q0tUq$CgwRF(xR!mf(29SSp4f2CE* z4S&$%u}fUOz-2dL(cJe^?a~N)=dUOW#AXlnHedv}V! zydZ2xBEEnptisr^p@Y&&>_zTS&DbJC{aw8w+cx>I74b#d_M)&BGFCF{jW!y) z9lq>n|DJdCsp>iVk)-;U&UXb>t3H_LPij~Y@2qBxbE}FL&Pd9i$dPC9LS~x0tah30 zFR|IO5uDq|3eLc#I)8MxYDaPZgcQbJ?)EdhH%c}()+^@(CevG@K zJQ81`-^)0a;fU?`vn_TYHpo+$8b6GIFk_9a^muy}glwM~dBB>+^7<{aaNRG>e$MjW L>r`Fv)Jga+`~<;+ delta 8400 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 diff --git a/cms/locale/de/LC_MESSAGES/django.po b/cms/locale/de/LC_MESSAGES/django.po index ae2f8db9a60..85e885df362 100644 --- a/cms/locale/de/LC_MESSAGES/django.po +++ b/cms/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 13:37+0000\n" +"PO-Revision-Date: 2011-02-07 14:16+0000\n" "Last-Translator: ojii \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" @@ -319,11 +319,11 @@ msgstr "Die Vorlage der nächsten übergeordneten Seite verwenden" #: forms/fields.py:19 msgid "Select a valid site" -msgstr "" +msgstr "Wähle eine gültige Webseite" #: forms/fields.py:20 msgid "Select a valid page" -msgstr "" +msgstr "Wähle eine gültige Seite" #: forms/widgets.py:173 msgid "Add Another" @@ -571,11 +571,11 @@ msgstr "Übergeordnete Seite freigeben" #: models/pagemodel.py:50 msgid "for logged in users only" -msgstr "" +msgstr "Nur für angemeldete Benutzer" #: models/pagemodel.py:51 msgid "for anonymous users only" -msgstr "" +msgstr "Nur für nicht angemeldete Benutzer" #: models/pagemodel.py:59 msgid "created by" @@ -627,7 +627,7 @@ msgstr "Status der Moderierung" #: models/pagemodel.py:83 msgid "menu visibility" -msgstr "" +msgstr "Menu sichtbarkeit" #: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" @@ -728,7 +728,7 @@ msgstr "Breite" #: models/pluginmodel.py:122 msgid "" -msgstr "" +msgstr "" #: models/titlemodels.py:12 msgid "overwrite the title in the menu" @@ -826,7 +826,7 @@ msgstr "Karte" #: plugins/googlemap/templates/cms/plugins/googlemap.html:11 msgid "Your address: " -msgstr "" +msgstr "Deine Addresse:" #: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" @@ -1016,7 +1016,7 @@ msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 msgid "Twitter Search" -msgstr "" +msgstr "Twitter Suche" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1040,7 +1040,7 @@ msgstr "Wenn ausgefüllt, wird der Tipp als Link zu Ihrem Twitter-Profil dargest #: plugins/twitter/models.py:16 msgid "query" -msgstr "" +msgstr "Abfrage" #: plugins/twitter/models.py:16 msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" @@ -1525,7 +1525,7 @@ msgstr "Wählen Sie Kopier-Optionen" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:7 msgid "Generic" -msgstr "" +msgstr "Generisch" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:15 #: templates/cms/toolbar/add_plugins.html:6 @@ -1554,7 +1554,7 @@ msgstr "Keine Plugins vorhanden. Fügen Sie ein Plugin in diesen Platzhalter ein #: templates/cms/toolbar/add_plugins.html:10 msgid "Available plugins" -msgstr "" +msgstr "Verfügbare Plugins" #: templates/cms/toolbar/toolbar.html:33 #, python-format @@ -1584,7 +1584,7 @@ msgstr "einloggen" #: templates/cms/toolbar/toolbar.html:175 msgid "Request Approval" -msgstr "" +msgstr "Bestätigung anfordern" #: templates/cms/toolbar/toolbar.html:184 msgid "Template" @@ -1678,7 +1678,7 @@ msgstr "Moderation von Folgeseiten lösen" #: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" -msgstr "" +msgstr "Seite nicht gefunden auf %(domain)s" #: templatetags/cms_tags.py:79 #, python-format @@ -1686,18 +1686,20 @@ msgid "" "A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" msgstr "" +"Ein Templatetag konnte die Seite `%(page_lookup)s\n" +"` nicht finden. Die Addresse war: http://%(host)s%(path)s" #: test/run_tests.py:137 test/project/settings.py:116 msgid "English" -msgstr "" +msgstr "Englisch" #: test/run_tests.py:138 test/project/settings.py:117 msgid "French" -msgstr "" +msgstr "Französisch" #: test/run_tests.py:139 test/project/settings.py:118 msgid "German" -msgstr "" +msgstr "Deutsch" #: test/run_tests.py:140 test/project/settings.py:119 msgid "Brazil" @@ -1705,63 +1707,63 @@ msgstr "" #: test/run_tests.py:141 test/project/settings.py:120 msgid "Dutch" -msgstr "" +msgstr "Holländisch" #: test/run_tests.py:158 test/project/settings.py:137 msgid "two columns" -msgstr "" +msgstr "Zwei Spalten" #: test/run_tests.py:159 test/project/settings.py:138 msgid "three columns" -msgstr "" +msgstr "Drei Spalten" #: test/run_tests.py:160 test/project/settings.py:139 msgid "navigation examples" -msgstr "" +msgstr "Navigations Beispiel" #: test/run_tests.py:167 test/project/settings.py:148 msgid "sidebar column" -msgstr "" +msgstr "Seitenspalte" #: test/run_tests.py:173 test/project/settings.py:154 msgid "left column" -msgstr "" +msgstr "Linke Spalte" #: test/run_tests.py:179 test/project/settings.py:160 msgid "right column" -msgstr "" +msgstr "Rechte Spalte" #: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 msgid "Articles" -msgstr "" +msgstr "Artikel" #: test/apps/sampleapp/cms_app.py:7 msgid "Sample App" -msgstr "" +msgstr "Beispiel Applikation" #: test/apps/sampleapp/menu.py:17 msgid "sample root page" -msgstr "" +msgstr "Beispiel Hauptseite" #: test/apps/sampleapp/menu.py:18 msgid "sample settings page" -msgstr "" +msgstr "Beispiel Einstellungen" #: test/apps/sampleapp/menu.py:19 msgid "sample account page" -msgstr "" +msgstr "Beispiel Konto" #: test/apps/sampleapp/menu.py:20 msgid "sample my profile page" -msgstr "" +msgstr "Beispiel Profil" #: test/apps/sampleapp/menu.py:32 msgid "Static Menu" -msgstr "" +msgstr "Statisches Menu" #: test/apps/sampleapp/menu.py:48 msgid "Static Menu2" -msgstr "" +msgstr "Statisches Menu 2" #: utils/moderator.py:83 msgid "parent first" diff --git a/cms/locale/es_AR/LC_MESSAGES/djangojs.mo b/cms/locale/es_AR/LC_MESSAGES/djangojs.mo index c27b69a591400444908849fd91c296fe15e85b91..606766efa14f5fad5efbd10d7f6d5ec88722b433 100644 GIT binary patch delta 11 TcmX@de2#g-BSyoCk6!}-9>N8t delta 11 TcmX@de2#g-BSwRXk6!}-9=-*o diff --git a/cms/locale/es_AR/LC_MESSAGES/djangojs.po b/cms/locale/es_AR/LC_MESSAGES/djangojs.po index a4069ace42a..2a1ed4ddfc6 100644 --- a/cms/locale/es_AR/LC_MESSAGES/djangojs.po +++ b/cms/locale/es_AR/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"PO-Revision-Date: 2011-02-07 14:16+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/et/LC_MESSAGES/djangojs.mo b/cms/locale/et/LC_MESSAGES/djangojs.mo index 4936c94f2b795babff22d3fbab548ba4942fbbac..6fc445631d1af34d3b636ad0ecbdd1aa13166d6e 100644 GIT binary patch delta 11 TcmX@je42T}BSyoCk6!=)9)ks) delta 11 TcmX@je42T}BSwRXk6!=)9)AU# diff --git a/cms/locale/et/LC_MESSAGES/djangojs.po b/cms/locale/et/LC_MESSAGES/djangojs.po index 6891543579f..28e75faf44f 100644 --- a/cms/locale/et/LC_MESSAGES/djangojs.po +++ b/cms/locale/et/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"PO-Revision-Date: 2011-02-07 14:16+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/eu/LC_MESSAGES/django.mo b/cms/locale/eu/LC_MESSAGES/django.mo index b63a1d677caa85f22572cd3ee860c0c4703ea06f..20e92ec562bb5b99364edd0668843829bc8726df 100644 GIT binary patch delta 12 TcmdnRvWsQHBSyoGkHZ-OA{_+{ delta 12 TcmdnRvWsQHBSwRbkHZ-OA{Ye> diff --git a/cms/locale/eu/LC_MESSAGES/django.po b/cms/locale/eu/LC_MESSAGES/django.po index d949399cddd..ed771c05d40 100644 --- a/cms/locale/eu/LC_MESSAGES/django.po +++ b/cms/locale/eu/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"PO-Revision-Date: 2011-02-07 14:16+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/eu/LC_MESSAGES/djangojs.mo b/cms/locale/eu/LC_MESSAGES/djangojs.mo index 28982fb128867cfff85a0e11ec21a3efb6516664..11aa89cb742235244de146adf9527f7801871a30 100644 GIT binary patch delta 11 TcmX@je42T}BSyoCk6!=)9)ks) delta 11 TcmX@je42T}BSwRXk6!=)9)AU# diff --git a/cms/locale/eu/LC_MESSAGES/djangojs.po b/cms/locale/eu/LC_MESSAGES/djangojs.po index 100e566a290..a5a3a681911 100644 --- a/cms/locale/eu/LC_MESSAGES/djangojs.po +++ b/cms/locale/eu/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"PO-Revision-Date: 2011-02-07 14:16+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/he/LC_MESSAGES/django.mo b/cms/locale/he/LC_MESSAGES/django.mo index 6115c6c810f1a9a8e35369e93cdeb2d1c7eb32f2..0df606016b334464a594fccea53045ee64a69d14 100644 GIT binary patch delta 12 TcmdnRvWsQHBSyoGkHZ-OA{_+{ delta 12 TcmdnRvWsQHBSwRbkHZ-OA{Ye> diff --git a/cms/locale/he/LC_MESSAGES/django.po b/cms/locale/he/LC_MESSAGES/django.po index 04787a93d26..b3a75a0d7d9 100644 --- a/cms/locale/he/LC_MESSAGES/django.po +++ b/cms/locale/he/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"PO-Revision-Date: 2011-02-07 14:16+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/he/LC_MESSAGES/djangojs.mo b/cms/locale/he/LC_MESSAGES/djangojs.mo index 4619ea28d804c47c50a383b1270ac3fd58fc79f6..51b5f353dc3da350ba635e5c8e76aa44453a0383 100644 GIT binary patch delta 11 TcmX@je42T}BSyoCk6!=)9)ks) delta 11 TcmX@je42T}BSwRXk6!=)9)AU# diff --git a/cms/locale/he/LC_MESSAGES/djangojs.po b/cms/locale/he/LC_MESSAGES/djangojs.po index bf7ee746629..b3d27501ef2 100644 --- a/cms/locale/he/LC_MESSAGES/djangojs.po +++ b/cms/locale/he/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"PO-Revision-Date: 2011-02-07 14:16+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/hu/LC_MESSAGES/django.mo b/cms/locale/hu/LC_MESSAGES/django.mo index 35f156bfdfb8b642f61749a0f0b58dc6b724e0a4..255e998e8f1e5016d2d056b6c6d02544a1c33254 100644 GIT binary patch delta 12 TcmdnRvWsQHBSyoGkHZ-OA{_+{ delta 12 TcmdnRvWsQHBSwRbkHZ-OA{Ye> diff --git a/cms/locale/hu/LC_MESSAGES/django.po b/cms/locale/hu/LC_MESSAGES/django.po index 326f95cd744..fdb0573fcb3 100644 --- a/cms/locale/hu/LC_MESSAGES/django.po +++ b/cms/locale/hu/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"PO-Revision-Date: 2011-02-07 14:16+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/hu/LC_MESSAGES/djangojs.mo b/cms/locale/hu/LC_MESSAGES/djangojs.mo index cb10da6d271b452dbbb5aa25f996b11924404e54..5382517f3ebea2011cea728f9814e15d0327dd87 100644 GIT binary patch delta 11 TcmX@je42T}BSyoCk6!=)9)ks) delta 11 TcmX@je42T}BSwRXk6!=)9)AU# diff --git a/cms/locale/hu/LC_MESSAGES/djangojs.po b/cms/locale/hu/LC_MESSAGES/djangojs.po index a8f2668486a..336d00e228a 100644 --- a/cms/locale/hu/LC_MESSAGES/djangojs.po +++ b/cms/locale/hu/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"PO-Revision-Date: 2011-02-07 14:16+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" From 55295f0af78c785730ce87a386dbcd8f1a3b3bca Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Mon, 7 Feb 2011 18:11:59 +0100 Subject: [PATCH 052/689] added tx config --- .tx/config | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .tx/config diff --git a/.tx/config b/.tx/config new file mode 100644 index 00000000000..4ce3eba0b09 --- /dev/null +++ b/.tx/config @@ -0,0 +1,13 @@ +[django-cms.js] +file_filter = cms/locale//LC_MESSAGES/djangojs.po +source_file = cms/locale/en/LC_MESSAGES/djangojs.po +source_lang = en + +[main] +host = http://www.transifex.net + +[django-cms.core] +file_filter = cms/locale//LC_MESSAGES/django.po +source_file = cms/locale/en/LC_MESSAGES/django.po +source_lang = en + From 39738bdebe69d8131a7cf85e1ad7ba4732b1f743 Mon Sep 17 00:00:00 2001 From: Chris Glass Date: Mon, 7 Feb 2011 18:18:55 +0100 Subject: [PATCH 053/689] Translation update --- cms/locale/bn/LC_MESSAGES/django.po | 2 +- cms/locale/bn/LC_MESSAGES/djangojs.po | 2 +- cms/locale/cy/LC_MESSAGES/django.po | 2 +- cms/locale/cy/LC_MESSAGES/djangojs.po | 2 +- cms/locale/da/LC_MESSAGES/django.po | 2 +- cms/locale/da/LC_MESSAGES/djangojs.po | 2 +- cms/locale/es_AR/LC_MESSAGES/djangojs.po | 2 +- cms/locale/et/LC_MESSAGES/djangojs.po | 2 +- cms/locale/eu/LC_MESSAGES/django.po | 2 +- cms/locale/eu/LC_MESSAGES/djangojs.po | 2 +- cms/locale/he/LC_MESSAGES/django.po | 2 +- cms/locale/he/LC_MESSAGES/djangojs.po | 2 +- cms/locale/hu/LC_MESSAGES/django.po | 2 +- cms/locale/hu/LC_MESSAGES/djangojs.po | 2 +- cms/locale/ja/LC_MESSAGES/django.po | 68 ++++++++++++------------ 15 files changed, 48 insertions(+), 48 deletions(-) diff --git a/cms/locale/bn/LC_MESSAGES/django.po b/cms/locale/bn/LC_MESSAGES/django.po index 90445fdea0a..5b3ffee8fc3 100644 --- a/cms/locale/bn/LC_MESSAGES/django.po +++ b/cms/locale/bn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 14:16+0000\n" +"PO-Revision-Date: 2011-02-07 17:18+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/bn/LC_MESSAGES/djangojs.po b/cms/locale/bn/LC_MESSAGES/djangojs.po index 106407a76f2..d3d086f0254 100644 --- a/cms/locale/bn/LC_MESSAGES/djangojs.po +++ b/cms/locale/bn/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:16+0000\n" +"PO-Revision-Date: 2011-02-07 17:17+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/cy/LC_MESSAGES/django.po b/cms/locale/cy/LC_MESSAGES/django.po index 6a915b5c6ee..a9617f1d81b 100644 --- a/cms/locale/cy/LC_MESSAGES/django.po +++ b/cms/locale/cy/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 14:16+0000\n" +"PO-Revision-Date: 2011-02-07 17:18+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/cy/LC_MESSAGES/djangojs.po b/cms/locale/cy/LC_MESSAGES/djangojs.po index 6c1e7c6172e..cf08d84bc28 100644 --- a/cms/locale/cy/LC_MESSAGES/djangojs.po +++ b/cms/locale/cy/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:16+0000\n" +"PO-Revision-Date: 2011-02-07 17:18+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/da/LC_MESSAGES/django.po b/cms/locale/da/LC_MESSAGES/django.po index af707d64cec..09cf17dbee0 100644 --- a/cms/locale/da/LC_MESSAGES/django.po +++ b/cms/locale/da/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 14:16+0000\n" +"PO-Revision-Date: 2011-02-07 17:18+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/da/LC_MESSAGES/djangojs.po b/cms/locale/da/LC_MESSAGES/djangojs.po index 24f0693f9ce..a3607adfa3a 100644 --- a/cms/locale/da/LC_MESSAGES/djangojs.po +++ b/cms/locale/da/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:16+0000\n" +"PO-Revision-Date: 2011-02-07 17:17+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/es_AR/LC_MESSAGES/djangojs.po b/cms/locale/es_AR/LC_MESSAGES/djangojs.po index 2a1ed4ddfc6..83aa641e6bf 100644 --- a/cms/locale/es_AR/LC_MESSAGES/djangojs.po +++ b/cms/locale/es_AR/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:16+0000\n" +"PO-Revision-Date: 2011-02-07 17:18+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/et/LC_MESSAGES/djangojs.po b/cms/locale/et/LC_MESSAGES/djangojs.po index 28e75faf44f..52b2fd78ecd 100644 --- a/cms/locale/et/LC_MESSAGES/djangojs.po +++ b/cms/locale/et/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:16+0000\n" +"PO-Revision-Date: 2011-02-07 17:18+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/eu/LC_MESSAGES/django.po b/cms/locale/eu/LC_MESSAGES/django.po index ed771c05d40..1faab791cb0 100644 --- a/cms/locale/eu/LC_MESSAGES/django.po +++ b/cms/locale/eu/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 14:16+0000\n" +"PO-Revision-Date: 2011-02-07 17:18+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/eu/LC_MESSAGES/djangojs.po b/cms/locale/eu/LC_MESSAGES/djangojs.po index a5a3a681911..51f5c0c6387 100644 --- a/cms/locale/eu/LC_MESSAGES/djangojs.po +++ b/cms/locale/eu/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:16+0000\n" +"PO-Revision-Date: 2011-02-07 17:18+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/he/LC_MESSAGES/django.po b/cms/locale/he/LC_MESSAGES/django.po index b3a75a0d7d9..36f41af584f 100644 --- a/cms/locale/he/LC_MESSAGES/django.po +++ b/cms/locale/he/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 14:16+0000\n" +"PO-Revision-Date: 2011-02-07 17:18+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/he/LC_MESSAGES/djangojs.po b/cms/locale/he/LC_MESSAGES/djangojs.po index b3d27501ef2..5e409ea4af3 100644 --- a/cms/locale/he/LC_MESSAGES/djangojs.po +++ b/cms/locale/he/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:16+0000\n" +"PO-Revision-Date: 2011-02-07 17:18+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/hu/LC_MESSAGES/django.po b/cms/locale/hu/LC_MESSAGES/django.po index fdb0573fcb3..80787920bb2 100644 --- a/cms/locale/hu/LC_MESSAGES/django.po +++ b/cms/locale/hu/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 14:16+0000\n" +"PO-Revision-Date: 2011-02-07 17:18+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/hu/LC_MESSAGES/djangojs.po b/cms/locale/hu/LC_MESSAGES/djangojs.po index 336d00e228a..0499e7336c9 100644 --- a/cms/locale/hu/LC_MESSAGES/djangojs.po +++ b/cms/locale/hu/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 14:16+0000\n" +"PO-Revision-Date: 2011-02-07 17:18+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/ja/LC_MESSAGES/django.po b/cms/locale/ja/LC_MESSAGES/django.po index 6107ea3aa5b..343469bcb49 100644 --- a/cms/locale/ja/LC_MESSAGES/django.po +++ b/cms/locale/ja/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 14:06+0000\n" +"PO-Revision-Date: 2011-02-07 17:16+0000\n" "Last-Translator: ojii \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" @@ -732,7 +732,7 @@ msgstr "" #: models/titlemodels.py:12 msgid "overwrite the title in the menu" -msgstr "" +msgstr "メニューのタイトルを書き替える" #: models/titlemodels.py:14 msgid "Path" @@ -871,7 +871,7 @@ msgstr "" #: plugins/link/models.py:13 msgid "mailto" -msgstr "" +msgstr "メール" #: plugins/link/models.py:13 msgid "An email adress has priority over a text link." @@ -930,7 +930,7 @@ msgstr "" #: plugins/snippet/models.py:13 plugins/snippet/migrations/0001_initial.py:18 msgid "HTML" -msgstr "" +msgstr "HTML" #: plugins/snippet/models.py:15 msgid "Enter a template (i.e. \"snippets/plugin_xy.html\") which will be rendered. " @@ -958,7 +958,7 @@ msgstr "もと" #: plugins/text/cms_plugins.py:15 msgid "Text" -msgstr "" +msgstr "テキスト" #: plugins/text/models.py:14 plugins/text/migrations/0001_initial.py:16 msgid "body" @@ -1012,19 +1012,19 @@ msgstr "" #: plugins/twitter/cms_plugins.py:10 msgid "Twitter" -msgstr "" +msgstr "TWITTER" #: plugins/twitter/cms_plugins.py:31 msgid "Twitter Search" -msgstr "" +msgstr "TWITTER検索" #: plugins/twitter/models.py:7 msgid "twitter user" -msgstr "" +msgstr "TWITTERのユーザー" #: plugins/twitter/models.py:8 plugins/twitter/models.py:17 msgid "count" -msgstr "" +msgstr "数" #: plugins/twitter/models.py:8 plugins/twitter/models.py:17 msgid "Number of entries to display" @@ -1032,7 +1032,7 @@ msgstr "" #: plugins/twitter/models.py:9 msgid "link hint" -msgstr "" +msgstr "リンクのヒント" #: plugins/twitter/models.py:9 msgid "If given, the hint is displayed as link to your Twitter profile." @@ -1052,27 +1052,27 @@ msgstr "ビデオ" #: plugins/video/cms_plugins.py:42 msgid "Color Settings" -msgstr "" +msgstr "色設定" #: plugins/video/models.py:9 msgid "movie file" -msgstr "" +msgstr "ムービーファイル" #: plugins/video/models.py:9 msgid "use .flv file or h264 encoded video file" -msgstr "" +msgstr "FLVやH264のビデオファイルを使って下さい。" #: plugins/video/models.py:10 msgid "movie url" -msgstr "" +msgstr "ムービーのURL" #: plugins/video/models.py:10 msgid "vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo" -msgstr "" +msgstr "VIMEOやYOUTUBEのURLを使って下さい。例えば:http://www.youtube.com/watch?v=YFa59lK-kpo" #: plugins/video/models.py:11 msgid "preview image file" -msgstr "" +msgstr "プレビューの絵" #: plugins/video/models.py:16 msgid "auto play" @@ -1142,7 +1142,7 @@ msgstr "セーブして" #: templates/admin/page_submit_line.html:7 #, python-format msgid "Delete %(language)s translation" -msgstr "" +msgstr "%(language)sをデリートする" #: templates/admin/page_submit_line.html:11 msgid "Save as new" @@ -1166,12 +1166,12 @@ msgstr "" #: templates/admin/cms/mail/approvement_required.html:8 #: templates/admin/cms/mail/approvement_required.txt:7 msgid "Last changes" -msgstr "" +msgstr "さいごの変更" #: templates/admin/cms/mail/base.html:55 #, python-format msgid "Log in to administration here." -msgstr "" +msgstr "管理ページ.にログインして下さい" #: templates/admin/cms/mail/base.txt:8 #, python-format @@ -1235,7 +1235,7 @@ msgstr "" #: templates/admin/cms/page/change_form.html:94 msgid "Preview" -msgstr "" +msgstr "プレビュー" #: templates/admin/cms/page/change_form.html:97 #: templates/admin/cms/page/revision_form.html:10 @@ -1260,7 +1260,7 @@ msgstr "" #: templates/admin/cms/page/change_form.html:161 #: templates/admin/cms/page/loading.html:2 msgid "Loading..." -msgstr "" +msgstr "ちょっと待って下さい" #: templates/admin/cms/page/change_form.html:160 msgid "Page states" @@ -1370,7 +1370,7 @@ msgstr "" #: templates/admin/cms/page/menu_item.html:23 msgid "softroot" -msgstr "" +msgstr "ソフトロート" #: templates/admin/cms/page/menu_item.html:23 msgid "home" @@ -1383,11 +1383,11 @@ msgstr "" #: templates/admin/cms/page/menu_item.html:33 msgid "Cut" -msgstr "" +msgstr "カット" #: templates/admin/cms/page/menu_item.html:33 msgid "cut" -msgstr "" +msgstr "カット" #: templates/admin/cms/page/menu_item.html:34 msgid "Copy" @@ -1416,7 +1416,7 @@ msgstr "" #: templates/admin/cms/page/menu_item.html:79 #: templates/admin/cms/page/menu_item.html:81 msgid "view" -msgstr "" +msgstr "見る" #: templates/admin/cms/page/menu_item.html:72 msgid "Unpublish" @@ -1441,11 +1441,11 @@ msgstr "" #: templates/admin/cms/page/moderation_messages.html:7 msgid "Message" -msgstr "" +msgstr "メッセージ" #: templates/admin/cms/page/permissions.html:7 msgid "Group" -msgstr "" +msgstr "グループ" #: templates/admin/cms/page/permissions.html:8 msgid "Can edit" @@ -1619,11 +1619,11 @@ msgstr "ページを削除して" #: templates/cms/toolbar/toolbar.html:206 msgid "Site Administration" -msgstr "" +msgstr "サイト管理" #: templates/cms/toolbar/toolbar.html:208 msgid "Page Settings" -msgstr "" +msgstr "ページ設定" #: templates/cms/toolbar/toolbar.html:210 msgid "history" @@ -1636,15 +1636,15 @@ msgstr "" #: templates/cms/toolbar/toolbar.html:218 #: templates/cms/toolbar/toolbar.html:219 msgid "Logout" -msgstr "" +msgstr "ログアウト" #: templates/cms/toolbar/toolbar.html:219 msgid "Lock" -msgstr "" +msgstr "ロック" #: templates/cms/toolbar/toolbar.html:223 msgid "Close" -msgstr "" +msgstr "閉める" #: templates/cms/toolbar/toolbar.html:234 msgid "up" @@ -1724,11 +1724,11 @@ msgstr "" #: test/run_tests.py:173 test/project/settings.py:154 msgid "left column" -msgstr "" +msgstr "左欄" #: test/run_tests.py:179 test/project/settings.py:160 msgid "right column" -msgstr "" +msgstr "右欄" #: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 msgid "Articles" From 5a1d7a2797ef62c6ca217765bc5fe197d6f5f4a2 Mon Sep 17 00:00:00 2001 From: Chris Glass Date: Mon, 7 Feb 2011 18:24:29 +0100 Subject: [PATCH 054/689] Translation updates --- cms/locale/bn/LC_MESSAGES/django.po | 2 +- cms/locale/bn/LC_MESSAGES/djangojs.po | 2 +- cms/locale/cy/LC_MESSAGES/django.po | 2 +- cms/locale/cy/LC_MESSAGES/djangojs.po | 2 +- cms/locale/da/LC_MESSAGES/django.po | 2 +- cms/locale/da/LC_MESSAGES/djangojs.po | 2 +- cms/locale/es_AR/LC_MESSAGES/djangojs.po | 2 +- cms/locale/et/LC_MESSAGES/djangojs.po | 2 +- cms/locale/eu/LC_MESSAGES/django.po | 2 +- cms/locale/eu/LC_MESSAGES/djangojs.po | 2 +- cms/locale/he/LC_MESSAGES/django.po | 2 +- cms/locale/he/LC_MESSAGES/djangojs.po | 2 +- cms/locale/hu/LC_MESSAGES/django.po | 2 +- cms/locale/hu/LC_MESSAGES/djangojs.po | 2 +- cms/locale/ja/LC_MESSAGES/django.po | 10 +++++----- 15 files changed, 19 insertions(+), 19 deletions(-) diff --git a/cms/locale/bn/LC_MESSAGES/django.po b/cms/locale/bn/LC_MESSAGES/django.po index 5b3ffee8fc3..e7978639a67 100644 --- a/cms/locale/bn/LC_MESSAGES/django.po +++ b/cms/locale/bn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 17:18+0000\n" +"PO-Revision-Date: 2011-02-07 17:23+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/bn/LC_MESSAGES/djangojs.po b/cms/locale/bn/LC_MESSAGES/djangojs.po index d3d086f0254..245495ea59d 100644 --- a/cms/locale/bn/LC_MESSAGES/djangojs.po +++ b/cms/locale/bn/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:17+0000\n" +"PO-Revision-Date: 2011-02-07 17:23+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/cy/LC_MESSAGES/django.po b/cms/locale/cy/LC_MESSAGES/django.po index a9617f1d81b..ba12be0009c 100644 --- a/cms/locale/cy/LC_MESSAGES/django.po +++ b/cms/locale/cy/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 17:18+0000\n" +"PO-Revision-Date: 2011-02-07 17:23+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/cy/LC_MESSAGES/djangojs.po b/cms/locale/cy/LC_MESSAGES/djangojs.po index cf08d84bc28..aa64285c58f 100644 --- a/cms/locale/cy/LC_MESSAGES/djangojs.po +++ b/cms/locale/cy/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:18+0000\n" +"PO-Revision-Date: 2011-02-07 17:23+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/da/LC_MESSAGES/django.po b/cms/locale/da/LC_MESSAGES/django.po index 09cf17dbee0..e9594d49e35 100644 --- a/cms/locale/da/LC_MESSAGES/django.po +++ b/cms/locale/da/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 17:18+0000\n" +"PO-Revision-Date: 2011-02-07 17:23+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/da/LC_MESSAGES/djangojs.po b/cms/locale/da/LC_MESSAGES/djangojs.po index a3607adfa3a..b28aeb7b384 100644 --- a/cms/locale/da/LC_MESSAGES/djangojs.po +++ b/cms/locale/da/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:17+0000\n" +"PO-Revision-Date: 2011-02-07 17:23+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/es_AR/LC_MESSAGES/djangojs.po b/cms/locale/es_AR/LC_MESSAGES/djangojs.po index 83aa641e6bf..1708d3da840 100644 --- a/cms/locale/es_AR/LC_MESSAGES/djangojs.po +++ b/cms/locale/es_AR/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:18+0000\n" +"PO-Revision-Date: 2011-02-07 17:23+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/et/LC_MESSAGES/djangojs.po b/cms/locale/et/LC_MESSAGES/djangojs.po index 52b2fd78ecd..14ef4f181e8 100644 --- a/cms/locale/et/LC_MESSAGES/djangojs.po +++ b/cms/locale/et/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:18+0000\n" +"PO-Revision-Date: 2011-02-07 17:23+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/eu/LC_MESSAGES/django.po b/cms/locale/eu/LC_MESSAGES/django.po index 1faab791cb0..357b0fd08fb 100644 --- a/cms/locale/eu/LC_MESSAGES/django.po +++ b/cms/locale/eu/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 17:18+0000\n" +"PO-Revision-Date: 2011-02-07 17:23+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/eu/LC_MESSAGES/djangojs.po b/cms/locale/eu/LC_MESSAGES/djangojs.po index 51f5c0c6387..a043ecdd59c 100644 --- a/cms/locale/eu/LC_MESSAGES/djangojs.po +++ b/cms/locale/eu/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:18+0000\n" +"PO-Revision-Date: 2011-02-07 17:23+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/he/LC_MESSAGES/django.po b/cms/locale/he/LC_MESSAGES/django.po index 36f41af584f..ac293d7dc85 100644 --- a/cms/locale/he/LC_MESSAGES/django.po +++ b/cms/locale/he/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 17:18+0000\n" +"PO-Revision-Date: 2011-02-07 17:23+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/he/LC_MESSAGES/djangojs.po b/cms/locale/he/LC_MESSAGES/djangojs.po index 5e409ea4af3..59967a2815b 100644 --- a/cms/locale/he/LC_MESSAGES/djangojs.po +++ b/cms/locale/he/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:18+0000\n" +"PO-Revision-Date: 2011-02-07 17:23+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/hu/LC_MESSAGES/django.po b/cms/locale/hu/LC_MESSAGES/django.po index 80787920bb2..6977af88e1f 100644 --- a/cms/locale/hu/LC_MESSAGES/django.po +++ b/cms/locale/hu/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 17:18+0000\n" +"PO-Revision-Date: 2011-02-07 17:23+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/hu/LC_MESSAGES/djangojs.po b/cms/locale/hu/LC_MESSAGES/djangojs.po index 0499e7336c9..1981bf9a5d5 100644 --- a/cms/locale/hu/LC_MESSAGES/djangojs.po +++ b/cms/locale/hu/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:18+0000\n" +"PO-Revision-Date: 2011-02-07 17:23+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/ja/LC_MESSAGES/django.po b/cms/locale/ja/LC_MESSAGES/django.po index 343469bcb49..cdca1a31c80 100644 --- a/cms/locale/ja/LC_MESSAGES/django.po +++ b/cms/locale/ja/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 17:16+0000\n" +"PO-Revision-Date: 2011-02-07 17:23+0000\n" "Last-Translator: ojii \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" @@ -1708,11 +1708,11 @@ msgstr "オランダ語" #: test/run_tests.py:158 test/project/settings.py:137 msgid "two columns" -msgstr "" +msgstr "二つ列" #: test/run_tests.py:159 test/project/settings.py:138 msgid "three columns" -msgstr "" +msgstr "三つ列" #: test/run_tests.py:160 test/project/settings.py:139 msgid "navigation examples" @@ -1724,11 +1724,11 @@ msgstr "" #: test/run_tests.py:173 test/project/settings.py:154 msgid "left column" -msgstr "左欄" +msgstr "左列" #: test/run_tests.py:179 test/project/settings.py:160 msgid "right column" -msgstr "右欄" +msgstr "右列" #: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 msgid "Articles" From 8ec35b16b2349cb6518e4be1e2b087bff6b67a2c Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Mon, 7 Feb 2011 18:35:28 +0100 Subject: [PATCH 055/689] translation updates (fr), thanks chris --- cms/locale/bn/LC_MESSAGES/django.po | 2 +- cms/locale/bn/LC_MESSAGES/djangojs.po | 2 +- cms/locale/cy/LC_MESSAGES/django.po | 2 +- cms/locale/cy/LC_MESSAGES/djangojs.po | 2 +- cms/locale/da/LC_MESSAGES/django.po | 2 +- cms/locale/da/LC_MESSAGES/djangojs.po | 2 +- cms/locale/es_AR/LC_MESSAGES/djangojs.po | 2 +- cms/locale/et/LC_MESSAGES/djangojs.po | 2 +- cms/locale/eu/LC_MESSAGES/django.po | 2 +- cms/locale/eu/LC_MESSAGES/djangojs.po | 2 +- cms/locale/fr/LC_MESSAGES/django.po | 80 ++++++++++++------------ cms/locale/fr/LC_MESSAGES/djangojs.po | 6 +- cms/locale/he/LC_MESSAGES/django.po | 2 +- cms/locale/he/LC_MESSAGES/djangojs.po | 2 +- cms/locale/hu/LC_MESSAGES/django.po | 2 +- cms/locale/hu/LC_MESSAGES/djangojs.po | 2 +- 16 files changed, 58 insertions(+), 56 deletions(-) diff --git a/cms/locale/bn/LC_MESSAGES/django.po b/cms/locale/bn/LC_MESSAGES/django.po index e7978639a67..342330308cc 100644 --- a/cms/locale/bn/LC_MESSAGES/django.po +++ b/cms/locale/bn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 17:23+0000\n" +"PO-Revision-Date: 2011-02-07 17:35+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/bn/LC_MESSAGES/djangojs.po b/cms/locale/bn/LC_MESSAGES/djangojs.po index 245495ea59d..3f6972719dd 100644 --- a/cms/locale/bn/LC_MESSAGES/djangojs.po +++ b/cms/locale/bn/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:23+0000\n" +"PO-Revision-Date: 2011-02-07 17:34+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/cy/LC_MESSAGES/django.po b/cms/locale/cy/LC_MESSAGES/django.po index ba12be0009c..bd67a5c34de 100644 --- a/cms/locale/cy/LC_MESSAGES/django.po +++ b/cms/locale/cy/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 17:23+0000\n" +"PO-Revision-Date: 2011-02-07 17:34+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/cy/LC_MESSAGES/djangojs.po b/cms/locale/cy/LC_MESSAGES/djangojs.po index aa64285c58f..0b331b8fd68 100644 --- a/cms/locale/cy/LC_MESSAGES/djangojs.po +++ b/cms/locale/cy/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:23+0000\n" +"PO-Revision-Date: 2011-02-07 17:34+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/da/LC_MESSAGES/django.po b/cms/locale/da/LC_MESSAGES/django.po index e9594d49e35..40bb15e4046 100644 --- a/cms/locale/da/LC_MESSAGES/django.po +++ b/cms/locale/da/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 17:23+0000\n" +"PO-Revision-Date: 2011-02-07 17:34+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/da/LC_MESSAGES/djangojs.po b/cms/locale/da/LC_MESSAGES/djangojs.po index b28aeb7b384..d98bfa30e48 100644 --- a/cms/locale/da/LC_MESSAGES/djangojs.po +++ b/cms/locale/da/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:23+0000\n" +"PO-Revision-Date: 2011-02-07 17:34+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/es_AR/LC_MESSAGES/djangojs.po b/cms/locale/es_AR/LC_MESSAGES/djangojs.po index 1708d3da840..47ab9cc117d 100644 --- a/cms/locale/es_AR/LC_MESSAGES/djangojs.po +++ b/cms/locale/es_AR/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:23+0000\n" +"PO-Revision-Date: 2011-02-07 17:34+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/et/LC_MESSAGES/djangojs.po b/cms/locale/et/LC_MESSAGES/djangojs.po index 14ef4f181e8..2acdbaceab1 100644 --- a/cms/locale/et/LC_MESSAGES/djangojs.po +++ b/cms/locale/et/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:23+0000\n" +"PO-Revision-Date: 2011-02-07 17:34+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/eu/LC_MESSAGES/django.po b/cms/locale/eu/LC_MESSAGES/django.po index 357b0fd08fb..b2af1ad76d0 100644 --- a/cms/locale/eu/LC_MESSAGES/django.po +++ b/cms/locale/eu/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 17:23+0000\n" +"PO-Revision-Date: 2011-02-07 17:35+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/eu/LC_MESSAGES/djangojs.po b/cms/locale/eu/LC_MESSAGES/djangojs.po index a043ecdd59c..db0d9830e45 100644 --- a/cms/locale/eu/LC_MESSAGES/djangojs.po +++ b/cms/locale/eu/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:23+0000\n" +"PO-Revision-Date: 2011-02-07 17:34+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/fr/LC_MESSAGES/django.po b/cms/locale/fr/LC_MESSAGES/django.po index 18ce16d3e0d..467912f9fcd 100644 --- a/cms/locale/fr/LC_MESSAGES/django.po +++ b/cms/locale/fr/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 13:37+0000\n" -"Last-Translator: ojii \n" +"PO-Revision-Date: 2011-02-07 17:34+0000\n" +"Last-Translator: chrisglass \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -319,11 +319,11 @@ msgstr "Hériter du modèle du parent le plus proche" #: forms/fields.py:19 msgid "Select a valid site" -msgstr "" +msgstr "Choisissez un site valide" #: forms/fields.py:20 msgid "Select a valid page" -msgstr "" +msgstr "Choisissez une page valide" #: forms/widgets.py:173 msgid "Add Another" @@ -571,11 +571,11 @@ msgstr "Approbation des parents" #: models/pagemodel.py:50 msgid "for logged in users only" -msgstr "" +msgstr "uniquement acccessible aux utilisateurs enrregistrés" #: models/pagemodel.py:51 msgid "for anonymous users only" -msgstr "" +msgstr "uniquement accessible aux utilisateurs anonymes" #: models/pagemodel.py:59 msgid "created by" @@ -603,7 +603,7 @@ msgstr "Identifiant unique utilisé par le modèle page_url pour créer un lien #: models/pagemodel.py:69 msgid "attached menu" -msgstr "" +msgstr "menu attaché" #: models/pagemodel.py:70 msgid "is published" @@ -627,11 +627,11 @@ msgstr "état du modérateur" #: models/pagemodel.py:83 msgid "menu visibility" -msgstr "" +msgstr "Visibilité du menu" #: models/pagemodel.py:83 msgid "limit when this page is visible in the menu" -msgstr "" +msgstr "limite quand cette page est visible dans le menu" #: models/pagemodel.py:100 msgid "pages" @@ -728,7 +728,7 @@ msgstr "largeur" #: models/pluginmodel.py:122 msgid "" -msgstr "" +msgstr "" #: models/titlemodels.py:12 msgid "overwrite the title in the menu" @@ -826,7 +826,7 @@ msgstr "Carte" #: plugins/googlemap/templates/cms/plugins/googlemap.html:11 msgid "Your address: " -msgstr "" +msgstr "Votre adresse:" #: plugins/googlemap/templates/cms/plugins/googlemap.html:13 msgid "Calculate route" @@ -842,7 +842,7 @@ msgstr "La langue ou page doivent être renseignés" #: plugins/inherit/models.py:10 msgid "Choose a page to include its plugins into this placeholder, empty will choose current page" -msgstr "" +msgstr "Choisissez une page pour inclure ses plugins dans ce placeholder. Ne rien choisir inclus les plugins de la page courante." #: plugins/inherit/models.py:11 msgid "Optional: the language of the plugins you want" @@ -1016,7 +1016,7 @@ msgstr "Twitter" #: plugins/twitter/cms_plugins.py:31 msgid "Twitter Search" -msgstr "" +msgstr "recherche Twitter" #: plugins/twitter/models.py:7 msgid "twitter user" @@ -1040,11 +1040,11 @@ msgstr "Si précisé, le lien pointera vers votre profil Twitter." #: plugins/twitter/models.py:16 msgid "query" -msgstr "" +msgstr "recherche" #: plugins/twitter/models.py:16 msgid "Example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" -msgstr "" +msgstr "Par example: \"brains AND zombies AND from:umbrella AND to:nemesis\": tweets from the user \"umbrella\" to the user \"nemesis\" that contain the words \"brains\" and \"zombies\"" #: plugins/video/cms_plugins.py:10 msgid "Video" @@ -1176,7 +1176,7 @@ msgstr "Identifiez-vous." #: templates/admin/cms/mail/base.txt:8 #, python-format msgid "Login url: %(login_url)s" -msgstr "" +msgstr "URL de login: %(login_url)s" #: templates/admin/cms/mail/page_user_change.html:7 #: templates/admin/cms/mail/page_user_change.txt:5 @@ -1525,7 +1525,7 @@ msgstr "Choisissez les options de copie" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:7 msgid "Generic" -msgstr "" +msgstr "Générique" #: templates/admin/cms/page/widgets/installed_plugins_inc.html:15 #: templates/cms/toolbar/add_plugins.html:6 @@ -1554,7 +1554,7 @@ msgstr "Aucun bloc disponible. Veuillez définir des blocs pour cette zone." #: templates/cms/toolbar/add_plugins.html:10 msgid "Available plugins" -msgstr "" +msgstr "plugins disponibles" #: templates/cms/toolbar/toolbar.html:33 #, python-format @@ -1584,7 +1584,7 @@ msgstr "se connecter" #: templates/cms/toolbar/toolbar.html:175 msgid "Request Approval" -msgstr "" +msgstr "Demande d'approbation" #: templates/cms/toolbar/toolbar.html:184 msgid "Template" @@ -1678,90 +1678,90 @@ msgstr "Annuler la modération des descendants" #: templatetags/cms_tags.py:78 #, python-format msgid "Page not found on %(domain)s" -msgstr "" +msgstr "Page introuvable sur %(domain)s" #: templatetags/cms_tags.py:79 #, python-format msgid "" "A template tag couldn't find the page with lookup arguments `%(page_lookup)s\n" "`. The URL of the request was: http://%(host)s%(path)s" -msgstr "" +msgstr "Un \"template tag\" n'a pas pu trouver la page avec les arguments « %(page_lookup)s ». L'URL de la demande était la suivante: http://%(host)s%(path)s" #: test/run_tests.py:137 test/project/settings.py:116 msgid "English" -msgstr "" +msgstr "Anglais" #: test/run_tests.py:138 test/project/settings.py:117 msgid "French" -msgstr "" +msgstr "Français" #: test/run_tests.py:139 test/project/settings.py:118 msgid "German" -msgstr "" +msgstr "Allemand" #: test/run_tests.py:140 test/project/settings.py:119 msgid "Brazil" -msgstr "" +msgstr "Brésil" #: test/run_tests.py:141 test/project/settings.py:120 msgid "Dutch" -msgstr "" +msgstr "Néerlandais" #: test/run_tests.py:158 test/project/settings.py:137 msgid "two columns" -msgstr "" +msgstr "deux colonnes" #: test/run_tests.py:159 test/project/settings.py:138 msgid "three columns" -msgstr "" +msgstr "trois colonnes" #: test/run_tests.py:160 test/project/settings.py:139 msgid "navigation examples" -msgstr "" +msgstr "Exemples de navigation" #: test/run_tests.py:167 test/project/settings.py:148 msgid "sidebar column" -msgstr "" +msgstr "barre latérale" #: test/run_tests.py:173 test/project/settings.py:154 msgid "left column" -msgstr "" +msgstr "colonne de gauche" #: test/run_tests.py:179 test/project/settings.py:160 msgid "right column" -msgstr "" +msgstr "colonne de droite" #: test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py:13 msgid "Articles" -msgstr "" +msgstr "Articles" #: test/apps/sampleapp/cms_app.py:7 msgid "Sample App" -msgstr "" +msgstr "Application exemple" #: test/apps/sampleapp/menu.py:17 msgid "sample root page" -msgstr "" +msgstr "page racine d'exemple" #: test/apps/sampleapp/menu.py:18 msgid "sample settings page" -msgstr "" +msgstr "page de paramètres d'exemple" #: test/apps/sampleapp/menu.py:19 msgid "sample account page" -msgstr "" +msgstr "page de compte d'exemple" #: test/apps/sampleapp/menu.py:20 msgid "sample my profile page" -msgstr "" +msgstr "échantilloner de ma page de profil" #: test/apps/sampleapp/menu.py:32 msgid "Static Menu" -msgstr "" +msgstr "Menu statique" #: test/apps/sampleapp/menu.py:48 msgid "Static Menu2" -msgstr "" +msgstr "Menu statique 2" #: utils/moderator.py:83 msgid "parent first" diff --git a/cms/locale/fr/LC_MESSAGES/djangojs.po b/cms/locale/fr/LC_MESSAGES/djangojs.po index 9db62a2e8c5..f44cedcd52b 100644 --- a/cms/locale/fr/LC_MESSAGES/djangojs.po +++ b/cms/locale/fr/LC_MESSAGES/djangojs.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 13:37+0000\n" -"Last-Translator: ojii \n" +"PO-Revision-Date: 2011-02-07 17:34+0000\n" +"Last-Translator: chrisglass \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,6 +26,8 @@ msgid "" "Not all plugins are saved. Are you sure you want to save the page?\n" "All unsaved plugin content will tried to save." msgstr "" +"Certains plugins ne sont pas sauvegardés.\n" +"Êtes-vous sûr de vouloir quitter cette page? Le contenu non-sauvegardé sera perdu!" #: media/cms/js/change_form.js:127 msgid "Are you sure you want to change tabs without saving the page first?" diff --git a/cms/locale/he/LC_MESSAGES/django.po b/cms/locale/he/LC_MESSAGES/django.po index ac293d7dc85..09663e5300c 100644 --- a/cms/locale/he/LC_MESSAGES/django.po +++ b/cms/locale/he/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 17:23+0000\n" +"PO-Revision-Date: 2011-02-07 17:34+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/he/LC_MESSAGES/djangojs.po b/cms/locale/he/LC_MESSAGES/djangojs.po index 59967a2815b..1801ee4c6a2 100644 --- a/cms/locale/he/LC_MESSAGES/djangojs.po +++ b/cms/locale/he/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:23+0000\n" +"PO-Revision-Date: 2011-02-07 17:34+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/hu/LC_MESSAGES/django.po b/cms/locale/hu/LC_MESSAGES/django.po index 6977af88e1f..c0dff3db5b0 100644 --- a/cms/locale/hu/LC_MESSAGES/django.po +++ b/cms/locale/hu/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:20-0600\n" -"PO-Revision-Date: 2011-02-07 17:23+0000\n" +"PO-Revision-Date: 2011-02-07 17:34+0000\n" "Last-Translator: Benjamin Wohlwend \n" "Language-Team: divio.ch \n" "MIME-Version: 1.0\n" diff --git a/cms/locale/hu/LC_MESSAGES/djangojs.po b/cms/locale/hu/LC_MESSAGES/djangojs.po index 1981bf9a5d5..bf1562aa6d9 100644 --- a/cms/locale/hu/LC_MESSAGES/djangojs.po +++ b/cms/locale/hu/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-cms\n" "Report-Msgid-Bugs-To: https://github.com/divio/django-cms/issues\n" "POT-Creation-Date: 2011-02-07 07:22-0600\n" -"PO-Revision-Date: 2011-02-07 17:23+0000\n" +"PO-Revision-Date: 2011-02-07 17:34+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" From 6a7c06a86c03adfcaff1e4805d5bf93ade3c5748 Mon Sep 17 00:00:00 2001 From: Mitar Date: Tue, 8 Feb 2011 02:14:36 +0100 Subject: [PATCH 056/689] Improvements to the documentation. Proposes django-filer and django-reversion. --- docs/getting_started/configuration.rst | 5 +- docs/getting_started/installation.rst | 12 ++++- docs/getting_started/plugin_reference.rst | 40 +++++++++++++++ docs/getting_started/tutorial.rst | 59 ++++++++++++++++++----- 4 files changed, 103 insertions(+), 13 deletions(-) diff --git a/docs/getting_started/configuration.rst b/docs/getting_started/configuration.rst index 75fd3f0c8df..53bd8fd905a 100644 --- a/docs/getting_started/configuration.rst +++ b/docs/getting_started/configuration.rst @@ -301,6 +301,9 @@ By default, Django CMS creates a folder called 'cms_page_media' in your static files folder where all uploaded media files are stored. The media files are stored in subfolders numbered with the id of the page. +You should take care that directory to which it points is writable by the user +under which django will be running. + **** URLs @@ -461,4 +464,4 @@ to share cache objects. Example:: - CMS_CACHE_PREFIX = 'mysite-live' \ No newline at end of file + CMS_CACHE_PREFIX = 'mysite-live' diff --git a/docs/getting_started/installation.rst b/docs/getting_started/installation.rst index a12aeda4963..443c28c1ce5 100644 --- a/docs/getting_started/installation.rst +++ b/docs/getting_started/installation.rst @@ -26,6 +26,16 @@ Requirements .. _South: http://south.aeracode.org/ .. _django-classy-tags: https://github.com/ojii/django-classy-tags +Recommended +=========== + +* `django-filer`_ with its `django CMS plugin`_, file and image management application to use instead of some core plugins +* `django-reversion`_, to support versions of your content + +.. _django-filer: https://github.com/stefanfoulis/django-filer +.. _django CMS plugin: https://github.com/stefanfoulis/cmsplugin-filer +.. _django-reversion: https://github.com/etianen/django-reversion + On Ubuntu ========= @@ -73,4 +83,4 @@ To use Django CMS efficiently, we recommend: * Create a separate database for django CMS to use. .. _PostgreSQL: http://www.postgresql.org/ -.. _MySQL: http://www.mysql.com \ No newline at end of file +.. _MySQL: http://www.mysql.com diff --git a/docs/getting_started/plugin_reference.rst b/docs/getting_started/plugin_reference.rst index fa6acf49427..0b597f864d8 100644 --- a/docs/getting_started/plugin_reference.rst +++ b/docs/getting_started/plugin_reference.rst @@ -18,6 +18,16 @@ in your project's ``settings.py`` file:: # ... ) +You should take care that directory to which ``CMS_PAGE_MEDIA_PATH`` setting +points (by default ``cms_page_media/`` relative to ``MEDIA_ROOT``) is writable +by the user under which django will be running. + +You might consider using `django-filer`_ with `django CMS plugin`_ and its +``cmsplugin_filer_file`` component instead. + +.. _django-filer: https://github.com/stefanfoulis/django-filer +.. _django CMS plugin: https://github.com/stefanfoulis/cmsplugin-filer + ***** Flash @@ -111,6 +121,16 @@ create a file called ``picture.html`` in there. Here is an example In this template the picture is scaled differently based on which placeholder it was placed in. +You should take care that directory to which ``CMS_PAGE_MEDIA_PATH`` setting +points (by default ``cms_page_media/`` relative to ``MEDIA_ROOT``) is writable +by the user under which django will be running. + +You might consider using `django-filer`_ with `django CMS plugin`_ and its +``cmsplugin_filer_image`` component instead. + +.. _django-filer: https://github.com/stefanfoulis/django-filer +.. _django CMS plugin: https://github.com/stefanfoulis/cmsplugin-filer + ******* Snippet @@ -144,6 +164,16 @@ settings in your project's ``settings.py`` file:: # ... ) +You should take care that directory to which ``CMS_PAGE_MEDIA_PATH`` setting +points (by default ``cms_page_media/`` relative to ``MEDIA_ROOT``) is writable +by the user under which django will be running. + +You might consider using `django-filer`_ with `django CMS plugin`_ and its +``cmsplugin_filer_teaser`` component instead. + +.. _django-filer: https://github.com/stefanfoulis/django-filer +.. _django CMS plugin: https://github.com/stefanfoulis/cmsplugin-filer + **** Text @@ -211,6 +241,16 @@ default behavior: - VIDEO_BUTTON_OVER_COLOR default="000000" - VIDEO_BUTTON_HIGHLIGHT_COLOR default="FFFFFF" +You should take care that directory to which ``CMS_PAGE_MEDIA_PATH`` setting +points (by default ``cms_page_media/`` relative to ``MEDIA_ROOT``) is writable +by the user under which django will be running. + +You might consider using `django-filer`_ with `django CMS plugin`_ and its +``cmsplugin_filer_video`` component instead. + +.. _django-filer: https://github.com/stefanfoulis/django-filer +.. _django CMS plugin: https://github.com/stefanfoulis/cmsplugin-filer + ******* Twitter diff --git a/docs/getting_started/tutorial.rst b/docs/getting_started/tutorial.rst index a52bce1c31b..6108d91dec4 100644 --- a/docs/getting_started/tutorial.rst +++ b/docs/getting_started/tutorial.rst @@ -49,28 +49,65 @@ To make your life easier, add the following at the top of the file:: PROJECT_PATH = os.path.abspath(os.path.dirname(__file__)) -Add the following apps to your ``INSTALLED_APPS``: +Add the following apps to your ``INSTALLED_APPS`` which enable django-cms and required or highly recommended applications/libraries): -* ``'cms'`` -* ``'mptt'`` -* ``'menus'`` -* ``'south'`` -* ``'appmedia'`` +* ``'cms'``, django-cms itself +* ``'mptt'``, utilities for implementing a modified pre-order traversal tree +* ``'menus'``, helper for model independent hierarchical website navigation +* ``'south'``, intelligent schema and data migrations +* ``'appmedia'``, linking application-specific media to project media Also add any (or all) of the following plugins, depending on your needs: -* ``'cms.plugins.text'`` -* ``'cms.plugins.picture'`` -* ``'cms.plugins.link'`` * ``'cms.plugins.file'`` -* ``'cms.plugins.snippet'`` +* ``'cms.plugins.flash'`` * ``'cms.plugins.googlemap'`` +* ``'cms.plugins.link'`` +* ``'cms.plugins.picture'`` +* ``'cms.plugins.snippet'`` +* ``'cms.plugins.teaser'`` +* ``'cms.plugins.text'`` +* ``'cms.plugins.video'`` +* ``'cms.plugins.twitter'`` + +They are described in more detail in chapter :doc:`Plugins reference `. +There is even more plugins available on django CMS `extensions page`_. + +.. _extensions page: http://www.django-cms.org/en/extensions/ If you wish to use the moderation workflow, also add: * ``'publisher'`` -Further, make sure you uncomment ``'django.contrib.admin'`` +Further, make sure you uncomment (enable) ``'django.contrib.admin'`` + +You might consider using `django-filer`_ with `django CMS plugin`_ and its +components instead of ``cms.plugins.file``, ``cms.plugins.picture``, ``cms.plugins.teaser`` +and ``cms.plugins.video`` core plugins. In this case you should not add them to +``INSTALLED_APPS`` but add those instead: + +* ``'filer'`` +* ``'cmsplugin_filer_file'`` +* ``'cmsplugin_filer_folder'`` +* ``'cmsplugin_filer_image'`` +* ``'cmsplugin_filer_teaser'`` +* ``'cmsplugin_filer_video'`` + +.. _django-filer: https://github.com/stefanfoulis/django-filer +.. _django CMS plugin: https://github.com/stefanfoulis/cmsplugin-filer + +If you opt for core plugins you should take care that directory to which +``CMS_PAGE_MEDIA_PATH`` setting points (by default ``cms_page_media/`` relative +to ``MEDIA_ROOT``) is writable by the user under which django will be running. +If you have opted for django-filer then similar requirement exists based on its +configuration. + +If you want versioning of your content you should also enable `django-reversion`_ +by adding: + +* ``'reversion'`` + +.. _django-reversion: https://github.com/etianen/django-reversion You need to add the django CMS middlewares to your ``MIDDLEWARE_CLASSES`` at the right position:: From 65b04412508fd4e4f5128dd11da103f603326283 Mon Sep 17 00:00:00 2001 From: Mitar Date: Tue, 8 Feb 2011 16:22:55 +0100 Subject: [PATCH 057/689] New screenshot of django CMS "it worked" page. --- docs/getting_started/tutorial.rst | 2 +- docs/images/it-works-cms.png | Bin 42632 -> 154254 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting_started/tutorial.rst b/docs/getting_started/tutorial.rst index 6108d91dec4..b51e3b30ffb 100644 --- a/docs/getting_started/tutorial.rst +++ b/docs/getting_started/tutorial.rst @@ -51,7 +51,7 @@ To make your life easier, add the following at the top of the file:: Add the following apps to your ``INSTALLED_APPS`` which enable django-cms and required or highly recommended applications/libraries): -* ``'cms'``, django-cms itself +* ``'cms'``, django CMS itself * ``'mptt'``, utilities for implementing a modified pre-order traversal tree * ``'menus'``, helper for model independent hierarchical website navigation * ``'south'``, intelligent schema and data migrations diff --git a/docs/images/it-works-cms.png b/docs/images/it-works-cms.png index a7293e123d997a557adeaf7ca71938f926290b96..79dc10e9f5d7eb51a0e2549ef2f62319e77df131 100644 GIT binary patch literal 154254 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�ZT21BdNL?8XEmo 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

  • 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 U%tv|s*3GA)@K(M;&ivE=0ZPr{y#N3J From 2b53a40e0b6ae5913f04199003dbb995d4c8e975 Mon Sep 17 00:00:00 2001 From: Chris Glass Date: Tue, 8 Feb 2011 18:22:13 +0100 Subject: [PATCH 058/689] Added Mitar to AUTHORS file --- AUTHORS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index a04dfefd5b2..91edfd02097 100644 --- a/AUTHORS +++ b/AUTHORS @@ -151,4 +151,5 @@ In no particular order: * Simon Hedberg * Jameel Al-Aziz * Javi Nievas -* tomviner \ No newline at end of file +* tomviner +* Mitar From 075b196266b32f4db07b08d50079af9cf1701e6b Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Wed, 9 Feb 2011 09:54:09 -0800 Subject: [PATCH 059/689] Added Gleb Chipiga --- AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS b/AUTHORS index 91edfd02097..539058b1030 100644 --- a/AUTHORS +++ b/AUTHORS @@ -153,3 +153,4 @@ In no particular order: * Javi Nievas * tomviner * Mitar +* Gleb Chipiga \ No newline at end of file From 6a5e4d416ba5e07f1194467429b1e4241b940ca6 Mon Sep 17 00:00:00 2001 From: Tobias von Klipstein Date: Wed, 9 Feb 2011 20:29:52 +0100 Subject: [PATCH 060/689] there was migration inbetween --- ...eld_globalpagepermission_can_view__add_field_pagepermissio.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename cms/migrations/{0034_auto__add_field_globalpagepermission_can_view__add_field_pagepermissio.py => 0035_auto__add_field_globalpagepermission_can_view__add_field_pagepermissio.py} (100%) diff --git a/cms/migrations/0034_auto__add_field_globalpagepermission_can_view__add_field_pagepermissio.py b/cms/migrations/0035_auto__add_field_globalpagepermission_can_view__add_field_pagepermissio.py similarity index 100% rename from cms/migrations/0034_auto__add_field_globalpagepermission_can_view__add_field_pagepermissio.py rename to cms/migrations/0035_auto__add_field_globalpagepermission_can_view__add_field_pagepermissio.py From 16d339a44213d02daadb765aaab53d34dd090c87 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Wed, 9 Feb 2011 21:07:33 +0100 Subject: [PATCH 061/689] run management commands from runtests --- cms/test/run_tests.py | 65 ++++++++++++++++++++++------------------- runtests.sh | 68 +++++++++++++++++++++++-------------------- 2 files changed, 72 insertions(+), 61 deletions(-) diff --git a/cms/test/run_tests.py b/cms/test/run_tests.py index a7e840eb578..ae67ec2b378 100644 --- a/cms/test/run_tests.py +++ b/cms/test/run_tests.py @@ -1,7 +1,39 @@ import sys import os -def configure_settings(env_name): +def configure_settings(is_test, test_args): + + failfast = False + direct = False + test_args = list(test_args) + if '--direct' in test_args: + test_args.remove('--direct') + sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "..")) + + if '--testshell' in test_args: + test_args.remove('--testshell') + + test_labels = [] + + test_args_enum = dict([ (val, idx) for idx, val in enumerate(test_args)]) + + env_name = '' + if '--env-name' in test_args: + env_name = test_args[test_args_enum['--env-name']+1] + test_args.remove('--env-name') + test_args.remove(env_name) + + if '--failfast' in test_args: + test_args.remove('--failfast') + failfast = True + + if is_test: + for label in test_args: + test_labels.append('cms.%s' % label) + + if not test_labels: + test_labels.append('cms') + from cms.test import project import cms @@ -214,38 +246,11 @@ def configure_settings(env_name): from cms.conf import patch_settings patch_settings() - return settings + return test_args, test_labels, failfast, settings def run_tests(*test_args): - test_args = list(test_args) - if '--direct' in test_args: - test_args.remove('--direct') - sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "..")) - - failfast = False - - test_labels = [] - - test_args_enum = dict([ (val, idx) for idx, val in enumerate(test_args)]) - - env_name = '' - if '--env-name' in test_args: - env_name = test_args[test_args_enum['--env-name']+1] - test_args.remove('--env-name') - test_args.remove(env_name) - - if '--failfast' in test_args: - test_args.remove('--failfast') - failfast = True - - for label in test_args: - test_labels.append('cms.%s' % label) - - if not test_labels: - test_labels.append('cms') - - settings = configure_settings(env_name) + test_args, test_labels, failfast, settings = configure_settings(True, test_args) from django.test.utils import get_runner diff --git a/runtests.sh b/runtests.sh index 5ab993e2e45..75794c81f5b 100644 --- a/runtests.sh +++ b/runtests.sh @@ -5,7 +5,7 @@ num_args=${#args[@]} index=0 quicktest=false -disable_coverage=true +testshell=false while [ "$index" -lt "$num_args" ] do @@ -43,15 +43,10 @@ case "${args[$index]}" in echo " --with-coverage - enables coverage" exit 1 ;; - - "--rebuild-env") - # just to make ci run instantly - ;; - - "--with-coverage") - # just to make ci run instantly - ;; - + + "--testshell") + testshell=true + ;; *) suite="${args[$index]}" esac @@ -64,44 +59,55 @@ if [ ! "$toxenv" ]; then toxenv='py26-1.2.X' fi -if [ "$failfast" ]; then - echo "--failfast supplied, not using xmlrunner." -fi -if [ ! "$suite" ]; then - echo "Running complete cms testsuite." -else - if [ $quicktest == false ]; then - echo "Can only run specific suite with --quicktest" +OLD_IFS=IFS +IFS="," +tox_envs=( $toxenv ) +tox_len=${#tox_envs[@]} +IFS=OLD_IFS + +if [[ $quicktest == true || $testshell == true ]]; then + if [[ $testshell == true ]]; then + if [[ "$tox_len" -gt "1" || "$toxenv" == "ALL" ]]; then + echo "Cannot use multiple envs with --testshell" + exit 1 + fi + if [ ! -d ".tox/$toxenv" ]; then + echo ".tox/$toxenv does not exist, run without --testshell first" + exit 1 + fi + .tox/$toxenv/bin/python cms/test/run_shell.py --env-name $toxenv --direct "$@" exit 1 fi - echo "Running cms test $suite." -fi - -if [ ! -f "toxinstall/bin/tox" ]; then - echo "Installing tox" - virtualenv toxinstall - toxinstall/bin/pip install -U tox -fi - -if [ $quicktest == true ]; then if [ "$toxenv" == "ALL" ]; then echo "Cannot use ALL with --quicktest" exit 1 fi - IFS="," - tenvs=( $toxenv ) - for tenv in ${tenvs[@]}; do + for tenv in ${tox_envs[@]}; do if [ ! -d ".tox/$tenv" ]; then echo ".tox/$tenv does not exist, run without --quicktest first" exit 1 fi read -p "Hit any key to run tests in tox env $tenv" + echo "Running cms test $suite using $tenv" # running tests without invoking tox to save time + if [ "$failfast" ]; then + echo "--failfast supplied, not using xmlrunner." + fi .tox/$tenv/bin/python cms/test/run_tests.py --direct $failfast $suite retcode=$? done else + if [ "$suite" ]; then + echo "Can only run specific suite with --quicktest" + fi + + if [ ! -f "toxinstall/bin/tox" ]; then + echo "Installing tox" + virtualenv toxinstall + toxinstall/bin/pip install -U tox + fi + echo "Running complete cms testsuite." toxinstall/bin/tox -e $toxenv retcode=$? fi From abae179c36aca1470b033a06e4b937347575923b Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Wed, 9 Feb 2011 21:19:14 +0100 Subject: [PATCH 062/689] fixed some small issues --- cms/test/run_tests.py | 10 +++++----- runtests.sh | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/cms/test/run_tests.py b/cms/test/run_tests.py index ae67ec2b378..12be6043c85 100644 --- a/cms/test/run_tests.py +++ b/cms/test/run_tests.py @@ -10,17 +10,17 @@ def configure_settings(is_test, test_args): test_args.remove('--direct') sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "..")) - if '--testshell' in test_args: - test_args.remove('--testshell') + if '--manage' in test_args: + test_args.remove('--manage') test_labels = [] test_args_enum = dict([ (val, idx) for idx, val in enumerate(test_args)]) env_name = '' - if '--env-name' in test_args: - env_name = test_args[test_args_enum['--env-name']+1] - test_args.remove('--env-name') + if '--toxenv' in test_args: + env_name = test_args[test_args_enum['--toxenv']+1] + test_args.remove('--toxenv') test_args.remove(env_name) if '--failfast' in test_args: diff --git a/runtests.sh b/runtests.sh index 75794c81f5b..c3a26429434 100644 --- a/runtests.sh +++ b/runtests.sh @@ -5,7 +5,7 @@ num_args=${#args[@]} index=0 quicktest=false -testshell=false +manage=false while [ "$index" -lt "$num_args" ] do @@ -40,12 +40,12 @@ case "${args[$index]}" in echo "" echo " --quicktest - use already built tox env, for running a simple test quickly" echo " --failfast - abort at first failing test" - echo " --with-coverage - enables coverage" + echo " --manage - run management shell" exit 1 ;; - "--testshell") - testshell=true + "--manage") + manage=true ;; *) suite="${args[$index]}" @@ -66,17 +66,17 @@ tox_envs=( $toxenv ) tox_len=${#tox_envs[@]} IFS=OLD_IFS -if [[ $quicktest == true || $testshell == true ]]; then - if [[ $testshell == true ]]; then +if [[ $quicktest == true || $manage == true ]]; then + if [[ $manage == true ]]; then if [[ "$tox_len" -gt "1" || "$toxenv" == "ALL" ]]; then - echo "Cannot use multiple envs with --testshell" + echo "Cannot use multiple envs with --manage" exit 1 fi if [ ! -d ".tox/$toxenv" ]; then - echo ".tox/$toxenv does not exist, run without --testshell first" + echo ".tox/$toxenv does not exist, run without --manage first" exit 1 fi - .tox/$toxenv/bin/python cms/test/run_shell.py --env-name $toxenv --direct "$@" + .tox/$toxenv/bin/python cms/test/run_shell.py --direct "$@" exit 1 fi if [ "$toxenv" == "ALL" ]; then @@ -94,7 +94,7 @@ if [[ $quicktest == true || $testshell == true ]]; then if [ "$failfast" ]; then echo "--failfast supplied, not using xmlrunner." fi - .tox/$tenv/bin/python cms/test/run_tests.py --direct $failfast $suite + .tox/$tenv/bin/python cms/test/run_tests.py --toxenv $tenv --direct $failfast $suite retcode=$? done else From cd7877e07bc118a0df00b803fb6c9ab57573bdf0 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Wed, 9 Feb 2011 23:32:59 +0100 Subject: [PATCH 063/689] fixed tox.ini --- tox.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tox.ini b/tox.ini index 64f29d033d7..5446cf2a080 100644 --- a/tox.ini +++ b/tox.ini @@ -5,7 +5,7 @@ envlist = [testenv] commands = - coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow + coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --toxenv {envname} # get rid of --direct somehow coverage xml -o coverage-{envname}.xml sitepackages = False @@ -84,7 +84,7 @@ deps = [testenv:py25-trunk] commands = pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django - coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow + coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --toxenv {envname} # get rid of --direct somehow coverage xml -o coverage-{envname}.xml basepython = python2.5 deps = @@ -99,7 +99,7 @@ deps = [testenv:py26-trunk] commands = pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django - coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow + coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --toxenv {envname} # get rid of --direct somehow coverage xml -o coverage-{envname}.xml basepython = python2.6 deps = @@ -114,7 +114,7 @@ deps = [testenv:py27-trunk] commands = pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django - coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --env-name {envname} # get rid of --direct somehow + coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --toxenv {envname} # get rid of --direct somehow coverage xml -o coverage-{envname}.xml basepython = python2.7 deps = From f968af6d612a53a517b1851cd24fe3e51b28c6a7 Mon Sep 17 00:00:00 2001 From: Tobias von Klipstein Date: Thu, 10 Feb 2011 12:00:31 +0100 Subject: [PATCH 064/689] namespaced the conflicting button/green/blue classes These classes are commonly used and shouldn't be used in a toolbar that is injected into a page. --- cms/media/cms/css/toolbar.css | 22 +++++++++++----------- cms/templates/cms/toolbar/toolbar.html | 6 +++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/cms/media/cms/css/toolbar.css b/cms/media/cms/css/toolbar.css index 90300a3aa90..fa3eb5b1679 100644 --- a/cms/media/cms/css/toolbar.css +++ b/cms/media/cms/css/toolbar.css @@ -768,7 +768,7 @@ a#closeBut:hover strong /* button ---------------------------------------------- */ -.button { +.cms_toolbar_btn { float:left; display: inline-block; zoom: 1; /* zoom and *display = ie7 hack for display:inline-block */ @@ -789,22 +789,22 @@ a#closeBut:hover strong -moz-box-shadow: 0 1px 2px rgba(0,0,0,.2); box-shadow: 0 1px 2px rgba(0,0,0,.2); } -.button:hover { +.cms_toolbar_btn:hover { text-decoration: none; } -.button:active { +.cms_toolbar_btn:active { position: relative; top: 1px; } -a.button { +a.cms_toolbar_btn { color:white; } -a.button:hover { +a.cms_toolbar_btn:hover { color:white; } /* green */ -.green { +.cms_toolbar_green { color: #e8f0de; border: solid 1px #538312; background: #64991e; @@ -812,20 +812,20 @@ a.button:hover { background: -moz-linear-gradient(top, #7db72f, #4e7d0e); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7db72f', endColorstr='#4e7d0e'); } -.green:hover { +.cms_toolbar_green:hover { background: #538018; background: -webkit-gradient(linear, left top, left bottom, from(#6b9d28), to(#436b0c)); background: -moz-linear-gradient(top, #6b9d28, #436b0c); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#6b9d28', endColorstr='#436b0c'); } -.green:active { +.cms_toolbar_green:active { color: #a9c08c; background: -webkit-gradient(linear, left top, left bottom, from(#4e7d0e), to(#7db72f)); background: -moz-linear-gradient(top, #4e7d0e, #7db72f); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4e7d0e', endColorstr='#7db72f'); } /* blue */ -.blue { +.cms_toolbar_blue { color: #d9eef7; border: solid 1px #0076a3; background: #0095cd; @@ -833,13 +833,13 @@ a.button:hover { background: -moz-linear-gradient(top, #00adee, #0078a5); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00adee', endColorstr='#0078a5'); } -.blue:hover { +.cms_toolbar_blue:hover { background: #007ead; background: -webkit-gradient(linear, left top, left bottom, from(#0095cc), to(#00678e)); background: -moz-linear-gradient(top, #0095cc, #00678e); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0095cc', endColorstr='#00678e'); } -.blue:active { +.cms_toolbar_blue:active { color: #80bed6; background: -webkit-gradient(linear, left top, left bottom, from(#0078a5), to(#00adee)); background: -moz-linear-gradient(top, #0078a5, #00adee); diff --git a/cms/templates/cms/toolbar/toolbar.html b/cms/templates/cms/toolbar/toolbar.html index c8047f5f5ab..16b6a1fad00 100644 --- a/cms/templates/cms/toolbar/toolbar.html +++ b/cms/templates/cms/toolbar/toolbar.html @@ -163,16 +163,16 @@ {% if edit and page %} {% if auth and moderator %} {% if moderator_should_approve and has_moderate_permission %} - + {{ page_moderator_state.label }} {% else %} {% if has_publish_permission %} - + Publish {% else %} - + Request Approval {% endif %} From f69df9111185a49e1ecd6dc965d6927a377cbabb Mon Sep 17 00:00:00 2001 From: Tobias von Klipstein Date: Thu, 10 Feb 2011 12:05:16 +0100 Subject: [PATCH 065/689] replaced tabs with spaces for the "new-button" section --- cms/media/cms/css/toolbar.css | 98 +++++++++++++++++------------------ 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/cms/media/cms/css/toolbar.css b/cms/media/cms/css/toolbar.css index fa3eb5b1679..d9985bdd43e 100644 --- a/cms/media/cms/css/toolbar.css +++ b/cms/media/cms/css/toolbar.css @@ -770,31 +770,31 @@ a#closeBut:hover strong ---------------------------------------------- */ .cms_toolbar_btn { float:left; - display: inline-block; - zoom: 1; /* zoom and *display = ie7 hack for display:inline-block */ - *display: inline; - vertical-align: baseline; - margin: 0 2px; - outline: none; - cursor: pointer; - text-align: center; - text-decoration: none; - font: 14px/100% Arial, Helvetica, sans-serif; - padding: .5em 2em .55em; - text-shadow: 0 1px 1px rgba(0,0,0,.3); - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - border-radius: .5em; - -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2); - -moz-box-shadow: 0 1px 2px rgba(0,0,0,.2); - box-shadow: 0 1px 2px rgba(0,0,0,.2); + display: inline-block; + zoom: 1; /* zoom and *display = ie7 hack for display:inline-block */ + *display: inline; + vertical-align: baseline; + margin: 0 2px; + outline: none; + cursor: pointer; + text-align: center; + text-decoration: none; + font: 14px/100% Arial, Helvetica, sans-serif; + padding: .5em 2em .55em; + text-shadow: 0 1px 1px rgba(0,0,0,.3); + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + border-radius: .5em; + -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2); + -moz-box-shadow: 0 1px 2px rgba(0,0,0,.2); + box-shadow: 0 1px 2px rgba(0,0,0,.2); } .cms_toolbar_btn:hover { - text-decoration: none; + text-decoration: none; } .cms_toolbar_btn:active { - position: relative; - top: 1px; + position: relative; + top: 1px; } a.cms_toolbar_btn { color:white; @@ -805,43 +805,43 @@ a.cms_toolbar_btn:hover { /* green */ .cms_toolbar_green { - color: #e8f0de; - border: solid 1px #538312; - background: #64991e; - background: -webkit-gradient(linear, left top, left bottom, from(#7db72f), to(#4e7d0e)); - background: -moz-linear-gradient(top, #7db72f, #4e7d0e); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7db72f', endColorstr='#4e7d0e'); + color: #e8f0de; + border: solid 1px #538312; + background: #64991e; + background: -webkit-gradient(linear, left top, left bottom, from(#7db72f), to(#4e7d0e)); + background: -moz-linear-gradient(top, #7db72f, #4e7d0e); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7db72f', endColorstr='#4e7d0e'); } .cms_toolbar_green:hover { - background: #538018; - background: -webkit-gradient(linear, left top, left bottom, from(#6b9d28), to(#436b0c)); - background: -moz-linear-gradient(top, #6b9d28, #436b0c); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#6b9d28', endColorstr='#436b0c'); + background: #538018; + background: -webkit-gradient(linear, left top, left bottom, from(#6b9d28), to(#436b0c)); + background: -moz-linear-gradient(top, #6b9d28, #436b0c); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#6b9d28', endColorstr='#436b0c'); } .cms_toolbar_green:active { - color: #a9c08c; - background: -webkit-gradient(linear, left top, left bottom, from(#4e7d0e), to(#7db72f)); - background: -moz-linear-gradient(top, #4e7d0e, #7db72f); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4e7d0e', endColorstr='#7db72f'); + color: #a9c08c; + background: -webkit-gradient(linear, left top, left bottom, from(#4e7d0e), to(#7db72f)); + background: -moz-linear-gradient(top, #4e7d0e, #7db72f); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4e7d0e', endColorstr='#7db72f'); } /* blue */ .cms_toolbar_blue { - color: #d9eef7; - border: solid 1px #0076a3; - background: #0095cd; - background: -webkit-gradient(linear, left top, left bottom, from(#00adee), to(#0078a5)); - background: -moz-linear-gradient(top, #00adee, #0078a5); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00adee', endColorstr='#0078a5'); + color: #d9eef7; + border: solid 1px #0076a3; + background: #0095cd; + background: -webkit-gradient(linear, left top, left bottom, from(#00adee), to(#0078a5)); + background: -moz-linear-gradient(top, #00adee, #0078a5); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00adee', endColorstr='#0078a5'); } .cms_toolbar_blue:hover { - background: #007ead; - background: -webkit-gradient(linear, left top, left bottom, from(#0095cc), to(#00678e)); - background: -moz-linear-gradient(top, #0095cc, #00678e); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0095cc', endColorstr='#00678e'); + background: #007ead; + background: -webkit-gradient(linear, left top, left bottom, from(#0095cc), to(#00678e)); + background: -moz-linear-gradient(top, #0095cc, #00678e); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0095cc', endColorstr='#00678e'); } .cms_toolbar_blue:active { - color: #80bed6; - background: -webkit-gradient(linear, left top, left bottom, from(#0078a5), to(#00adee)); - background: -moz-linear-gradient(top, #0078a5, #00adee); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0078a5', endColorstr='#00adee'); + color: #80bed6; + background: -webkit-gradient(linear, left top, left bottom, from(#0078a5), to(#00adee)); + background: -moz-linear-gradient(top, #0078a5, #00adee); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0078a5', endColorstr='#00adee'); } \ No newline at end of file From a94db6030232ecfde2bd636725d633c7c5f24023 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 10 Feb 2011 17:23:51 +0100 Subject: [PATCH 066/689] run using default python/django/deps --- tox.ini | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/tox.ini b/tox.ini index 5446cf2a080..95ddb924457 100644 --- a/tox.ini +++ b/tox.ini @@ -1,7 +1,7 @@ [tox] distribute = False envlist = - py26-1.2.X + defaultpython-defaultdjango [testenv] commands = @@ -9,6 +9,21 @@ commands = coverage xml -o coverage-{envname}.xml sitepackages = False +[testenv:defaultpython-defaultdjango] +sitepackages = True +deps = + unittest-xml-reporting==1.0.3 + coverage==3.4 + sphinx + +[testenv:defaultpython-1.2.X] +sitepackages = True +deps = + unittest-xml-reporting==1.0.3 + coverage==3.4 + sphinx + django==1.2.5 + [testenv:py25-1.2.X] basepython = python2.5 deps = @@ -44,6 +59,17 @@ deps = South sphinx pysqlite + +[testenv:defaultpython-1.3.X] +commands = + coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --toxenv {envname} # get rid of --direct somehow + coverage xml -o coverage-{envname}.xml +sitepackages = True +deps = + unittest-xml-reporting==1.0.3 + coverage==3.4 + sphinx + http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz [testenv:py25-1.3.X] basepython = python2.5 @@ -81,6 +107,17 @@ deps = http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz pysqlite +[testenv:defaultpython-trunk] +commands = + pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django + coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --toxenv {envname} # get rid of --direct somehow + coverage xml -o coverage-{envname}.xml +sitepackages = True +deps = + unittest-xml-reporting==1.0.3 + coverage==3.4 + sphinx + [testenv:py25-trunk] commands = pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django @@ -124,4 +161,4 @@ deps = django-classy-tags South sphinx - pysqlite + pysqlite \ No newline at end of file From 3a38613b7c27006225883388223fe63e66e70ab1 Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 10 Feb 2011 17:29:20 +0100 Subject: [PATCH 067/689] fix runtests.sh to use default --- runtests.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/runtests.sh b/runtests.sh index c3a26429434..c82d1b79884 100644 --- a/runtests.sh +++ b/runtests.sh @@ -34,8 +34,10 @@ case "${args[$index]}" in echo " --toxenv [tox-env]" echo " eg. runtests.sh --toxenv py26-1.2.X,py26-trunk" echo " possible envs:" - echo " py25-1.2.X, py25-1.3.X, py25-trunk" - echo " py26-1.2.X, py26-1.3.X, py26-trunk" + echo " defaultpython-defaultdjango - runs with default django and installed django version (default)" + echo " defaultpython-1.2.X, defaultpython-1.3.X, defaultpython-trunk," + echo " py25-1.2.X, py25-1.3.X, py25-trunk," + echo " py26-1.2.X, py26-1.3.X, py26-trunk," echo " py27-1.2.X, py27-1.3.X, ALL" echo "" echo " --quicktest - use already built tox env, for running a simple test quickly" @@ -56,7 +58,7 @@ done if [ ! "$toxenv" ]; then - toxenv='py26-1.2.X' + toxenv='defaultpython-defaultdjango' fi From ee93c50c7e216883e2962aebe5c9881710a6518a Mon Sep 17 00:00:00 2001 From: fivethreeo Date: Thu, 10 Feb 2011 18:26:16 +0100 Subject: [PATCH 068/689] missing file from feature/shell --- cms/test/run_shell.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 cms/test/run_shell.py diff --git a/cms/test/run_shell.py b/cms/test/run_shell.py new file mode 100644 index 00000000000..af5fd8bcace --- /dev/null +++ b/cms/test/run_shell.py @@ -0,0 +1,7 @@ +import sys +if __name__ == "__main__": + from run_tests import configure_settings + test_args, test_labels, failfast, settings = configure_settings(False, sys.argv[:]) + from django.core.management import execute_manager + execute_manager(settings, argv=test_args[:]) + \ No newline at end of file From cbc556d0d18f8906951ca4154d4451ab10164ead Mon Sep 17 00:00:00 2001 From: Chris Glass Date: Sat, 12 Feb 2011 21:27:33 +0100 Subject: [PATCH 069/689] Fixed docs as suggested. --- docs/extending_cms/extending_examples.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/extending_cms/extending_examples.rst b/docs/extending_cms/extending_examples.rst index 6da2331b259..bd10b5b196e 100644 --- a/docs/extending_cms/extending_examples.rst +++ b/docs/extending_cms/extending_examples.rst @@ -5,7 +5,8 @@ Extending the CMS: Examples From this part onwards, this tutorial assumes you have done the `Django Tutorial`_ and we will show you how to integrate that poll app into the django CMS. If a poll app is mentioned here, we mean the one you get when -finishing the `Django Tutorial`_. +finishing the `Django Tutorial`_. +Also, make sure the poll app is in your INSTALLED_APPS. We assume your main ``urls.py`` looks somewhat like this:: @@ -102,11 +103,11 @@ The template could look like this: .. code-block:: html+django -

    {{ poll.question }}

    +

    {{ instance.poll.question }}

    {% csrf_token %} - {% for choice in poll.choice_set.all %} + {% for choice in instance.poll.choice_set.all %}
    {% endfor %} From 378ec5d5d2eb1bc160cf4791d2c1278f0e7fafb9 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Sun, 13 Feb 2011 18:45:23 +0100 Subject: [PATCH 070/689] made runtests.sh executable again --- runtests.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 runtests.sh diff --git a/runtests.sh b/runtests.sh old mode 100644 new mode 100755 From 26950ca8d120dc3cd0882aa922c6d0f4d1377a8d Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Mon, 14 Feb 2011 11:52:47 +0100 Subject: [PATCH 071/689] Moved back to buildout-powered test running --- cms/test/run_shell.py | 7 - cms/test/run_tests.py | 261 ------------------ cms/test/util/__init__.py | 0 cms/{test => test_utils}/.coveragerc | 0 cms/{test => test_utils}/__init__.py | 0 cms/{test => test_utils}/js_testcases.py | 0 cms/{test => test_utils}/testcases.py | 2 +- .../apps => test_utils/util}/__init__.py | 0 .../util/context_managers.py | 0 .../util/menu_extender.py | 0 cms/{test => test_utils}/util/mock.py | 0 cms/tests/admin.py | 6 +- cms/tests/apphooks.py | 14 +- cms/tests/docs.py | 10 +- cms/tests/forms.py | 4 +- cms/tests/javascript.py | 2 +- cms/tests/mail.py | 2 +- cms/tests/menu.py | 4 +- cms/tests/middleware.py | 4 +- cms/tests/multilingual.py | 2 +- cms/tests/navextender.py | 6 +- cms/tests/nonroot.py | 6 +- cms/tests/page.py | 6 +- cms/tests/permmod.py | 2 +- cms/tests/placeholder.py | 6 +- cms/tests/plugins.py | 8 +- cms/tests/publisher.py | 4 +- cms/tests/rendering.py | 4 +- cms/tests/reversion_tests.py | 2 +- cms/tests/settings.py | 4 +- cms/tests/site.py | 4 +- cms/tests/toolbar.py | 4 +- cms/tests/urlutils.py | 4 +- cms/tests/views.py | 8 +- runtests.sh | 152 +++++----- tests/.coveragerc | 10 + tests/bootstrap.py | 121 ++++++++ tests/buildout.cfg | 36 +++ tests/django-12.cfg | 9 + tests/django-13.cfg | 9 + tests/django-trunk.cfg | 9 + .../fakemlng => tests/project}/__init__.py | 0 .../project/cms_urls_for_apphook_tests.py | 0 .../project/fakemlng}/__init__.py | 0 .../project}/fakemlng/fixtures/fakemlng.json | 0 .../apps => tests/project}/fakemlng/models.py | 0 .../project/fixtures/menus.json | 0 {cms/test => tests}/project/manage.py | 0 {cms/test => tests}/project/models.py | 0 {cms/test => tests}/project/noadmin_urls.py | 0 {cms/test => tests}/project/nonroot_urls.py | 0 .../project/placeholderapp}/__init__.py | 0 .../project}/placeholderapp/admin.py | 2 +- .../project}/placeholderapp/models.py | 0 .../project/pluginapp}/__init__.py | 0 .../project}/pluginapp/models.py | 0 .../project/pluginapp/plugins}/__init__.py | 0 .../plugins/manytomany_rel}/__init__.py | 0 .../plugins/manytomany_rel/cms_plugins.py | 4 +- .../plugins/manytomany_rel/models.py | 2 +- .../project/sampleapp}/__init__.py | 0 .../apps => tests/project}/sampleapp/admin.py | 2 +- .../project}/sampleapp/cms_app.py | 4 +- .../sampleapp/media/sampleapp/img/gift.jpg | Bin .../apps => tests/project}/sampleapp/menu.py | 2 +- .../project}/sampleapp/models.py | 0 .../templates/sampleapp/category_view.html | 0 .../sampleapp/templates/sampleapp/home.html | 0 .../apps => tests/project}/sampleapp/urls.py | 2 +- .../apps => tests/project}/sampleapp/views.py | 2 +- .../second_cms_urls_for_apphook_tests.py | 0 .../project/second_urls_for_apphook_tests.py | 2 +- {cms/test => tests}/project/settings.py | 17 +- .../test => tests}/project/templates/404.html | 0 .../project/templates/add_placeholder.html | 0 .../project/templates/base.html | 0 .../project/templates/col_three.html | 0 .../project/templates/col_two.html | 0 .../project/templates/extra_context.html | 0 .../project/templates/menu/breadcrumb.html | 0 .../templates/menu/language_chooser.html | 0 .../project/templates/menu/menu.html | 0 .../project/templates/menu/sub_menu.html | 0 .../templates/menu/test_language_chooser.html | 0 .../project/templates/nav_playground.html | 0 .../templates/placeholder_tests/base.html | 0 .../templates/placeholder_tests/child.html | 0 .../templates/placeholder_tests/outside.html | 0 .../placeholder_tests/outside_base.html | 0 .../placeholder_tests/test_eleven.html | 0 .../placeholder_tests/test_five.html | 0 .../placeholder_tests/test_four.html | 0 .../templates/placeholder_tests/test_one.html | 0 .../placeholder_tests/test_seven.html | 0 .../templates/placeholder_tests/test_six.html | 0 .../placeholder_tests/test_three.html | 0 .../templates/placeholder_tests/test_two.html | 0 .../project/templates/sidebar_submenu.html | 0 .../templates/sidebar_submenu_root.html | 0 {cms/test => tests}/project/testrunner.py | 0 {cms/test => tests}/project/urls.py | 0 .../project/urls_for_apphook_tests.py | 2 +- tox.ini | 164 ----------- 103 files changed, 343 insertions(+), 594 deletions(-) delete mode 100644 cms/test/run_shell.py delete mode 100644 cms/test/run_tests.py delete mode 100644 cms/test/util/__init__.py rename cms/{test => test_utils}/.coveragerc (100%) rename cms/{test => test_utils}/__init__.py (100%) rename cms/{test => test_utils}/js_testcases.py (100%) rename cms/{test => test_utils}/testcases.py (99%) rename cms/{test/apps => test_utils/util}/__init__.py (100%) rename cms/{test => test_utils}/util/context_managers.py (100%) rename cms/{test => test_utils}/util/menu_extender.py (100%) rename cms/{test => test_utils}/util/mock.py (100%) create mode 100644 tests/.coveragerc create mode 100644 tests/bootstrap.py create mode 100644 tests/buildout.cfg create mode 100644 tests/django-12.cfg create mode 100644 tests/django-13.cfg create mode 100644 tests/django-trunk.cfg rename {cms/test/apps/fakemlng => tests/project}/__init__.py (100%) rename {cms/test => tests}/project/cms_urls_for_apphook_tests.py (100%) rename {cms/test/apps/placeholderapp => tests/project/fakemlng}/__init__.py (100%) rename {cms/test/apps => tests/project}/fakemlng/fixtures/fakemlng.json (100%) rename {cms/test/apps => tests/project}/fakemlng/models.py (100%) rename {cms/test => tests}/project/fixtures/menus.json (100%) rename {cms/test => tests}/project/manage.py (100%) rename {cms/test => tests}/project/models.py (100%) rename {cms/test => tests}/project/noadmin_urls.py (100%) rename {cms/test => tests}/project/nonroot_urls.py (100%) rename {cms/test/apps/pluginapp => tests/project/placeholderapp}/__init__.py (100%) rename {cms/test/apps => tests/project}/placeholderapp/admin.py (98%) rename {cms/test/apps => tests/project}/placeholderapp/models.py (100%) rename {cms/test/apps/pluginapp/plugins => tests/project/pluginapp}/__init__.py (100%) rename {cms/test/apps => tests/project}/pluginapp/models.py (100%) rename {cms/test/apps/pluginapp/plugins/manytomany_rel => tests/project/pluginapp/plugins}/__init__.py (100%) rename {cms/test/apps/sampleapp => tests/project/pluginapp/plugins/manytomany_rel}/__init__.py (100%) rename {cms/test/apps => tests/project}/pluginapp/plugins/manytomany_rel/cms_plugins.py (83%) rename {cms/test/apps => tests/project}/pluginapp/plugins/manytomany_rel/models.py (87%) rename {cms/test/project => tests/project/sampleapp}/__init__.py (100%) rename {cms/test/apps => tests/project}/sampleapp/admin.py (81%) rename {cms/test/apps => tests/project}/sampleapp/cms_app.py (71%) rename {cms/test/apps => tests/project}/sampleapp/media/sampleapp/img/gift.jpg (100%) rename {cms/test/apps => tests/project}/sampleapp/menu.py (97%) rename {cms/test/apps => tests/project}/sampleapp/models.py (100%) rename {cms/test/apps => tests/project}/sampleapp/templates/sampleapp/category_view.html (100%) rename {cms/test/apps => tests/project}/sampleapp/templates/sampleapp/home.html (100%) rename {cms/test/apps => tests/project}/sampleapp/urls.py (91%) rename {cms/test/apps => tests/project}/sampleapp/views.py (90%) rename {cms/test => tests}/project/second_cms_urls_for_apphook_tests.py (100%) rename {cms/test => tests}/project/second_urls_for_apphook_tests.py (88%) rename {cms/test => tests}/project/settings.py (93%) rename {cms/test => tests}/project/templates/404.html (100%) rename {cms/test => tests}/project/templates/add_placeholder.html (100%) rename {cms/test => tests}/project/templates/base.html (100%) rename {cms/test => tests}/project/templates/col_three.html (100%) rename {cms/test => tests}/project/templates/col_two.html (100%) rename {cms/test => tests}/project/templates/extra_context.html (100%) rename {cms/test => tests}/project/templates/menu/breadcrumb.html (100%) rename {cms/test => tests}/project/templates/menu/language_chooser.html (100%) rename {cms/test => tests}/project/templates/menu/menu.html (100%) rename {cms/test => tests}/project/templates/menu/sub_menu.html (100%) rename {cms/test => tests}/project/templates/menu/test_language_chooser.html (100%) rename {cms/test => tests}/project/templates/nav_playground.html (100%) rename {cms/test => tests}/project/templates/placeholder_tests/base.html (100%) rename {cms/test => tests}/project/templates/placeholder_tests/child.html (100%) rename {cms/test => tests}/project/templates/placeholder_tests/outside.html (100%) rename {cms/test => tests}/project/templates/placeholder_tests/outside_base.html (100%) rename {cms/test => tests}/project/templates/placeholder_tests/test_eleven.html (100%) rename {cms/test => tests}/project/templates/placeholder_tests/test_five.html (100%) rename {cms/test => tests}/project/templates/placeholder_tests/test_four.html (100%) rename {cms/test => tests}/project/templates/placeholder_tests/test_one.html (100%) rename {cms/test => tests}/project/templates/placeholder_tests/test_seven.html (100%) rename {cms/test => tests}/project/templates/placeholder_tests/test_six.html (100%) rename {cms/test => tests}/project/templates/placeholder_tests/test_three.html (100%) rename {cms/test => tests}/project/templates/placeholder_tests/test_two.html (100%) rename {cms/test => tests}/project/templates/sidebar_submenu.html (100%) rename {cms/test => tests}/project/templates/sidebar_submenu_root.html (100%) rename {cms/test => tests}/project/testrunner.py (100%) rename {cms/test => tests}/project/urls.py (100%) rename {cms/test => tests}/project/urls_for_apphook_tests.py (89%) delete mode 100644 tox.ini diff --git a/cms/test/run_shell.py b/cms/test/run_shell.py deleted file mode 100644 index af5fd8bcace..00000000000 --- a/cms/test/run_shell.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys -if __name__ == "__main__": - from run_tests import configure_settings - test_args, test_labels, failfast, settings = configure_settings(False, sys.argv[:]) - from django.core.management import execute_manager - execute_manager(settings, argv=test_args[:]) - \ No newline at end of file diff --git a/cms/test/run_tests.py b/cms/test/run_tests.py deleted file mode 100644 index 12be6043c85..00000000000 --- a/cms/test/run_tests.py +++ /dev/null @@ -1,261 +0,0 @@ -import sys -import os - -def configure_settings(is_test, test_args): - - failfast = False - direct = False - test_args = list(test_args) - if '--direct' in test_args: - test_args.remove('--direct') - sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "..")) - - if '--manage' in test_args: - test_args.remove('--manage') - - test_labels = [] - - test_args_enum = dict([ (val, idx) for idx, val in enumerate(test_args)]) - - env_name = '' - if '--toxenv' in test_args: - env_name = test_args[test_args_enum['--toxenv']+1] - test_args.remove('--toxenv') - test_args.remove(env_name) - - if '--failfast' in test_args: - test_args.remove('--failfast') - failfast = True - - if is_test: - for label in test_args: - test_labels.append('cms.%s' % label) - - if not test_labels: - test_labels.append('cms') - - from cms.test import project - import cms - - PROJECT_DIR = os.path.abspath(os.path.dirname(project.__file__)) - - MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media') - CMS_MEDIA_ROOT = os.path.join(os.path.abspath(os.path.dirname(cms.__file__)), 'media', 'cms') - - FIXTURE_DIRS = [os.path.join(PROJECT_DIR, 'fixtures')] - - TEMPLATE_DIRS = ( - os.path.join(PROJECT_DIR, 'templates'), - ) - - JUNIT_OUTPUT_DIR = os.path.join(os.path.abspath(os.path.dirname(cms.__file__)), '..', 'junit-%s' % env_name) - - ADMINS = tuple() - DEBUG = True - - gettext = lambda x: x - - from django.conf import settings - - settings.configure( - PROJECT_DIR = PROJECT_DIR, - DEBUG = DEBUG, - TEMPLATE_DEBUG = DEBUG, - - ADMINS = ADMINS, - - CACHE_BACKEND = 'locmem:///', - - MANAGERS = ADMINS, - - DATABASE_ENGINE = 'sqlite3', - DATABASE_NAME = 'cms.sqlite', - - TEST_DATABASE_CHARSET = "utf8", - TEST_DATABASE_COLLATION = "utf8_general_ci", - - DATABASE_SUPPORTS_TRANSACTIONS = True, - - TIME_ZONE = 'America/Chicago', - - SITE_ID = 1, - - USE_I18N = True, - - MEDIA_ROOT = MEDIA_ROOT, - - CMS_MEDIA_ROOT = CMS_MEDIA_ROOT, - - MEDIA_URL = '/media/', - - ADMIN_MEDIA_PREFIX = '/media/admin/', - - EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend', - - FIXTURE_DIRS = FIXTURE_DIRS, - - SECRET_KEY = '*xq7m@)*f2awoj!spa0(jibsrz9%c0d=e(g)v*!17y(vx0ue_3', - - TEMPLATE_LOADERS = ( - 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', - 'django.template.loaders.eggs.Loader', - ), - - TEMPLATE_CONTEXT_PROCESSORS = ( - "django.core.context_processors.auth", - "django.core.context_processors.i18n", - "django.core.context_processors.debug", - "django.core.context_processors.request", - "django.core.context_processors.media", - 'django.core.context_processors.csrf', - "cms.context_processors.media", - ), - - INTERNAL_IPS = ('127.0.0.1',), - - MIDDLEWARE_CLASSES = ( - 'django.contrib.sessions.middleware.SessionMiddleware', - 'cms.middleware.multilingual.MultilingualURLMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.doc.XViewMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'cms.middleware.media.PlaceholderMediaMiddleware', - 'cms.middleware.user.CurrentUserMiddleware', - 'cms.middleware.page.CurrentPageMiddleware', - 'cms.middleware.toolbar.ToolbarMiddleware', - - ), - - ROOT_URLCONF = 'cms.test.project.urls', - - TEMPLATE_DIRS = TEMPLATE_DIRS, - - INSTALLED_APPS = ( - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.admin', - 'django.contrib.sites', - - 'cms', - - 'cms.plugins.text', - 'cms.plugins.picture', - 'cms.plugins.file', - 'cms.plugins.flash', - 'cms.plugins.link', - 'cms.plugins.snippet', - 'cms.plugins.googlemap', - 'cms.plugins.teaser', - 'cms.plugins.video', - 'cms.plugins.twitter', - 'cms.plugins.inherit', - - 'cms.test.apps.sampleapp', - 'cms.test.apps.placeholderapp', - 'cms.test.apps.pluginapp', - 'cms.test.apps.pluginapp.plugins.manytomany_rel', - 'cms.test.apps.fakemlng', - - 'menus', - 'mptt', - 'reversion' - ), - - gettext = lambda s: s, - - LANGUAGE_CODE = "en", - - LANGUAGES = ( - ('en', gettext('English')), - ('fr', gettext('French')), - ('de', gettext('German')), - ('pt-BR', gettext("Brazil")), - ('nl', gettext("Dutch")), - ), - - CMS_LANGUAGE_CONF = { - 'de':['fr', 'en'], - 'en':['fr', 'de'], - }, - - CMS_SITE_LANGUAGES = { - 1:['en','de','fr','pt-BR'], - 2:['de','fr'], - 3:['nl'], - }, - - APPEND_SLASH = True, - - CMS_TEMPLATES = ( - ('col_two.html', gettext('two columns')), - ('col_three.html', gettext('three columns')), - ('nav_playground.html', gettext('navigation examples')), - ), - - CMS_PLACEHOLDER_CONF = { - 'col_sidebar': { - 'plugins': ('FilePlugin', 'FlashPlugin', 'LinkPlugin', 'PicturePlugin', - 'TextPlugin', 'SnippetPlugin'), - 'name': gettext("sidebar column"), - }, - - 'col_left': { - 'plugins': ('FilePlugin', 'FlashPlugin', 'LinkPlugin', 'PicturePlugin', - 'TextPlugin', 'SnippetPlugin','GoogleMapPlugin',), - 'name': gettext("left column"), - }, - - 'col_right': { - 'plugins': ('FilePlugin', 'FlashPlugin', 'LinkPlugin', 'PicturePlugin', - 'TextPlugin', 'SnippetPlugin','GoogleMapPlugin',), - 'name': gettext("right column"), - }, - 'extra_context': { - "plugins": ('TextPlugin',), - "extra_context": {"width": 250}, - "name": "extra context", - } - }, - - CMS_SOFTROOT = True, - CMS_MODERATOR = True, - CMS_PERMISSION = True, - CMS_REDIRECTS = True, - CMS_SEO_FIELDS = True, - CMS_FLAT_URLS = False, - CMS_MENU_TITLE_OVERWRITE = True, - CMS_HIDE_UNTRANSLATED = False, - CMS_URL_OVERWRITE = True, - - CMS_PLUGIN_PROCESSORS = tuple(), - - CMS_PLUGIN_CONTEXT_PROCESSORS = tuple(), - - SOUTH_TESTS_MIGRATE = False, - - CMS_NAVIGATION_EXTENDERS = ( - ('cms.test.project.sampleapp.menu_extender.get_nodes', 'SampleApp Menu'), - ), - - TEST_RUNNER = 'cms.test.project.testrunner.CMSTestSuiteRunner', - JUNIT_OUTPUT_DIR = JUNIT_OUTPUT_DIR - ) - - from cms.conf import patch_settings - patch_settings() - return test_args, test_labels, failfast, settings - -def run_tests(*test_args): - - test_args, test_labels, failfast, settings = configure_settings(True, test_args) - - from django.test.utils import get_runner - - failures = get_runner(settings)(verbosity=1, interactive=True, failfast=failfast).run_tests(test_labels) - sys.exit(failures) - -if __name__ == '__main__': - run_tests(*sys.argv[1:]) diff --git a/cms/test/util/__init__.py b/cms/test/util/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/cms/test/.coveragerc b/cms/test_utils/.coveragerc similarity index 100% rename from cms/test/.coveragerc rename to cms/test_utils/.coveragerc diff --git a/cms/test/__init__.py b/cms/test_utils/__init__.py similarity index 100% rename from cms/test/__init__.py rename to cms/test_utils/__init__.py diff --git a/cms/test/js_testcases.py b/cms/test_utils/js_testcases.py similarity index 100% rename from cms/test/js_testcases.py rename to cms/test_utils/js_testcases.py diff --git a/cms/test/testcases.py b/cms/test_utils/testcases.py similarity index 99% rename from cms/test/testcases.py rename to cms/test_utils/testcases.py index ec2f5d93b34..a9f2d264189 100644 --- a/cms/test/testcases.py +++ b/cms/test_utils/testcases.py @@ -5,7 +5,7 @@ from cms.models.permissionmodels import PagePermission, PageUser from cms.models.pluginmodel import CMSPlugin from cms.plugins.text.models import Text -from cms.test.util.context_managers import UserLoginContext, SettingsOverride +from cms.test_utils.util.context_managers import UserLoginContext, SettingsOverride from cms.utils.permissions import _thread_locals from django.conf import settings from django.contrib.auth.models import User, AnonymousUser diff --git a/cms/test/apps/__init__.py b/cms/test_utils/util/__init__.py similarity index 100% rename from cms/test/apps/__init__.py rename to cms/test_utils/util/__init__.py diff --git a/cms/test/util/context_managers.py b/cms/test_utils/util/context_managers.py similarity index 100% rename from cms/test/util/context_managers.py rename to cms/test_utils/util/context_managers.py diff --git a/cms/test/util/menu_extender.py b/cms/test_utils/util/menu_extender.py similarity index 100% rename from cms/test/util/menu_extender.py rename to cms/test_utils/util/menu_extender.py diff --git a/cms/test/util/mock.py b/cms/test_utils/util/mock.py similarity index 100% rename from cms/test/util/mock.py rename to cms/test_utils/util/mock.py diff --git a/cms/tests/admin.py b/cms/tests/admin.py index 1a28f3a80d5..9f3729492c2 100644 --- a/cms/tests/admin.py +++ b/cms/tests/admin.py @@ -5,9 +5,9 @@ from cms.admin.dialog.views import _form_class_selector from cms.models.pagemodel import Page from cms.models.permissionmodels import GlobalPagePermission -from cms.test import testcases as base -from cms.test.testcases import CMSTestCase, URL_CMS_PAGE_DELETE, URL_CMS_PAGE, URL_CMS_TRANSLATION_DELETE -from cms.test.util.context_managers import SettingsOverride +from cms.test_utils import testcases as base +from cms.test_utils.testcases import CMSTestCase, URL_CMS_PAGE_DELETE, URL_CMS_PAGE, URL_CMS_TRANSLATION_DELETE +from cms.test_utils.util.context_managers import SettingsOverride from django.contrib.auth.models import User, Permission from django.contrib.sites.models import Site from django.core.urlresolvers import reverse diff --git a/cms/tests/apphooks.py b/cms/tests/apphooks.py index 4506fa07299..6ecd4f46174 100644 --- a/cms/tests/apphooks.py +++ b/cms/tests/apphooks.py @@ -4,15 +4,15 @@ from cms.appresolver import applications_page_check, clear_app_resolvers from cms.models.titlemodels import Title -from cms.test.testcases import CMSTestCase -from cms.test.util.context_managers import SettingsOverride +from cms.test_utils.testcases import CMSTestCase +from cms.test_utils.util.context_managers import SettingsOverride from django.contrib.auth.models import User from django.core.urlresolvers import clear_url_caches, reverse import sys APP_NAME = 'SampleApp' -APP_MODULE = "cms.test.apps.sampleapp.cms_app" +APP_MODULE = "project.sampleapp.cms_app" class ApphooksTestCase(CMSTestCase): @@ -46,8 +46,8 @@ def test_02_implicit_apphooks(self): if APP_MODULE in sys.modules: del sys.modules[APP_MODULE] - apps = ['cms.test.apps.sampleapp'] - with SettingsOverride(INSTALLED_APPS=apps, ROOT_URLCONF='cms.test.project.urls_for_apphook_tests'): + apps = ['project.sampleapp'] + with SettingsOverride(INSTALLED_APPS=apps, ROOT_URLCONF='project.urls_for_apphook_tests'): apphook_pool.clear() hooks = apphook_pool.get_apphooks() app_names = [hook[0] for hook in hooks] @@ -60,7 +60,7 @@ def test_03_apphook_on_root(self): if APP_MODULE in sys.modules: del sys.modules[APP_MODULE] - with SettingsOverride(ROOT_URLCONF='cms.test.project.urls_for_apphook_tests'): + with SettingsOverride(ROOT_URLCONF='project.urls_for_apphook_tests'): apphook_pool.clear() superuser = User.objects.create_superuser('admin', 'admin@admin.com', 'admin') page = self.create_page(user=superuser, published=True) @@ -85,7 +85,7 @@ def test_04_get_page_for_apphook(self): if APP_MODULE in sys.modules: del sys.modules[APP_MODULE] - with SettingsOverride(ROOT_URLCONF='cms.test.project.second_urls_for_apphook_tests'): + with SettingsOverride(ROOT_URLCONF='project.second_urls_for_apphook_tests'): apphook_pool.clear() superuser = User.objects.create_superuser('admin', 'admin@admin.com', 'admin') diff --git a/cms/tests/docs.py b/cms/tests/docs.py index e821c9f4bb9..d739845527e 100644 --- a/cms/tests/docs.py +++ b/cms/tests/docs.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- from __future__ import with_statement -from cms.test.testcases import CMSTestCase -from cms.test.util.context_managers import TemporaryDirectory -from django.conf import settings +import cms +from cms.test_utils.testcases import CMSTestCase +from cms.test_utils.util.context_managers import TemporaryDirectory from sphinx.application import Sphinx import os try: @@ -10,8 +10,8 @@ except ImportError: from StringIO import StringIO -ROOT_DIR = os.path.join(settings.PROJECT_DIR, '..', '..', '..') -DOCS_DIR = os.path.join(ROOT_DIR, 'docs') +ROOT_DIR = os.path.dirname(cms.__file__) +DOCS_DIR = os.path.abspath(os.path.join(ROOT_DIR, '..', 'docs')) class DocsTestCase(CMSTestCase): diff --git a/cms/tests/forms.py b/cms/tests/forms.py index 667b99c2ff3..c804b60130f 100644 --- a/cms/tests/forms.py +++ b/cms/tests/forms.py @@ -4,8 +4,8 @@ from cms.admin.forms import PageUserForm from cms.forms.fields import PageSelectFormField, SuperLazyIterator from cms.forms.utils import get_site_choices, get_page_choices -from cms.test.testcases import CMSTestCase -from cms.test.util.context_managers import SettingsOverride +from cms.test_utils.testcases import CMSTestCase +from cms.test_utils.util.context_managers import SettingsOverride from django.contrib.auth.models import User from django.core.cache import cache diff --git a/cms/tests/javascript.py b/cms/tests/javascript.py index 44dbd9a23b3..a5a06edb34b 100644 --- a/cms/tests/javascript.py +++ b/cms/tests/javascript.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from cms.test.js_testcases import BaseJavascriptTestCase +from cms.test_utils.js_testcases import BaseJavascriptTestCase class JavascriptTestCase(BaseJavascriptTestCase): diff --git a/cms/tests/mail.py b/cms/tests/mail.py index e8c5f132714..ec9695bfa2a 100644 --- a/cms/tests/mail.py +++ b/cms/tests/mail.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from cms.test.testcases import CMSTestCase +from cms.test_utils.testcases import CMSTestCase from cms.utils.permissions import mail_page_user_change from django.core import mail diff --git a/cms/tests/menu.py b/cms/tests/menu.py index 3ea391a587a..5dc93e0cfe9 100644 --- a/cms/tests/menu.py +++ b/cms/tests/menu.py @@ -2,8 +2,8 @@ from __future__ import with_statement from cms.menu import CMSMenu from cms.models import Page -from cms.test.testcases import SettingsOverrideTestCase -from cms.test.util.mock import AttributeObject +from cms.test_utils.testcases import SettingsOverrideTestCase +from cms.test_utils.util.mock import AttributeObject from django.conf import settings from django.contrib.auth.models import User from django.template import Template diff --git a/cms/tests/middleware.py b/cms/tests/middleware.py index a1ae2d8f14c..8e0ea180125 100644 --- a/cms/tests/middleware.py +++ b/cms/tests/middleware.py @@ -2,8 +2,8 @@ from __future__ import with_statement from cms.middleware.multilingual import MultilingualURLMiddleware from cms.middleware.toolbar import inster_after_tag, ToolbarMiddleware -from cms.test.testcases import CMSTestCase -from cms.test.util.context_managers import SettingsOverride +from cms.test_utils.testcases import CMSTestCase +from cms.test_utils.util.context_managers import SettingsOverride class MiddlewareTestCase(CMSTestCase): diff --git a/cms/tests/multilingual.py b/cms/tests/multilingual.py index 02f32bcb600..986a8ccae3d 100644 --- a/cms/tests/multilingual.py +++ b/cms/tests/multilingual.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- from cms.middleware.multilingual import patch_response -from cms.test.testcases import CMSTestCase +from cms.test_utils.testcases import CMSTestCase from django.contrib.auth.models import User from django.core.urlresolvers import reverse import urllib diff --git a/cms/tests/navextender.py b/cms/tests/navextender.py index d0cced6abd8..ea3030266a9 100644 --- a/cms/tests/navextender.py +++ b/cms/tests/navextender.py @@ -1,13 +1,13 @@ # -*- coding: utf-8 -*- from __future__ import with_statement from cms.models import Page -from cms.test.testcases import CMSTestCase -from cms.test.util.menu_extender import TestMenu +from cms.test_utils.testcases import CMSTestCase +from cms.test_utils.util.menu_extender import TestMenu from django.conf import settings from django.contrib.auth.models import User from django.template import Template from menus.menu_pool import menu_pool -from cms.test.util.context_managers import SettingsOverride +from cms.test_utils.util.context_managers import SettingsOverride class NavExtenderTestCase(CMSTestCase): diff --git a/cms/tests/nonroot.py b/cms/tests/nonroot.py index 10348e7d823..f29afed55de 100644 --- a/cms/tests/nonroot.py +++ b/cms/tests/nonroot.py @@ -1,16 +1,16 @@ # -*- coding: utf-8 -*- from __future__ import with_statement from cms.models import Page -from cms.test.testcases import CMSTestCase +from cms.test_utils.testcases import CMSTestCase from django.conf import settings from django.contrib.auth.models import User from django.template import Template from menus.base import NavigationNode -from cms.test.util.context_managers import SettingsOverride +from cms.test_utils.util.context_managers import SettingsOverride class NonRootCase(CMSTestCase): - urls = 'cms.test.project.nonroot_urls' + urls = 'project.nonroot_urls' def setUp(self): with SettingsOverride(CMS_MODERATOR = False): diff --git a/cms/tests/page.py b/cms/tests/page.py index b53bc3fa112..906adb051a7 100644 --- a/cms/tests/page.py +++ b/cms/tests/page.py @@ -5,8 +5,8 @@ from cms.models.pluginmodel import CMSPlugin from cms.plugins.text.models import Text from cms.sitemaps import CMSSitemap -from cms.test.testcases import CMSTestCase, URL_CMS_PAGE, URL_CMS_PAGE_ADD -from cms.test.util.context_managers import LanguageOverride, SettingsOverride +from cms.test_utils.testcases import CMSTestCase, URL_CMS_PAGE, URL_CMS_PAGE_ADD +from cms.test_utils.util.context_managers import LanguageOverride, SettingsOverride from cms.utils.page_resolver import get_page_from_request from django.conf import settings from django.contrib.auth.models import User @@ -397,7 +397,7 @@ def test_23_get_page_from_request_with_page_preview(self): class NoAdminPageTests(CMSTestCase): - urls = 'cms.test.project.noadmin_urls' + urls = 'project.noadmin_urls' def setUp(self): admin = 'django.contrib.admin' diff --git a/cms/tests/permmod.py b/cms/tests/permmod.py index 8447c12ec9c..a8c7db6d805 100644 --- a/cms/tests/permmod.py +++ b/cms/tests/permmod.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from cms.models import Page, CMSPlugin from cms.models.moderatormodels import ACCESS_DESCENDANTS -from cms.test.testcases import CMSTestCase, URL_CMS_PAGE_ADD, URL_CMS_PLUGIN_REMOVE +from cms.test_utils.testcases import CMSTestCase, URL_CMS_PAGE_ADD, URL_CMS_PLUGIN_REMOVE from cms.utils.permissions import has_generic_permission from django.conf import settings from django.contrib.auth.models import User diff --git a/cms/tests/placeholder.py b/cms/tests/placeholder.py index 7942c0f5e31..4f43ecc286f 100644 --- a/cms/tests/placeholder.py +++ b/cms/tests/placeholder.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from cms.exceptions import DuplicatePlaceholderWarning from cms.models.placeholdermodel import Placeholder -from cms.test.testcases import CMSTestCase +from cms.test_utils.testcases import CMSTestCase from cms.utils.placeholder import PlaceholderNoAction, MLNGPlaceholderActions from cms.utils.plugins import get_placeholders from django.conf import settings @@ -10,8 +10,8 @@ from django.core.urlresolvers import reverse from django.template import TemplateSyntaxError, Template from django.template.context import Context, RequestContext -from cms.test.apps.fakemlng.models import Translations -from cms.test.apps.placeholderapp.models import Example1, Example2, Example3, Example4, \ +from project.fakemlng.models import Translations +from project.placeholderapp.models import Example1, Example2, Example3, Example4, \ Example5 diff --git a/cms/tests/plugins.py b/cms/tests/plugins.py index b1e8e448dab..795bfff7505 100644 --- a/cms/tests/plugins.py +++ b/cms/tests/plugins.py @@ -11,18 +11,18 @@ from cms.plugins.text.models import Text from cms.plugins.text.utils import plugin_tags_to_id_list, \ plugin_tags_to_admin_html -from cms.test.testcases import CMSTestCase, URL_CMS_PAGE, URL_CMS_PAGE_ADD, \ +from cms.test_utils.testcases import CMSTestCase, URL_CMS_PAGE, URL_CMS_PAGE_ADD, \ URL_CMS_PLUGIN_ADD, URL_CMS_PLUGIN_EDIT, URL_CMS_PAGE_CHANGE, \ URL_CMS_PLUGIN_REMOVE -from cms.test.util.context_managers import SettingsOverride +from cms.test_utils.util.context_managers import SettingsOverride from django.conf import settings from django.contrib.auth.models import User from django.core.files.uploadedfile import SimpleUploadedFile from django.forms.widgets import Media from django.template import RequestContext -from cms.test.apps.pluginapp.models import Article, Section -from cms.test.apps.pluginapp.plugins.manytomany_rel.models import ArticlePluginModel +from project.pluginapp.models import Article, Section +from project.pluginapp.plugins.manytomany_rel.models import ArticlePluginModel import os diff --git a/cms/tests/publisher.py b/cms/tests/publisher.py index f11287cff61..c58f8eb0220 100644 --- a/cms/tests/publisher.py +++ b/cms/tests/publisher.py @@ -2,8 +2,8 @@ from __future__ import with_statement from cms.management.commands import publisher_publish from cms.models.pagemodel import Page -from cms.test.testcases import CMSTestCase -from cms.test.util.context_managers import SettingsOverride, StdoutOverride +from cms.test_utils.testcases import CMSTestCase +from cms.test_utils.util.context_managers import SettingsOverride, StdoutOverride from django.contrib.auth.models import User from django.core.management.base import CommandError diff --git a/cms/tests/rendering.py b/cms/tests/rendering.py index 2a9ff4971bc..35eb5a21618 100644 --- a/cms/tests/rendering.py +++ b/cms/tests/rendering.py @@ -4,8 +4,8 @@ from cms.models import Page, Title, CMSPlugin from cms.plugin_rendering import render_plugins, PluginContext from cms.plugins.text.models import Text -from cms.test.testcases import CMSTestCase -from cms.test.util.context_managers import SettingsOverride, ChangeModel +from cms.test_utils.testcases import CMSTestCase +from cms.test_utils.util.context_managers import SettingsOverride, ChangeModel from django.conf import settings from django.contrib.auth.models import User from django.contrib.sites.models import Site diff --git a/cms/tests/reversion_tests.py b/cms/tests/reversion_tests.py index 33019d0630b..0a30f75e36f 100644 --- a/cms/tests/reversion_tests.py +++ b/cms/tests/reversion_tests.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from django.conf import settings from django.contrib.auth.models import User -from cms.test.testcases import CMSTestCase, URL_CMS_PAGE, URL_CMS_PAGE_ADD,\ +from cms.test_utils.testcases import CMSTestCase, URL_CMS_PAGE, URL_CMS_PAGE_ADD,\ URL_CMS_PLUGIN_ADD, URL_CMS_PLUGIN_EDIT, URL_CMS_PAGE_CHANGE from cms.models import Page from cms.plugins.text.models import Text diff --git a/cms/tests/settings.py b/cms/tests/settings.py index a5e15066e15..eed544da822 100644 --- a/cms/tests/settings.py +++ b/cms/tests/settings.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- from __future__ import with_statement from cms.conf.patch import post_patch -from cms.test.testcases import CMSTestCase -from cms.test.util.context_managers import SettingsOverride +from cms.test_utils.testcases import CMSTestCase +from cms.test_utils.util.context_managers import SettingsOverride class SettingsTests(CMSTestCase): diff --git a/cms/tests/site.py b/cms/tests/site.py index 6c0cf8277cd..7ad327efe28 100644 --- a/cms/tests/site.py +++ b/cms/tests/site.py @@ -3,8 +3,8 @@ from django.contrib.auth.models import User from django.contrib.sites.models import Site from cms.models import Page -from cms.test.testcases import CMSTestCase -from cms.test.util.context_managers import SettingsOverride +from cms.test_utils.testcases import CMSTestCase +from cms.test_utils.util.context_managers import SettingsOverride class SiteTestCase(CMSTestCase): """Site framework specific test cases. diff --git a/cms/tests/toolbar.py b/cms/tests/toolbar.py index 4bccc503d2b..ee16874efc0 100644 --- a/cms/tests/toolbar.py +++ b/cms/tests/toolbar.py @@ -1,6 +1,6 @@ from __future__ import with_statement -from cms.test.testcases import SettingsOverrideTestCase -from cms.test.util.context_managers import UserLoginContext, SettingsOverride +from cms.test_utils.testcases import SettingsOverrideTestCase +from cms.test_utils.util.context_managers import UserLoginContext, SettingsOverride from django.conf import settings diff --git a/cms/tests/urlutils.py b/cms/tests/urlutils.py index 0d2d4db4393..f224f4ba567 100644 --- a/cms/tests/urlutils.py +++ b/cms/tests/urlutils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import with_statement -from cms.test.testcases import CMSTestCase -from cms.test.util.context_managers import SettingsOverride +from cms.test_utils.testcases import CMSTestCase +from cms.test_utils.util.context_managers import SettingsOverride from cms.utils import urlutils diff --git a/cms/tests/views.py b/cms/tests/views.py index 875fbb9e06a..3d648f9a97e 100644 --- a/cms/tests/views.py +++ b/cms/tests/views.py @@ -1,7 +1,7 @@ from __future__ import with_statement from cms.apphook_pool import apphook_pool -from cms.test.testcases import SettingsOverrideTestCase -from cms.test.util.context_managers import SettingsOverride +from cms.test_utils.testcases import SettingsOverrideTestCase +from cms.test_utils.util.context_managers import SettingsOverride from cms.views import _handle_no_page, details from django.conf import settings from django.core.urlresolvers import clear_url_caches @@ -10,11 +10,11 @@ APP_NAME = 'SampleApp' -APP_MODULE = "cms.test.apps.sampleapp.cms_app" +APP_MODULE = "project.sampleapp.cms_app" class ViewTests(SettingsOverrideTestCase): - urls = 'cms.test.project.urls_for_apphook_tests' + urls = 'project.urls_for_apphook_tests' settings_overrides = {'CMS_MODERATOR': False} def setUp(self): diff --git a/runtests.sh b/runtests.sh index c82d1b79884..66dec6f7179 100755 --- a/runtests.sh +++ b/runtests.sh @@ -1,116 +1,104 @@ #!/bin/bash +cd tests args=("$@") num_args=${#args[@]} index=0 -quicktest=false -manage=false - +reuse_env=true +disable_coverage=true +django_trunk=false +python="python" # to ensure this script works if no python option is specified while [ "$index" -lt "$num_args" ] do -case "${args[$index]}" in + case "${args[$index]}" in "--failfast") failfast="--failfast" ;; + + "--rebuild-env") + reuse_env=false + ;; + + "--with-coverage") + disable_coverage=false + ;; - "--toxenv") - let "index = $index + 1" - toxenv="${args[$index]}" + "--django-trunk") + django_trunk=true ;; - - "--quicktest") - quicktest=true + + "--python") + let "index = $index + 1" + python="${args[$index]}" ;; - + "--help") echo "" echo "usage:" - echo " runtests.sh" - echo " or runtests.sh [testcase]" - echo " or runtests.sh [flags] [testcase]" + echo " runtests.sh" + echo " or runtests.sh [testcase]" + echo " or runtests.sh [flags] [testcase]" echo "" echo "flags:" - echo " --toxenv [tox-env]" - echo " eg. runtests.sh --toxenv py26-1.2.X,py26-trunk" - echo " possible envs:" - echo " defaultpython-defaultdjango - runs with default django and installed django version (default)" - echo " defaultpython-1.2.X, defaultpython-1.3.X, defaultpython-trunk," - echo " py25-1.2.X, py25-1.3.X, py25-trunk," - echo " py26-1.2.X, py26-1.3.X, py26-trunk," - echo " py27-1.2.X, py27-1.3.X, ALL" - echo "" - echo " --quicktest - use already built tox env, for running a simple test quickly" - echo " --failfast - abort at first failing test" - echo " --manage - run management shell" + echo " --failfast - abort at first failing test" + echo " --with-coverage - enables coverage" + echo " --rebuild-env - run buildout before the tests" + echo " --django-trunk - run tests against django trunk" + echo " --python /path/to/python - python version to use to run the tests" exit 1 ;; - - "--manage") - manage=true - ;; + *) - suite="${args[$index]}" + suite="cms.${args[$index]}" esac -let "index = $index + 1" + let "index = $index + 1" done +echo "using python at: $python" - -if [ ! "$toxenv" ]; then - toxenv='defaultpython-defaultdjango' -fi - - -OLD_IFS=IFS -IFS="," -tox_envs=( $toxenv ) -tox_len=${#tox_envs[@]} -IFS=OLD_IFS - -if [[ $quicktest == true || $manage == true ]]; then - if [[ $manage == true ]]; then - if [[ "$tox_len" -gt "1" || "$toxenv" == "ALL" ]]; then - echo "Cannot use multiple envs with --manage" - exit 1 - fi - if [ ! -d ".tox/$toxenv" ]; then - echo ".tox/$toxenv does not exist, run without --manage first" - exit 1 - fi - .tox/$toxenv/bin/python cms/test/run_shell.py --direct "$@" +if [ $reuse_env == false ]; then + echo "setting up test environment (this might take a while)..." + $python bootstrap.py + if [ $? != 0 ]; then + echo "bootstrap.py failed" exit 1 fi - if [ "$toxenv" == "ALL" ]; then - echo "Cannot use ALL with --quicktest" + if [ $django_trunk == true ]; then + ./bin/buildout -c django-svn.cfg + else + ./bin/buildout + fi + if [ $? != 0 ]; then + echo "bin/buildout failed" exit 1 fi - for tenv in ${tox_envs[@]}; do - if [ ! -d ".tox/$tenv" ]; then - echo ".tox/$tenv does not exist, run without --quicktest first" - exit 1 - fi - read -p "Hit any key to run tests in tox env $tenv" - echo "Running cms test $suite using $tenv" - # running tests without invoking tox to save time - if [ "$failfast" ]; then - echo "--failfast supplied, not using xmlrunner." - fi - .tox/$tenv/bin/python cms/test/run_tests.py --toxenv $tenv --direct $failfast $suite - retcode=$? - done else - if [ "$suite" ]; then - echo "Can only run specific suite with --quicktest" - fi - - if [ ! -f "toxinstall/bin/tox" ]; then - echo "Installing tox" - virtualenv toxinstall - toxinstall/bin/pip install -U tox - fi + echo "reusing current buildout environment" +fi + +if [ "$failfast" ]; then + echo "--failfast supplied, not using xmlrunner." +fi + +if [ ! "$suite" ]; then + suite="cms" echo "Running complete cms testsuite." - toxinstall/bin/tox -e $toxenv +else + echo "Running cms test $suite." +fi + +if [ $disable_coverage == false ]; then + ./bin/coverage run --rcfile=.coveragerc testapp/manage.py test $suite $failfast + retcode=$? + + echo "Post test actions..." + ./bin/coverage xml + ./bin/coverage html +else + ./bin/django test $suite $failfast retcode=$? fi -exit $retcode \ No newline at end of file +cd .. +echo "done" +exit $retcode diff --git a/tests/.coveragerc b/tests/.coveragerc new file mode 100644 index 00000000000..a42144e8ec1 --- /dev/null +++ b/tests/.coveragerc @@ -0,0 +1,10 @@ +[run] +branch = True +source = + cms + menus + publisher +omit = + ../*migrations* +[report] +precision = 2 diff --git a/tests/bootstrap.py b/tests/bootstrap.py new file mode 100644 index 00000000000..2ad879701a6 --- /dev/null +++ b/tests/bootstrap.py @@ -0,0 +1,121 @@ +############################################################################## +# +# Copyright (c) 2006 Zope Corporation and Contributors. +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# +############################################################################## +"""Bootstrap a buildout-based project + +Simply run this script in a directory containing a buildout.cfg. +The script accepts buildout command-line options, so you can +use the -c option to specify an alternate configuration file. + +$Id: bootstrap.py 105417 2009-11-01 15:15:20Z tarek $ +""" + +import os, shutil, sys, tempfile, urllib2 +from optparse import OptionParser + +tmpeggs = tempfile.mkdtemp() + +is_jython = sys.platform.startswith('java') + +# parsing arguments +parser = OptionParser() +parser.add_option("-v", "--version", dest="version", + help="use a specific zc.buildout version") +parser.add_option("-d", "--distribute", + action="store_true", dest="distribute", default=False, + help="Use Disribute rather than Setuptools.") + +parser.add_option("-c", None, action="store", dest="config_file", + help=("Specify the path to the buildout configuration " + "file to be used.")) + +options, args = parser.parse_args() + +# if -c was provided, we push it back into args for buildout' main function +if options.config_file is not None: + args += ['-c', options.config_file] + +if options.version is not None: + VERSION = '==%s' % options.version +else: + VERSION = '' + +USE_DISTRIBUTE = options.distribute +args = args + ['bootstrap'] + +to_reload = False +try: + import pkg_resources + if not hasattr(pkg_resources, '_distribute'): + to_reload = True + raise ImportError +except ImportError: + ez = {} + if USE_DISTRIBUTE: + exec urllib2.urlopen('http://python-distribute.org/distribute_setup.py' + ).read() in ez + ez['use_setuptools'](to_dir=tmpeggs, download_delay=0, no_fake=True) + else: + exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py' + ).read() in ez + ez['use_setuptools'](to_dir=tmpeggs, download_delay=0) + + if to_reload: + reload(pkg_resources) + else: + import pkg_resources + +if sys.platform == 'win32': + def quote(c): + if ' ' in c: + return '"%s"' % c # work around spawn lamosity on windows + else: + return c +else: + def quote (c): + return c + +cmd = 'from setuptools.command.easy_install import main; main()' +ws = pkg_resources.working_set + +if USE_DISTRIBUTE: + requirement = 'distribute' +else: + requirement = 'setuptools' + +if is_jython: + import subprocess + + assert subprocess.Popen([sys.executable] + ['-c', quote(cmd), '-mqNxd', + quote(tmpeggs), 'zc.buildout' + VERSION], + env=dict(os.environ, + PYTHONPATH= + ws.find(pkg_resources.Requirement.parse(requirement)).location + ), + ).wait() == 0 + +else: + assert os.spawnle( + os.P_WAIT, sys.executable, quote (sys.executable), + '-c', quote (cmd), '-mqNxd', quote (tmpeggs), 'zc.buildout' + VERSION, + dict(os.environ, + PYTHONPATH= + ws.find(pkg_resources.Requirement.parse(requirement)).location + ), + ) == 0 + +ws.add_entry(tmpeggs) +ws.require('zc.buildout' + VERSION) +import zc.buildout.buildout +zc.buildout.buildout.main(args) +shutil.rmtree(tmpeggs) diff --git a/tests/buildout.cfg b/tests/buildout.cfg new file mode 100644 index 00000000000..9c277761714 --- /dev/null +++ b/tests/buildout.cfg @@ -0,0 +1,36 @@ +[buildout] +parts = + python + django +eggs = + django-cms + coverage + unittest-xml-reporting + django-mptt + django-reversion + django-classy-tags + django + South + sphinx +develop = + ../ +versions = versions + +[python] +recipe = zc.recipe.egg +interpreter = python +eggs = ${buildout:eggs} +scripts = + coverage + + +[django] +recipe = djangorecipe +version = 1.2.5 +project = project +settings = settings +eggs = ${buildout:eggs} + +[versions] +coverage = 3.4 +unittest-xml-reporting = 1.0.3 diff --git a/tests/django-12.cfg b/tests/django-12.cfg new file mode 100644 index 00000000000..2989e1c6d98 --- /dev/null +++ b/tests/django-12.cfg @@ -0,0 +1,9 @@ +[buildout] +extends = buildout.cfg + +[django] +recipe = djangorecipe +version = 1.2.5 +project = project +settings = settings +eggs = ${buildout:eggs} \ No newline at end of file diff --git a/tests/django-13.cfg b/tests/django-13.cfg new file mode 100644 index 00000000000..9e722890087 --- /dev/null +++ b/tests/django-13.cfg @@ -0,0 +1,9 @@ +[buildout] +extends = buildout.cfg + +[django] +recipe = djangorecipe +version = http://code.djangoproject.com/svn/django/trunk/@15040 +project = project +settings = settings +eggs = ${buildout:eggs} \ No newline at end of file diff --git a/tests/django-trunk.cfg b/tests/django-trunk.cfg new file mode 100644 index 00000000000..35abff4ab51 --- /dev/null +++ b/tests/django-trunk.cfg @@ -0,0 +1,9 @@ +[buildout] +extends = buildout.cfg + +[django] +recipe = djangorecipe +version = trunk +project = project +settings = settings +eggs = ${buildout:eggs} \ No newline at end of file diff --git a/cms/test/apps/fakemlng/__init__.py b/tests/project/__init__.py similarity index 100% rename from cms/test/apps/fakemlng/__init__.py rename to tests/project/__init__.py diff --git a/cms/test/project/cms_urls_for_apphook_tests.py b/tests/project/cms_urls_for_apphook_tests.py similarity index 100% rename from cms/test/project/cms_urls_for_apphook_tests.py rename to tests/project/cms_urls_for_apphook_tests.py diff --git a/cms/test/apps/placeholderapp/__init__.py b/tests/project/fakemlng/__init__.py similarity index 100% rename from cms/test/apps/placeholderapp/__init__.py rename to tests/project/fakemlng/__init__.py diff --git a/cms/test/apps/fakemlng/fixtures/fakemlng.json b/tests/project/fakemlng/fixtures/fakemlng.json similarity index 100% rename from cms/test/apps/fakemlng/fixtures/fakemlng.json rename to tests/project/fakemlng/fixtures/fakemlng.json diff --git a/cms/test/apps/fakemlng/models.py b/tests/project/fakemlng/models.py similarity index 100% rename from cms/test/apps/fakemlng/models.py rename to tests/project/fakemlng/models.py diff --git a/cms/test/project/fixtures/menus.json b/tests/project/fixtures/menus.json similarity index 100% rename from cms/test/project/fixtures/menus.json rename to tests/project/fixtures/menus.json diff --git a/cms/test/project/manage.py b/tests/project/manage.py similarity index 100% rename from cms/test/project/manage.py rename to tests/project/manage.py diff --git a/cms/test/project/models.py b/tests/project/models.py similarity index 100% rename from cms/test/project/models.py rename to tests/project/models.py diff --git a/cms/test/project/noadmin_urls.py b/tests/project/noadmin_urls.py similarity index 100% rename from cms/test/project/noadmin_urls.py rename to tests/project/noadmin_urls.py diff --git a/cms/test/project/nonroot_urls.py b/tests/project/nonroot_urls.py similarity index 100% rename from cms/test/project/nonroot_urls.py rename to tests/project/nonroot_urls.py diff --git a/cms/test/apps/pluginapp/__init__.py b/tests/project/placeholderapp/__init__.py similarity index 100% rename from cms/test/apps/pluginapp/__init__.py rename to tests/project/placeholderapp/__init__.py diff --git a/cms/test/apps/placeholderapp/admin.py b/tests/project/placeholderapp/admin.py similarity index 98% rename from cms/test/apps/placeholderapp/admin.py rename to tests/project/placeholderapp/admin.py index 7e0fb1fe281..90e59cbb43f 100644 --- a/cms/test/apps/placeholderapp/admin.py +++ b/tests/project/placeholderapp/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin from cms.admin.placeholderadmin import PlaceholderAdmin -from cms.test.apps.placeholderapp.models import * +from project.placeholderapp.models import * class MixinAdmin(admin.ModelAdmin): diff --git a/cms/test/apps/placeholderapp/models.py b/tests/project/placeholderapp/models.py similarity index 100% rename from cms/test/apps/placeholderapp/models.py rename to tests/project/placeholderapp/models.py diff --git a/cms/test/apps/pluginapp/plugins/__init__.py b/tests/project/pluginapp/__init__.py similarity index 100% rename from cms/test/apps/pluginapp/plugins/__init__.py rename to tests/project/pluginapp/__init__.py diff --git a/cms/test/apps/pluginapp/models.py b/tests/project/pluginapp/models.py similarity index 100% rename from cms/test/apps/pluginapp/models.py rename to tests/project/pluginapp/models.py diff --git a/cms/test/apps/pluginapp/plugins/manytomany_rel/__init__.py b/tests/project/pluginapp/plugins/__init__.py similarity index 100% rename from cms/test/apps/pluginapp/plugins/manytomany_rel/__init__.py rename to tests/project/pluginapp/plugins/__init__.py diff --git a/cms/test/apps/sampleapp/__init__.py b/tests/project/pluginapp/plugins/manytomany_rel/__init__.py similarity index 100% rename from cms/test/apps/sampleapp/__init__.py rename to tests/project/pluginapp/plugins/manytomany_rel/__init__.py diff --git a/cms/test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py b/tests/project/pluginapp/plugins/manytomany_rel/cms_plugins.py similarity index 83% rename from cms/test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py rename to tests/project/pluginapp/plugins/manytomany_rel/cms_plugins.py index 8320cbf9682..82db15533c5 100644 --- a/cms/test/apps/pluginapp/plugins/manytomany_rel/cms_plugins.py +++ b/tests/project/pluginapp/plugins/manytomany_rel/cms_plugins.py @@ -3,8 +3,8 @@ from cms.plugin_base import CMSPluginBase from cms.plugin_pool import plugin_pool -from cms.test.apps.pluginapp.plugins.manytomany_rel.models import ArticlePluginModel -from cms.test.apps.pluginapp.models import Article +from project.pluginapp.plugins.manytomany_rel.models import ArticlePluginModel +from project.pluginapp.models import Article diff --git a/cms/test/apps/pluginapp/plugins/manytomany_rel/models.py b/tests/project/pluginapp/plugins/manytomany_rel/models.py similarity index 87% rename from cms/test/apps/pluginapp/plugins/manytomany_rel/models.py rename to tests/project/pluginapp/plugins/manytomany_rel/models.py index b25d01a727b..f13233b385f 100644 --- a/cms/test/apps/pluginapp/plugins/manytomany_rel/models.py +++ b/tests/project/pluginapp/plugins/manytomany_rel/models.py @@ -2,7 +2,7 @@ from cms.models import CMSPlugin -from cms.test.apps.pluginapp.models import Section +from project.pluginapp.models import Section class ArticlePluginModel(CMSPlugin): diff --git a/cms/test/project/__init__.py b/tests/project/sampleapp/__init__.py similarity index 100% rename from cms/test/project/__init__.py rename to tests/project/sampleapp/__init__.py diff --git a/cms/test/apps/sampleapp/admin.py b/tests/project/sampleapp/admin.py similarity index 81% rename from cms/test/apps/sampleapp/admin.py rename to tests/project/sampleapp/admin.py index 11976d3f50c..6c0365206c2 100644 --- a/cms/test/apps/sampleapp/admin.py +++ b/tests/project/sampleapp/admin.py @@ -1,6 +1,6 @@ from cms.admin.placeholderadmin import PlaceholderAdmin from django.contrib import admin -from cms.test.apps.sampleapp.models import Picture, Category +from project.sampleapp.models import Picture, Category class PictureInline(admin.StackedInline): model = Picture diff --git a/cms/test/apps/sampleapp/cms_app.py b/tests/project/sampleapp/cms_app.py similarity index 71% rename from cms/test/apps/sampleapp/cms_app.py rename to tests/project/sampleapp/cms_app.py index 3f8c62f18c4..83c742cb6e0 100644 --- a/cms/test/apps/sampleapp/cms_app.py +++ b/tests/project/sampleapp/cms_app.py @@ -1,11 +1,11 @@ from cms.app_base import CMSApp -from cms.test.apps.sampleapp.menu import SampleAppMenu +from project.sampleapp.menu import SampleAppMenu from cms.apphook_pool import apphook_pool from django.utils.translation import ugettext_lazy as _ class SampleApp(CMSApp): name = _("Sample App") - urls = ["cms.test.apps.sampleapp.urls"] + urls = ["project.sampleapp.urls"] menus = [SampleAppMenu] apphook_pool.register(SampleApp) diff --git a/cms/test/apps/sampleapp/media/sampleapp/img/gift.jpg b/tests/project/sampleapp/media/sampleapp/img/gift.jpg similarity index 100% rename from cms/test/apps/sampleapp/media/sampleapp/img/gift.jpg rename to tests/project/sampleapp/media/sampleapp/img/gift.jpg diff --git a/cms/test/apps/sampleapp/menu.py b/tests/project/sampleapp/menu.py similarity index 97% rename from cms/test/apps/sampleapp/menu.py rename to tests/project/sampleapp/menu.py index 400f935fec1..78539852523 100644 --- a/cms/test/apps/sampleapp/menu.py +++ b/tests/project/sampleapp/menu.py @@ -4,7 +4,7 @@ from django.utils.translation import ugettext_lazy as _ from menus.base import Menu, NavigationNode from menus.menu_pool import menu_pool -from cms.test.apps.sampleapp.models import Category +from project.sampleapp.models import Category class SampleAppMenu(Menu): diff --git a/cms/test/apps/sampleapp/models.py b/tests/project/sampleapp/models.py similarity index 100% rename from cms/test/apps/sampleapp/models.py rename to tests/project/sampleapp/models.py diff --git a/cms/test/apps/sampleapp/templates/sampleapp/category_view.html b/tests/project/sampleapp/templates/sampleapp/category_view.html similarity index 100% rename from cms/test/apps/sampleapp/templates/sampleapp/category_view.html rename to tests/project/sampleapp/templates/sampleapp/category_view.html diff --git a/cms/test/apps/sampleapp/templates/sampleapp/home.html b/tests/project/sampleapp/templates/sampleapp/home.html similarity index 100% rename from cms/test/apps/sampleapp/templates/sampleapp/home.html rename to tests/project/sampleapp/templates/sampleapp/home.html diff --git a/cms/test/apps/sampleapp/urls.py b/tests/project/sampleapp/urls.py similarity index 91% rename from cms/test/apps/sampleapp/urls.py rename to tests/project/sampleapp/urls.py index bbb3cfc5542..0a5e0b265d0 100644 --- a/cms/test/apps/sampleapp/urls.py +++ b/tests/project/sampleapp/urls.py @@ -4,7 +4,7 @@ Also used in cms.tests.ApphooksTestCase """ -urlpatterns = patterns('cms.test.apps.sampleapp.views', +urlpatterns = patterns('project.sampleapp.views', url(r'^$', 'sample_view', {'message': 'sample root page',}, name='sample-root'), url(r'^settings/$', 'sample_view', kwargs={'message': 'sample settings page'}, name='sample-settings'), url(r'^account/$', 'sample_view', {'message': 'sample account page'}, name='sample-account'), diff --git a/cms/test/apps/sampleapp/views.py b/tests/project/sampleapp/views.py similarity index 90% rename from cms/test/apps/sampleapp/views.py rename to tests/project/sampleapp/views.py index 9a7668b4a7c..0f83839bf86 100644 --- a/cms/test/apps/sampleapp/views.py +++ b/tests/project/sampleapp/views.py @@ -2,7 +2,7 @@ from django.http import Http404 from django.shortcuts import render_to_response from django.template.context import RequestContext -from cms.test.apps.sampleapp.models import Category +from project.sampleapp.models import Category def sample_view(request, **kw): context = RequestContext(request, kw) diff --git a/cms/test/project/second_cms_urls_for_apphook_tests.py b/tests/project/second_cms_urls_for_apphook_tests.py similarity index 100% rename from cms/test/project/second_cms_urls_for_apphook_tests.py rename to tests/project/second_cms_urls_for_apphook_tests.py diff --git a/cms/test/project/second_urls_for_apphook_tests.py b/tests/project/second_urls_for_apphook_tests.py similarity index 88% rename from cms/test/project/second_urls_for_apphook_tests.py rename to tests/project/second_urls_for_apphook_tests.py index 6898de26e39..b9a23a647ff 100644 --- a/cms/test/project/second_urls_for_apphook_tests.py +++ b/tests/project/second_urls_for_apphook_tests.py @@ -12,5 +12,5 @@ {'document_root': settings.CMS_MEDIA_ROOT, 'show_indexes': True}), url(r'^media/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), - url(r'^', include('cms.test.project.second_cms_urls_for_apphook_tests')), + url(r'^', include('project.second_cms_urls_for_apphook_tests')), ) diff --git a/cms/test/project/settings.py b/tests/project/settings.py similarity index 93% rename from cms/test/project/settings.py rename to tests/project/settings.py index ddcd811e49a..68a4c56ab92 100644 --- a/cms/test/project/settings.py +++ b/tests/project/settings.py @@ -71,7 +71,7 @@ ) -ROOT_URLCONF = 'testapp.urls' +ROOT_URLCONF = 'project.urls' TEMPLATE_DIRS = ( @@ -85,7 +85,6 @@ 'django.contrib.admin', 'django.contrib.sites', 'cms', - 'publisher', 'menus', 'cms.plugins.text', 'cms.plugins.picture', @@ -99,11 +98,11 @@ 'cms.plugins.twitter', 'cms.plugins.inherit', 'mptt', - 'testapp.sampleapp', - 'testapp.placeholderapp', - 'testapp.pluginapp', - 'testapp.pluginapp.plugins.manytomany_rel', - 'testapp.fakemlng', + 'project.sampleapp', + 'project.placeholderapp', + 'project.pluginapp', + 'project.pluginapp.plugins.manytomany_rel', + 'project.fakemlng', 'south', 'reversion', ) @@ -183,7 +182,7 @@ SOUTH_TESTS_MIGRATE = False CMS_NAVIGATION_EXTENDERS = ( - ('testapp.sampleapp.menu_extender.get_nodes', 'SampleApp Menu'), + ('project.sampleapp.menu_extender.get_nodes', 'SampleApp Menu'), ) try: @@ -191,4 +190,4 @@ except ImportError: pass -TEST_RUNNER = 'testapp.testrunner.CMSTestSuiteRunner' +TEST_RUNNER = 'project.testrunner.CMSTestSuiteRunner' diff --git a/cms/test/project/templates/404.html b/tests/project/templates/404.html similarity index 100% rename from cms/test/project/templates/404.html rename to tests/project/templates/404.html diff --git a/cms/test/project/templates/add_placeholder.html b/tests/project/templates/add_placeholder.html similarity index 100% rename from cms/test/project/templates/add_placeholder.html rename to tests/project/templates/add_placeholder.html diff --git a/cms/test/project/templates/base.html b/tests/project/templates/base.html similarity index 100% rename from cms/test/project/templates/base.html rename to tests/project/templates/base.html diff --git a/cms/test/project/templates/col_three.html b/tests/project/templates/col_three.html similarity index 100% rename from cms/test/project/templates/col_three.html rename to tests/project/templates/col_three.html diff --git a/cms/test/project/templates/col_two.html b/tests/project/templates/col_two.html similarity index 100% rename from cms/test/project/templates/col_two.html rename to tests/project/templates/col_two.html diff --git a/cms/test/project/templates/extra_context.html b/tests/project/templates/extra_context.html similarity index 100% rename from cms/test/project/templates/extra_context.html rename to tests/project/templates/extra_context.html diff --git a/cms/test/project/templates/menu/breadcrumb.html b/tests/project/templates/menu/breadcrumb.html similarity index 100% rename from cms/test/project/templates/menu/breadcrumb.html rename to tests/project/templates/menu/breadcrumb.html diff --git a/cms/test/project/templates/menu/language_chooser.html b/tests/project/templates/menu/language_chooser.html similarity index 100% rename from cms/test/project/templates/menu/language_chooser.html rename to tests/project/templates/menu/language_chooser.html diff --git a/cms/test/project/templates/menu/menu.html b/tests/project/templates/menu/menu.html similarity index 100% rename from cms/test/project/templates/menu/menu.html rename to tests/project/templates/menu/menu.html diff --git a/cms/test/project/templates/menu/sub_menu.html b/tests/project/templates/menu/sub_menu.html similarity index 100% rename from cms/test/project/templates/menu/sub_menu.html rename to tests/project/templates/menu/sub_menu.html diff --git a/cms/test/project/templates/menu/test_language_chooser.html b/tests/project/templates/menu/test_language_chooser.html similarity index 100% rename from cms/test/project/templates/menu/test_language_chooser.html rename to tests/project/templates/menu/test_language_chooser.html diff --git a/cms/test/project/templates/nav_playground.html b/tests/project/templates/nav_playground.html similarity index 100% rename from cms/test/project/templates/nav_playground.html rename to tests/project/templates/nav_playground.html diff --git a/cms/test/project/templates/placeholder_tests/base.html b/tests/project/templates/placeholder_tests/base.html similarity index 100% rename from cms/test/project/templates/placeholder_tests/base.html rename to tests/project/templates/placeholder_tests/base.html diff --git a/cms/test/project/templates/placeholder_tests/child.html b/tests/project/templates/placeholder_tests/child.html similarity index 100% rename from cms/test/project/templates/placeholder_tests/child.html rename to tests/project/templates/placeholder_tests/child.html diff --git a/cms/test/project/templates/placeholder_tests/outside.html b/tests/project/templates/placeholder_tests/outside.html similarity index 100% rename from cms/test/project/templates/placeholder_tests/outside.html rename to tests/project/templates/placeholder_tests/outside.html diff --git a/cms/test/project/templates/placeholder_tests/outside_base.html b/tests/project/templates/placeholder_tests/outside_base.html similarity index 100% rename from cms/test/project/templates/placeholder_tests/outside_base.html rename to tests/project/templates/placeholder_tests/outside_base.html diff --git a/cms/test/project/templates/placeholder_tests/test_eleven.html b/tests/project/templates/placeholder_tests/test_eleven.html similarity index 100% rename from cms/test/project/templates/placeholder_tests/test_eleven.html rename to tests/project/templates/placeholder_tests/test_eleven.html diff --git a/cms/test/project/templates/placeholder_tests/test_five.html b/tests/project/templates/placeholder_tests/test_five.html similarity index 100% rename from cms/test/project/templates/placeholder_tests/test_five.html rename to tests/project/templates/placeholder_tests/test_five.html diff --git a/cms/test/project/templates/placeholder_tests/test_four.html b/tests/project/templates/placeholder_tests/test_four.html similarity index 100% rename from cms/test/project/templates/placeholder_tests/test_four.html rename to tests/project/templates/placeholder_tests/test_four.html diff --git a/cms/test/project/templates/placeholder_tests/test_one.html b/tests/project/templates/placeholder_tests/test_one.html similarity index 100% rename from cms/test/project/templates/placeholder_tests/test_one.html rename to tests/project/templates/placeholder_tests/test_one.html diff --git a/cms/test/project/templates/placeholder_tests/test_seven.html b/tests/project/templates/placeholder_tests/test_seven.html similarity index 100% rename from cms/test/project/templates/placeholder_tests/test_seven.html rename to tests/project/templates/placeholder_tests/test_seven.html diff --git a/cms/test/project/templates/placeholder_tests/test_six.html b/tests/project/templates/placeholder_tests/test_six.html similarity index 100% rename from cms/test/project/templates/placeholder_tests/test_six.html rename to tests/project/templates/placeholder_tests/test_six.html diff --git a/cms/test/project/templates/placeholder_tests/test_three.html b/tests/project/templates/placeholder_tests/test_three.html similarity index 100% rename from cms/test/project/templates/placeholder_tests/test_three.html rename to tests/project/templates/placeholder_tests/test_three.html diff --git a/cms/test/project/templates/placeholder_tests/test_two.html b/tests/project/templates/placeholder_tests/test_two.html similarity index 100% rename from cms/test/project/templates/placeholder_tests/test_two.html rename to tests/project/templates/placeholder_tests/test_two.html diff --git a/cms/test/project/templates/sidebar_submenu.html b/tests/project/templates/sidebar_submenu.html similarity index 100% rename from cms/test/project/templates/sidebar_submenu.html rename to tests/project/templates/sidebar_submenu.html diff --git a/cms/test/project/templates/sidebar_submenu_root.html b/tests/project/templates/sidebar_submenu_root.html similarity index 100% rename from cms/test/project/templates/sidebar_submenu_root.html rename to tests/project/templates/sidebar_submenu_root.html diff --git a/cms/test/project/testrunner.py b/tests/project/testrunner.py similarity index 100% rename from cms/test/project/testrunner.py rename to tests/project/testrunner.py diff --git a/cms/test/project/urls.py b/tests/project/urls.py similarity index 100% rename from cms/test/project/urls.py rename to tests/project/urls.py diff --git a/cms/test/project/urls_for_apphook_tests.py b/tests/project/urls_for_apphook_tests.py similarity index 89% rename from cms/test/project/urls_for_apphook_tests.py rename to tests/project/urls_for_apphook_tests.py index 1f7b3fc7ee1..6add1520245 100644 --- a/cms/test/project/urls_for_apphook_tests.py +++ b/tests/project/urls_for_apphook_tests.py @@ -12,5 +12,5 @@ {'document_root': settings.CMS_MEDIA_ROOT, 'show_indexes': True}), url(r'^media/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), - url(r'^', include('cms.test.project.cms_urls_for_apphook_tests')), + url(r'^', include('project.cms_urls_for_apphook_tests')), ) diff --git a/tox.ini b/tox.ini deleted file mode 100644 index 95ddb924457..00000000000 --- a/tox.ini +++ /dev/null @@ -1,164 +0,0 @@ -[tox] -distribute = False -envlist = - defaultpython-defaultdjango - -[testenv] -commands = - coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --toxenv {envname} # get rid of --direct somehow - coverage xml -o coverage-{envname}.xml -sitepackages = False - -[testenv:defaultpython-defaultdjango] -sitepackages = True -deps = - unittest-xml-reporting==1.0.3 - coverage==3.4 - sphinx - -[testenv:defaultpython-1.2.X] -sitepackages = True -deps = - unittest-xml-reporting==1.0.3 - coverage==3.4 - sphinx - django==1.2.5 - -[testenv:py25-1.2.X] -basepython = python2.5 -deps = - unittest-xml-reporting==1.0.3 - coverage==3.4 - django-reversion - django-classy-tags - South - sphinx - django==1.2.5 - pysqlite - -[testenv:py26-1.2.X] -basepython = python2.6 -deps = - unittest-xml-reporting==1.0.3 - coverage==3.4 - django-reversion - django-classy-tags - South - sphinx - django==1.2.5 - pysqlite - -[testenv:py27-1.2.X] -basepython = python2.7 -deps = - django==1.2.5 - unittest-xml-reporting==1.0.3 - coverage==3.4 - django-reversion - django-classy-tags - South - sphinx - pysqlite - -[testenv:defaultpython-1.3.X] -commands = - coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --toxenv {envname} # get rid of --direct somehow - coverage xml -o coverage-{envname}.xml -sitepackages = True -deps = - unittest-xml-reporting==1.0.3 - coverage==3.4 - sphinx - http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz - -[testenv:py25-1.3.X] -basepython = python2.5 -deps = - unittest-xml-reporting==1.0.3 - django-reversion - coverage==3.4 - django-classy-tags - South - sphinx - http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz - pysqlite - -[testenv:py26-1.3.X] -basepython = python2.6 -deps = - unittest-xml-reporting==1.0.3 - django-reversion - coverage==3.4 - django-classy-tags - South - sphinx - http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz - pysqlite - -[testenv:py27-1.3.X] -basepython = python2.7 -deps = - unittest-xml-reporting==1.0.3 - coverage==3.4 - django-reversion - django-classy-tags - South - sphinx - http://media.djangoproject.com/releases/1.3/Django-1.3-beta-1.tar.gz - pysqlite - -[testenv:defaultpython-trunk] -commands = - pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django - coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --toxenv {envname} # get rid of --direct somehow - coverage xml -o coverage-{envname}.xml -sitepackages = True -deps = - unittest-xml-reporting==1.0.3 - coverage==3.4 - sphinx - -[testenv:py25-trunk] -commands = - pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django - coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --toxenv {envname} # get rid of --direct somehow - coverage xml -o coverage-{envname}.xml -basepython = python2.5 -deps = - unittest-xml-reporting==1.0.3 - coverage==3.4 - django-reversion - django-classy-tags - South - sphinx - pysqlite - -[testenv:py26-trunk] -commands = - pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django - coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --toxenv {envname} # get rid of --direct somehow - coverage xml -o coverage-{envname}.xml -basepython = python2.6 -deps = - unittest-xml-reporting==1.0.3 - django-reversion - coverage==3.4 - django-classy-tags - South - sphinx - pysqlite - -[testenv:py27-trunk] -commands = - pip install -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django - coverage run --rcfile=.coveragerc cms/test/run_tests.py --direct --toxenv {envname} # get rid of --direct somehow - coverage xml -o coverage-{envname}.xml -basepython = python2.7 -deps = - unittest-xml-reporting==1.0.3 - coverage==3.4 - django-reversion - django-classy-tags - South - sphinx - pysqlite \ No newline at end of file From 137fac40c6035b8cf4b35eec25dd3202835849b6 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Mon, 14 Feb 2011 15:29:10 +0100 Subject: [PATCH 072/689] better django switch for runtests.sh --- runtests.sh | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/runtests.sh b/runtests.sh index 66dec6f7179..18977c1b148 100755 --- a/runtests.sh +++ b/runtests.sh @@ -1,13 +1,16 @@ #!/bin/bash cd tests +sigfile=.buildoutsig + args=("$@") num_args=${#args[@]} index=0 reuse_env=true disable_coverage=true -django_trunk=false +django=12 + python="python" # to ensure this script works if no python option is specified while [ "$index" -lt "$num_args" ] do @@ -24,8 +27,9 @@ do disable_coverage=false ;; - "--django-trunk") - django_trunk=true + "--django") + let "index = $index + 1" + django="${args[$index]}" ;; "--python") @@ -44,7 +48,7 @@ do echo " --failfast - abort at first failing test" echo " --with-coverage - enables coverage" echo " --rebuild-env - run buildout before the tests" - echo " --django-trunk - run tests against django trunk" + echo " --django - run tests against a django version, options: 12, 13 or trunk" echo " --python /path/to/python - python version to use to run the tests" exit 1 ;; @@ -57,6 +61,20 @@ done echo "using python at: $python" +sig="py:$python;dj:$django$" + +oldsig="nosig" + +if [ -f $sigfile ]; then + oldsig=`cat $sigfile` +fi + +if [ "$oldsig" != "$sig" ]; then + reuse_env=false +fi + +echo $sig > $sigfile + if [ $reuse_env == false ]; then echo "setting up test environment (this might take a while)..." $python bootstrap.py @@ -64,11 +82,7 @@ if [ $reuse_env == false ]; then echo "bootstrap.py failed" exit 1 fi - if [ $django_trunk == true ]; then - ./bin/buildout -c django-svn.cfg - else - ./bin/buildout - fi + ./bin/buildout -c "django-$django.cfg" if [ $? != 0 ]; then echo "bin/buildout failed" exit 1 From 8a2c713137a41e5611278363fe640017e3cb2507 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Mon, 14 Feb 2011 15:31:57 +0100 Subject: [PATCH 073/689] fixed --with-coverage --- runtests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtests.sh b/runtests.sh index 18977c1b148..fe4a60dc4d4 100755 --- a/runtests.sh +++ b/runtests.sh @@ -103,7 +103,7 @@ else fi if [ $disable_coverage == false ]; then - ./bin/coverage run --rcfile=.coveragerc testapp/manage.py test $suite $failfast + ./bin/coverage run --rcfile=.coveragerc project/manage.py test $suite $failfast retcode=$? echo "Post test actions..." From 9a96ba45bb68ad4f9d1a4b1b14ad46dfff0d0cf7 Mon Sep 17 00:00:00 2001 From: Ionel Maries Cristian Date: Wed, 16 Feb 2011 13:49:38 -0800 Subject: [PATCH 074/689] Added a small fix so popups now work if you use nested TextPlugin-based plugins. --- cms/plugins/text/templates/cms/plugins/widgets/widget_lib.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cms/plugins/text/templates/cms/plugins/widgets/widget_lib.js b/cms/plugins/text/templates/cms/plugins/widgets/widget_lib.js index 59df7391f91..1231fae8ab9 100644 --- a/cms/plugins/text/templates/cms/plugins/widgets/widget_lib.js +++ b/cms/plugins/text/templates/cms/plugins/widgets/widget_lib.js @@ -46,7 +46,7 @@ function edit_plugin(obj_id) { // Pop up window for editing object. window.open("edit-plugin/" + obj_id + "/?_popup=1", - "Edit_plugin_object", + "Edit_plugin_object" + obj_id, "menubar=no,titlebar=no,toolbar=no,resizable=yes" + ",width=800,height=300,top=0,left=0,scrollbars=yes" + ",location=no" @@ -82,4 +82,3 @@ function get_editor(placeholder) { } return PlaceholderEditorRegistry.retrieveEditor(placeholder); } - From 69a40ff83f9308d0648c16dd3a6eccf013305101 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Fri, 18 Feb 2011 11:11:04 +0100 Subject: [PATCH 075/689] fixed Ionel Cristian Maries's name in AUTHORS --- AUTHORS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index ab7dba0ab9c..45dfe71939a 100644 --- a/AUTHORS +++ b/AUTHORS @@ -59,7 +59,7 @@ Contributors (in alphabetical order): * hysia * Ian Lewis * indexofire -* Ionel Maries Cristian +* Ionel Cristian Maries * Ivan Vershigora * izi * Jameel Al-Aziz From ab0b7fa059b3c5c602979c21be3c808f98f3edfc Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Fri, 18 Feb 2011 11:36:11 +0100 Subject: [PATCH 076/689] runtests.sh now removes all pyc files from the cms folders --- runtests.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/runtests.sh b/runtests.sh index fe4a60dc4d4..cbba7063608 100755 --- a/runtests.sh +++ b/runtests.sh @@ -1,4 +1,6 @@ #!/bin/bash +find . -name '*.pyc' -delete + cd tests sigfile=.buildoutsig From 0b0caf1b1e29aba552a1d7f9940844bb620d6f8a Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Fri, 4 Feb 2011 20:14:51 +0100 Subject: [PATCH 077/689] starting transition to sekizai --- cms/templatetags/cms_tags.py | 37 ++++++++++++------------------------ setup.py | 1 + 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/cms/templatetags/cms_tags.py b/cms/templatetags/cms_tags.py index 44b7af28419..af053599e40 100644 --- a/cms/templatetags/cms_tags.py +++ b/cms/templatetags/cms_tags.py @@ -13,12 +13,17 @@ from django.contrib.sites.models import Site from django.core.cache import cache from django.core.mail import mail_managers +from django.template.loader import render_to_string from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ from itertools import chain +from sekizai.settings import VARNAME +from sekizai.templatetags.sekizai_tags import RenderBlock, SekizaiParser import operator import re +CMS_PLUGIN_MEDIA_NAMESPACE = 'cms-plugins-media' + register = template.Library() def get_site_id(site): @@ -142,7 +147,8 @@ def get_placeholder_content(context, request, current_page, name, inherit): if not get_plugins(request, placeholder): continue if hasattr(request, 'placeholder_media'): - request.placeholder_media = reduce(operator.add, [request.placeholder_media, placeholder.get_media(request, context)]) + rendered_contents = render_to_string('cms/plugin_media.html', {'media': placeholder.get_media(request, context)}) + context[VARNAME][CMS_PLUGIN_MEDIA_NAMESPACE].append(rendered_contents) #request.placeholder_media += placeholder.get_media(request, context) content = render_placeholder(placeholder, context, name) if content: @@ -390,7 +396,7 @@ def get_kwargs(self, *args, **kwargs): register.tag('show_uncached_placeholder', ShowUncachedPlaceholderById) -class PluginsMedia(Tag): +class PluginsMedia(RenderBlock): """ This template node is used to output media for plugins. @@ -402,30 +408,11 @@ class PluginsMedia(Tag): eg: {% plugins_media "gallery" %} """ name = 'plugins_media' + options = Options( - Argument('page_lookup', required=False, default=None), + parser_class=SekizaiParser, ) - def render_tag(self, context, page_lookup): - if not 'request' in context: - return '' - request = context['request'] - from cms.plugins.utils import get_plugins_media - plugins_media = None - if page_lookup: - page = _get_page_by_untyped_arg(page_lookup, request, get_site_id(None)) - plugins_media = get_plugins_media(request, context, page) - else: - page = request.current_page - if page == "dummy": - return '' - # make sure the plugin cache is filled - plugins_media = get_plugins_media(request, context, request._current_page_cache) - if plugins_media: - return plugins_media.render() - else: - return u'' - - def __repr__(self): - return "" % getattr(self, 'name', '') + def render_tag(self, context, nodelist): + return super(PluginsMedia, self).render_tag(context, CMS_PLUGIN_MEDIA_NAMESPACE, nodelist) register.tag(PluginsMedia) \ No newline at end of file diff --git a/setup.py b/setup.py index 899446483b0..bd263e1da64 100644 --- a/setup.py +++ b/setup.py @@ -51,6 +51,7 @@ 'PIL>=1.1.6', 'south>=0.7.2', 'django-mptt>=0.4.2', + 'django-sekizai>=0.4.0', ], packages=find_packages(exclude=["example", "example.*","testdata","testdata.*"]), package_data={ From 31e3c1e114bc0fa7e211339395d3982d8c13dc61 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Fri, 4 Feb 2011 21:06:48 +0100 Subject: [PATCH 078/689] hopefully finished transition to sekizai --- cms/conf/patch.py | 5 ----- cms/middleware/media.py | 35 ----------------------------- cms/templates/cms/plugin_media.html | 7 ++++++ cms/templatetags/cms_tags.py | 5 ++++- 4 files changed, 11 insertions(+), 41 deletions(-) delete mode 100755 cms/middleware/media.py create mode 100644 cms/templates/cms/plugin_media.html diff --git a/cms/conf/patch.py b/cms/conf/patch.py index fb09bfef50a..071eb56e084 100644 --- a/cms/conf/patch.py +++ b/cms/conf/patch.py @@ -39,8 +39,3 @@ def post_patch_check(): if settings.CMS_PERMISSION and not 'cms.middleware.user.CurrentUserMiddleware' in settings.MIDDLEWARE_CLASSES: raise ImproperlyConfigured('CMS Permission system requires cms.middleware.user.CurrentUserMiddleware.\n' 'Please put it into your MIDDLEWARE_CLASSES in settings file') - if 'cms.middleware.media.PlaceholderMediaMiddleware' not in settings.MIDDLEWARE_CLASSES: - warn("The 'cms.middleware.media.PlaceholderMediaMiddleware' is not in " - "your MIDDLEWARE_CLASSES setting, it's your own responsiblity to " - "ensure all javascript and css files required by the plugins you " - "use are available to them.", Warning) \ No newline at end of file diff --git a/cms/middleware/media.py b/cms/middleware/media.py deleted file mode 100755 index 4dc4eb322fd..00000000000 --- a/cms/middleware/media.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -from cms.middleware.toolbar import HTML_TYPES -from cms.utils.urlutils import is_media_request -from django.forms.widgets import Media -from django.utils.encoding import smart_unicode - -def inster_before_tag(string, tag, insertion): - no_case = string.lower() - index = no_case.find("<%s" % tag.lower()) - if index > -1: - start_tag = index - return string[:start_tag] + insertion + string[start_tag:] - else: - return string - -class PlaceholderMediaMiddleware(object): - def inject_media(self, request, response): - if request.is_ajax(): - return False - if response.status_code != 200: - return False - if not response['Content-Type'].split(';')[0] in HTML_TYPES: - return False - if is_media_request(request): - return False - return True - - def process_request(self, request): - request.placeholder_media = Media() - - def process_response(self, request, response): - if self.inject_media(request, response) and hasattr(request,'placeholder_media'): - response.content = inster_before_tag(smart_unicode(response.content), - u'/head', smart_unicode(request.placeholder_media.render())) - return response diff --git a/cms/templates/cms/plugin_media.html b/cms/templates/cms/plugin_media.html new file mode 100644 index 00000000000..8a067655b83 --- /dev/null +++ b/cms/templates/cms/plugin_media.html @@ -0,0 +1,7 @@ +{% load sekizai_tags %} +{% for css in media.render_css %} + {% addtoblock namespace %}{{ css|safe }}{% endaddtoblock %} +{% endfor %} +{% for js in media.render_js %} + {% addtoblock namespace %}{{ js|safe }}{% endaddtoblock %} +{% endfor %} \ No newline at end of file diff --git a/cms/templatetags/cms_tags.py b/cms/templatetags/cms_tags.py index af053599e40..50b73f2d20b 100644 --- a/cms/templatetags/cms_tags.py +++ b/cms/templatetags/cms_tags.py @@ -147,7 +147,10 @@ def get_placeholder_content(context, request, current_page, name, inherit): if not get_plugins(request, placeholder): continue if hasattr(request, 'placeholder_media'): - rendered_contents = render_to_string('cms/plugin_media.html', {'media': placeholder.get_media(request, context)}) + rendered_contents = render_to_string('cms/plugin_media.html', { + 'media': placeholder.get_media(request, context), + 'namespace': CMS_PLUGIN_MEDIA_NAMESPACE, + }) context[VARNAME][CMS_PLUGIN_MEDIA_NAMESPACE].append(rendered_contents) #request.placeholder_media += placeholder.get_media(request, context) content = render_placeholder(placeholder, context, name) From fefeac2b6c3121947234b0ea0e7f5b0b6c02e69e Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Mon, 7 Feb 2011 13:59:39 +0100 Subject: [PATCH 079/689] more work on the sekizai integration --- cms/templatetags/cms_tags.py | 12 ++- cms/test/project/templates/media.html | 9 +++ cms/tests/plugins.py | 104 ++++++++++---------------- 3 files changed, 53 insertions(+), 72 deletions(-) create mode 100644 cms/test/project/templates/media.html diff --git a/cms/templatetags/cms_tags.py b/cms/templatetags/cms_tags.py index 50b73f2d20b..f9361a73b21 100644 --- a/cms/templatetags/cms_tags.py +++ b/cms/templatetags/cms_tags.py @@ -146,13 +146,11 @@ def get_placeholder_content(context, request, current_page, name, inherit): continue if not get_plugins(request, placeholder): continue - if hasattr(request, 'placeholder_media'): - rendered_contents = render_to_string('cms/plugin_media.html', { - 'media': placeholder.get_media(request, context), - 'namespace': CMS_PLUGIN_MEDIA_NAMESPACE, - }) - context[VARNAME][CMS_PLUGIN_MEDIA_NAMESPACE].append(rendered_contents) - #request.placeholder_media += placeholder.get_media(request, context) + rendered_contents = render_to_string('cms/plugin_media.html', { + 'media': placeholder.get_media(request, context), + 'namespace': CMS_PLUGIN_MEDIA_NAMESPACE, + }) + context[VARNAME][CMS_PLUGIN_MEDIA_NAMESPACE].append(rendered_contents) content = render_placeholder(placeholder, context, name) if content: return content diff --git a/cms/test/project/templates/media.html b/cms/test/project/templates/media.html new file mode 100644 index 00000000000..caa74167e91 --- /dev/null +++ b/cms/test/project/templates/media.html @@ -0,0 +1,9 @@ +{% load cms_tags %} + + +{% plugins_media %} + + +{% placeholder "body" %} + + \ No newline at end of file diff --git a/cms/tests/plugins.py b/cms/tests/plugins.py index 795bfff7505..52236db468f 100644 --- a/cms/tests/plugins.py +++ b/cms/tests/plugins.py @@ -6,7 +6,6 @@ from cms.plugin_base import CMSPluginBase from cms.plugin_pool import plugin_pool from cms.plugins.file.models import File -from cms.plugins.googlemap.models import GoogleMap from cms.plugins.inherit.models import InheritPagePlaceholder from cms.plugins.text.models import Text from cms.plugins.text.utils import plugin_tags_to_id_list, \ @@ -25,8 +24,6 @@ from project.pluginapp.plugins.manytomany_rel.models import ArticlePluginModel import os - - class DumbFixturePlugin(CMSPluginBase): model = CMSPlugin @@ -52,40 +49,7 @@ def setUp(self): self.FIRST_LANG = settings.LANGUAGES[0][0] self.SECOND_LANG = settings.LANGUAGES[1][0] - -# REFACTOR - the publish and appove methods exist in this file and in permmod.py - should they be in base? - def publish_page(self, page, approve=False, user=None, published_check=True): - if user: - self.login_user(user) - - # publish / approve page by master - response = self.client.post(URL_CMS_PAGE + "%d/change-status/" % page.pk, {1 :1}) - self.assertEqual(response.status_code, 200) - - if not approve: - return self.reload_page(page) - # approve - page = self.approve_page(page) - - if published_check: - # must have public object now - assert(page.publisher_public) - # and public object must be published - assert(page.publisher_public.published) - - return page - - def approve_page(self, page): - response = self.client.get(URL_CMS_PAGE + "%d/approve/" % page.pk) - self.assertRedirects(response, URL_CMS_PAGE) - # reload page - return self.reload_page(page) - - def get_request(self, *args, **kwargs): - request = super(PluginsTestBaseCase, self).get_request(*args, **kwargs) - request.placeholder_media = Media() - return request class PluginsTestCase(PluginsTestBaseCase): @@ -329,38 +293,48 @@ def test_08_unregister_non_existing_plugin_should_raise(self): number_of_plugins_after = len(plugin_pool.get_all_plugins()) self.assertEqual(number_of_plugins_before, number_of_plugins_after) - def test_09_iheritplugin_media(self): + def test_09_inheritplugin_media(self): """ Test case for InheritPagePlaceholder """ - inheritfrompage = self.create_page(title='page to inherit from') - - body = inheritfrompage.placeholders.get(slot="body") - - plugin = GoogleMap( - plugin_type='GoogleMapPlugin', - placeholder=body, - position=1, - language=settings.LANGUAGE_CODE, lat=1, lng=1) - plugin.insert_at(None, position='last-child', save=True) - - page = self.create_page(title='inherit from page') - - inherited_body = page.placeholders.get(slot="body") - - inherit_plugin = InheritPagePlaceholder( - plugin_type='InheritPagePlaceholderPlugin', - placeholder=inherited_body, - position=1, - language=settings.LANGUAGE_CODE, - from_page=inheritfrompage, - from_language=settings.LANGUAGE_CODE) - inherit_plugin.insert_at(None, position='last-child', save=True) - - request = self.get_request() - context = RequestContext(request, {}) - inherit_plugin.render_plugin(context, inherited_body) - self.assertEquals(unicode(request.placeholder_media).find('maps.google.com') != -1, True) + with SettingsOverride(CMS_MODERATOR=False): + inheritfrompage = self.create_page( + title='page to inherit from', + template='media.html' + ) + + body = inheritfrompage.placeholders.get(slot="body") + + plugin = TwitterRecentEntries( + plugin_type='TwitterRecentEntriesPlugin', + placeholder=body, + position=1, + language=settings.LANGUAGE_CODE, + twitter_user='djangocms', + ) + plugin.insert_at(None, position='last-child', save=True) + + page = self.create_page( + title='inherit from page', + published=True, + template='media.html', + ) + + inherited_body = page.placeholders.get(slot="body") + + inherit_plugin = InheritPagePlaceholder( + plugin_type='InheritPagePlaceholderPlugin', + placeholder=inherited_body, + position=1, + language=settings.LANGUAGE_CODE, + from_page=inheritfrompage, + from_language=settings.LANGUAGE_CODE) + inherit_plugin.insert_at(None, position='last-child', save=True) + + self.client.logout() + response = self.client.get(page.get_absolute_url()) + print response.content + self.assertTrue('http://twitter.com/javascripts/blogger.js' in response.content) def test_10_fileplugin_icon_uppercase(self): page = self.create_page(title='testpage') From c1417815be2e155f16a04f3a265403d463ea3907 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Fri, 18 Feb 2011 20:21:04 +0100 Subject: [PATCH 080/689] Added sekizai namespace checker --- cms/conf/patch.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/cms/conf/patch.py b/cms/conf/patch.py index 071eb56e084..37125e562e3 100644 --- a/cms/conf/patch.py +++ b/cms/conf/patch.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- from django.conf import settings -from django.utils.translation import ugettext_lazy as _ from django.core.exceptions import ImproperlyConfigured +from django.utils.translation import ugettext_lazy as _ +from sekizai.helpers import validate_template from warnings import warn def pre_patch(): @@ -39,3 +40,12 @@ def post_patch_check(): if settings.CMS_PERMISSION and not 'cms.middleware.user.CurrentUserMiddleware' in settings.MIDDLEWARE_CLASSES: raise ImproperlyConfigured('CMS Permission system requires cms.middleware.user.CurrentUserMiddleware.\n' 'Please put it into your MIDDLEWARE_CLASSES in settings file') + + # check sekizai namespaces + for template in settings.CMS_TEMPLATES: + if not validate_template(template[0], ['js', 'css']): + raise ImproperlyConfigured( + "All templates defined in CMS_TEMPLATES must have at least the " + "'js' and 'css' sekizai namespaces. The template %r does not. " + % template[0] + ) From 75182472936b056c1760a816723dc16a82638340 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Fri, 18 Feb 2011 22:18:49 +0100 Subject: [PATCH 081/689] sekizai & passing tests --- cms/conf/patch.py | 6 ++++++ cms/templatetags/cms_tags.py | 24 +-------------------- cms/tests/__init__.py | 21 +++++++++--------- cms/tests/plugins.py | 24 +++++++++++++-------- setup.py | 4 ++-- tests/project/settings.py | 3 ++- tests/project/templates/base.html | 5 +++-- tests/project/templates/nav_playground.html | 5 +++-- 8 files changed, 43 insertions(+), 49 deletions(-) diff --git a/cms/conf/patch.py b/cms/conf/patch.py index 37125e562e3..3faf957b46c 100644 --- a/cms/conf/patch.py +++ b/cms/conf/patch.py @@ -42,7 +42,13 @@ def post_patch_check(): 'Please put it into your MIDDLEWARE_CLASSES in settings file') # check sekizai namespaces + try: + from django.template.loaders.app_directories import Loader + except ImportError: + return # south... for template in settings.CMS_TEMPLATES: + if template[0] == settings.CMS_TEMPLATE_INHERITANCE_MAGIC: + continue if not validate_template(template[0], ['js', 'css']): raise ImproperlyConfigured( "All templates defined in CMS_TEMPLATES must have at least the " diff --git a/cms/templatetags/cms_tags.py b/cms/templatetags/cms_tags.py index f9361a73b21..7471288a60e 100644 --- a/cms/templatetags/cms_tags.py +++ b/cms/templatetags/cms_tags.py @@ -394,26 +394,4 @@ def get_kwargs(self, *args, **kwargs): kwargs['cache_result'] = True return kwargs register.tag(ShowUncachedPlaceholderById) -register.tag('show_uncached_placeholder', ShowUncachedPlaceholderById) - - -class PluginsMedia(RenderBlock): - """ - This template node is used to output media for plugins. - - eg: {% plugins_media %} - - You can also pass the object a page_lookup arg if you want to output media tags for a specific - page other than the current page. - - eg: {% plugins_media "gallery" %} - """ - name = 'plugins_media' - - options = Options( - parser_class=SekizaiParser, - ) - - def render_tag(self, context, nodelist): - return super(PluginsMedia, self).render_tag(context, CMS_PLUGIN_MEDIA_NAMESPACE, nodelist) -register.tag(PluginsMedia) \ No newline at end of file +register.tag('show_uncached_placeholder', ShowUncachedPlaceholderById) \ No newline at end of file diff --git a/cms/tests/__init__.py b/cms/tests/__init__.py index cced1e74723..637a9a5ea0f 100644 --- a/cms/tests/__init__.py +++ b/cms/tests/__init__.py @@ -2,25 +2,26 @@ from cms.tests.admin import AdminTestCase from cms.tests.apphooks import ApphooksTestCase from cms.tests.docs import DocsTestCase +from cms.tests.forms import FormsTestCase +from cms.tests.mail import MailTestCase from cms.tests.menu import FixturesMenuTests, MenuTests, AdvancedSoftrootTests +from cms.tests.middleware import MiddlewareTestCase +from cms.tests.multilingual import MultilingualTestCase from cms.tests.navextender import NavExtenderTestCase from cms.tests.nonroot import NonRootCase from cms.tests.page import PagesTestCase, NoAdminPageTests from cms.tests.permmod import PermissionModeratorTestCase -from cms.tests.placeholder import PlaceholderTestCase, PlaceholderActionTests -from cms.tests.placeholder import PlaceholderModelTests -from cms.tests.plugins import PluginManyToManyTestCase, PluginsTestCase +from cms.tests.placeholder import (PlaceholderModelTests, PlaceholderTestCase, + PlaceholderActionTests) +from cms.tests.plugins import (PluginManyToManyTestCase, PluginsTestCase, + SekizaiTests) +from cms.tests.publisher import PublisherTestCase from cms.tests.rendering import RenderingTestCase from cms.tests.reversion_tests import ReversionTestCase -from cms.tests.site import SiteTestCase -from cms.tests.urlutils import UrlutilsTestCase -from cms.tests.publisher import PublisherTestCase -from cms.tests.multilingual import MultilingualTestCase -from cms.tests.mail import MailTestCase from cms.tests.settings import SettingsTests -from cms.tests.forms import FormsTestCase +from cms.tests.site import SiteTestCase from cms.tests.toolbar import ToolbarTests -from cms.tests.middleware import MiddlewareTestCase +from cms.tests.urlutils import UrlutilsTestCase from cms.tests.views import ViewTests try: from cms.tests.javascript import JavascriptTestCase diff --git a/cms/tests/plugins.py b/cms/tests/plugins.py index 52236db468f..5db4eff3552 100644 --- a/cms/tests/plugins.py +++ b/cms/tests/plugins.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- from __future__ import with_statement +from cms.conf.patch import post_patch_check from cms.exceptions import PluginAlreadyRegistered, PluginNotRegistered from cms.models import Page, Placeholder from cms.models.pluginmodel import CMSPlugin @@ -8,23 +9,25 @@ from cms.plugins.file.models import File from cms.plugins.inherit.models import InheritPagePlaceholder from cms.plugins.text.models import Text -from cms.plugins.text.utils import plugin_tags_to_id_list, \ - plugin_tags_to_admin_html -from cms.test_utils.testcases import CMSTestCase, URL_CMS_PAGE, URL_CMS_PAGE_ADD, \ - URL_CMS_PLUGIN_ADD, URL_CMS_PLUGIN_EDIT, URL_CMS_PAGE_CHANGE, \ - URL_CMS_PLUGIN_REMOVE +from cms.plugins.text.utils import (plugin_tags_to_id_list, + plugin_tags_to_admin_html) +from cms.plugins.twitter.models import TwitterRecentEntries +from cms.test_utils.testcases import (CMSTestCase, URL_CMS_PAGE, URL_CMS_PAGE_ADD, + URL_CMS_PLUGIN_ADD, URL_CMS_PLUGIN_EDIT, URL_CMS_PAGE_CHANGE, + URL_CMS_PLUGIN_REMOVE) from cms.test_utils.util.context_managers import SettingsOverride - from django.conf import settings from django.contrib.auth.models import User from django.core.files.uploadedfile import SimpleUploadedFile from django.forms.widgets import Media from django.template import RequestContext +from django.test.testcases import TestCase from project.pluginapp.models import Article, Section from project.pluginapp.plugins.manytomany_rel.models import ArticlePluginModel import os + class DumbFixturePlugin(CMSPluginBase): model = CMSPlugin name = "Dumb Test Plugin. It does nothing." @@ -300,7 +303,7 @@ def test_09_inheritplugin_media(self): with SettingsOverride(CMS_MODERATOR=False): inheritfrompage = self.create_page( title='page to inherit from', - template='media.html' + template='nav_playground.html' ) body = inheritfrompage.placeholders.get(slot="body") @@ -317,7 +320,7 @@ def test_09_inheritplugin_media(self): page = self.create_page( title='inherit from page', published=True, - template='media.html', + template='nav_playground.html', ) inherited_body = page.placeholders.get(slot="body") @@ -333,7 +336,6 @@ def test_09_inheritplugin_media(self): self.client.logout() response = self.client.get(page.get_absolute_url()) - print response.content self.assertTrue('http://twitter.com/javascripts/blogger.js' in response.content) def test_10_fileplugin_icon_uppercase(self): @@ -607,3 +609,7 @@ def test_03_copy_plugin_with_m2m(self): expected = [self.section_count for i in range(len(db_counts))] self.assertEqual(expected, db_counts) + +class SekizaiTests(TestCase): + def test_post_patch_check(self): + post_patch_check() \ No newline at end of file diff --git a/setup.py b/setup.py index bd263e1da64..cec4fdbd912 100644 --- a/setup.py +++ b/setup.py @@ -47,11 +47,11 @@ classifiers=CLASSIFIERS, install_requires=[ 'Django>=1.2', - 'django-classy-tags>=0.2.2', + 'django-classy-tags>=0.3.0', 'PIL>=1.1.6', 'south>=0.7.2', 'django-mptt>=0.4.2', - 'django-sekizai>=0.4.0', + 'django-sekizai>=0.4.1', ], packages=find_packages(exclude=["example", "example.*","testdata","testdata.*"]), package_data={ diff --git a/tests/project/settings.py b/tests/project/settings.py index 68a4c56ab92..da1a580b04c 100644 --- a/tests/project/settings.py +++ b/tests/project/settings.py @@ -53,6 +53,7 @@ "django.core.context_processors.media", 'django.core.context_processors.csrf', "cms.context_processors.media", + "sekizai.context_processors.sekizai", ) INTERNAL_IPS = ('127.0.0.1',) @@ -64,7 +65,6 @@ 'django.middleware.common.CommonMiddleware', 'django.middleware.doc.XViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', - 'cms.middleware.media.PlaceholderMediaMiddleware', 'cms.middleware.user.CurrentUserMiddleware', 'cms.middleware.page.CurrentPageMiddleware', 'cms.middleware.toolbar.ToolbarMiddleware', @@ -105,6 +105,7 @@ 'project.fakemlng', 'south', 'reversion', + 'sekizai', ) gettext = lambda s: s diff --git a/tests/project/templates/base.html b/tests/project/templates/base.html index 29f0be1e902..589e4f82278 100644 --- a/tests/project/templates/base.html +++ b/tests/project/templates/base.html @@ -1,4 +1,4 @@ -{% load i18n cms_tags menu_tags%} +{% load i18n cms_tags menu_tags sekizai_tags %} @@ -7,7 +7,7 @@ - {% plugins_media %} + {% render_block "css" %} @@ -38,5 +38,6 @@ {% block content %}{% endblock content %}
  • +{% render_block "js" %} \ No newline at end of file diff --git a/tests/project/templates/nav_playground.html b/tests/project/templates/nav_playground.html index d75fa180a80..470860c38e8 100644 --- a/tests/project/templates/nav_playground.html +++ b/tests/project/templates/nav_playground.html @@ -1,11 +1,11 @@ -{% load cache cms_tags menu_tags %} +{% load cache cms_tags menu_tags sekizai_tags %} {% page_attribute page_title %} -{% plugins_media %} +{% render_block "css" %} +{% endaddtoblock %} + +
    + {% if object.get_title %}

    {{ object.get_title }}

    {% endif %} + + +
    + + {% if object.route_planer %} + +
    +

    {{ object.route_planer_title }}:

    +

    + + + + +

    +
    + + {% endif %} +
    \ No newline at end of file From edba3f440e183689049fb75d692251b687a4e96d Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Thu, 24 Feb 2011 11:10:41 +0100 Subject: [PATCH 120/689] Added tests for some menu_utils --- cms/tests/__init__.py | 1 + cms/tests/menu_utils.py | 61 ++++++++++++++++++++++++++++++++ menus/templatetags/menu_tags.py | 2 +- menus/utils.py | 17 ++------- tests/project/sampleapp/views.py | 2 ++ 5 files changed, 68 insertions(+), 15 deletions(-) create mode 100644 cms/tests/menu_utils.py diff --git a/cms/tests/__init__.py b/cms/tests/__init__.py index a88e51cd336..35339c0bcd2 100644 --- a/cms/tests/__init__.py +++ b/cms/tests/__init__.py @@ -24,6 +24,7 @@ from cms.tests.views import ViewTests from cms.tests.security import SecurityTests from cms.tests.po import PoTest +from cms.tests.menu_utils import MenuUtilsTests try: from cms.tests.javascript import JavascriptTestCase diff --git a/cms/tests/menu_utils.py b/cms/tests/menu_utils.py new file mode 100644 index 00000000000..b1fcccfb672 --- /dev/null +++ b/cms/tests/menu_utils.py @@ -0,0 +1,61 @@ +from cms.test_utils.testcases import CMSTestCase +from cms.test_utils.util.mock import AttributeObject +from django.http import HttpResponse +from menus.templatetags.menu_tags import PageLanguageUrl +from menus.utils import (simple_language_changer, find_selected, + language_changer_decorator) + + +class DumbPageLanguageUrl(PageLanguageUrl): + def __init__(self): pass + +class MenuUtilsTests(CMSTestCase): + def get_simple_view(self): + def myview(request): + return HttpResponse('') + return myview + + def test_simple_language_changer(self): + func = self.get_simple_view() + decorated_view = simple_language_changer(func) + # check we maintain the view name + self.assertEqual(func.__name__, decorated_view.__name__) + request = self.get_request('/', 'en') + response = decorated_view(request) + self.assertEqual(response.content, '') + fake_context = {'request': request} + tag = DumbPageLanguageUrl() + output = tag.get_context(fake_context, 'en') + url = output['content'] + self.assertEqual(url, '/en/') + output = tag.get_context(fake_context, 'ja') + url = output['content'] + self.assertEqual(url, '/ja/') + + def test_language_changer_decorator(self): + def lang_changer(lang): + return "/dummy/" + decorated_view = language_changer_decorator(lang_changer)(self.get_simple_view()) + request = self.get_request('/some/path/', 'en') + response = decorated_view(request) + self.assertEqual(response.content, '') + fake_context = {'request': request} + tag = DumbPageLanguageUrl() + output = tag.get_context(fake_context, 'en') + url = output['content'] + self.assertEqual(url, '/en/dummy/') + output = tag.get_context(fake_context, 'ja') + url = output['content'] + self.assertEqual(url, '/ja/dummy/') + + + def test_find_selected(self): + subchild = AttributeObject() + firstchild = AttributeObject(ancestor=True, children=[subchild]) + selectedchild = AttributeObject(selected=True) + secondchild = AttributeObject(ancestor=True, children=[selectedchild]) + root = AttributeObject(ancestor=True, children=[firstchild, secondchild]) + nodes = [root] + selected = find_selected(nodes) + self.assertEqual(selected, selectedchild) + \ No newline at end of file diff --git a/menus/templatetags/menu_tags.py b/menus/templatetags/menu_tags.py index 2cfd25671d1..636bbc67b34 100644 --- a/menus/templatetags/menu_tags.py +++ b/menus/templatetags/menu_tags.py @@ -357,7 +357,7 @@ def get_context(self, context, lang): else: page = request.current_page if page == "dummy": - return '' + return {'content': ''} try: url = page.get_absolute_url(language=lang, fallback=False) url = "/" + lang + url diff --git a/menus/utils.py b/menus/utils.py index 69665b668eb..e969925b819 100644 --- a/menus/utils.py +++ b/menus/utils.py @@ -146,7 +146,7 @@ def find_selected(nodes): for node in nodes: if hasattr(node, "selected"): return node - if hasattr(node, "ancestor"): + elif hasattr(node, "ancestor"): result = find_selected(node.children) if result: return result @@ -205,12 +205,11 @@ def __call__(self, lang): return '%s%s' % (self.get_page_path(lang), self.app_path) def get_page_path(self, lang): - if getattr(self.request, 'current_page'): + if getattr(self.request, 'current_page', None): try: return self.request.current_page.get_absolute_url(language=lang, fallback=False) except Title.DoesNotExist: return self.request.current_page.get_absolute_url(language=lang, fallback=True) - return self.request.current_page.get_absolute_url(language=lang) else: return '' @@ -220,14 +219,4 @@ def _wrapped(request, *args, **kwargs): return func(request, *args, **kwargs) _wrapped.__name__ = func.__name__ _wrapped.__doc__ = func.__doc__ - return _wrapped - - - -def handle_navigation_manipulators(navigation_tree, request): - for handler_function_name, name in settings.CMS_NAVIGATION_MODIFIERS: - func_name = handler_function_name.split(".")[-1] - modifier = __import__(".".join(handler_function_name.split(".")[:-1]),(),(),(func_name,)) - handler_func = getattr(modifier, func_name) - handler_func(navigation_tree, request) - return navigation_tree + return _wrapped \ No newline at end of file diff --git a/tests/project/sampleapp/views.py b/tests/project/sampleapp/views.py index 0f83839bf86..1cab11b9257 100644 --- a/tests/project/sampleapp/views.py +++ b/tests/project/sampleapp/views.py @@ -2,8 +2,10 @@ from django.http import Http404 from django.shortcuts import render_to_response from django.template.context import RequestContext +from menus.utils import simple_language_changer from project.sampleapp.models import Category +@simple_language_changer def sample_view(request, **kw): context = RequestContext(request, kw) return render_to_response("sampleapp/home.html", context) From db223a122d99dd0985c2c8930632f54572fa9497 Mon Sep 17 00:00:00 2001 From: FinalAngel Date: Thu, 24 Feb 2011 11:16:46 +0100 Subject: [PATCH 121/689] twitter html update, merged twitter_search.html and twitter_recent_entries cause they can be loaded with the same code. Multiple instances can be implemented now. There are some html changes (h3 > h2) for consistency. Added plugins folder in js/ to differ between libraries and plugins. plugins.tweet.js also includes code to implement tweet button and tweetme button. --- cms/media/cms/js/plugins/jquery.tweet.js | 58 +++++++++++++++++++ .../cms/plugins/twitter_recent_entries.html | 38 +++++++++--- .../templates/cms/plugins/twitter_search.html | 26 +-------- 3 files changed, 89 insertions(+), 33 deletions(-) create mode 100644 cms/media/cms/js/plugins/jquery.tweet.js diff --git a/cms/media/cms/js/plugins/jquery.tweet.js b/cms/media/cms/js/plugins/jquery.tweet.js new file mode 100644 index 00000000000..6c645ea1ee4 --- /dev/null +++ b/cms/media/cms/js/plugins/jquery.tweet.js @@ -0,0 +1,58 @@ +/** + * jquery.twitter.js + * @author: Angelo Dini + * @copyright http://www.divio.ch under the BSD Licence + * @version: 0.2.0 + */ +(function($) { + // tweet meme plugin + $.fn.tweetme = function(options) { + return this.each(function () { + // save options + var options = $.extend({ + url: $(this).text(), + source: 'username', + style: 'normal', + service: 'retwt.me', + width: 50, + height: 61 + }, options); + // create start url + var url = 'http://api.tweetmeme.com/button.js?'; + // serialize options + $.each(options, function (key, value) { + url += key + '=' + value + '&'; + }); + // save iframe + var iframe = ''; + // add iframe + $(this).html(iframe); + }); + }; + + // official twitter button + $.fn.twitter = function (options) { + return this.each(function () { + // save options + var options = $.extend({ + url: $(this).text(), + dataCount: 'none', /* none | horizontal | vertical */ + dataUrl: '', + dataText: '', + dataLang: '' + }, options); + // save link + var iframe = ''; + iframe += ''; + // add iframe + $(this).html(iframe); + }); + }; +})(jQuery); +/** + * jquery.tweet.js + * @author: http://github.com/seaofclouds/tweet + * @version: 0.2 - (02.02.2011) + * Licensed under the MIT http://www.opensource.org/licenses/mit-license.php + */ +(function($){$.fn.tweet=function(o){var s={username:["seaofclouds"],list:null,avatar_size:null,count:3,intro_text:null,outro_text:null,join_text:null,auto_join_text_default:"i said,",auto_join_text_ed:"i",auto_join_text_ing:"i am",auto_join_text_reply:"i replied to",auto_join_text_url:"i was looking at",loading_text:null,query:null,refresh_interval:null,twitter_url:"twitter.com",twitter_api_url:"api.twitter.com",twitter_search_url:"search.twitter.com"};if(o)$.extend(s,o);$.fn.extend({linkUrl:function(){var returning=[];var regexp=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi;this.each(function(){returning.push(this.replace(regexp,function(match){var url=(/^[a-z]+:/i).test(match)?match:"http://"+match;return""+match+"";}));});return $(returning);},linkUser:function(){var returning=[];var regexp=/[\@]+([A-Za-z0-9-_]+)/gi;this.each(function(){returning.push(this.replace(regexp,"@$1"));});return $(returning);},linkHash:function(){var returning=[];var regexp=/(?:^| )[\#]+([A-Za-z0-9-_]+)/gi;this.each(function(){returning.push(this.replace(regexp,' #$1'));});return $(returning);},capAwesome:function(){var returning=[];this.each(function(){returning.push(this.replace(/\b(awesome)\b/gi,'$1'));});return $(returning);},capEpic:function(){var returning=[];this.each(function(){returning.push(this.replace(/\b(epic)\b/gi,'$1'));});return $(returning);},makeHeart:function(){var returning=[];this.each(function(){returning.push(this.replace(/(<)+[3]/gi,""));});return $(returning);}});function parse_date(date_str){return Date.parse(date_str.replace(/^([a-z]{3})( [a-z]{3} \d\d?)(.*)( \d{4})$/i,'$1,$2$4$3'));}function relative_time(time_value){var parsed_date=parse_date(time_value);var relative_to=(arguments.length>1)?arguments[1]:new Date();var delta=parseInt((relative_to.getTime()-parsed_date)/1000);var r='';if(delta<60){r=delta+' seconds ago';}else if(delta<120){r='a minute ago';}else if(delta<(45*60)){r=(parseInt(delta/60,10)).toString()+' minutes ago';}else if(delta<(2*60*60)){r='an hour ago';}else if(delta<(24*60*60)){r=''+(parseInt(delta/3600,10)).toString()+' hours ago';}else if(delta<(48*60*60)){r='a day ago';}else{r=(parseInt(delta/86400,10)).toString()+' days ago';}return'about '+r;}function build_url(){var proto=('https:'==document.location.protocol?'https:':'http:');if(s.list){return proto+"//"+s.twitter_api_url+"/1/"+s.username[0]+"/lists/"+s.list+"/statuses.json?per_page="+s.count+"&callback=?";}else if(s.query==null&&s.username.length==1){return proto+'//'+s.twitter_api_url+'/1/statuses/user_timeline.json?screen_name='+s.username[0]+'&count='+s.count+'&include_rts=1&callback=?';}else{var query=(s.query||'from:'+s.username.join(' OR from:'));return proto+'//'+s.twitter_search_url+'/search.json?&q='+encodeURIComponent(query)+'&rpp='+s.count+'&callback=?';}}return this.each(function(i,widget){var list=$('
      ').appendTo(widget);var intro='

      '+s.intro_text+'

      ';var outro='

      '+s.outro_text+'

      ';var loading=$('

      '+s.loading_text+'

      ');if(typeof(s.username)=="string"){s.username=[s.username];}if(s.loading_text)$(widget).append(loading);$(widget).bind("load",function(){$.getJSON(build_url(),function(data){if(s.loading_text)loading.remove();if(s.intro_text)list.before(intro);list.empty();var tweets=(data.results||data);$.each(tweets,function(i,item){if(s.join_text=="auto"){if(item.text.match(/^(@([A-Za-z0-9-_]+)) .*/i)){var join_text=s.auto_join_text_reply;}else if(item.text.match(/(^\w+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+) .*/i)){var join_text=s.auto_join_text_url;}else if(item.text.match(/^((\w+ed)|just) .*/im)){var join_text=s.auto_join_text_ed;}else if(item.text.match(/^(\w*ing) .*/i)){var join_text=s.auto_join_text_ing;}else{var join_text=s.auto_join_text_default;}}else{var join_text=s.join_text;};var from_user=item.from_user||item.user.screen_name;var profile_image_url=item.profile_image_url||item.user.profile_image_url;var join_template=' '+join_text+' ';var join=((s.join_text)?join_template:' ');var avatar_template=''+from_user+'\'s avatar';var avatar=(s.avatar_size?avatar_template:'');var date=''+relative_time(item.created_at)+'';var text=''+$([item.text]).linkUrl().linkUser().linkHash().makeHeart().capAwesome().capEpic()[0]+'';list.append('
    • '+avatar+date+join+text+'
    • ');list.children('li:first').addClass('tweet_first');list.children('li:odd').addClass('tweet_even');list.children('li:even').addClass('tweet_odd');});if(s.outro_text)list.after(outro);$(widget).trigger("loaded").trigger((tweets.length==0?"empty":"full"));if(s.refresh_interval){window.setTimeout(function(){$(widget).trigger("load");},1000*s.refresh_interval);};});}).trigger("load");});};})(jQuery); \ No newline at end of file diff --git a/cms/plugins/twitter/templates/cms/plugins/twitter_recent_entries.html b/cms/plugins/twitter/templates/cms/plugins/twitter_recent_entries.html index 8c72836f93d..e884bc31ddd 100644 --- a/cms/plugins/twitter/templates/cms/plugins/twitter_recent_entries.html +++ b/cms/plugins/twitter/templates/cms/plugins/twitter_recent_entries.html @@ -1,8 +1,30 @@ -{% load sekizai_tags %} -
      -

      {{ object.title }}Twitter

      -
        - {{ object.link_hint }} -
        -{% addtoblock "js" %}{% endaddtoblock %} -{% addtoblock "js" %}{% endaddtoblock %} \ No newline at end of file +{% load i18n sekizai_tags %} +{% addtoblock "js" %}{% endaddtoblock %} +{% addtoblock "js" %} + +{% endaddtoblock %} + +
        +

        {{ object.title }}

        +
        + {% if object.twitter_user %}

        {% endif %} +
        \ No newline at end of file diff --git a/cms/plugins/twitter/templates/cms/plugins/twitter_search.html b/cms/plugins/twitter/templates/cms/plugins/twitter_search.html index 02d7072d79e..3932583088c 100644 --- a/cms/plugins/twitter/templates/cms/plugins/twitter_search.html +++ b/cms/plugins/twitter/templates/cms/plugins/twitter_search.html @@ -1,25 +1 @@ -{% load sekizai_tags %} -
        - {% if object.title %}

        {{ object.title }}

        {% endif %} -
          -
          -{% addtoblock "js" %}{% endaddtoblock %} -{% addtoblock "js" %} - -{% endaddtoblock %} \ No newline at end of file +{% include "cms/plugins/twitter_recent_entries.html" %} \ No newline at end of file From c278a607539d38bea10be3cbe6fd81ca35963229 Mon Sep 17 00:00:00 2001 From: FinalAngel Date: Thu, 24 Feb 2011 11:31:33 +0100 Subject: [PATCH 122/689] also changed video.html so videos are displayed even without js enabled. --- cms/plugins/video/models.py | 2 +- .../video/templates/cms/plugins/video.html | 103 +++++++++++------- 2 files changed, 66 insertions(+), 39 deletions(-) diff --git a/cms/plugins/video/models.py b/cms/plugins/video/models.py index ae783000e1a..dd5e82fbe92 100644 --- a/cms/plugins/video/models.py +++ b/cms/plugins/video/models.py @@ -7,7 +7,7 @@ class Video(CMSPlugin): # player settings movie = models.FileField(_('movie file'), upload_to=CMSPlugin.get_media_path, help_text=_('use .flv file or h264 encoded video file'), blank=True, null=True) - movie_url = models.CharField(_('movie url'), max_length=255, help_text=_('vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo'), blank=True, null=True) + movie_url = models.CharField(_('movie url'), max_length=255, help_text=_('vimeo or youtube video url. Example: http://www.youtube.com/watch?v=iJ7bs4mTUY'), blank=True, null=True) image = models.ImageField(_('image'), upload_to=CMSPlugin.get_media_path, help_text=_('preview image file'), null=True, blank=True) width = models.PositiveSmallIntegerField(_('width')) diff --git a/cms/plugins/video/templates/cms/plugins/video.html b/cms/plugins/video/templates/cms/plugins/video.html index 1ec4704d37b..e0ce5e5ffa5 100644 --- a/cms/plugins/video/templates/cms/plugins/video.html +++ b/cms/plugins/video/templates/cms/plugins/video.html @@ -1,42 +1,69 @@ -{% load i18n js sekizai_tags %} - -
          {% trans 'Missing flash plugin. Download here' %}
          - -{% addtoblock "js" %}{% endaddtoblock %} - +{% load i18n sekizai_tags js %} +{% addtoblock "js" %}{% endaddtoblock %} {% addtoblock "js" %} -{% endaddtoblock %} \ No newline at end of file + // load + swfobject.embedSWF('{{ CMS_MEDIA_URL }}swf/player.swf', 'video-plugin-{{ object.id }}', '{{ object.get_width }}', '{{ object.get_height }}', '9', '{{ MEDIA_URL }}swf/expressInstall.swf', flashvars, params, attributes); +})(); +//]]> + +{% endaddtoblock %} + +
          + + + + + + + + + + + + + + + + + + + + + {% trans "Missing flash plugin. Please download the latest Adobe Flash Player: " %}
          + + {% trans 'Get Adobe Flash Player' %} + + + +
          + +
          +
          \ No newline at end of file From 736d5f7799058ffa3f96eec7834d8078cb969c1a Mon Sep 17 00:00:00 2001 From: FinalAngel Date: Thu, 24 Feb 2011 11:31:50 +0100 Subject: [PATCH 123/689] fixed js typos from " to ' --- cms/plugins/flash/templates/cms/plugins/flash.html | 10 +++++----- .../templates/cms/plugins/twitter_recent_entries.html | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cms/plugins/flash/templates/cms/plugins/flash.html b/cms/plugins/flash/templates/cms/plugins/flash.html index 7bd98d888ef..0b8316b50f2 100644 --- a/cms/plugins/flash/templates/cms/plugins/flash.html +++ b/cms/plugins/flash/templates/cms/plugins/flash.html @@ -5,14 +5,14 @@ // diff --git a/cms/plugins/twitter/templates/cms/plugins/twitter_recent_entries.html b/cms/plugins/twitter/templates/cms/plugins/twitter_recent_entries.html index e884bc31ddd..224154f7a10 100644 --- a/cms/plugins/twitter/templates/cms/plugins/twitter_recent_entries.html +++ b/cms/plugins/twitter/templates/cms/plugins/twitter_recent_entries.html @@ -16,7 +16,7 @@ auto_join_text_url: '{% trans "we were checking out" %}', loading_text: '{% trans "loading tweets..." %}' // this replaces twitter_search.html - {% if object.query %},query: "{{ object.query }}"{% endif %} + {% if object.query %},query: '{{ object.query }}'{% endif %} }); }); //]]> From 0a221107c49ba5147eecf108f27a410b3cd330a6 Mon Sep 17 00:00:00 2001 From: FinalAngel Date: Thu, 24 Feb 2011 11:33:37 +0100 Subject: [PATCH 124/689] added translations and better class handling to file.html --- cms/plugins/file/templates/cms/plugins/file.html | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/cms/plugins/file/templates/cms/plugins/file.html b/cms/plugins/file/templates/cms/plugins/file.html index 62b5e1ab793..86d25b82c06 100644 --- a/cms/plugins/file/templates/cms/plugins/file.html +++ b/cms/plugins/file/templates/cms/plugins/file.html @@ -1,8 +1,9 @@ +{% load i18n %} {% if object.file.url %} - - -{% if object.get_icon_url %}Icon{% endif %} -{% if object.title %}{{ object.title }}{% else %}{{ object.get_file_name }}{% endif %} {% if object.file_exists %}({{ object.file.size|filesizeformat }}){% else %}(file missing!){% endif %} - - -{% endif %} +

          + + {% if object.get_icon_url %}{% endif %} + {% if object.title %}{{ object.title }}{% else %}{{ object.get_file_name }}{% endif %} {% if object.file_exists %}({{ object.file.size|filesizeformat }}){% else %}({% trans "file missing!" %}){% endif %} + +

          +{% endif %} \ No newline at end of file From 7a219edcf863b9709b5d72456cc3029711481931 Mon Sep 17 00:00:00 2001 From: FinalAngel Date: Thu, 24 Feb 2011 11:34:22 +0100 Subject: [PATCH 125/689] minify to one line --- .../inherit/templates/cms/plugins/inherit_plugins.html | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cms/plugins/inherit/templates/cms/plugins/inherit_plugins.html b/cms/plugins/inherit/templates/cms/plugins/inherit_plugins.html index 7562d04822b..e111b4bd79a 100644 --- a/cms/plugins/inherit/templates/cms/plugins/inherit_plugins.html +++ b/cms/plugins/inherit/templates/cms/plugins/inherit_plugins.html @@ -1,3 +1 @@ -{% if parent_output %} - {{parent_output|safeseq|join:""}} -{% endif %} \ No newline at end of file +{% if parent_output %}{{parent_output|safeseq|join:""}}{% endif %} \ No newline at end of file From df51457bba1c4c5dde0b5b5621482860f25117ff Mon Sep 17 00:00:00 2001 From: FinalAngel Date: Thu, 24 Feb 2011 11:35:09 +0100 Subject: [PATCH 126/689] add plugin class to link plugin --- cms/plugins/link/templates/cms/plugins/link.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cms/plugins/link/templates/cms/plugins/link.html b/cms/plugins/link/templates/cms/plugins/link.html index 51548db32ac..86e23be31a5 100644 --- a/cms/plugins/link/templates/cms/plugins/link.html +++ b/cms/plugins/link/templates/cms/plugins/link.html @@ -1 +1 @@ -{{ name }} \ No newline at end of file +{{ name }} \ No newline at end of file From 8b64df6607e181f0a6af0610b579d85d17314e7f Mon Sep 17 00:00:00 2001 From: FinalAngel Date: Thu, 24 Feb 2011 11:37:49 +0100 Subject: [PATCH 127/689] added plugin class to picture plugin --- cms/plugins/picture/templates/cms/plugins/picture.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cms/plugins/picture/templates/cms/plugins/picture.html b/cms/plugins/picture/templates/cms/plugins/picture.html index c4dd56f0ee8..d391b469207 100644 --- a/cms/plugins/picture/templates/cms/plugins/picture.html +++ b/cms/plugins/picture/templates/cms/plugins/picture.html @@ -1,3 +1,5 @@ + {% if link %}{% endif %} - + {% if link %}{% endif %} + \ No newline at end of file From 0fe0c9e1ba9018396b7d0eb07c55bca7d5c9efa3 Mon Sep 17 00:00:00 2001 From: FinalAngel Date: Thu, 24 Feb 2011 11:38:22 +0100 Subject: [PATCH 128/689] remove white-space --- cms/plugins/snippet/templates/cms/plugins/snippet.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cms/plugins/snippet/templates/cms/plugins/snippet.html b/cms/plugins/snippet/templates/cms/plugins/snippet.html index 288480d2b4c..65dd7987271 100644 --- a/cms/plugins/snippet/templates/cms/plugins/snippet.html +++ b/cms/plugins/snippet/templates/cms/plugins/snippet.html @@ -1 +1 @@ -{{ content|safe }} +{{ content|safe }} \ No newline at end of file From ffb35a468791dfe92508673130e59699bbecf3f4 Mon Sep 17 00:00:00 2001 From: FinalAngel Date: Thu, 24 Feb 2011 11:42:35 +0100 Subject: [PATCH 129/689] removed white-space and replaced spaces with tabs --- .../text/templates/cms/plugins/text.html | 2 +- .../cms/plugins/text_plugin_change_form.html | 10 ++-- .../cms/plugins/text_plugin_fieldset.html | 48 ++++++++++--------- 3 files changed, 32 insertions(+), 28 deletions(-) diff --git a/cms/plugins/text/templates/cms/plugins/text.html b/cms/plugins/text/templates/cms/plugins/text.html index 77100f17ea6..54e9891366f 100644 --- a/cms/plugins/text/templates/cms/plugins/text.html +++ b/cms/plugins/text/templates/cms/plugins/text.html @@ -1 +1 @@ -{{ body|safe }} +{{ body|safe }} \ No newline at end of file diff --git a/cms/plugins/text/templates/cms/plugins/text_plugin_change_form.html b/cms/plugins/text/templates/cms/plugins/text_plugin_change_form.html index bff08aa185a..f2bb4708a3b 100644 --- a/cms/plugins/text/templates/cms/plugins/text_plugin_change_form.html +++ b/cms/plugins/text/templates/cms/plugins/text_plugin_change_form.html @@ -3,14 +3,16 @@ {% block fieldsets %} {% for fieldset in adminform %} - {% include "cms/plugins/text_plugin_fieldset.html" %} + {% include "cms/plugins/text_plugin_fieldset.html" %} {% endfor %} -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/cms/plugins/text/templates/cms/plugins/text_plugin_fieldset.html b/cms/plugins/text/templates/cms/plugins/text_plugin_fieldset.html index 7d7c8aa1d34..42c79374f9f 100644 --- a/cms/plugins/text/templates/cms/plugins/text_plugin_fieldset.html +++ b/cms/plugins/text/templates/cms/plugins/text_plugin_fieldset.html @@ -1,24 +1,26 @@
          - {% if fieldset.name %}

          {{ fieldset.name }}

          {% endif %} - {% if fieldset.description %}
          {{ fieldset.description|safe }}
          {% endif %} - {% for line in fieldset %} -
          - {{ line.errors }} - {% for field in line %}{% if not field.field.is_hidden %} - {% endif %} - {% if field.is_checkbox %} - {{ field.field }}{{ field.label_tag }} - {% else %} - {% if field.field.is_hidden %} - {{ field.field }} - {% else %} - {{ field.field }} - {% endif %} - {% endif %} - {% if not field.field.is_hidden %} - {% if field.field.field.help_text %}

          {{ field.field.field.help_text|safe }}

          {% endif %} -
          {% endif %} - {% endfor %} - - {% endfor %} -
          + {% if fieldset.name %}

          {{ fieldset.name }}

          {% endif %} + {% if fieldset.description %}
          {{ fieldset.description|safe }}
          {% endif %} + {% for line in fieldset %} +
          + {{ line.errors }} + {% for field in line %} + {% if not field.field.is_hidden %} + {% endif %} + {% if field.is_checkbox %} + {{ field.field }}{{ field.label_tag }} + {% else %} + {% if field.field.is_hidden %} + {{ field.field }} + {% else %} + {{ field.field }} + {% endif %} + {% endif %} + {% if not field.field.is_hidden %} + {% if field.field.field.help_text %}

          {{ field.field.field.help_text|safe }}

          {% endif %} +
          + {% endif %} + {% endfor %} + + {% endfor %} + \ No newline at end of file From 6684ba4e35c11dd8f985f2bea9fdfeb2fc2b0699 Mon Sep 17 00:00:00 2001 From: FinalAngel Date: Thu, 24 Feb 2011 11:44:14 +0100 Subject: [PATCH 130/689] remove white-space --- cms/plugins/teaser/templates/cms/plugins/teaser.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cms/plugins/teaser/templates/cms/plugins/teaser.html b/cms/plugins/teaser/templates/cms/plugins/teaser.html index c429a69354f..c0e00ccdf4b 100644 --- a/cms/plugins/teaser/templates/cms/plugins/teaser.html +++ b/cms/plugins/teaser/templates/cms/plugins/teaser.html @@ -8,4 +8,4 @@

          {{ object.title|title }}

          {% if object.description %}

          {{ object.description }}

          {% endif %} -{% if link %}{% trans "more" %} »{% endif %} +{% if link %}{% trans "more" %} »{% endif %} \ No newline at end of file From 75accc32a4caf7c1a4d36f6737326ff24da60cbc Mon Sep 17 00:00:00 2001 From: FinalAngel Date: Thu, 24 Feb 2011 11:53:55 +0100 Subject: [PATCH 131/689] fixed example youtube url to django reinhardt --- cms/plugins/video/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cms/plugins/video/models.py b/cms/plugins/video/models.py index dd5e82fbe92..1631bf1b9fe 100644 --- a/cms/plugins/video/models.py +++ b/cms/plugins/video/models.py @@ -7,7 +7,7 @@ class Video(CMSPlugin): # player settings movie = models.FileField(_('movie file'), upload_to=CMSPlugin.get_media_path, help_text=_('use .flv file or h264 encoded video file'), blank=True, null=True) - movie_url = models.CharField(_('movie url'), max_length=255, help_text=_('vimeo or youtube video url. Example: http://www.youtube.com/watch?v=iJ7bs4mTUY'), blank=True, null=True) + movie_url = models.CharField(_('movie url'), max_length=255, help_text=_('vimeo or youtube video url. Example: http://www.youtube.com/watch?v=-iJ7bs4mTUY'), blank=True, null=True) image = models.ImageField(_('image'), upload_to=CMSPlugin.get_media_path, help_text=_('preview image file'), null=True, blank=True) width = models.PositiveSmallIntegerField(_('width')) From 4b684cc67b3841d37c73e513e9c9c7afb5d374f0 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Thu, 24 Feb 2011 11:56:02 +0100 Subject: [PATCH 132/689] Removed the need for inspect --- cms/admin/pageadmin.py | 72 ++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 30 deletions(-) diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py index aa05a6445d0..d87c3213417 100644 --- a/cms/admin/pageadmin.py +++ b/cms/admin/pageadmin.py @@ -2,29 +2,29 @@ from cms.admin.change_list import CMSChangeList from cms.admin.dialog.views import get_copy_dialog from cms.admin.forms import PageForm, PageAddForm -from cms.admin.permissionadmin import PAGE_ADMIN_INLINES, \ - PagePermissionInlineAdmin +from cms.admin.permissionadmin import (PAGE_ADMIN_INLINES, + PagePermissionInlineAdmin) from cms.admin.views import revert_plugins from cms.apphook_pool import apphook_pool from cms.exceptions import NoPermissionsException from cms.forms.widgets import PluginEditor -from cms.models import Page, Title, CMSPlugin, PagePermission, \ - PageModeratorState, EmptyTitle, GlobalPagePermission +from cms.models import (Page, Title, CMSPlugin, PagePermission, + PageModeratorState, EmptyTitle, GlobalPagePermission) from cms.models.managers import PagePermissionsPermissionManager -from cms.models.moderatormodels import MASK_PAGE, MASK_CHILDREN, \ - MASK_DESCENDANTS +from cms.models.moderatormodels import (MASK_PAGE, MASK_CHILDREN, + MASK_DESCENDANTS) from cms.models.placeholdermodel import Placeholder from cms.plugin_pool import plugin_pool from cms.utils import get_template_from_request, get_language_from_request from cms.utils.admin import render_admin_menu_item from cms.utils.copy_plugins import copy_plugins_to from cms.utils.helpers import make_revision_with_plugins -from cms.utils.moderator import update_moderation_message, \ - get_test_moderation_level, moderator_should_approve, approve_page, \ - will_require_moderation -from cms.utils.permissions import has_page_add_permission, \ - has_page_change_permission, get_user_permission_level, \ - has_global_change_permissions_permission +from cms.utils.moderator import (update_moderation_message, + get_test_moderation_level, moderator_should_approve, approve_page, + will_require_moderation) +from cms.utils.permissions import (has_page_add_permission, + has_page_change_permission, get_user_permission_level, + has_global_change_permissions_permission) from cms.utils.placeholder import get_page_from_placeholder_if_exists from cms.utils.plugins import get_placeholders, get_page_from_plugin_or_404 from copy import deepcopy @@ -36,28 +36,20 @@ from django.contrib.sites.models import Site from django.core.exceptions import PermissionDenied, ObjectDoesNotExist from django.core.urlresolvers import reverse -from django.db import transaction, models - +from django.db import transaction, models, router from django.forms import Widget, Textarea, CharField -from django.http import HttpResponseRedirect, HttpResponse, Http404, \ - HttpResponseBadRequest, HttpResponseForbidden, HttpResponseNotAllowed +from django.http import (HttpResponseRedirect, HttpResponse, Http404, + HttpResponseBadRequest, HttpResponseForbidden, HttpResponseNotAllowed) from django.shortcuts import render_to_response, get_object_or_404 from django.template.context import RequestContext from django.template.defaultfilters import title, escape, force_escape, escapejs from django.utils.encoding import force_unicode from django.utils.translation import ugettext_lazy as _ from menus.menu_pool import menu_pool +import django import os -# silly hack to test features/ fixme -import inspect -if inspect.getargspec(get_deleted_objects)[0][-1] == 'using': - from django.db import router -else: - router = False -model_admin = admin.ModelAdmin -create_on_success = lambda x: x if 'reversion' in settings.INSTALLED_APPS: import reversion @@ -66,6 +58,10 @@ create_on_success = reversion.revision.create_on_success +else: # pragma: no cover + model_admin = admin.ModelAdmin + create_on_success = lambda x: x + class PageAdmin(model_admin): form = PageForm list_filter = ['published', 'in_navigation', 'template', 'changed_by'] @@ -967,14 +963,30 @@ def delete_translation(self, request, object_id, extra_context=None): titleobj = get_object_or_404(Title, page__id=object_id, language=language) plugins = CMSPlugin.objects.filter(placeholder__page__id=object_id, language=language) - using = [] - if router: + if django.VERSION[1] > 2: # pragma: no cover + # WARNING: Django 1.3 is not officially supported yet! using = router.db_for_read(self.model) - deleted_objects, perms_needed = get_deleted_objects([titleobj], titleopts, request.user, self.admin_site, using)[:2] - to_delete_plugins, perms_needed_plugins = get_deleted_objects(plugins, pluginopts, request.user, self.admin_site, using)[:2] + kwargs = { + 'admin_site': self.admin_site, + 'user': request.user, + 'using': using + } else: - deleted_objects, perms_needed = get_deleted_objects([titleobj], titleopts, request.user, self.admin_site, 4) - to_delete_plugins, perms_needed_plugins = get_deleted_objects(plugins, pluginopts, request.user, self.admin_site, 4) + kwargs = { + 'admin_site': self.admin_site, + 'user': request.user, + } + deleted_objects, perms_needed = get_deleted_objects( + [titleobj], + titleopts, + **kwargs + )[:2] + to_delete_plugins, perms_needed_plugins = get_deleted_objects( + plugins, + pluginopts, + **kwargs + )[:2] + deleted_objects.append(to_delete_plugins) perms_needed = set( list(perms_needed) + list(perms_needed_plugins) ) From 2cde8c72008472f59a20f8011bac1f011ab6f424 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Thu, 24 Feb 2011 11:58:46 +0100 Subject: [PATCH 133/689] updated CHANGELOG.txt --- CHANGELOG.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index b257403d327..cb3fa6c7825 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -51,3 +51,9 @@ - Fixed bug with submenus showing pages that are not 'in_navigation' (#716, thanks to Iacopo Spalletti for the patch) - Fixed PlaceholderField not respecting limits in CMS_PLACEHOLDER_CONF (thanks to Ben Hockey for reporting this) - Fixed the double-monkeypatch check for url reversing (thanks to Benjamin Wohlwend for the patch) + +==== 2.2.0 (In Development) ==== + +- Replaced the old plugin media framework with django-sekizai. (This changed some plugin templates which might cause problems with your CSS styling). +- Made django-mptt a proper dependency +- Removed support for django-dbgettext From 5bde4ba894ded277ade2dc9be34baaf857d590ea Mon Sep 17 00:00:00 2001 From: Jannis Leidel Date: Thu, 24 Feb 2011 14:54:57 +0100 Subject: [PATCH 134/689] Moved CMS_PUBLIC_FOR_* settings to be a simpler CMS_PUBLIC_FOR = ('all'|'staff'). --- cms/conf/global_settings.py | 9 +++------ cms/menu.py | 2 +- cms/models/pagemodel.py | 6 +++--- cms/tests/permmod.py | 4 ++-- cms/utils/permissions.py | 2 +- tests/project/settings.py | 3 +-- 6 files changed, 11 insertions(+), 15 deletions(-) diff --git a/cms/conf/global_settings.py b/cms/conf/global_settings.py index 51a8d09837e..7e189554405 100644 --- a/cms/conf/global_settings.py +++ b/cms/conf/global_settings.py @@ -25,14 +25,11 @@ # Whether to enable permissions. CMS_PERMISSION = False -# Decides if pages without any view restrictions are public by default -CMS_PUBLIC_FOR_ALL = True - -# Decides if staff members are allowed to view pages even if they are view restricted -CMS_PUBLIC_FOR_STAFF = True - # Defines how long user permissions should be cached CMS_PERMISSION_CACHE_DURATION = 600 +# Decides if pages without any view restrictions are public by default, or staff only +CMS_PUBLIC_FOR = 'all' # or 'staff' + # Show the publication date field in the admin, allows for future dating # Changing this from True to False could cause some weirdness. If that is required, diff --git a/cms/menu.py b/cms/menu.py index 90ef8a899f0..aad4f187b86 100644 --- a/cms/menu.py +++ b/cms/menu.py @@ -80,7 +80,7 @@ def get_nodes(self, request): page.home_pk_cache = home.pk if first and page.pk != home.pk: home_cut = True - elif not settings.CMS_PUBLIC_FOR_ALL: + elif not settings.CMS_PUBLIC_FOR == 'all': continue if (page.parent_id == home.pk or page.parent_id in home_children) and home_cut: page.home_cut_cache = True diff --git a/cms/models/pagemodel.py b/cms/models/pagemodel.py index 8e2846f0b1c..e1d1bca9ffe 100644 --- a/cms/models/pagemodel.py +++ b/cms/models/pagemodel.py @@ -713,7 +713,7 @@ def has_view_permission(self, request): from cms.models.permissionmodels import PagePermission, GlobalPagePermission from cms.utils.plugins import current_site # staff is allowed to see everything - if request.user.is_staff and settings.CMS_PUBLIC_FOR_STAFF: + if request.user.is_staff and settings.CMS_PUBLIC_FOR in ('staff', 'all'): return True # does any restriction exist? is_restricted = PagePermission.objects.filter(page=self, can_view=True).exists() @@ -726,10 +726,10 @@ def has_view_permission(self, request): return True # authenticated user, no restriction and public for all fallback if (not is_restricted and not global_view_perms and - not settings.CMS_PUBLIC_FOR_ALL): + not settings.CMS_PUBLIC_FOR == 'all'): return False else: - if is_restricted or not settings.CMS_PUBLIC_FOR_ALL: + if is_restricted or not settings.CMS_PUBLIC_FOR == 'all': # anyonymous user, page has restriction and global access is permitted return False else: diff --git a/cms/tests/permmod.py b/cms/tests/permmod.py index 995bba7b409..cce435484f4 100644 --- a/cms/tests/permmod.py +++ b/cms/tests/permmod.py @@ -623,12 +623,12 @@ def test_23_user_globalpermission(self): def test_24_anonymous_user(self): self.client.logout() - with SettingsOverride(CMS_PUBLIC_FOR_ALL=True): + with SettingsOverride(CMS_PUBLIC_FOR='all'): response = self.client.get("/en/pageb/") self.assertEqual(response.status_code, 200) # default of when to show pages to anonymous user doesn't take # global permissions into account - with SettingsOverride(CMS_PUBLIC_FOR_ALL=False): + with SettingsOverride(CMS_PUBLIC_FOR=None): response = self.client.get("/en/pageb/") self.assertEqual(response.status_code, 404) diff --git a/cms/utils/permissions.py b/cms/utils/permissions.py index da0090995a3..4a97c4c767f 100644 --- a/cms/utils/permissions.py +++ b/cms/utils/permissions.py @@ -110,7 +110,7 @@ def has_page_view_permission(request): GlobalPagePermission.objects.with_user(request.user).filter( can_view=True, sites__in=[current_site(request)] ).exists()) or ( - settings.CMS_PUBLIC_FOR_STAFF and request.user.is_staff)): + settings.CMS_PUBLIC_FOR == 'staff' and request.user.is_staff)): return True return False diff --git a/tests/project/settings.py b/tests/project/settings.py index d7327adc21c..029e400f0e2 100644 --- a/tests/project/settings.py +++ b/tests/project/settings.py @@ -168,9 +168,8 @@ CMS_SOFTROOT = True CMS_MODERATOR = True CMS_PERMISSION = True -CMS_PUBLIC_FOR_ALL = True -CMS_PUBLIC_FOR_STAFF = True CMS_PERMISSION_CACHE_DURATION = 0 +CMS_PUBLIC_FOR = 'all' CMS_REDIRECTS = True CMS_SEO_FIELDS = True CMS_FLAT_URLS = False From 0621c9bc1cef890c377982c43b6fab488afc1ff4 Mon Sep 17 00:00:00 2001 From: Jannis Leidel Date: Thu, 24 Feb 2011 15:01:31 +0100 Subject: [PATCH 135/689] Combined the various cache duration settings in a new CMS_CACHE_DURATIONS settings. --- cms/cache/permissions.py | 2 +- cms/conf/global_settings.py | 16 ++++++++-------- cms/templatetags/cms_tags.py | 4 ++-- docs/getting_started/configuration.rst | 24 ++++++++++++++++++++---- menus/menu_pool.py | 3 +-- tests/project/settings.py | 6 +++++- 6 files changed, 37 insertions(+), 18 deletions(-) diff --git a/cms/cache/permissions.py b/cms/cache/permissions.py index 6b7b3fbbc42..fcfd8747983 100644 --- a/cms/cache/permissions.py +++ b/cms/cache/permissions.py @@ -27,7 +27,7 @@ def set_permission_cache(user, key, value): all_keys.append(cache_key) if not key in permission_cache_keys: permission_cache_keys.append(key) - cache.set(cache_key, value, settings.CMS_PERMISSION_CACHE_DURATION) + cache.set(cache_key, value, settings.CMS_CACHE_DURATIONS['permissions']) def clear_user_permission_cache(user): """ diff --git a/cms/conf/global_settings.py b/cms/conf/global_settings.py index 7e189554405..64e18bfe9e9 100644 --- a/cms/conf/global_settings.py +++ b/cms/conf/global_settings.py @@ -25,11 +25,17 @@ # Whether to enable permissions. CMS_PERMISSION = False -# Defines how long user permissions should be cached -CMS_PERMISSION_CACHE_DURATION = 600 # Decides if pages without any view restrictions are public by default, or staff only CMS_PUBLIC_FOR = 'all' # or 'staff' +CMS_CACHE_DURATIONS = { + # Menu cache duration + 'menus': getattr(settings, 'MENU_CACHE_DURATION', 60 * 60), + # Defines how long page content should be cached + 'content': getattr(settings, 'CMS_CONTENT_CACHE_DURATION', 60), + # Defines how long user permissions should be cached + 'permissions': 60 * 60, +} # Show the publication date field in the admin, allows for future dating # Changing this from True to False could cause some weirdness. If that is required, @@ -85,9 +91,6 @@ # 3:['en'],} CMS_SITE_LANGUAGES = {} -# Defines how long page content should be cached, including navigation -CMS_CONTENT_CACHE_DURATION = 60 - CMS_SITE_CHOICES_CACHE_KEY = 'CMS:site_choices' CMS_PAGE_CHOICES_CACHE_KEY = 'CMS:page_choices' @@ -115,6 +118,3 @@ # Cache prefix so one can deploy several sites on one cache server CMS_CACHE_PREFIX = 'cms-' - -# Menu cache duration -MENU_CACHE_DURATION = 60 * 60 diff --git a/cms/templatetags/cms_tags.py b/cms/templatetags/cms_tags.py index 44b7af28419..61298da2893 100644 --- a/cms/templatetags/cms_tags.py +++ b/cms/templatetags/cms_tags.py @@ -111,7 +111,7 @@ def get_context(self, context, page_lookup, lang, site): page = _get_page_by_untyped_arg(page_lookup, request, site_id) if page: url = page.get_absolute_url(language=lang) - cache.set(cache_key, url, settings.CMS_CONTENT_CACHE_DURATION) + cache.set(cache_key, url, settings.CMS_CACHE_DURATIONS['content']) if url: return {'content': url} return {'content': ''} @@ -349,7 +349,7 @@ def _show_placeholder_for_page(context, placeholder_name, page_lookup, lang=None content = "".join(c) if cache_result: - cache.set(cache_key, content, settings.CMS_CONTENT_CACHE_DURATION) + cache.set(cache_key, content, settings.CMS_CACHE_DURATIONS['content']) if content: return {'content': mark_safe(content)} diff --git a/docs/getting_started/configuration.rst b/docs/getting_started/configuration.rst index 53bd8fd905a..2b0277ece7d 100644 --- a/docs/getting_started/configuration.rst +++ b/docs/getting_started/configuration.rst @@ -438,20 +438,36 @@ To access these fields in the template use:: ... -CMS_CONTENT_CACHE_DURATION -========================== +CMS_CACHE_DURATIONS +=================== + +This dictionary carries the varios cache duration settings. + +``'content'`` +------------- Default: ``60`` Cache expiration (in seconds) for ``show_placeholder`` and ``page_url`` template tags. -MENU_CACHE_DURATION -=================== +.. note:: This settings was previously called ``CMS_CONTENT_CACHE_DURATION`` + +``'menus'`` +----------- Default: ``3600`` Cache expiration (in seconds) for the menu tree. +.. note:: This settings was previously called ``MENU_CACHE_DURATION`` + +``'permissions'`` +----------------- + +Default: ``3600`` + +Cache expiration (in seconds) for view and other permissions. + CMS_CACHE_PREFIX ================ diff --git a/menus/menu_pool.py b/menus/menu_pool.py index f9e422429d9..9629073286d 100644 --- a/menus/menu_pool.py +++ b/menus/menu_pool.py @@ -146,8 +146,7 @@ def _build_nodes(self, request, site_id): nodes = self.menus[menu_class_name].get_nodes(request) # nodes is a list of navigation nodes (page tree in cms + others) final_nodes += _build_nodes_inner_for_one_menu(nodes, menu_class_name) - duration = getattr(settings, "MENU_CACHE_DURATION", 60*60) - cache.set(key, final_nodes, duration) + cache.set(key, final_nodes, settings.CMS_CACHE_DURATIONS['menus']) # We need to have a list of the cache keys for languages and sites that # span several processes - so we follow the Django way and share through # the database. It's still cheaper than recomputing every time! diff --git a/tests/project/settings.py b/tests/project/settings.py index 029e400f0e2..e405de546a8 100644 --- a/tests/project/settings.py +++ b/tests/project/settings.py @@ -168,8 +168,12 @@ CMS_SOFTROOT = True CMS_MODERATOR = True CMS_PERMISSION = True -CMS_PERMISSION_CACHE_DURATION = 0 CMS_PUBLIC_FOR = 'all' +CMS_CACHE_DURATIONS = { + 'menus': 0, + 'content': 0, + 'permissions': 0, +} CMS_REDIRECTS = True CMS_SEO_FIELDS = True CMS_FLAT_URLS = False From 05a6e2065446123d43d8953daff5de051788c83a Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Thu, 24 Feb 2011 16:39:56 +0100 Subject: [PATCH 136/689] more pageadmin tests --- cms/admin/pageadmin.py | 94 +++++++++++++--------- cms/tests/__init__.py | 2 +- cms/tests/admin.py | 171 ++++++++++++++++++++++++++++++++++++++++- 3 files changed, 226 insertions(+), 41 deletions(-) diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py index d87c3213417..53f24da2cd9 100644 --- a/cms/admin/pageadmin.py +++ b/cms/admin/pageadmin.py @@ -62,29 +62,20 @@ model_admin = admin.ModelAdmin create_on_success = lambda x: x -class PageAdmin(model_admin): - form = PageForm - list_filter = ['published', 'in_navigation', 'template', 'changed_by'] - # TODO: add the new equivalent of 'cmsplugin__text__body' to search_fields' - search_fields = ('title_set__slug', 'title_set__title', 'reverse_id') - revision_form_template = "admin/cms/page/revision_form.html" - recover_form_template = "admin/cms/page/recover_form.html" - exclude = [] - mandatory_placeholders = ('title', 'slug', 'parent', 'site', 'meta_description', 'meta_keywords', 'page_title', 'menu_title') - top_fields = [] - general_fields = ['title', 'slug', ('published', 'in_navigation')] - add_general_fields = ['title', 'slug', 'language', 'template'] +def contribute_fieldsets(cls): + if settings.CMS_MENU_TITLE_OVERWRITE: + general_fields = [('title', 'menu_title')] + else: + general_fields = ['title'] + general_fields += ['slug', ('published', 'in_navigation')] + additional_hidden_fields = [] advanced_fields = ['reverse_id', 'overwrite_url', 'redirect', 'login_required', 'limit_visibility_in_menu'] template_fields = ['template'] - change_list_template = "admin/cms/page/change_list.html" hidden_fields = ['site', 'parent'] - additional_hidden_fields = [] - if settings.CMS_MODERATOR: - list_filter.append('moderator_state') + seo_fields = [] if settings.CMS_SOFTROOT: advanced_fields.append('soft_root') - list_filter.append('soft_root') if settings.CMS_SHOW_START_DATE and settings.CMS_SHOW_END_DATE: general_fields.append(('publication_date', 'publication_end_date')) elif settings.CMS_SHOW_START_DATE: @@ -92,11 +83,9 @@ class PageAdmin(model_admin): elif settings.CMS_SHOW_END_DATE: general_fields.append( 'publication_end_date') if settings.CMS_MODERATOR: - additional_hidden_fields.extend(('moderator_state', 'moderator_message')) + additional_hidden_fields += ['moderator_state', 'moderator_message'] if settings.CMS_SEO_FIELDS: - seo_fields = ('page_title', 'meta_description', 'meta_keywords') - if settings.CMS_MENU_TITLE_OVERWRITE: - general_fields[0] = ('title', 'menu_title') + seo_fields = ['page_title', 'meta_description', 'meta_keywords'] if not settings.CMS_URL_OVERWRITE: advanced_fields.remove("overwrite_url") if not settings.CMS_REDIRECTS: @@ -106,26 +95,13 @@ class PageAdmin(model_admin): if apphook_pool.get_apphooks(): advanced_fields.append("application_urls") - # take care with changing fieldsets, get_fieldsets() method removes some - # fields depending on permissions, but its very static!! - add_fieldsets = [ - (None, { - 'fields': add_general_fields, - 'classes': ('general',), - }), - (_('Hidden'), { - 'fields': hidden_fields, - 'classes': ('hidden',), - }), - ] - fieldsets = [ (None, { 'fields': general_fields, 'classes': ('general',), }), (_('Basic Settings'), { - 'fields': top_fields + template_fields, + 'fields': template_fields, 'classes': ('low',), 'description': _('Note: This page reloads if you change the selection. Save it first.'), }), @@ -143,9 +119,50 @@ class PageAdmin(model_admin): if settings.CMS_SEO_FIELDS: fieldsets.append((_("SEO Settings"), { - 'fields':seo_fields, + 'fields': seo_fields, 'classes': ('collapse',), })) + setattr(cls, 'fieldsets', fieldsets) + setattr(cls, 'advanced_fields', advanced_fields) + setattr(cls, 'hidden_fields', hidden_fields) + setattr(cls, 'general_fields', general_fields) + setattr(cls, 'template_fields', template_fields) + setattr(cls, 'additional_hidden_fields', additional_hidden_fields) + setattr(cls, 'seo_fields', seo_fields) + + +def contribute_list_filter(cls): + list_filter = ['published', 'in_navigation', 'template', 'changed_by'] + if settings.CMS_MODERATOR: + list_filter.append('moderator_state') + if settings.CMS_SOFTROOT: + list_filter.append('soft_root') + setattr(cls, 'list_filter', list_filter) + +class PageAdmin(model_admin): + form = PageForm + # TODO: add the new equivalent of 'cmsplugin__text__body' to search_fields' + search_fields = ('title_set__slug', 'title_set__title', 'reverse_id') + revision_form_template = "admin/cms/page/revision_form.html" + recover_form_template = "admin/cms/page/recover_form.html" + + exclude = [] + mandatory_placeholders = ('title', 'slug', 'parent', 'site', 'meta_description', 'meta_keywords', 'page_title', 'menu_title') + add_general_fields = ['title', 'slug', 'language', 'template'] + change_list_template = "admin/cms/page/change_list.html" + + # take care with changing fieldsets, get_fieldsets() method removes some + # fields depending on permissions, but its very static!! + add_fieldsets = [ + (None, { + 'fields': add_general_fields, + 'classes': ('general',), + }), + (_('Hidden'), { + 'fields': ['site', 'parent'], + 'classes': ('hidden',), + }), + ] inlines = PAGE_ADMIN_INLINES @@ -1404,4 +1421,7 @@ def lookup_allowed(self, key, *args, **kwargs): return True return super(PageAdmin, self).lookup_allowed(key, *args) -admin.site.register(Page, PageAdmin) +contribute_fieldsets(PageAdmin) +contribute_list_filter(PageAdmin) + +admin.site.register(Page, PageAdmin) \ No newline at end of file diff --git a/cms/tests/__init__.py b/cms/tests/__init__.py index 35339c0bcd2..1d2b15036b8 100644 --- a/cms/tests/__init__.py +++ b/cms/tests/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from cms.tests.admin import AdminTestCase +from cms.tests.admin import AdminTestCase, AdminFieldsetTests, AdminListFilterTests from cms.tests.apphooks import ApphooksTestCase from cms.tests.docs import DocsTestCase from cms.tests.forms import FormsTestCase diff --git a/cms/tests/admin.py b/cms/tests/admin.py index 9f3729492c2..b7b5bb929bd 100644 --- a/cms/tests/admin.py +++ b/cms/tests/admin.py @@ -1,16 +1,24 @@ # -*- coding: utf-8 -*- from __future__ import with_statement -from cms.admin.dialog.forms import ModeratorForm, PermissionForm, \ - PermissionAndModeratorForm +from cms.admin.dialog.forms import (ModeratorForm, PermissionForm, + PermissionAndModeratorForm) from cms.admin.dialog.views import _form_class_selector +from cms.admin.pageadmin import contribute_fieldsets, contribute_list_filter +from cms.apphook_pool import apphook_pool, ApphookPool from cms.models.pagemodel import Page from cms.models.permissionmodels import GlobalPagePermission from cms.test_utils import testcases as base -from cms.test_utils.testcases import CMSTestCase, URL_CMS_PAGE_DELETE, URL_CMS_PAGE, URL_CMS_TRANSLATION_DELETE +from cms.test_utils.testcases import (CMSTestCase, URL_CMS_PAGE_DELETE, + URL_CMS_PAGE, URL_CMS_TRANSLATION_DELETE) from cms.test_utils.util.context_managers import SettingsOverride +from cms.test_utils.util.mock import AttributeObject from django.contrib.auth.models import User, Permission from django.contrib.sites.models import Site from django.core.urlresolvers import reverse +from menus.menu_pool import menu_pool +from types import MethodType +from unittest import TestCase + class AdminTestCase(CMSTestCase): @@ -171,3 +179,160 @@ def test_07_delete_translation(self): self.assertEqual(response.status_code, 200) response = self.client.post(URL_CMS_TRANSLATION_DELETE % page.pk, {'language': 'nb'}) self.assertRedirects(response, URL_CMS_PAGE) + + +class AdminFieldsetTests(TestCase): + def validate_attributes(self, a, b, ignore=None): + attrs = ['advanced_fields', 'hidden_fields', 'general_fields', + 'template_fields', 'additional_hidden_fields', 'fieldsets'] + if not ignore: + ignore = [] + for attr in attrs: + if attr in ignore: + continue + a_attr = getattr(a, attr) + b_attr = getattr(b, attr) + self.assertEqual(a_attr, b_attr) + + def test_no_moderator(self): + with SettingsOverride(CMS_MODERATOR=True): + control = AttributeObject() + contribute_fieldsets(control) + with SettingsOverride(CMS_MODERATOR=False): + nomod = AttributeObject() + contribute_fieldsets(nomod) + self.validate_attributes(control, nomod, ['fieldsets', 'additional_hidden_fields']) + self.assertEqual(control.additional_hidden_fields, ['moderator_state', 'moderator_message']) + self.assertEqual(nomod.additional_hidden_fields, []) + + def test_no_menu_title_overwrite(self): + with SettingsOverride(CMS_MENU_TITLE_OVERWRITE=True): + control = AttributeObject() + contribute_fieldsets(control) + with SettingsOverride(CMS_MENU_TITLE_OVERWRITE=False): + experiment = AttributeObject() + contribute_fieldsets(experiment) + self.validate_attributes(control, experiment, ['fieldsets', 'general_fields']) + self.assertEqual(control.general_fields[0], ('title', 'menu_title')) + self.assertEqual(experiment.general_fields[0], 'title') + + def test_no_softroot(self): + with SettingsOverride(CMS_SOFTROOT=True): + control = AttributeObject() + contribute_fieldsets(control) + with SettingsOverride(CMS_SOFTROOT=False): + experiment = AttributeObject() + contribute_fieldsets(experiment) + self.validate_attributes(control, experiment, ['fieldsets', 'advanced_fields']) + self.assertTrue('soft_root' in control.advanced_fields) + self.assertFalse('soft_root' in experiment.advanced_fields) + + def test_dates(self): + with SettingsOverride(CMS_SHOW_START_DATE=False, CMS_SHOW_END_DATE=False): + control = AttributeObject() + contribute_fieldsets(control) + with SettingsOverride(CMS_SHOW_START_DATE=True, CMS_SHOW_END_DATE=True): + experiment1 = AttributeObject() + contribute_fieldsets(experiment1) + with SettingsOverride(CMS_SHOW_START_DATE=True, CMS_SHOW_END_DATE=False): + experiment2 = AttributeObject() + contribute_fieldsets(experiment2) + with SettingsOverride(CMS_SHOW_START_DATE=False, CMS_SHOW_END_DATE=True): + experiment3 = AttributeObject() + contribute_fieldsets(experiment3) + self.validate_attributes(control, experiment1, ['fieldsets', 'general_fields']) + self.validate_attributes(control, experiment2, ['fieldsets', 'general_fields']) + self.validate_attributes(control, experiment3, ['fieldsets', 'general_fields']) + self.assertFalse(('publication_date', 'publication_end_date') in control.general_fields, control.general_fields) + self.assertTrue(('publication_date', 'publication_end_date') in experiment1.general_fields, experiment1.general_fields) + self.assertFalse(('publication_date', 'publication_end_date') in experiment2.general_fields, experiment2.general_fields) + self.assertFalse(('publication_date', 'publication_end_date') in experiment3.general_fields, experiment3.general_fields) + self.assertFalse('publication_end_date' in experiment1.general_fields, experiment1.general_fields) + self.assertFalse('publication_end_date' in experiment2.general_fields, experiment2.general_fields) + self.assertTrue('publication_end_date' in experiment3.general_fields, experiment3.general_fields) + self.assertFalse('publication_date' in experiment1.general_fields, experiment1.general_fields) + self.assertTrue('publication_date' in experiment2.general_fields, experiment2.general_fields) + self.assertFalse('publication_date' in experiment3.general_fields, experiment3.general_fields) + + def test_no_seo(self): + with SettingsOverride(CMS_SEO_FIELDS=True): + control = AttributeObject() + contribute_fieldsets(control) + with SettingsOverride(CMS_SEO_FIELDS=False): + experiment = AttributeObject() + contribute_fieldsets(experiment) + self.validate_attributes(control, experiment, ['fieldsets', 'seo_fields']) + self.assertEqual(control.seo_fields, ['page_title', 'meta_description', 'meta_keywords']) + self.assertFalse(experiment.seo_fields, []) + + def test_url_overwrite(self): + with SettingsOverride(CMS_URL_OVERWRITE=False): + control = AttributeObject() + contribute_fieldsets(control) + with SettingsOverride(CMS_URL_OVERWRITE=True): + experiment = AttributeObject() + contribute_fieldsets(experiment) + self.validate_attributes(control, experiment, ['fieldsets', 'advanced_fields']) + self.assertFalse('overwrite_url' in control.advanced_fields, control.advanced_fields) + self.assertTrue('overwrite_url' in experiment.advanced_fields, experiment.advanced_fields) + + def test_no_cms_enabled_menus(self): + control = AttributeObject() + contribute_fieldsets(control) + old_menus = menu_pool.menus.copy() + menu_pool.menus = {} + experiment = AttributeObject() + contribute_fieldsets(experiment) + menu_pool.menus = old_menus + self.validate_attributes(control, experiment, ['fieldsets', 'advanced_fields']) + self.assertTrue('navigation_extenders' in control.advanced_fields, control.advanced_fields) + self.assertFalse('navigation_extenders' in experiment.advanced_fields, experiment.advanced_fields) + + def test_redirects(self): + with SettingsOverride(CMS_REDIRECTS=False): + control = AttributeObject() + contribute_fieldsets(control) + with SettingsOverride(CMS_REDIRECTS=True): + experiment = AttributeObject() + contribute_fieldsets(experiment) + self.validate_attributes(control, experiment, ['fieldsets', 'advanced_fields']) + self.assertFalse('redirect' in control.advanced_fields, control.advanced_fields) + self.assertTrue('redirect' in experiment.advanced_fields, experiment.advanced_fields) + + + def test_no_apphooks(self): + def func_true(self): + return True + def func_false(self): + return False + apphook_pool.get_apphooks = MethodType(func_true, apphook_pool, ApphookPool) + control = AttributeObject() + contribute_fieldsets(control) + apphook_pool.get_apphooks = MethodType(func_false, apphook_pool, ApphookPool) + experiment = AttributeObject() + contribute_fieldsets(experiment) + self.validate_attributes(control, experiment, ['fieldsets', 'advanced_fields']) + self.assertTrue('application_urls' in control.advanced_fields, control.advanced_fields) + self.assertFalse('application_urls' in experiment.advanced_fields, control.advanced_fields) + + +class AdminListFilterTests(TestCase): + def test_no_moderator(self): + with SettingsOverride(CMS_MODERATOR=True): + control = AttributeObject() + contribute_list_filter(control) + with SettingsOverride(CMS_MODERATOR=False): + experiment = AttributeObject() + contribute_list_filter(experiment) + self.assertTrue('moderator_state' in control.list_filter, control.list_filter) + self.assertFalse('moderator_state' in experiment.list_filter, experiment.list_filter) + + def test_no_softroot(self): + with SettingsOverride(CMS_SOFTROOT=True): + control = AttributeObject() + contribute_list_filter(control) + with SettingsOverride(CMS_SOFTROOT=False): + experiment = AttributeObject() + contribute_list_filter(experiment) + self.assertTrue('soft_root' in control.list_filter, control.list_filter) + self.assertFalse('soft_root' in experiment.list_filter, experiment.list_filter) \ No newline at end of file From a68024e78e0438e2c285e293b90f1aa3a8fee1cf Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Thu, 24 Feb 2011 18:27:15 +0100 Subject: [PATCH 137/689] started adding get_permissions tests --- cms/admin/pageadmin.py | 42 ------------------------------------------ cms/tests/admin.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 42 deletions(-) diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py index 53f24da2cd9..dcfe49cb389 100644 --- a/cms/admin/pageadmin.py +++ b/cms/admin/pageadmin.py @@ -305,17 +305,6 @@ def change_template(self, request, object_id): else: return HttpResponseForbidden() - def get_parent(self, request): - target = request.GET.get('target', None) - position = request.GET.get('position', None) - parent = None - if target: - if position == "first_child": - parent = Page.objects.get(pk=target) - else: - parent = Page.objects.get(pk=target).parent - return parent - def get_fieldsets(self, request, obj=None): """ Add fieldsets of placeholders to the list of already existing @@ -494,17 +483,6 @@ def get_formsets(self, request, obj=None): continue yield inline.get_formset(request, obj) - - def get_widget(self, request, page, lang, name): - """ - Given the request and name of a placeholder return a PluginEditor Widget - """ - installed_plugins = plugin_pool.get_all_plugins(name, page) - widget = PluginEditor(installed=installed_plugins) - if not isinstance(widget(), Widget): - widget = Textarea - return widget - def add_view(self, request, form_url='', extra_context=None): extra_context = extra_context or {} if settings.CMS_MODERATOR and 'target' in request.GET and 'position' in request.GET: @@ -765,24 +743,6 @@ def render_revision_form(self, request, obj, version, context, revert=False, rec return super(PageAdmin, self).render_revision_form(request, obj, version, context, revert, recover) - def list_pages(self, request, template_name=None, extra_context=None): - """ - List root pages - """ - # HACK: overrides the changelist template and later resets it to None - - if template_name: - self.change_list_template = template_name - context = { - 'name': _("page"), - - 'pages': Page.objects.all_root().order_by("tree_id"), - } - context.update(extra_context or {}) - change_list = self.changelist_view(request, context) - self.change_list_template = None - return change_list - @transaction.commit_on_success def move_page(self, request, page_id, extra_context=None): """ @@ -871,8 +831,6 @@ def copy_page(self, request, page_id, extra_context=None): } page.copy_page(target, site, position, **kwargs) return HttpResponse("ok") - #return self.list_pages(request, - # template_name='admin/cms/page/change_list_tree.html') context.update(extra_context or {}) return HttpResponseRedirect('../../') diff --git a/cms/tests/admin.py b/cms/tests/admin.py index b7b5bb929bd..4c58821145c 100644 --- a/cms/tests/admin.py +++ b/cms/tests/admin.py @@ -12,9 +12,13 @@ URL_CMS_PAGE, URL_CMS_TRANSLATION_DELETE) from cms.test_utils.util.context_managers import SettingsOverride from cms.test_utils.util.mock import AttributeObject +from django.conf import settings +from django.contrib.admin.sites import site from django.contrib.auth.models import User, Permission from django.contrib.sites.models import Site from django.core.urlresolvers import reverse +from django.http import Http404 +from django.test.client import Client from menus.menu_pool import menu_pool from types import MethodType from unittest import TestCase @@ -179,6 +183,34 @@ def test_07_delete_translation(self): self.assertEqual(response.status_code, 200) response = self.client.post(URL_CMS_TRANSLATION_DELETE % page.pk, {'language': 'nb'}) self.assertRedirects(response, URL_CMS_PAGE) + + def test_08_change_template(self): + request = self.get_request('/admin/cms/page/1/', 'en') + pageadmin = site._registry[Page] + self.assertRaises(Http404, pageadmin.change_template, request, 1) + page = self.create_page() + response = pageadmin.change_template(request, page.pk) + self.assertEqual(response.status_code, 403) + admin = self._get_guys(True) + url = reverse('admin:cms_page_change_template', args=(page.pk,)) + with self.login_user_context(admin): + response = self.client.post(url, {'template': 'doesntexist'}) + self.assertEqual(response.status_code, 400) + self.assertEqual(response.content, "template not valid") + response = self.client.post(url, {'template': settings.CMS_TEMPLATES[0][0]}) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.content, 'ok') + + def test_09_get_permissions(self): + page = self.create_page() + url = reverse('admin:cms_page_get_permissions', args=(page.pk,)) + response = self.client.get(url) + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, 'admin/login.html') + admin = self._get_guys(True) + with self.login_user_context(admin): + response = self.client.get(url) + self.assertEqual(response.status_code, 200) class AdminFieldsetTests(TestCase): From ab7acf0b0189d1666be88926b7d91c7407d1e76a Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Thu, 24 Feb 2011 22:30:49 +0100 Subject: [PATCH 138/689] no need for py24 compatiblity anymore, since django 1.2 doesn't support py 24 either --- cms/models/managers.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/cms/models/managers.py b/cms/models/managers.py index 992a35cc822..903abf1e718 100644 --- a/cms/models/managers.py +++ b/cms/models/managers.py @@ -9,11 +9,6 @@ from cms.utils.i18n import get_fallback_languages -try: - set -except NameError: - from sets import Set as set - class PageManager(PublisherManager): """Use draft() and public() methods for accessing the corresponding From f4b8ca83a7acec6a522bcee8f970c15f60fb3854 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Thu, 24 Feb 2011 22:31:18 +0100 Subject: [PATCH 139/689] removed cms.models.pagemodel.Page.get_calculated_status, since it's not used anywhere --- cms/models/pagemodel.py | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/cms/models/pagemodel.py b/cms/models/pagemodel.py index fb466489051..6bfc982896a 100644 --- a/cms/models/pagemodel.py +++ b/cms/models/pagemodel.py @@ -498,22 +498,6 @@ def get_draft_object(self): def get_public_object(self): return self.publisher_public - - def get_calculated_status(self): - """ - get the calculated status of the page based on published_date, - published_end_date, and status - """ - if settings.CMS_SHOW_START_DATE: - if self.publication_date > datetime.now(): - return False - - if settings.CMS_SHOW_END_DATE and self.publication_end_date: - if self.publication_end_date < datetime.now(): - return True - - return self.published - calculated_status = property(get_calculated_status) def get_languages(self): """ From 3041aeb9f3a967f6098a1d1dfdda171a1b7f4847 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Fri, 25 Feb 2011 10:49:35 +0100 Subject: [PATCH 140/689] merged in the CDATA fixes from pull request 720 by Ionel maries Cristian --- cms/plugins/text/templates/cms/plugins/widgets/wymeditor.html | 4 +++- cms/plugins/text/widgets/tinymce_widget.py | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cms/plugins/text/templates/cms/plugins/widgets/wymeditor.html b/cms/plugins/text/templates/cms/plugins/widgets/wymeditor.html index ca245310f40..b2d8f0cf7b3 100644 --- a/cms/plugins/text/templates/cms/plugins/widgets/wymeditor.html +++ b/cms/plugins/text/templates/cms/plugins/widgets/wymeditor.html @@ -1,5 +1,6 @@ {% load i18n %} +//]]> + \ No newline at end of file diff --git a/cms/plugins/text/widgets/tinymce_widget.py b/cms/plugins/text/widgets/tinymce_widget.py index 4bea41d2755..842438c355d 100644 --- a/cms/plugins/text/widgets/tinymce_widget.py +++ b/cms/plugins/text/widgets/tinymce_widget.py @@ -76,8 +76,8 @@ def render(self, name, value, attrs=None): 'debug': False, } c_json = simplejson.dumps(compressor_config) - html.append(u'' % (c_json)) - html.append(u'' % (self.render_additions(name, value, attrs), json)) + html.append(u'' % (c_json)) + html.append(u'' % (self.render_additions(name, value, attrs), json)) return mark_safe(u'\n'.join(html)) From 26da2348cfec7d286fbd75c0ef404efe08574f9f Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Fri, 25 Feb 2011 14:53:53 +0100 Subject: [PATCH 141/689] added more templatetag tests --- cms/templatetags/cms_tags.py | 4 +- cms/tests/__init__.py | 1 + cms/tests/templatetags.py | 82 ++++++++++++ tests/project/fixtures/twopages.json | 178 +++++++++++++++++++++++++++ 4 files changed, 263 insertions(+), 2 deletions(-) create mode 100644 cms/tests/templatetags.py create mode 100644 tests/project/fixtures/twopages.json diff --git a/cms/templatetags/cms_tags.py b/cms/templatetags/cms_tags.py index 44b7af28419..7561a660306 100644 --- a/cms/templatetags/cms_tags.py +++ b/cms/templatetags/cms_tags.py @@ -25,8 +25,8 @@ def get_site_id(site): if site: if isinstance(site, Site): site_id = site.id - elif isinstance(site, int): - site_id = site + elif isinstance(site, int) or (isinstance(site, basestring) and site.isdigit()): + site_id = int(site) else: site_id = settings.SITE_ID else: diff --git a/cms/tests/__init__.py b/cms/tests/__init__.py index a88e51cd336..6daa19dbd58 100644 --- a/cms/tests/__init__.py +++ b/cms/tests/__init__.py @@ -19,6 +19,7 @@ from cms.tests.reversion_tests import ReversionTestCase from cms.tests.settings import SettingsTests from cms.tests.site import SiteTestCase +from cms.tests.templatetags import TemplatetagTests, TemplatetagDatabaseTests from cms.tests.toolbar import ToolbarTests from cms.tests.urlutils import UrlutilsTestCase from cms.tests.views import ViewTests diff --git a/cms/tests/templatetags.py b/cms/tests/templatetags.py new file mode 100644 index 00000000000..7cb0bf18866 --- /dev/null +++ b/cms/tests/templatetags.py @@ -0,0 +1,82 @@ +from cms.models.pagemodel import Page +from cms.templatetags.cms_tags import get_site_id, _get_page_by_untyped_arg +from cms.test_utils.testcases import SettingsOverrideTestCase +from cms.test_utils.util.context_managers import SettingsOverride +from django.contrib.sites.models import Site +from django.core import mail +from unittest import TestCase + + +class TemplatetagTests(TestCase): + def test_get_site_id_from_nothing(self): + with SettingsOverride(SITE_ID=10): + self.assertEqual(10, get_site_id(None)) + + def test_get_site_id_from_int(self): + self.assertEqual(10, get_site_id(10)) + + def test_get_site_id_from_site(self): + site = Site() + site.id = 10 + self.assertEqual(10, get_site_id(site)) + + def test_get_site_id_from_str_int(self): + self.assertEqual(10, get_site_id('10')) + + def test_get_site_id_from_str(self): + with SettingsOverride(SITE_ID=10): + self.assertEqual(10, get_site_id("something")) + + +class TemplatetagDatabaseTests(SettingsOverrideTestCase): + settings_overrides = {'CMS_MODERATOR': False} + fixtures = ['twopages.json'] + + def _getfirst(self): + return Page.objects.get(pk=1) + + def _getsecond(self): + return Page.objects.get(pk=2) + + def test_get_page_by_untyped_arg_none(self): + control = self._getfirst() + request = self.get_request('/') + page = _get_page_by_untyped_arg(None, request, 1) + self.assertEqual(page, control) + + def test_get_page_by_untyped_arg_page(self): + control = self._getfirst() + request = self.get_request('/') + page = _get_page_by_untyped_arg(control, request, 1) + self.assertEqual(page, control) + + def test_get_page_by_untyped_arg_reverse_id(self): + second = self._getsecond() + request = self.get_request('/') + page = _get_page_by_untyped_arg("myreverseid", request, 1) + self.assertEqual(page, second) + + def test_get_page_by_untyped_arg_dict(self): + second = self._getsecond() + request = self.get_request('/') + page = _get_page_by_untyped_arg({'pk': 2}, request, 1) + self.assertEqual(page, second) + + def test_get_page_by_untyped_arg_dict_fail_debug(self): + with SettingsOverride(DEBUG=True): + request = self.get_request('/') + self.assertRaises(Page.DoesNotExist, + _get_page_by_untyped_arg, {'pk': 3}, request, 1 + ) + self.assertEqual(len(mail.outbox), 0) + + def test_get_page_by_untyped_arg_dict_fail_nodebug(self): + with SettingsOverride(DEBUG=False, MANAGERS=[("Jenkins", "tests@django-cms.org")]): + request = self.get_request('/') + page = _get_page_by_untyped_arg({'pk': 3}, request, 1) + self.assertEqual(page, None) + self.assertEqual(len(mail.outbox), 1) + + def test_get_page_by_untyped_arg_fail(self): + request = self.get_request('/') + self.assertRaises(TypeError, _get_page_by_untyped_arg, [], request, 1) \ No newline at end of file diff --git a/tests/project/fixtures/twopages.json b/tests/project/fixtures/twopages.json new file mode 100644 index 00000000000..32e6dce400f --- /dev/null +++ b/tests/project/fixtures/twopages.json @@ -0,0 +1,178 @@ +[ + { + "pk": 1, + "model": "cms.placeholder", + "fields": { + "slot": "right-column", + "default_width": null + } + }, + { + "pk": 2, + "model": "cms.placeholder", + "fields": { + "slot": "body", + "default_width": null + } + }, + { + "pk": 3, + "model": "cms.placeholder", + "fields": { + "slot": "right-column", + "default_width": null + } + }, + { + "pk": 4, + "model": "cms.placeholder", + "fields": { + "slot": "body", + "default_width": null + } + }, + { + "pk": 1, + "model": "cms.page", + "fields": { + "rght": 2, + "navigation_extenders": null, + "site": 1, + "creation_date": "2011-02-25 07:02:04", + "lft": 1, + "in_navigation": true, + "reverse_id": null, + "login_required": false, + "created_by": "script", + "publication_end_date": null, + "moderator_state": 0, + "template": "nav_playground.html", + "tree_id": 1, + "placeholders": [ + 1, + 2 + ], + "changed_date": "2011-02-25 07:02:04", + "limit_visibility_in_menu": null, + "parent": null, + "publisher_state": 1, + "soft_root": false, + "publication_date": "2011-02-25 07:02:04", + "publisher_public": null, + "level": 0, + "changed_by": "script", + "publisher_is_draft": true, + "published": true + } + }, + { + "pk": 2, + "model": "cms.page", + "fields": { + "rght": 2, + "navigation_extenders": null, + "site": 1, + "creation_date": "2011-02-25 07:02:13", + "lft": 1, + "in_navigation": true, + "reverse_id": "myreverseid", + "login_required": false, + "created_by": "script", + "publication_end_date": null, + "moderator_state": 0, + "template": "nav_playground.html", + "tree_id": 2, + "placeholders": [ + 3, + 4 + ], + "changed_date": "2011-02-25 07:02:13", + "limit_visibility_in_menu": null, + "parent": null, + "publisher_state": 1, + "soft_root": false, + "publication_date": "2011-02-25 07:02:13", + "publisher_public": null, + "level": 0, + "changed_by": "script", + "publisher_is_draft": true, + "published": true + } + }, + { + "pk": 1, + "model": "cms.title", + "fields": { + "menu_title": null, + "redirect": null, + "meta_keywords": null, + "page_title": null, + "language": "en", + "title": "first", + "has_url_overwrite": false, + "application_urls": null, + "creation_date": "2011-02-25 07:02:05", + "page": 1, + "path": "first", + "meta_description": null, + "slug": "first" + } + }, + { + "pk": 2, + "model": "cms.title", + "fields": { + "menu_title": null, + "redirect": null, + "meta_keywords": null, + "page_title": null, + "language": "en", + "title": "second", + "has_url_overwrite": false, + "application_urls": null, + "creation_date": "2011-02-25 07:02:14", + "page": 2, + "path": "second", + "meta_description": null, + "slug": "second" + } + }, + { + "pk": 3, + "model": "cms.title", + "fields": { + "menu_title": null, + "redirect": null, + "meta_keywords": null, + "page_title": null, + "language": "de", + "title": "erste", + "has_url_overwrite": false, + "application_urls": null, + "creation_date": "2011-02-25 07:02:44", + "page": 1, + "path": "erste", + "meta_description": null, + "slug": "erste" + } + }, + { + "pk": 4, + "model": "cms.title", + "fields": { + "menu_title": null, + "redirect": null, + "meta_keywords": null, + "page_title": null, + "language": "de", + "title": "zweite", + "has_url_overwrite": false, + "application_urls": null, + "creation_date": "2011-02-25 07:02:59", + "page": 2, + "path": "zweite", + "meta_description": null, + "slug": "zweite" + } + } +] From b8633b42efcd137d96e1e3f42e004cb7595768fe Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Mon, 28 Feb 2011 13:25:21 +0100 Subject: [PATCH 142/689] first stab at python api --- cms/api.py | 302 ++++++++++++++++++++++++++++++++ cms/models/pagemodel.py | 19 +- cms/test_utils/testcases.py | 62 ------- cms/test_utils/util/fixtures.py | 30 ++++ cms/tests/admin.py | 24 ++- cms/tests/apphooks.py | 31 ++-- cms/tests/forms.py | 8 +- cms/tests/mail.py | 5 +- cms/tests/menu.py | 9 +- cms/tests/multilingual.py | 10 +- cms/tests/navextender.py | 23 ++- cms/tests/nonroot.py | 16 +- cms/tests/page.py | 65 +++---- cms/tests/permmod.py | 82 +++++---- cms/tests/plugins.py | 13 +- cms/tests/publisher.py | 44 ++--- cms/tests/security.py | 3 +- cms/tests/site.py | 27 +-- cms/tests/toolbar.py | 6 +- cms/tests/views.py | 35 ++-- 20 files changed, 554 insertions(+), 260 deletions(-) create mode 100644 cms/api.py create mode 100644 cms/test_utils/util/fixtures.py diff --git a/cms/api.py b/cms/api.py new file mode 100644 index 00000000000..41a20699d52 --- /dev/null +++ b/cms/api.py @@ -0,0 +1,302 @@ +# -*- coding: utf-8 -*- +from cms.admin.forms import save_permissions +from cms.app_base import CMSApp +from cms.apphook_pool import apphook_pool +from cms.models.moderatormodels import ACCESS_PAGE_AND_DESCENDANTS +from cms.models.pagemodel import Page +from cms.models.permissionmodels import PageUser, PagePermission +from cms.models.placeholdermodel import Placeholder +from cms.models.pluginmodel import CMSPlugin +from cms.models.titlemodels import Title +from cms.plugin_base import CMSPluginBase +from cms.plugin_pool import plugin_pool +from cms.utils.permissions import _thread_locals +from django.conf import settings +from django.contrib.auth.models import User +from django.contrib.sites.models import Site +from django.template.defaultfilters import slugify +from menus.menu_pool import menu_pool +import datetime + + +VISIBILITY_ALL = None +VISIBILITY_USERS = 1 +VISIBILITY_STAFF = 2 + +def _generate_valid_slug(source, parent, language): + """ + Generate a valid slug for a page from source for the given language. + Parent is passed so we can make sure the slug is unique for this level in + the page tree. + """ + if parent: + qs = Title.objects.filter(language=language, page__parent=parent) + else: + qs = Title.objects.filter(language=language, page__parent__isnull=True) + used = qs.values_list('slug', flat=True) + baseslug = slugify(source) + slug = baseslug + i = 1 + while slug in used: + slug = '%s-%s' % (baseslug, i) + i += 1 + return slug + +def create_page(title, template, language, menu_title=None, slug=None, + apphook=None, redirect=None, meta_description=None, + meta_keywords=None, created_by='python-api', parent=None, + publication_date=None, publication_end_date=None, + in_navigation=False, soft_root=False, reverse_id=None, + navigation_extenders=None, published=False, site=None, + login_required=False, limit_visibility_in_menu=VISIBILITY_ALL, + position="last-child"): + """ + Create a CMS Page and it's title for the given language + """ + # ugly permissions hack + if created_by and isinstance(created_by, User): + _thread_locals.user = created_by + created_by = created_by.username + else: + _thread_locals.user = None + + # validate template + assert template in [template[0] for template in settings.CMS_TEMPLATES] + + # validate language: + assert language in [language[0] for language in settings.CMS_LANGUAGES] + + # set default slug: + if not slug: + slug = _generate_valid_slug(title, parent, language) + + # validate and normalize apphook + if apphook: + if isinstance(apphook, CMSApp): + application_urls = apphook.__name__ + elif isinstance(apphook, basestring): + assert apphook in apphook_pool.apps + application_urls = apphook + else: + raise TypeError("apphook must be string or CMSApp instance") + else: + application_urls = None + + # validate parent + if parent: + assert isinstance(parent, Page) + + # validate publication date + if publication_date: + assert isinstance(publication_date, datetime.datetime) + + # validate publication end date + if publication_end_date: + assert isinstance(publication_date, datetime.datetime) + + # validate softroot + assert settings.CMS_SOFTROOT or not soft_root + + # validate site + if not site: + site = Site.objects.get_current() + else: + assert isinstance(site, Site) + + if navigation_extenders: + assert navigation_extenders in [menu[0] for menu in menu_pool.get_menus_by_attribute("cms_enabled", True)] + + # validate menu visibility + assert limit_visibility_in_menu in (VISIBILITY_ALL, VISIBILITY_USERS, VISIBILITY_STAFF) + + # validate position + assert position in ('last-child', 'first-child', 'left', 'rigth') + + page = Page( + created_by=created_by, + changed_by=created_by, + parent=parent, + publication_date=publication_date, + publication_end_date=publication_end_date, + in_navigation=in_navigation, + soft_root=soft_root, + reverse_id=reverse_id, + navigation_extenders=navigation_extenders, + published=published, + template=template, + site=site, + login_required=login_required, + limit_visibility_in_menu=limit_visibility_in_menu, + ) + if parent: + page.insert_at(parent, position) + page.save() + + if settings.CMS_MODERATOR and _thread_locals.user: + page.pagemoderator_set.create(user=_thread_locals.user) + + create_title( + language=language, + title=title, + menu_title=menu_title, + slug=slug, + application_urls=application_urls, + redirect=redirect, + meta_description=meta_description, + meta_keywords=meta_keywords, + page=page + ) + + del _thread_locals.user + return page + +def create_title(language, title, page, menu_title=None, slug=None, + apphook=None, redirect=None, meta_description=None, + meta_keywords=None, parent=None): + """ + Create a title. + + Parent is only used if slug=None. + """ + # validate language: + assert language in [language[0] for language in settings.CMS_LANGUAGES] + + # validate page + assert isinstance(page, Page) + + # set default slug: + if not slug: + slug = _generate_valid_slug(title, parent, language) + + # validate and normalize apphook + if apphook: + if isinstance(apphook, CMSApp): + application_urls = apphook.__name__ + elif isinstance(apphook, basestring): + assert apphook in apphook_pool.apps + application_urls = apphook + else: + raise TypeError("apphook must be string or CMSApp instance") + else: + application_urls = None + + + return Title.objects.create( + language=language, + title=title, + menu_title=menu_title, + slug=slug, + application_urls=application_urls, + redirect=redirect, + meta_description=meta_description, + meta_keywords=meta_keywords, + page=page, + ) + +def add_plugin(placeholder, plugin_type, language, position='last-child', **data): + """ + Add a plugin to a placeholder + """ + # validate placeholder + assert isinstance(placeholder, Placeholder) + + # validate and normalize plugin type + if issubclass(plugin_type, CMSPluginBase): + plugin_type = plugin_type.__name__ + plugin_model = plugin_type.model + elif isinstance(plugin_type, basestring): + try: + plugin_model = plugin_pool.get_plugin(plugin_type).model + except KeyError: + raise TypeError('plugin_type must be CMSPluginBase subclass or string') + else: + raise TypeError('plugin_type must be CMSPluginBase subclass or string') + + + plugin_base = CMSPlugin( + plugin_type='TextPlugin', + placeholder=placeholder, + position=1, + language=language + ) + plugin_base.insert_at(None, position='last-child', save=False) + + plugin = plugin_model(**data) + plugin_base.set_base_attr(plugin) + plugin.save() + return plugin + +def create_page_user(created_by, user, can_add_page=True, + can_change_page=True, can_delete_page=True, + can_recover_page=True, can_add_pageuser=True, + can_change_pageuser=True, can_delete_pageuser=True, + can_add_pagepermission=True, + can_change_pagepermission=True, + can_delete_pagepermission=True, grant_all=False): + """ + Creates a page user. + """ + if grant_all: + # just be lazy + return create_page_user(created_by, user, True, True, True, True, + True, True, True, True, True, True) + + # validate created_by + assert isinstance(created_by, User) + + data = { + 'can_add_page': can_add_page, + 'can_change_page': can_change_page, + 'can_delete_page': can_delete_page, + 'can_recover_page': can_recover_page, + 'can_add_pageuser': can_add_pageuser, + 'can_change_pageuser': can_change_pageuser, + 'can_delete_pageuser': can_delete_pageuser, + 'can_add_pagepermission': can_add_pagepermission, + 'can_change_pagepermission': can_change_pagepermission, + 'can_delete_pagepermission': can_delete_pagepermission, + } + user.is_staff = True + user.is_active = True + page_user = PageUser(created_by=created_by) + for field in [f.name for f in User._meta.local_fields]: + setattr(page_user, field, getattr(user, field)) + user.save() + page_user.save() + save_permissions(data, page_user) + return user + +def assign_user_to_page(page, user, grant_on=ACCESS_PAGE_AND_DESCENDANTS, + can_add=False, can_change=False, can_delete=False, + can_change_advanced_settings=False, can_publish=False, + can_change_permissions=False, can_move_page=False, can_moderate=False, + grant_all=False): + """Assigns given user to page, and gives him requested permissions. + + Note: this is not happening over frontend, maybe a test for this in + future will be nice. + """ + if grant_all: + return assign_user_to_page(page, user, grant_on, True, True, True, True, + True, True, True, True) + + data = { + 'can_add': can_add, + 'can_change': can_change, + 'can_delete': can_delete, + 'can_change_advanced_settings': can_change_advanced_settings, + 'can_publish': can_publish, + 'can_change_permissions': can_change_permissions, + 'can_move_page': can_move_page, + 'can_moderate': can_moderate, + } + + page_permission = PagePermission(page=page, user=user, grant_on=grant_on, **data) + page_permission.save() + return page_permission + +def publish_page(page, user, approve=False): + raise NotImplementedError + +def approve_page(page, user): + raise NotImplementedError \ No newline at end of file diff --git a/cms/models/pagemodel.py b/cms/models/pagemodel.py index fb466489051..311dbfe7ce3 100644 --- a/cms/models/pagemodel.py +++ b/cms/models/pagemodel.py @@ -130,7 +130,9 @@ def move_page(self, target, position='first-child'): # check the slugs check_title_slugs(self) - def copy_page(self, target, site, position='first-child', copy_permissions=True, copy_moderation=True, public_copy=False): + def copy_page(self, target, site, position='first-child', + copy_permissions=True, copy_moderation=True, + public_copy=False): """ copy a page [ and all its descendants to a new location ] Doesn't checks for add page permissions anymore, this is done in PageAdmin. @@ -680,13 +682,14 @@ def get_template(self): defined or DEFAULT_PAGE_TEMPLATE otherwise """ template = None - if self.template and len(self.template)>0 and \ - self.template != settings.CMS_TEMPLATE_INHERITANCE_MAGIC: - template = self.template - else: - for p in self.get_ancestors(ascending=True): - template = p.get_template() - break + if self.template: + if self.template != settings.CMS_TEMPLATE_INHERITANCE_MAGIC: + template = self.template + else: + for p in self.get_ancestors(ascending=True): + template = p.get_template() + if template: + break if not template: template = settings.CMS_TEMPLATES[0][0] return template diff --git a/cms/test_utils/testcases.py b/cms/test_utils/testcases.py index 1fafeb8748d..2d731e6b13a 100644 --- a/cms/test_utils/testcases.py +++ b/cms/test_utils/testcases.py @@ -144,68 +144,6 @@ def assertObjectDoesNotExist(self, qs, **filter): except ObjectDoesNotExist: return raise self.failureException, "ObjectDoesNotExist not raised" - - def create_page(self, parent_page=None, user=None, position="last-child", - title=None, site=1, published=False, in_navigation=False, - moderate=False, language=None, title_extra=None, **extra): - """ - Common way for page creation with some checks - """ - _thread_locals.user = user - if not language: - language = settings.LANGUAGES[0][0] - if settings.CMS_SITE_LANGUAGES.get(site, False): - language = settings.CMS_SITE_LANGUAGES[site][0] - site = Site.objects.get(pk=site) - - page_data = { - 'site': site, - 'template': 'nav_playground.html', - 'published': published, - 'in_navigation': in_navigation, - } - if user: - page_data['created_by'] = user - page_data['changed_by'] = user - if parent_page: - page_data['parent'] = parent_page - page_data.update(extra) - - page = Page(**page_data) - if parent_page: - page.insert_at(self.reload(parent_page), position) - page.save() - - if settings.CMS_MODERATOR and user: - page.pagemoderator_set.create(user=user) - - if not title: - title = 'test page %d' % self.counter - slug = 'test-page-%d' % self.counter - else: - slug = slugify(title) - self.counter = self.counter + 1 - if not title_extra: - title_extra = {} - self.create_title( - title=title, - slug=slug, - language=language, - page=page, - **title_extra - ) - - del _thread_locals.user - return page - - def create_title(self, title, slug, language, page, **extra): - return Title.objects.create( - title=title, - slug=slug, - language=language, - page=page, - **extra - ) def copy_page(self, page, target_page): from cms.utils.page import get_available_slug diff --git a/cms/test_utils/util/fixtures.py b/cms/test_utils/util/fixtures.py new file mode 100644 index 00000000000..c86853e5078 --- /dev/null +++ b/cms/test_utils/util/fixtures.py @@ -0,0 +1,30 @@ +from cms.test_utils.util.context_managers import SettingsOverride +from django.conf import settings +from django.core.management import call_command +from django.db import connections +import os + + +class Fixture(object): + DB_OVERRIDE = { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': ':memory:' + } + + def __init__(self, name, **settings_overrides): + self.name = name + self.settings_overrides = settings_overrides + + def start(self): + self.so = SettingsOverride(**self.settings_overrides) + self.so.__enter__() + self.old_db = connections.databases['default'] + connections.databases['default'] = self.DB_OVERRIDE + call_command('syncdb', migrate_all=True, interactive=False, verbosity=0) + + def save(self): + filename = os.path.join(settings.FIXTURE_DIRS[0], self.name) + with open(filename, 'wb') as fobj: + call_command('dumpdata', 'cms', stdout=fobj) + self.so.__exit__(None, None, None) + connections.databases['default'] = self.old_db \ No newline at end of file diff --git a/cms/tests/admin.py b/cms/tests/admin.py index 9f3729492c2..9a52fccc19a 100644 --- a/cms/tests/admin.py +++ b/cms/tests/admin.py @@ -1,12 +1,14 @@ # -*- coding: utf-8 -*- from __future__ import with_statement -from cms.admin.dialog.forms import ModeratorForm, PermissionForm, \ - PermissionAndModeratorForm +from cms.admin.dialog.forms import (ModeratorForm, PermissionForm, + PermissionAndModeratorForm) from cms.admin.dialog.views import _form_class_selector +from cms.api import create_page, create_title from cms.models.pagemodel import Page from cms.models.permissionmodels import GlobalPagePermission from cms.test_utils import testcases as base -from cms.test_utils.testcases import CMSTestCase, URL_CMS_PAGE_DELETE, URL_CMS_PAGE, URL_CMS_TRANSLATION_DELETE +from cms.test_utils.testcases import (CMSTestCase, URL_CMS_PAGE_DELETE, + URL_CMS_PAGE, URL_CMS_TRANSLATION_DELETE) from cms.test_utils.util.context_managers import SettingsOverride from django.contrib.auth.models import User, Permission from django.contrib.sites.models import Site @@ -53,8 +55,11 @@ def test_01_edit_does_not_reset_page_adv_fields(self): admin, normal_guy = self._get_guys() + site = Site.objects.get(pk=1) + # The admin creates the page - page = self.create_page(None, admin, 1, OLD_PAGE_NAME) + page = create_page(OLD_PAGE_NAME, "nav_playground.html", "en", + site=site, created_by=admin) page.reverse_id = REVERSE_ID page.save() title = page.get_title_obj() @@ -119,8 +124,10 @@ def test_01_edit_does_not_reset_page_adv_fields(self): def test_02_delete(self): admin = self._get_guys(True) - page = self.create_page(user=admin, title="delete-page", published=True) - child = self.create_page(page, user=admin, title="delete-page", published=True) + page = create_page("delete-page", "nav_playground.html", "en", + created_by=admin, published=True) + child = create_page('child-page', "nav_playground.html", "en", + created_by=admin, published=True, parent=page) self.login_user(admin) data = {'post': 'yes'} response = self.client.post(URL_CMS_PAGE_DELETE % page.pk, data) @@ -164,8 +171,9 @@ def test_06_search_fields(self): def test_07_delete_translation(self): admin = self._get_guys(True) - page = self.create_page(user=admin, title="delete-page-ranslation", published=True) - title = self.create_title("delete-page-ranslation-2", "delete-page-ranslation-2", 'nb', page) + page = create_page("delete-page-ranslation", "nav_playground.html", "en", + created_by=admin, published=True) + create_title("nb", "delete-page-ranslation-2", page, slug="delete-page-ranslation-2") self.login_user(admin) response = self.client.get(URL_CMS_TRANSLATION_DELETE % page.pk, {'language': 'nb'}) self.assertEqual(response.status_code, 200) diff --git a/cms/tests/apphooks.py b/cms/tests/apphooks.py index 6ecd4f46174..109405a88a4 100644 --- a/cms/tests/apphooks.py +++ b/cms/tests/apphooks.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- from __future__ import with_statement +from cms.api import create_page, create_title from cms.apphook_pool import apphook_pool from cms.appresolver import applications_page_check, clear_app_resolvers - from cms.models.titlemodels import Title from cms.test_utils.testcases import CMSTestCase from cms.test_utils.util.context_managers import SettingsOverride @@ -11,6 +11,7 @@ import sys + APP_NAME = 'SampleApp' APP_MODULE = "project.sampleapp.cms_app" @@ -63,17 +64,11 @@ def test_03_apphook_on_root(self): with SettingsOverride(ROOT_URLCONF='project.urls_for_apphook_tests'): apphook_pool.clear() superuser = User.objects.create_superuser('admin', 'admin@admin.com', 'admin') - page = self.create_page(user=superuser, published=True) + page = create_page("apphooked-page", "nav_playground.html", "en", + created_by=superuser, published=True, apphook="SampleApp") english_title = page.title_set.all()[0] self.assertEquals(english_title.language, 'en') - Title.objects.create( - language='de', - title='%s DE' % english_title.title, - slug=english_title.slug, - path=english_title.path, - page=page, - ) - page.title_set.all().update(application_urls='SampleApp') + create_title("de", "aphooked-page-de", page, apphook="SampleApp") self.assertTrue(page.publish()) response = self.client.get(self.get_pages_root()) @@ -89,13 +84,15 @@ def test_04_get_page_for_apphook(self): apphook_pool.clear() superuser = User.objects.create_superuser('admin', 'admin@admin.com', 'admin') - page = self.create_page(user=superuser, published=True) - self.create_title(page.get_title(), page.get_slug(), 'de', page) - child_page = self.create_page(page, user=superuser, published=True) - self.create_title(child_page.get_title(), child_page.get_slug(), 'de', child_page) - child_child_page = self.create_page(child_page, user=superuser, published=True) - self.create_title(child_child_page.get_title(), child_child_page.get_slug(), 'de', child_child_page) - child_child_page.title_set.all().update(application_urls='SampleApp') + page = create_page("home", "nav_playground.html", "en", + created_by=superuser, published=True) + create_title('de', page.get_title(), page) + child_page = create_page("child_page", "nav_playground.html", "en", + created_by=superuser, published=True, parent=page) + create_title('de', child_page.get_title(), child_page) + child_child_page = create_page("child_child_page", "nav_playground.html", + "en", created_by=superuser, published=True, parent=child_page, apphook='SampleApp') + create_title("de", child_child_page.get_title(), child_child_page, apphook='SampleApp') child_child_page.publish() # publisher_public is set to draft on publish, issue with onetoone reverse diff --git a/cms/tests/forms.py b/cms/tests/forms.py index c804b60130f..acd4b368a9a 100644 --- a/cms/tests/forms.py +++ b/cms/tests/forms.py @@ -2,6 +2,7 @@ from __future__ import with_statement from cms.admin import forms from cms.admin.forms import PageUserForm +from cms.api import create_page, create_page_user from cms.forms.fields import PageSelectFormField, SuperLazyIterator from cms.forms.utils import get_site_choices, get_page_choices from cms.test_utils.testcases import CMSTestCase @@ -42,7 +43,7 @@ def test_04_get_site_choices_without_moderator(self): user_super.set_password("super") user_super.save() self.login_user(user_super) - self.create_page(title="home", user=user_super) + create_page("home", "nav_playground.html", "en", created_by=user_super) # The proper test result = get_site_choices() self.assertEquals(result, [(1,'example.com')]) @@ -77,7 +78,7 @@ def test_07_compress_function_gets_a_page_when_one_exists(self): user_super.set_password("super") user_super.save() self.login_user(user_super) - home_page = self.create_page(title="home", user=user_super) + home_page = create_page("home", "nav_playground.html", "en", created_by=user_super) # The actual test fake_field = Mock_PageSelectFormField() data_list = (0, home_page.pk) #(site_id, page_id) dsite-id is not used @@ -97,7 +98,8 @@ def test_08_superlazy_iterator_behaves_properly_for_pages(self): self.assertEquals(normal_result, list(lazy_result)) def test_09_page_user_form_initial(self): - user = self.create_page_user('myuser', 'myuser', grant_all=True) + myuser = User.objects.create_superuser("myuser", "myuser@django-cms.org", "myuser") + user = create_page_user(myuser, myuser, grant_all=True) puf = PageUserForm(instance=user) names = ['can_add_page', 'can_change_page', 'can_delete_page', 'can_add_pageuser', 'can_change_pageuser', diff --git a/cms/tests/mail.py b/cms/tests/mail.py index ec9695bfa2a..c9b1dd1d7ca 100644 --- a/cms/tests/mail.py +++ b/cms/tests/mail.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- +from cms.api import create_page_user from cms.test_utils.testcases import CMSTestCase from cms.utils.permissions import mail_page_user_change +from django.contrib.auth.models import User from django.core import mail @@ -9,6 +11,7 @@ def setUp(self): mail.outbox = [] # reset outbox def test_01_mail_page_user_change(self): - user = self.create_page_user("username", grant_all=True) + user = User.objects.create_superuser("username", "username@django-cms.org", "username") + user = create_page_user(user, user, grant_all=True) mail_page_user_change(user) self.assertEqual(len(mail.outbox), 1) diff --git a/cms/tests/menu.py b/cms/tests/menu.py index 78444ad0668..64a1f599491 100644 --- a/cms/tests/menu.py +++ b/cms/tests/menu.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- from __future__ import with_statement +from cms.api import create_page from cms.menu import CMSMenu from cms.models import Page from cms.test_utils.testcases import SettingsOverrideTestCase @@ -415,9 +416,8 @@ def test_17_show_submenu_from_non_menu_page(self): self.assertEqual(len(nodes), number_of_p7_children) def test_18_show_breadcrumb_invisible(self): - invisible_page = self.create_page(parent_page=self.get_page(3), - published=True, - in_navigation=False) + invisible_page = create_page("invisible" "nav_playground.html", "en", + parent_page=self.get_page(3), published=True, in_navigation=False) context = self.get_context(path=invisible_page.get_absolute_url()) tpl = Template("{% load menu_tags %}{% show_breadcrumb %}") tpl.render(context) @@ -575,7 +575,8 @@ def setUp(self): """ super(AdvancedSoftrootTests, self).setUp() def mkpage(title, parent=None): - page = self.create_page(parent, title=title, published=True, in_navigation=True) + page = create_page(title, "nav_playground.html", "en", + parent=parent, published=True, in_navigation=True) def mkchild(title): return mkpage(title, page) page.mkchild = mkchild diff --git a/cms/tests/multilingual.py b/cms/tests/multilingual.py index bbf1b730462..4e8d3365a42 100644 --- a/cms/tests/multilingual.py +++ b/cms/tests/multilingual.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +from cms.api import create_page, create_title from cms.middleware.multilingual import patch_response from cms.test_utils.testcases import CMSTestCase from django.contrib.auth.models import User @@ -42,13 +43,8 @@ def test_01_multilingual_url_middleware(self): self.assertEqual(output, expected) def test_02_multilingual_page(self): - page = self.create_page() - self.create_title( - page=page, - title=page.get_title(), - slug=page.get_slug(), - language='de' - ) + page = create_page("mlpage", "nav_playground.html", "en") + create_title("de", page.get_title(), page, slug=page.get_slug()) page.rescan_placeholders() page = self.reload(page) placeholder = page.placeholders.all()[0] diff --git a/cms/tests/navextender.py b/cms/tests/navextender.py index ea3030266a9..f2bfcd8d4aa 100644 --- a/cms/tests/navextender.py +++ b/cms/tests/navextender.py @@ -1,13 +1,14 @@ # -*- coding: utf-8 -*- from __future__ import with_statement +from cms.api import create_page from cms.models import Page from cms.test_utils.testcases import CMSTestCase +from cms.test_utils.util.context_managers import SettingsOverride from cms.test_utils.util.menu_extender import TestMenu from django.conf import settings from django.contrib.auth.models import User from django.template import Template from menus.menu_pool import menu_pool -from cms.test_utils.util.context_managers import SettingsOverride class NavExtenderTestCase(CMSTestCase): @@ -29,12 +30,20 @@ def tearDown(self): menu_pool.menus = self.old_menu def create_some_nodes(self): - with SettingsOverride(CMS_MODERATOR = False): - self.page1 = self.create_page(parent_page=None, published=True, in_navigation=True) - self.page2 = self.create_page(parent_page=self.page1, published=True, in_navigation=True) - self.page3 = self.create_page(parent_page=self.page2, published=True, in_navigation=True) - self.page4 = self.create_page(parent_page=None, published=True, in_navigation=True) - self.page5 = self.create_page(parent_page=self.page4, published=True, in_navigation=True) + with SettingsOverride(CMS_MODERATOR = False): + self.page1 = create_page("page1", "nav_playground.html", "en", + published=True, in_navigation=True) + self.page2 = create_page("page2", "nav_playground.html", "en", + parent=self.page1, published=True, + in_navigation=True) + self.page3 = create_page("page3", "nav_playground.html", "en", + parent=self.page2, published=True, + in_navigation=True) + self.page4 = create_page("page4", "nav_playground.html", "en", + published=True, in_navigation=True) + self.page2 = create_page("page5", "nav_playground.html", "en", + parent=self.page4, published=True, + in_navigation=True) def test_01_menu_registration(self): with SettingsOverride(CMS_MODERATOR = False): diff --git a/cms/tests/nonroot.py b/cms/tests/nonroot.py index f29afed55de..d9fb814338e 100644 --- a/cms/tests/nonroot.py +++ b/cms/tests/nonroot.py @@ -1,12 +1,13 @@ # -*- coding: utf-8 -*- from __future__ import with_statement +from cms.api import create_page from cms.models import Page from cms.test_utils.testcases import CMSTestCase +from cms.test_utils.util.context_managers import SettingsOverride from django.conf import settings from django.contrib.auth.models import User from django.template import Template from menus.base import NavigationNode -from cms.test_utils.util.context_managers import SettingsOverride class NonRootCase(CMSTestCase): @@ -32,13 +33,16 @@ def create_some_pages(self): | + P2 | + P3 + P4 - | + P5 """ - self.page1 = self.create_page(parent_page=None, published=True, in_navigation=True) - self.page2 = self.create_page(parent_page=self.page1, published=True, in_navigation=True) - self.page3 = self.create_page(parent_page=self.page2, published=True, in_navigation=True) - self.page4 = self.create_page(parent_page=None, published=True, in_navigation=True) + self.page1 = create_page("page1", "nav_playground.html", "en", + published=True, in_navigation=True) + self.page2 = create_page("page2", "nav_playground.html", "en", + parent=self.page1, published=True, in_navigation=True) + self.page3 = create_page("page3", "nav_playground.html", "en", + parent=self.page2, published=True, in_navigation=True) + self.page4 = create_page("page4", "nav_playground.html", "en", + published=True, in_navigation=True) self.all_pages = [self.page1, self.page2, self.page3, self.page4] self.top_level_pages = [self.page1, self.page4] self.level1_pages = [self.page2] diff --git a/cms/tests/page.py b/cms/tests/page.py index 906adb051a7..a471b8118ae 100644 --- a/cms/tests/page.py +++ b/cms/tests/page.py @@ -1,12 +1,14 @@ # -*- coding: utf-8 -*- from __future__ import with_statement +from cms.api import create_page from cms.models import Page, Title from cms.models.placeholdermodel import Placeholder from cms.models.pluginmodel import CMSPlugin from cms.plugins.text.models import Text from cms.sitemaps import CMSSitemap from cms.test_utils.testcases import CMSTestCase, URL_CMS_PAGE, URL_CMS_PAGE_ADD -from cms.test_utils.util.context_managers import LanguageOverride, SettingsOverride +from cms.test_utils.util.context_managers import (LanguageOverride, + SettingsOverride) from cms.utils.page_resolver import get_page_from_request from django.conf import settings from django.contrib.auth.models import User @@ -82,11 +84,12 @@ def test_04_details_view(self): """ response = self.client.get(self.get_pages_root()) self.assertEqual(response.status_code, 404) - page = self.create_page(title='test page 1', published=False) + page = create_page('test page 1', "nav_playground.html", "en") response = self.client.get(self.get_pages_root()) self.assertEqual(response.status_code, 404) self.assertTrue(page.publish()) - with_parent = self.create_page(parent_page=page, title='test page 2', published=True) + create_page("test page 2", "nav_playground.html", "en", + parent=page, published=True) homepage = Page.objects.get_home() self.assertTrue(homepage.get_slug(), 'test-page-1') response = self.client.get(self.get_pages_root()) @@ -146,12 +149,14 @@ def test_08_copy_page(self): """ Test that a page can be copied via the admin """ - page_a = self.create_page() - page_a_a = self.create_page(page_a) - page_a_a_a = self.create_page(page_a_a) + page_a = create_page("page_a", "nav_playground.html", "en") + page_a_a = create_page("page_a_a", "nav_playground.html", "en", + parent=page_a) + create_page("page_a_a_a", "nav_playground.html", "en", parent=page_a_a) - page_b = self.create_page() - page_b_a = self.create_page(page_b) + page_b = create_page("page_b", "nav_playground.html", "en") + page_b_a = create_page("page_b", "nav_playground.html", "en", + parent=page_b) count = Page.objects.drafts().count() @@ -211,7 +216,8 @@ def test_10_move_page(self): def test_11_add_placeholder(self): # create page - page = self.create_page(None, None, "last-child", "Add Placeholder", 1, True, True) + page = create_page("Add Placeholder", "nav_playground.html", "en", + position="last-child", published=True, in_navigation=True) page.template = 'add_placeholder.html' page.save() url = page.get_absolute_url() @@ -238,10 +244,8 @@ def test_12_sitemap_login_required_pages(self): """ Test that CMSSitemap object contains only published,public (login_required=False) pages """ - self.create_page(parent_page=None, published=True, in_navigation=True) - page1 = Page.objects.all()[0] - page1.login_required = True - page1.save() + create_page("page", "nav_playground.html", "en", login_required=True, + published=True, in_navigation=True) self.assertEqual(CMSSitemap().items().count(),0) def test_13_edit_page_other_site_and_language(self): @@ -268,25 +272,14 @@ def test_14_flat_urls(self): home_slug = "home" child_slug = "child" grandchild_slug = "grandchild" - home = self.create_page( - title=home_slug, - published=True, - in_navigation=True - ) + home = create_page(home_slug, "nav_playground.html", "en", + published=True, in_navigation=True) home.publish() - child = self.create_page( - parent_page=home, - title=child_slug, - published=True, - in_navigation=True - ) + child = create_page(child_slug, "nav_playground.html", "en", + parent=home, published=True, in_navigation=True) child.publish() - grandchild = self.create_page( - parent_page=child, - title=grandchild_slug, - published=True, - in_navigation=True - ) + grandchild = create_page(grandchild_slug, "nav_playground.html", "en", + parent=child, published=True, in_navigation=True) grandchild.publish() response = self.client.get(home.get_absolute_url()) self.assertEqual(response.status_code, 200) @@ -300,8 +293,8 @@ def test_15_templates(self): """ Test the inheritance magic for templates """ - parent = self.create_page() - child = self.create_page(parent) + parent = create_page("parent", "nav_playground.html", "en") + child = create_page("child", "nav_playground.html", "en", parent=parent) child.template = settings.CMS_TEMPLATE_INHERITANCE_MAGIC child.save() self.assertEqual(child.template, settings.CMS_TEMPLATE_INHERITANCE_MAGIC) @@ -317,7 +310,7 @@ def test_16_delete_with_plugins(self): Check that plugins and placeholders get correctly deleted when we delete a page! """ - page = self.create_page() + page = create_page("page", "nav_playground.html", "en") page.rescan_placeholders() # create placeholders placeholder = page.placeholders.all()[0] plugin_base = CMSPlugin( @@ -347,7 +340,7 @@ def test_17_get_page_from_request_on_non_cms_admin(self): self.assertEqual(page, None) def test_18_get_page_from_request_on_cms_admin(self): - page = self.create_page() + page = create_page("page", "nav_playground.html", "en") request = self.get_request( reverse('admin:cms_page_change', args=(page.pk,)) ) @@ -377,14 +370,14 @@ def test_21_get_page_from_request_nopage(self): self.assertEqual(page, None) def test_22_get_page_from_request_with_page_404(self): - page = self.create_page(published=True) + page = create_page("page", "nav_playground.html", "en", published=True) page.publish() request = self.get_request('/does-not-exist/') found_page = get_page_from_request(request) self.assertEqual(found_page, None) def test_23_get_page_from_request_with_page_preview(self): - page = self.create_page() + page = create_page("page", "nav_playground.html", "en") request = self.get_request('%s?preview' % page.get_absolute_url()) found_page = get_page_from_request(request) self.assertEqual(found_page, None) diff --git a/cms/tests/permmod.py b/cms/tests/permmod.py index a8c7db6d805..b763a8ef9cc 100644 --- a/cms/tests/permmod.py +++ b/cms/tests/permmod.py @@ -1,7 +1,9 @@ # -*- coding: utf-8 -*- +from cms.api import create_page, create_page_user, assign_user_to_page from cms.models import Page, CMSPlugin from cms.models.moderatormodels import ACCESS_DESCENDANTS -from cms.test_utils.testcases import CMSTestCase, URL_CMS_PAGE_ADD, URL_CMS_PLUGIN_REMOVE +from cms.test_utils.testcases import (CMSTestCase, URL_CMS_PAGE_ADD, + URL_CMS_PLUGIN_REMOVE) from cms.utils.permissions import has_generic_permission from django.conf import settings from django.contrib.auth.models import User @@ -45,34 +47,39 @@ def setUp(self): self.user_super.save() self.login_user(self.user_super) - self.home_page = self.create_page(title="home", user=self.user_super) + self.home_page = create_page("home", "nav_playground.html", "en", + created_by=self.user_super) # master page & master user - self.master_page = self.create_page(title="master") + self.master_page = create_page("master", "nav_playground.html", "en") # create master user - self.user_master = self.create_page_user("master", grant_all=True) + master = User.objects.create(username="master", email="master@django-cms.org", password="master") + self.user_master = create_page_user(master, grant_all=True) # assign master user under home page - self.assign_user_to_page(self.home_page, self.user_master, grant_on=ACCESS_DESCENDANTS, - grant_all=True) + assign_user_to_page(self.home_page, self.user_master, + grant_on=ACCESS_DESCENDANTS, grant_all=True) # and to master page - self.assign_user_to_page(self.master_page, self.user_master, grant_all=True) + assign_user_to_page(self.master_page, self.user_master, grant_all=True) # slave page & slave user - self.slave_page = self.create_page(title="slave-home", parent_page=self.master_page, user=self.user_super) - self.user_slave = self.create_page_user("slave", - can_add_page=True, can_change_page=True, can_delete_page=True) + self.slave_page = create_page("slave-home", "nav_playground.html", "en", + parent=self.master_page, created_by=self.user_super) + slave = User.objects.create(username='slave', email='slave@django-cms.org', password='slave') + self.user_slave = create_page_user(slave, can_add_page=True, + can_change_page=True, can_delete_page=True) - self.assign_user_to_page(self.slave_page, self.user_slave, grant_all=True) + assign_user_to_page(self.slave_page, self.user_slave, grant_all=True) # create page_a - sample page from master - page_a = self.create_page(title="pageA", user=self.user_super) - self.assign_user_to_page(page_a, self.user_master, + page_a = create_page("pageA", "nav_playground.html", "en", + created_by=self.user_super) + assign_user_to_page(page_a, self.user_master, can_add=True, can_change=True, can_delete=True, can_publish=True, can_move_page=True, can_moderate=True) @@ -123,7 +130,8 @@ def test_05_slave_can_add_page_under_slave_home(self): # self.assertEqual(response.status_code, 200) # add page - page = self.create_page(self.slave_page, user=self.user_slave) + page = create_page("page", "nav_playground.html", "en", + parent=self.slave_page, created_by=self.user_slave) # adds user_slave as page moderator for this page # public model shouldn't be available yet, because of the moderation # removed test cases since Title object does not inherit from Publisher anymore @@ -151,7 +159,8 @@ def test_06_page_added_by_slave_can_be_published_approved_by_user_master(self): self.login_user(self.user_master) # add page - page = self.create_page(self.slave_page, user=self.user_slave) + page = create_page("page", "nav_playground.html", "en", + parent=self.slave_page, created_by=self.user_slave) # same as test_05_slave_can_add_page_under_slave_home self.assertEqual(page.get_moderator_queryset().count(), 1) self.assertTrue(page.moderator_state == Page.MODERATOR_CHANGED) @@ -195,7 +204,8 @@ def test_10_same_order(self): # create 4 pages slugs = [] for i in range(0, 4): - page = self.create_page(self.home_page) + page = create_page("page", "nav_playground.html", "en", + parent=self.home_page) slug = page.title_set.drafts()[0].slug slugs.append(slug) @@ -208,7 +218,8 @@ def test_10_same_order(self): def test_11_create_copy_publish(self): # create new page to copy self.login_user(self.user_master) - page = self.create_page(self.slave_page) + page = create_page("page", "nav_playground.html", "en", + parent=self.slave_page) # copy it under home page... copied_page = self.copy_page(page, self.home_page) @@ -220,7 +231,8 @@ def test_11_create_copy_publish(self): def test_12_create_publish_copy(self): # create new page to copy self.login_user(self.user_master) - page = self.create_page(self.home_page) + page = create_page("page", "nav_playground.html", "en", + parent=self.home_page) page = self.publish_page(page, True) @@ -235,11 +247,12 @@ def test_12_create_publish_copy(self): def test_13_subtree_needs_approvement(self): self.login_user(self.user_master) # create page under slave_page - page = self.create_page(self.home_page) + page = create_page("parent", "nav_playground.html", "en", + parent=self.home_page) self.assertEqual(not page.publisher_public, True) # create subpage uner page - subpage = self.create_page(page) + subpage = create_page("subpage", "nav_playground.html", "en", parent=page) self.assertEqual(not subpage.publisher_public, True) # publish both of them in reverse order @@ -270,11 +283,11 @@ def test_13_subtree_needs_approvement(self): def test_14_subtree_with_super(self): self.login_user(self.user_super) # create page under root - page = self.create_page() + page = create_page("page", "nav_playground.html", "en") self.assertEqual(not page.publisher_public, True) # create subpage under page - subpage = self.create_page(page) + subpage = create_page("subpage", "nav_playground.html", "en", parent=page) self.assertEqual(not subpage.publisher_public, True) # tree id must be the same @@ -304,7 +317,7 @@ def test_15_super_add_page_to_root(self): """ self.login_user(self.user_super) # create page under root - page = self.create_page() + page = create_page("page", "nav_playground.html", "en") # public must not exist self.assertFalse(page.publisher_public) @@ -317,7 +330,8 @@ def test_16_moderator_flags(self): """Add page under slave_home and check its flag """ self.login_user(self.user_slave) - page = self.create_page(parent_page=self.slave_page) + page = create_page("page", "nav_playground.html", "en", + parent=self.slave_page) # moderator_state must be changed self.assertEqual(page.moderator_state, Page.MODERATOR_CHANGED) @@ -396,16 +410,16 @@ def test_17_patricks_move(self): self.login_user(self.user_slave) # all of them are under moderation... - pa = self.create_page(self.slave_page, title="pa") - pb = self.create_page(pa, position="right", title="pb") - pc = self.create_page(pb, position="right", title="pc") + pa = create_page("pa", "nav_playground.html", "en", parent=self.slave_page) + pb = create_page("pb", "nav_playground.html", "en", parent=pa, position="right") + pc = create_page("pc", "nav_playground.html", "en", parent=pb, position="right") - pd = self.create_page(pb, title="pd") - pe = self.create_page(pd, position="right", title="pe") + pd = create_page("pd", "nav_playground.html", "en", parent=pb) + pe = create_page("pe", "nav_playground.html", "en", parent=pd, position="right") - pf = self.create_page(pe, title="pf") - pg = self.create_page(pf, position="right", title="pg") - ph = self.create_page(pf, position="right", title="ph") + pf = create_page("pf", "nav_playground.html", "en", parent=pe) + pg = create_page("pg", "nav_playground.html", "en", parent=pf, position="right") + ph = create_page("ph", "nav_playground.html", "en", parent=pf, position="right") self.assertEqual(not pg.publisher_public, True) @@ -483,7 +497,7 @@ def test_17_patricks_move(self): def test_18_plugins_get_published(self): self.login_user(self.user_super) # create page under root - page = self.create_page() + page = create_page("page", "nav_playground.html", "en") self.add_plugin(self.user_super, page) # public must not exist self.assertEqual(CMSPlugin.objects.all().count(), 1) @@ -493,7 +507,7 @@ def test_18_plugins_get_published(self): def test_19_remove_plugin_page_under_moderation(self): # login as slave and create page self.login_user(self.user_slave) - page = self.create_page(self.slave_page) + page = create_page("page", "nav_playground.html", "en", parent=self.slave_page) self.assertEqual(page.get_moderator_queryset().count(), 1) # add plugin diff --git a/cms/tests/plugins.py b/cms/tests/plugins.py index 4ff15cb12b7..d81983b8107 100644 --- a/cms/tests/plugins.py +++ b/cms/tests/plugins.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- from __future__ import with_statement +from cms.api import create_page from cms.exceptions import PluginAlreadyRegistered, PluginNotRegistered from cms.models import Page, Placeholder from cms.models.pluginmodel import CMSPlugin @@ -9,12 +10,12 @@ from cms.plugins.googlemap.models import GoogleMap from cms.plugins.inherit.models import InheritPagePlaceholder from cms.plugins.text.models import Text -from cms.test_utils.util.context_managers import SettingsOverride from cms.plugins.text.utils import (plugin_tags_to_id_list, plugin_tags_to_admin_html) from cms.test_utils.testcases import (CMSTestCase, URL_CMS_PAGE, URL_CMS_PAGE_ADD, URL_CMS_PLUGIN_ADD, URL_CMS_PLUGIN_EDIT, URL_CMS_PAGE_CHANGE, URL_CMS_PLUGIN_REMOVE) +from cms.test_utils.util.context_managers import SettingsOverride from django.conf import settings from django.contrib.auth.models import User from django.core.files.uploadedfile import SimpleUploadedFile @@ -332,7 +333,7 @@ def test_09_iheritplugin_media(self): """ Test case for InheritPagePlaceholder """ - inheritfrompage = self.create_page(title='page to inherit from') + inheritfrompage = create_page('page to inherit from', "nav_playground.html", "en") body = inheritfrompage.placeholders.get(slot="body") @@ -343,7 +344,7 @@ def test_09_iheritplugin_media(self): language=settings.LANGUAGE_CODE, lat=1, lng=1) plugin.insert_at(None, position='last-child', save=True) - page = self.create_page(title='inherit from page') + page = create_page('inherit from page', "nav_playground.html", "en") inherited_body = page.placeholders.get(slot="body") @@ -362,7 +363,7 @@ def test_09_iheritplugin_media(self): self.assertEquals(unicode(request.placeholder_media).find('maps.google.com') != -1, True) def test_10_fileplugin_icon_uppercase(self): - page = self.create_page(title='testpage') + page = create_page('testpage', 'nav_playground.html', 'en') body = page.placeholders.get(slot="body") plugin = File( plugin_type='FilePlugin', @@ -397,7 +398,7 @@ def test_11_copy_textplugin(self): Test that copying of textplugins replaces references to copied plugins """ - page = self.create_page() + page = create_page("page", "nav_playground.html", "en") placeholder = page.placeholders.get(slot='body') @@ -579,7 +580,7 @@ def test_01_add_plugin_with_m2m_and_publisher(self): def test_03_copy_plugin_with_m2m(self): - page = self.create_page() + page = create_page("page", "nav_playground.html", "en") placeholder = page.placeholders.get(slot='body') diff --git a/cms/tests/publisher.py b/cms/tests/publisher.py index c58f8eb0220..a118e89d7d8 100644 --- a/cms/tests/publisher.py +++ b/cms/tests/publisher.py @@ -1,9 +1,11 @@ # -*- coding: utf-8 -*- from __future__ import with_statement +from cms.api import create_page from cms.management.commands import publisher_publish from cms.models.pagemodel import Page from cms.test_utils.testcases import CMSTestCase -from cms.test_utils.util.context_managers import SettingsOverride, StdoutOverride +from cms.test_utils.util.context_managers import (SettingsOverride, + StdoutOverride) from django.contrib.auth.models import User from django.core.management.base import CommandError @@ -22,12 +24,12 @@ def test_01_simple_publisher(self): B C ''' # Create a simple tree of 3 pages - pageA = self.create_page(title="Page A", published= True, - in_navigation= True) - pageB = self.create_page(parent_page=pageA,title="Page B", - published= True, in_navigation= True) - pageC = self.create_page(parent_page=pageA,title="Page C", - published= False, in_navigation= True) + pageA = create_page("Page A", "nav_playground.html", "en", + published= True, in_navigation= True) + pageB = create_page("Page B", "nav_playground.html", "en", + parent=pageA, published=True, in_navigation=True) + pageC = create_page("Page C", "nav_playground.html", "en", + parent=pageA, published=False, in_navigation=True) # Assert A and B are published, C unpublished self.assertTrue(pageA.published) self.assertTrue(pageB.published) @@ -98,8 +100,8 @@ def test_05_command_line_publishes_one_page(self): User.objects.create_superuser('djangocms', 'cms@example.com', '123456') # Now, let's create a page. That actually creates 2 Page objects - self.create_page(title="The page!", published=True, - in_navigation=True) + create_page("The page!", "nav_playground.html", "en", published=True, + in_navigation=True) draft = Page.objects.drafts()[0] draft.reverse_id = 'a_test' # we have to change *something* draft.save() @@ -132,8 +134,8 @@ def test_05_command_line_publishes_one_page(self): self.assertEquals(non_draft.reverse_id, 'a_test') def test_06_unpublish(self): - page = self.create_page(title="Page", published=True, - in_navigation=True) + page = create_page("Page", "nav_playground.html", "en", published=True, + in_navigation=True) page.published = False page.save() self.assertEqual(page.published, False) @@ -146,20 +148,20 @@ def test_07_publish_works_with_descendants(self): For help understanding what this tests for, see: http://articles.sitepoint.com/print/hierarchical-data-database ''' - home_page = self.create_page(title="home", published=True, - in_navigation=False) + home_page = create_page("home", "nav_playground.html", "en", + published=True, in_navigation=False) - item1 = self.create_page(title="item1", parent_page=home_page, - published=True) - item2 = self.create_page(title="item2", parent_page=home_page, - published=True) + create_page("item1", "nav_playground.html", "en", parent=home_page, + published=True) + item2 = create_page("item2", "nav_playground.html", "en", parent=home_page, + published=True) item2 = self.reload_page(item2) - subitem1 = self.create_page(title="subitem1", parent_page=item2, - published=True) - subitem2 = self.create_page(title="subitem2", parent_page=item2, - published=True) + create_page("subitem1", "nav_playground.html", "en", parent=item2, + published=True) + create_page("subitem2", "nav_playground.html", "en", parent=item2, + published=True) not_drafts = list(Page.objects.filter(publisher_is_draft=False).order_by('lft')) drafts = list(Page.objects.filter(publisher_is_draft=True).order_by('lft')) diff --git a/cms/tests/security.py b/cms/tests/security.py index 3ac349e46e3..80f7b9c1d62 100644 --- a/cms/tests/security.py +++ b/cms/tests/security.py @@ -1,3 +1,4 @@ +from cms.api import create_page from cms.models.pluginmodel import CMSPlugin from cms.plugins.text.models import Text from cms.test_utils.testcases import (CMSTestCase, URL_CMS_PLUGIN_ADD, @@ -12,7 +13,7 @@ class SecurityTests(CMSTestCase): Test security issues by trying some naive requests to add/alter/delete data. """ def get_data(self): - page = self.create_page() + page = create_page("page", "nav_playground.html", "en") placeholder = page.placeholders.get(slot='body') superuser = self.get_superuser() staff = self.get_staff_user_with_no_permissions() diff --git a/cms/tests/site.py b/cms/tests/site.py index 7ad327efe28..4c028ea4779 100644 --- a/cms/tests/site.py +++ b/cms/tests/site.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- from __future__ import with_statement -from django.contrib.auth.models import User -from django.contrib.sites.models import Site +from cms.api import create_page from cms.models import Page from cms.test_utils.testcases import CMSTestCase from cms.test_utils.util.context_managers import SettingsOverride +from django.contrib.auth.models import User +from django.contrib.sites.models import Site class SiteTestCase(CMSTestCase): """Site framework specific test cases. @@ -19,31 +20,31 @@ def setUp(self): u.save() # setup sites - Site(domain="sample2.com", name="sample2.com").save() # pk 2 - Site(domain="sample3.com", name="sample3.com").save() # pk 3 + self.site2 = Site.objects.create(domain="sample2.com", name="sample2.com") + self.site3 = Site.objects.create(domain="sample3.com", name="sample3.com") self.login_user(u) def test_01_site_framework(self): #Test the site framework, and test if it's possible to disable it - with SettingsOverride(SITE_ID=2): - page_2a = self.create_page(site=2) + with SettingsOverride(SITE_ID=self.site2.pk): + create_page("page_2a", "nav_playground.html", "en", site=self.site2) - response = self.client.get("/admin/cms/page/?site__exact=3") + response = self.client.get("/admin/cms/page/?site__exact=%s" % self.site3.pk) self.assertEqual(response.status_code, 200) - page_3b = self.create_page(site=3) + create_page("page_3b", "nav_playground.html", "en", site=self.site3) - with SettingsOverride(SITE_ID=3): - page_3a = self.create_page(site=3) + with SettingsOverride(SITE_ID=self.site3.pk): + create_page("page_3a", "nav_playground.html", "en", site=self.site3) # with param - self.assertEqual(Page.objects.on_site(2).count(), 1) - self.assertEqual(Page.objects.on_site(3).count(), 2) + self.assertEqual(Page.objects.on_site(self.site2.pk).count(), 1) + self.assertEqual(Page.objects.on_site(self.site3.pk).count(), 2) self.assertEqual(Page.objects.drafts().on_site().count(), 2) - with SettingsOverride(SITE_ID=2): + with SettingsOverride(SITE_ID=self.site2.pk): # without param self.assertEqual(Page.objects.drafts().on_site().count(), 1) diff --git a/cms/tests/toolbar.py b/cms/tests/toolbar.py index ee16874efc0..e1a154abb0d 100644 --- a/cms/tests/toolbar.py +++ b/cms/tests/toolbar.py @@ -1,6 +1,8 @@ from __future__ import with_statement +from cms.api import create_page from cms.test_utils.testcases import SettingsOverrideTestCase -from cms.test_utils.util.context_managers import UserLoginContext, SettingsOverride +from cms.test_utils.util.context_managers import (UserLoginContext, + SettingsOverride) from django.conf import settings @@ -8,7 +10,7 @@ class ToolbarTests(SettingsOverrideTestCase): settings_overrides = {'CMS_MODERATOR': False} def test_01_static_html(self): - page = self.create_page(published=True) + page = create_page("page", "nav_playground.html", "en", published=True) superuser = self.get_superuser() with SettingsOverride(DEBUG=True): with UserLoginContext(self, superuser): diff --git a/cms/tests/views.py b/cms/tests/views.py index 3d648f9a97e..b850d65d58d 100644 --- a/cms/tests/views.py +++ b/cms/tests/views.py @@ -1,4 +1,5 @@ from __future__ import with_statement +from cms.api import create_page from cms.apphook_pool import apphook_pool from cms.test_utils.testcases import SettingsOverrideTestCase from cms.test_utils.util.context_managers import SettingsOverride @@ -37,7 +38,7 @@ def test_02_language_fallback(self): """ Test language fallbacks in details view """ - self.create_page(published=True, language='en') + create_page("page", "nav_playground.html", "en", published=True) request = self.get_request('/', 'de') response = details(request, '') self.assertEqual(response.status_code, 302) @@ -55,7 +56,7 @@ def test_03_apphook_not_hooked(self): apphooks = ( '%s.%s' % (APP_MODULE, APP_NAME), ) - self.create_page(published=True, language='en') + create_page("page2", "nav_playground.html", "en", published=True) with SettingsOverride(CMS_APPHOOKS=apphooks): apphook_pool.clear() response = self.client.get('/') @@ -67,11 +68,8 @@ def test_04_redirect(self): redirect_two = '/' redirect_three = '/en/' # test external redirect - one = self.create_page( - published=True, - language='en', - title_extra={'redirect': redirect_one} - ) + one = create_page("one", "nav_playground.html", "en", published=True, + redirect=redirect_one) url = one.get_absolute_url() request = self.get_request(url) response = details(request, url.strip('/')) @@ -79,12 +77,8 @@ def test_04_redirect(self): self.assertEqual(response['Location'], redirect_one) # test internal language neutral redirect - two = self.create_page( - parent_page=one, - published=True, - language='en', - title_extra={'redirect': redirect_two} - ) + two = create_page("two", "nav_playground.html"," en", parent=one, + published=true, redirect=redirect_two) url = two.get_absolute_url() request = self.get_request(url) response = details(request, url.strip('/')) @@ -92,12 +86,8 @@ def test_04_redirect(self): self.assertEqual(response['Location'], '/en/') # test internal forced language redirect - three = self.create_page( - parent_page=one, - published=True, - language='en', - title_extra={'redirect': redirect_three} - ) + three = create_page("three", "nav_playground.html", "en", parent=one, + published=True, redirect=redirect_three) url = three.get_absolute_url() request = self.get_request(url) response = details(request, url.strip('/')) @@ -105,11 +95,8 @@ def test_04_redirect(self): self.assertEqual(response['Location'], redirect_three) def test_05_login_required(self): - self.create_page( - published=True, - language='en', - login_required=True, - ) + create_page("page", "nav_playground.html", "en", published=True, + login_required=True) request = self.get_request('/') response = details(request, '') self.assertEqual(response.status_code, 302) From 7d8767c49d3967109e03580bbf47db68e9a5dabb Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Mon, 28 Feb 2011 17:35:49 +0100 Subject: [PATCH 143/689] Removed unneeded js code from jquery.tweet.js Added a check for render_template attribute on CMSPluginBase subclasses Set avatar size to 'null' in js code if the request is secure Added docstrings to get_placeholder_conf Fixed typo in plugins docs --- cms/media/cms/js/plugins/jquery.tweet.js | 25 ------------------- cms/plugin_base.py | 6 +++++ .../cms/plugins/twitter_recent_entries.html | 2 +- cms/utils/placeholder.py | 9 +++++++ docs/extending_cms/custom_plugins.rst | 2 +- 5 files changed, 17 insertions(+), 27 deletions(-) diff --git a/cms/media/cms/js/plugins/jquery.tweet.js b/cms/media/cms/js/plugins/jquery.tweet.js index 6c645ea1ee4..cae73b6da1b 100644 --- a/cms/media/cms/js/plugins/jquery.tweet.js +++ b/cms/media/cms/js/plugins/jquery.tweet.js @@ -5,31 +5,6 @@ * @version: 0.2.0 */ (function($) { - // tweet meme plugin - $.fn.tweetme = function(options) { - return this.each(function () { - // save options - var options = $.extend({ - url: $(this).text(), - source: 'username', - style: 'normal', - service: 'retwt.me', - width: 50, - height: 61 - }, options); - // create start url - var url = 'http://api.tweetmeme.com/button.js?'; - // serialize options - $.each(options, function (key, value) { - url += key + '=' + value + '&'; - }); - // save iframe - var iframe = ''; - // add iframe - $(this).html(iframe); - }); - }; - // official twitter button $.fn.twitter = function (options) { return this.each(function () { diff --git a/cms/plugin_base.py b/cms/plugin_base.py index ec4030e4faf..9e2320eff71 100644 --- a/cms/plugin_base.py +++ b/cms/plugin_base.py @@ -4,6 +4,7 @@ from django import forms from django.conf import settings from django.contrib import admin +from django.core.exceptions import ImproperlyConfigured from django.db.models.options import get_verbose_name from django.forms.models import ModelForm from django.utils.encoding import smart_str @@ -28,6 +29,11 @@ def __new__(cls, name, bases, attrs): "either 'None' or a subclass of CMSPlugin. %r on %r is not." % (new_plugin.model, new_plugin) ) + # validate the template: + if not hasattr(new_plugin, 'render_template'): + raise ImproperlyConfigured( + "CMSPluginBase subclasses must have a render_template attribute" + ) # Set the default form if not new_plugin.form: form_meta_attrs = { diff --git a/cms/plugins/twitter/templates/cms/plugins/twitter_recent_entries.html b/cms/plugins/twitter/templates/cms/plugins/twitter_recent_entries.html index 224154f7a10..8fda903d253 100644 --- a/cms/plugins/twitter/templates/cms/plugins/twitter_recent_entries.html +++ b/cms/plugins/twitter/templates/cms/plugins/twitter_recent_entries.html @@ -6,7 +6,7 @@ jQuery(document).ready(function ($) { $('#twitter-container-{{ object.pk }}').tweet({ username: '{{ object.twitter_user }}', - avatar_size: 32, + avatar_size: {% if request.is_secure %}null{% else %}32{% endif %}, count: {{ object.count }}, join_text: 'auto', auto_join_text_default: '{% trans "we said," %}', diff --git a/cms/utils/placeholder.py b/cms/utils/placeholder.py index 6dfe6e61c88..f1749bed1fa 100644 --- a/cms/utils/placeholder.py +++ b/cms/utils/placeholder.py @@ -4,6 +4,15 @@ from django.db.models.query_utils import Q def get_placeholder_conf(key, placeholder, template=None, default=None): + """ + Returns the placeholder configuration for a given key. The key would for + example be 'plugins' or 'name'. + + If a template is given, it will try + CMS_PLACEHOLDER_CONF['template placeholder'] and + CMS_PLACEHOLDER_CONF['placeholder'], if no template is given only the latter + is checked. + """ keys = [] if template: keys.append("%s %s" % (template, placeholder)) diff --git a/docs/extending_cms/custom_plugins.rst b/docs/extending_cms/custom_plugins.rst index 62f70242663..f3b91c36894 100644 --- a/docs/extending_cms/custom_plugins.rst +++ b/docs/extending_cms/custom_plugins.rst @@ -290,7 +290,7 @@ A **bad** example: {% addtoblock "js" %} {% endaddtoblock %} - {% addtoblock "css" % + {% addtoblock "css" %} {% endaddtoblock %} {% addtoblock "js" %} - -
          +
          + + + +
          + [title] +
          + + + + + +
          +
          + [hidden] + [token] + + +   +  [title] + + +
          +
          + + +
          + + +   +  [title] + - + + + + + + +
          +
          + +
          + +
          + {% csrf_token %} + + {% trans "Login" %} + +
          +
          - - - - - - -
          -
          - -
          - -
          - {% csrf_token %} - -
          -
          - - -
          - {% trans "Edit" %} - {% trans "Switch on/off" %} -
          - - -
          - {% trans "Compact" %} - {% trans "Switch on/off" %} -
          - - - - - -
          -
          - - {% csrf_token %} - -
          -
          - - - - - - - - - @@ -310,8 +318,9 @@
          - + {% if auth %} + {% else %} + {% endif %}
          + {% if edit and page %} {% if auth and moderator %} {% if moderator_should_approve and has_moderate_permission %} @@ -360,6 +373,7 @@ {% endif %} {% endif %} + {% if auth and has_change_permission %}
          {% trans "Template" %}arrow
            @@ -369,6 +383,7 @@
          {% endif %} + {% if auth %}
          {% trans "Page" %}arrow
            @@ -381,26 +396,34 @@
          {% endif %} + -
        • {% trans "history" %}{% trans "View History" %}
        • + + --> {% if auth %} + {% endif %} +
          From 8c1f1e4733e97e39c54138528490bfef1555b0fa Mon Sep 17 00:00:00 2001 From: Martin Brochhaus Date: Tue, 1 Mar 2011 21:49:10 -0800 Subject: [PATCH 146/689] wrong import in docs: correct is: from menus.utils import set_language_changer --- docs/advanced/i18n.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/advanced/i18n.rst b/docs/advanced/i18n.rst index bdc20a7602b..44155a729de 100644 --- a/docs/advanced/i18n.rst +++ b/docs/advanced/i18n.rst @@ -52,7 +52,7 @@ In the models of the current object add an optional language parameter to the In the view pass the ``get_absolute_url`` function to the ``set_language_chooser`` function:: - from cms.utils import set_language_changer + from menus.utils import set_language_changer def get_product(request, slug): item = get_object_or_404(Product, slug=slug, published=True) From 2268f851099a71f6f679ebe3d2d7631ec05317b9 Mon Sep 17 00:00:00 2001 From: Martin Brochhaus Date: Tue, 1 Mar 2011 21:52:46 -0800 Subject: [PATCH 147/689] added return statement to det_absolute_url code example --- docs/advanced/i18n.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/advanced/i18n.rst b/docs/advanced/i18n.rst index 44155a729de..0dec66a2dbe 100644 --- a/docs/advanced/i18n.rst +++ b/docs/advanced/i18n.rst @@ -46,7 +46,7 @@ In the models of the current object add an optional language parameter to the def get_absolute_url(self, language=None): if not language: language = get_language() - reverse("product_view", args=[self.get_slug(language=language)]) + return reverse("product_view", args=[self.get_slug(language=language)]) In the view pass the ``get_absolute_url`` function to the From 6c1fa41107ca4bfab28e191211fb4a096c1c84f8 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Wed, 2 Mar 2011 10:21:37 +0100 Subject: [PATCH 148/689] more fixes on the python api --- cms/api.py | 8 ++++---- cms/tests/admin.py | 8 ++++---- cms/tests/menu.py | 2 +- cms/tests/permmod.py | 4 ++-- cms/tests/views.py | 2 +- docs/conf.py | 4 ++-- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/cms/api.py b/cms/api.py index 41a20699d52..f402bbe1784 100644 --- a/cms/api.py +++ b/cms/api.py @@ -61,10 +61,10 @@ def create_page(title, template, language, menu_title=None, slug=None, _thread_locals.user = None # validate template - assert template in [template[0] for template in settings.CMS_TEMPLATES] + assert template in [tpl[0] for tpl in settings.CMS_TEMPLATES] # validate language: - assert language in [language[0] for language in settings.CMS_LANGUAGES] + assert language in [lang[0] for lang in settings.CMS_LANGUAGES] # set default slug: if not slug: @@ -140,7 +140,7 @@ def create_page(title, template, language, menu_title=None, slug=None, title=title, menu_title=menu_title, slug=slug, - application_urls=application_urls, + apphook=application_urls, redirect=redirect, meta_description=meta_description, meta_keywords=meta_keywords, @@ -159,7 +159,7 @@ def create_title(language, title, page, menu_title=None, slug=None, Parent is only used if slug=None. """ # validate language: - assert language in [language[0] for language in settings.CMS_LANGUAGES] + assert language in [lang[0] for lang in settings.CMS_LANGUAGES] # validate page assert isinstance(page, Page) diff --git a/cms/tests/admin.py b/cms/tests/admin.py index 9a52fccc19a..57d1773a88d 100644 --- a/cms/tests/admin.py +++ b/cms/tests/admin.py @@ -171,11 +171,11 @@ def test_06_search_fields(self): def test_07_delete_translation(self): admin = self._get_guys(True) - page = create_page("delete-page-ranslation", "nav_playground.html", "en", + page = create_page("delete-page-translation", "nav_playground.html", "en", created_by=admin, published=True) - create_title("nb", "delete-page-ranslation-2", page, slug="delete-page-ranslation-2") + create_title("de", "delete-page-translation-2", page, slug="delete-page-translation-2") self.login_user(admin) - response = self.client.get(URL_CMS_TRANSLATION_DELETE % page.pk, {'language': 'nb'}) + response = self.client.get(URL_CMS_TRANSLATION_DELETE % page.pk, {'language': 'de'}) self.assertEqual(response.status_code, 200) - response = self.client.post(URL_CMS_TRANSLATION_DELETE % page.pk, {'language': 'nb'}) + response = self.client.post(URL_CMS_TRANSLATION_DELETE % page.pk, {'language': 'de'}) self.assertRedirects(response, URL_CMS_PAGE) diff --git a/cms/tests/menu.py b/cms/tests/menu.py index 64a1f599491..9e5ddc09c64 100644 --- a/cms/tests/menu.py +++ b/cms/tests/menu.py @@ -417,7 +417,7 @@ def test_17_show_submenu_from_non_menu_page(self): def test_18_show_breadcrumb_invisible(self): invisible_page = create_page("invisible" "nav_playground.html", "en", - parent_page=self.get_page(3), published=True, in_navigation=False) + parent=self.get_page(3), published=True, in_navigation=False) context = self.get_context(path=invisible_page.get_absolute_url()) tpl = Template("{% load menu_tags %}{% show_breadcrumb %}") tpl.render(context) diff --git a/cms/tests/permmod.py b/cms/tests/permmod.py index b763a8ef9cc..c42d60e4829 100644 --- a/cms/tests/permmod.py +++ b/cms/tests/permmod.py @@ -56,7 +56,7 @@ def setUp(self): # create master user master = User.objects.create(username="master", email="master@django-cms.org", password="master") - self.user_master = create_page_user(master, grant_all=True) + self.user_master = create_page_user(self.user_super, master, grant_all=True) # assign master user under home page assign_user_to_page(self.home_page, self.user_master, @@ -70,7 +70,7 @@ def setUp(self): self.slave_page = create_page("slave-home", "nav_playground.html", "en", parent=self.master_page, created_by=self.user_super) slave = User.objects.create(username='slave', email='slave@django-cms.org', password='slave') - self.user_slave = create_page_user(slave, can_add_page=True, + self.user_slave = create_page_user(self.user_super, slave, can_add_page=True, can_change_page=True, can_delete_page=True) assign_user_to_page(self.slave_page, self.user_slave, grant_all=True) diff --git a/cms/tests/views.py b/cms/tests/views.py index b850d65d58d..e9b2443da5e 100644 --- a/cms/tests/views.py +++ b/cms/tests/views.py @@ -78,7 +78,7 @@ def test_04_redirect(self): # test internal language neutral redirect two = create_page("two", "nav_playground.html"," en", parent=one, - published=true, redirect=redirect_two) + published=True, redirect=redirect_two) url = two.get_absolute_url() request = self.get_request(url) response = details(request, url.strip('/')) diff --git a/docs/conf.py b/docs/conf.py index 107a7c3e6e6..65e88b86eaf 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -43,7 +43,7 @@ # General information about the project. project = u'django cms' -copyright = u'2009, Patrick Lauber' +copyright = u'2009, django CMS team' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the @@ -185,7 +185,7 @@ # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'djangocms.tex', u'django cms Documentation', - u'Patrick Lauber', 'manual'), + u'django CMS team', 'manual'), ] # The name of an image file (relative to this directory) to place at the top From ef8825f0b0313dff7dc4ff91226de0ffaedad198 Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Wed, 2 Mar 2011 19:58:37 +0100 Subject: [PATCH 149/689] changed classytags and sekizai requirements to 0.3.2 and 0.4.2 respectively to address some issues in 0.3.1 and 0.4.1 --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 6f58e8f13eb..b5ee9af74c6 100644 --- a/setup.py +++ b/setup.py @@ -47,10 +47,10 @@ classifiers=CLASSIFIERS, install_requires=[ 'Django>=1.2', - 'django-classy-tags>=0.3.0', + 'django-classy-tags>=0.3.2', 'south>=0.7.2', 'django-mptt>=0.4.2', - 'django-sekizai>=0.4.1', + 'django-sekizai>=0.4.2', ], packages=find_packages(exclude=["example", "example.*","testdata","testdata.*"]), package_data={ From 6f5ea8018d118ac312ddee97c2ca1df2d8cdb28b Mon Sep 17 00:00:00 2001 From: Jonas Obrist Date: Wed, 2 Mar 2011 19:59:08 +0100 Subject: [PATCH 150/689] Also updated the 'requirements' section in the docs to reflect the new classytags and sekizai requirements --- docs/getting_started/installation.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting_started/installation.rst b/docs/getting_started/installation.rst index 1199973f456..5b2f05d1f5d 100644 --- a/docs/getting_started/installation.rst +++ b/docs/getting_started/installation.rst @@ -13,9 +13,9 @@ Requirements * `Django`_ 1.2.3 (or a higher release of 1.2). * `South`_ 0.7.2 or higher * `PIL`_ 1.1.6 or higher -* `django-classy-tags`_ 0.2.2 or higher +* `django-classy-tags`_ 0.3.2 or higher * `django-mptt`_ 0.4.2 or higher -* `django-sekizai`_ 0.3.1 or higher +* `django-sekizai`_ 0.4.2 or higher * An installed and working instance of one of the databases listed in the `Databases`_ section. From 0eb6e36e846cf5b3d1e88f67aa5fb657a6f16730 Mon Sep 17 00:00:00 2001 From: FinalAngel Date: Thu, 3 Mar 2011 16:49:23 +0100 Subject: [PATCH 151/689] removed old toolbar, toolbar is now refactored, added base CMS.Plugins files --- cms/media/cms/css/plugins/cms.toolbar.css | 117 ++++++----- .../cms/images/toolbar/sprite_toolbar.png | Bin 7221 -> 13336 bytes cms/media/cms/js/plugins/cms.placeholders.js | 64 ++++++ cms/media/cms/js/plugins/cms.toolbar.js | 57 +++++- cms/templates/cms/toolbar/toolbar.html | 184 ++++++------------ 5 files changed, 242 insertions(+), 180 deletions(-) create mode 100644 cms/media/cms/js/plugins/cms.placeholders.js diff --git a/cms/media/cms/css/plugins/cms.toolbar.css b/cms/media/cms/css/plugins/cms.toolbar.css index 72e11d23a5c..877e7f57f2e 100644 --- a/cms/media/cms/css/plugins/cms.toolbar.css +++ b/cms/media/cms/css/plugins/cms.toolbar.css @@ -5,10 +5,9 @@ * @extends base.css */ -#cms_toolbar { margin-top:100px !important; top:100px !important; } /*##################################################|*/ /* #TOOLBAR# */ -#cms_toolbar-wrapper { position:fixed; left:0; top:0; z-index:99999; width:100%; } /* needs ie fix for pos fixed */ +#cms_toolbar { position:fixed; left:0; top:0; z-index:99999; width:100%; } /* needs ie fix for pos fixed */ #cms_toolbar-toolbar { width:100%; height:42px; border-bottom:1px solid #ddd !important; position:relative; left:0; top:0; z-index:999999; min-width:960px; background:#fff url('../../images/toolbar/toolbar_bg.gif') repeat-x left bottom; } @@ -17,18 +16,48 @@ .cms_toolbar-right { float:right; padding-right:48px !important; } /* #TOOLBAR/reset# */ -#cms_toolbar-wrapper div, -#cms_toolbar-wrapper a, #cms_toolbar-wrapper form, #cms_toolbar-wrapper fieldset, #cms_toolbar-wrapper label, #cms_toolbar-wrapper input, -#cms_toolbar-wrapper textarea, #cms_toolbar-wrapper select { +#cms_toolbar div, #cms_toolbar p, #cms_toolbar a, #cms_toolbar a:hover, #cms_toolbar a:active, #cms_toolbar a:focus, +#cms_toolbar form, #cms_toolbar fieldset, #cms_toolbar label, #cms_toolbar input, #cms_toolbar textarea, #cms_toolbar select { font:normal 13px/1.4 "Helvetica Neue",Helvetica,Arial,sans-serif; color:#666; font-weight:normal; text-decoration:none; - border:none; padding:0; margin:0; } + text-align:left; border:none; padding:0; margin:0; } /* #TOOLBAR/toggle# */ -#cms_toolbar-toggle { cursor:pointer; position:absolute; right:10px; top:0; z-index:9999999; padding-top:8px !important; } +#cms_toolbar-toggle { cursor:pointer; position:absolute; width:20px; right:18px; top:0; z-index:9999999; padding-top:8px !important; } /* #TOOLBAR/toggle# */ #cms_toolbar-dim { display:none; position:absolute; left:0; top:0; z-index:99999; background:#000; width:100%; height:100%; opacity:0.6; } +/* #TOOLBAR/buttons# */ +.cms_toolbar-btn_left { color:#5b80b2; float:left; height:26px; overflow:hidden; + background:url('../../images/toolbar/sprite_toolbar.png') no-repeat left -42px; } +.cms_toolbar-btn_right { float:left; color:#5b80b2 !important; cursor:pointer; + padding:4px 8px 4px !important; margin-right:0 !important; + background:url('../../images/toolbar/sprite_toolbar.png') no-repeat right -68px; } +.cms_toolbar-btn_left:hover, .cms_toolbar-btn-active { background-position:left -94px !important; } +.cms_toolbar-btn_right:hover, .cms_toolbar-btn-active .cms_toolbar-btn_right { color:#385e92 !important; background-position:right -120px !important; } + +.cms_toolbar_icon { float:left; text-indent:-1000px; overflow:hidden; background:url('../../images/toolbar/sprite_toolbar.png') no-repeat left top; } +.cms_toolbar_icon-hide { display:none; float:left; text-indent:-1000px; overflow:hidden; } + +/* #TOOLBAR/buttons/icons# */ +.cms_toolbar_icon-toggle .cms_toolbar_icon { width:12px; background-position:-3px -149px; } +.cms_toolbar_icon-toggle:hover .cms_toolbar_icon { background-position:-3px -175px; } +.cms_toolbar-collapsed .cms_toolbar_icon-toggle .cms_toolbar_icon { background-position:-21px -149px; } +.cms_toolbar-collapsed .cms_toolbar_icon-toggle:hover .cms_toolbar_icon { background-position:-21px -175px; } + +.cms_toolbar_icon-edit .cms_toolbar_icon { width:12px; background-position:-111px -150px; } +.cms_toolbar_icon-edit:hover .cms_toolbar_icon { background-position:-111px -176px; } + +.cms_toolbar_icon-lock .cms_toolbar_icon { width:14px; background-position:-37px -150px; } +.cms_toolbar_icon-lock:hover .cms_toolbar_icon { background-position:-37px -176px; } + +.cms_toolbar_icon-settings .cms_toolbar_icon { width:17px; background-position:-92px -150px; } +.cms_toolbar_icon-settings:hover .cms_toolbar_icon { background-position:-92px -176px; } + +.cms_toolbar-btn_right .cms_toolbar_icon-more { float:right; width:14px; text-indent:-1000px; overflow:hidden; background-position:-72px -149px; } +.cms_toolbar-btn_right:hover .cms_toolbar_icon-more { background-position:-72px -175px; } + +/*##################################################|*/ /* #TOOLBAR/items# */ .cms_toolbar-item { float:left; display:none; padding:0 0 0 10px !important; position:relative; left:0; top:0; z-index:999; } .cms_toolbar-item_logout, .cms_toolbar-item_page, .cms_toolbar-item_admin, #cms_toolbar-item_login { padding-top:8px !important; } @@ -50,55 +79,53 @@ /* #TOOLBAR/items/switcher# */ .cms_toolbar-item_switcher { padding-top:9px !important; } .cms_toolbar-item_switcher-label { float:left; padding-top:3px; padding-right:10px; } -.cms_toolbar-item_switcher-link { float:left; width:80px; height:24px; text-indent:-1000px; overflow:hidden; outline:none; } +.cms_toolbar-item_switcher-link { float:left; width:80px; height:24px; text-indent:-1000px; overflow:hidden; } .cms_toolbar-item_switcher-link span { float:left; width:80px; height:24px; -webkit-border-radius:5px; -moz-border-radius:5px; border-radius:5px; background:url('../../images/toolbar/sprite_toolbar.png') no-repeat left -198px; } -/* #TOOLBAR/buttons# */ -.cms_toolbar-btn_left { color:#5b80b2; float:left; height:26px; overflow:hidden; - background:url('../../images/toolbar/sprite_toolbar.png') no-repeat left -42px; } -.cms_toolbar-btn_right { float:left; color:#5b80b2 !important; cursor:pointer; - padding:4px 8px 4px !important; margin-right:0 !important; - background:url('../../images/toolbar/sprite_toolbar.png') no-repeat right -68px; } -.cms_toolbar-btn_left:hover { background-position:left -94px; } -.cms_toolbar-btn_right:hover { color:#385e92 !important; background-position:right -120px; } - -.cms_toolbar_icon { float:left; text-indent:-1000px; overflow:hidden; background:url('../../images/toolbar/sprite_toolbar.png') no-repeat left top; } -.cms_toolbar_icon-hide { float:left; text-indent:-1000px; overflow:hidden; } - -.cms_toolbar_icon-toggle .cms_toolbar_icon { width:12px; background-position:-3px -149px; } -.cms_toolbar_icon-toggle:hover .cms_toolbar_icon { background-position:-3px -175px; } -.cms_toolbar-collapsed .cms_toolbar_icon-toggle .cms_toolbar_icon { background-position:-21px -149px; } -.cms_toolbar-collapsed .cms_toolbar_icon-toggle:hover .cms_toolbar_icon { background-position:-21px -175px; } +/* #TOOLBAR/items/custom# */ +.cms_toolbar-item_page .cms_toolbar-item_list li { min-width:300px; } +.cms_toolbar-item_moderator { padding-top:8px !important; } +.cms_toolbar-item_moderator a span { color:#f00 !important; } -.cms_toolbar_icon-edit .cms_toolbar_icon { width:12px; background-position:-57px -149px; } -.cms_toolbar_icon-edit:hover .cms_toolbar_icon { background-position:-57px -175px; } - -.cms_toolbar_icon-lock .cms_toolbar_icon { width:14px; background-position:-37px -150px; } -.cms_toolbar_icon-lock:hover .cms_toolbar_icon { background-position:-37px -176px; } - -.cms_toolbar_icon-settings .cms_toolbar_icon { width:17px; background-position:-92px -150px; } -.cms_toolbar_icon-settings:hover .cms_toolbar_icon { background-position:-92px -176px; } - -.cms_toolbar-btn_right .cms_toolbar_icon-more { float:right; width:14px; text-indent:-1000px; overflow:hidden; background-position:-72px -149px; } -.cms_toolbar-btn_right:hover .cms_toolbar_icon-more { background-position:-72px -175px; } +/* #TOOLBAR/list# */ +.cms_toolbar-item_list { display:none; list-style:none; padding:0; margin:0; position:absolute; top:35px; z-index:100; border:1px solid #ddd; background:#fff; + -webkit-border-radius:5px; -moz-border-radius:5px; border-radius:5px; } +.cms_toolbar-left .cms_toolbar-item_list { left:0; } +.cms_toolbar-right .cms_toolbar-item_list { right:0; } +.cms_toolbar-item_list li { padding:0; zoom:1; min-width:200px; } +.cms_toolbar-item_list li a { display:block; padding:4px 10px !important; zoom:1; white-space:nowrap; } +.cms_toolbar-item_list li a span { float:left; text-indent:-1000px; overflow:hidden; } +.cms_toolbar-item_list li a:hover { color:#fff !important; background:#5b80b2; } +.cms_toolbar-item_list li:first-child a { -webkit-border-radius:4px 4px 0 0; -moz-border-radius:4px 4px 0 0; border-radius:4px 4px 0 0; } +.cms_toolbar-item_list li:last-child a { -webkit-border-radius:0 0 4px 4px; -moz-border-radius:0 0 4px 4px; border-radius:0 0 4px 4px; } +.cms_toolbar-item_list li:only-child a { -webkit-border-radius:4px; -moz-border-radius:4px; border-radius:4px; } + +/* #TOOLBAR/list/icons# */ +.cms_toolbar-item_list .cms_toolbar_icon { width:18px; margin-right:4px; } +.cms_toolbar-item_list .cms_toolbar_icon-admin { background-position:-92px -150px; } +.cms_toolbar-item_list .cms_toolbar_icon-edit { background-position:-56px -149px; } +.cms_toolbar-item_list .cms_toolbar_icon-delete { background-position:-164px -150px; } +.cms_toolbar-item_list .cms_toolbar_icon-sitemap { background-position:-128px -150px; } +.cms_toolbar-item_list .cms_toolbar_icon-history { background-position:-146px -149px; } +.cms_toolbar-item_list .cms_toolbar_icon-child { background-position:-200px -149px; } +.cms_toolbar-item_list .cms_toolbar_icon-sibling { background-position:-218px -149px; } + +.cms_toolbar-item_list a:hover .cms_toolbar_icon-admin { background-position:-92px -176px; } +.cms_toolbar-item_list a:hover .cms_toolbar_icon-edit { background-position:-56px -175px; } +.cms_toolbar-item_list a:hover .cms_toolbar_icon-delete { background-position:-164px -176px; } +.cms_toolbar-item_list a:hover .cms_toolbar_icon-sitemap { background-position:-128px -176px; } +.cms_toolbar-item_list a:hover .cms_toolbar_icon-history { background-position:-146px -175px; } +.cms_toolbar-item_list a:hover .cms_toolbar_icon-child { background-position:-200px -175px; } +.cms_toolbar-item_list a:hover .cms_toolbar_icon-sibling { background-position:-218px -175px; } /* #TOOLBAR/status# */ .cms_toolbar-item_status { padding-top:8px !important; } -.cms_toolbar-item_status p { color:#5b80b2; margin:0; padding:3px 10px; border:1px solid #ddd; background:#fff; +.cms_toolbar-item_status p { color:#5b80b2 !important; margin:0; padding:3px 10px !important; border:1px solid #ddd !important; background:#fff; -webkit-border-radius:5px; -moz-border-radius:5px; border-radius:5px; } .cms_toolbar-item_status em { color:#000; } -/* #TOOLBAR/list# */ -.cms_toolbar-item_list { list-style:none; padding:0; margin:0; position:absolute; right:0; top:35px; z-index:100; border:1px solid #ddd; background:#fff; - -webkit-border-radius:5px; -moz-border-radius:5px; border-radius:5px; min-width:200px; } -.cms_toolbar-item_list li { padding:0; zoom:1; } -.cms_toolbar-item_list li a { display:block; padding:4px 10px !important; zoom:1; } - - - - diff --git a/cms/media/cms/images/toolbar/sprite_toolbar.png b/cms/media/cms/images/toolbar/sprite_toolbar.png index dfccc955abf56c8683b7cb011c2db1da0a2526aa..67b76e791e3d7ca51d3665858da496723a70f4bf 100644 GIT binary patch literal 13336 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 P0KPzFlpuvthQ9v+Wbx%z diff --git a/cms/media/cms/js/plugins/cms.placeholders.js b/cms/media/cms/js/plugins/cms.placeholders.js new file mode 100644 index 00000000000..d67ba2ccfea --- /dev/null +++ b/cms/media/cms/js/plugins/cms.placeholders.js @@ -0,0 +1,64 @@ +/** + * @author Angelo Dini + * @copyright http://www.divio.ch under the BSD Licence + * @requires Classy, jQuery + * + * check if classy.js exists */ + if(window['Class'] === undefined) log('classy.js is required!'); + +/*##################################################|*/ +/* #CUSTOM APP# */ +(function ($, Class) { + /** + * Toolbar + * @version: 0.0.1 + */ + CMS.Placeholders = Class.$extend({ + + options: { + 'page_is_defined': false, + 'edit_mode': false + }, + + initialize: function (container, options) { + // save reference to this class + var classy = this; + // check if only one element is found + if($(container).length > 2) { log('Toolbar Error: one element expected, multiple elements given.'); return false; } + // merge argument options with internal options + this.options = $.extend(this.options, options); + + // save toolbar elements + this.wrapper = $(container); + this.toolbar = this.wrapper.find('#cms_toolbar-toolbar'); + this.toolbar.left = this.toolbar.find('.cms_toolbar-left'); + this.toolbar.right = this.toolbar.find('.cms_toolbar-right'); + this.dim = this.wrapper.find('#cms_toolbar-dim'); + + // bind event to toggle button + this.toggle = this.wrapper.find('#cms_toolbar-toggle'); + this.toggle.bind('click', function (e) { + e.preventDefault(); + classy.toggleToolbar(); + }); + + // csrf security patch + patchCsrf(jQuery); + + // initial setups + this._setup(); + }, + + _setup: function () { + // set if toolbar is visible or not + ($.cookie('CMS_toolbar-collapsed') == 'false') ? this.toolbar.data('collapsed', true) : this.toolbar.data('collapsed', false); + + // init scripts + this.toggleToolbar(); + + // show toolbar + this.wrapper.show(); + } + + }); +})(jQuery, Class); \ No newline at end of file diff --git a/cms/media/cms/js/plugins/cms.toolbar.js b/cms/media/cms/js/plugins/cms.toolbar.js index df0bd76cdc5..b9c6d2bd8e6 100644 --- a/cms/media/cms/js/plugins/cms.toolbar.js +++ b/cms/media/cms/js/plugins/cms.toolbar.js @@ -55,6 +55,9 @@ // init scripts this.toggleToolbar(); + + // show toolbar + this.wrapper.show(); }, toggleToolbar: function () { @@ -152,6 +155,11 @@ } }, + removeItem: function (index) { + // function to remove an item + if(index) $($('.cms_toolbar-item:visible')[index]).remove(); + }, + registerItems: function (items) { // make sure an array is passed if(typeof(items) != 'object') return false; @@ -237,9 +245,44 @@ // take a copy of the template, append it, remove it, copy html... because jquery is stupid var template = this._processTemplate('#cms_toolbar-item_list', obj); - // here i have to do some crazy shit + // item injection logic + var list = template.find('.cms_toolbar-item_list').html().trim(); + var tmp = ''; + // lets loop through the items + $(obj.items).each(function (index, value) { + // add icon if available + var icon = (value.icon) ? 'cms_toolbar_icon ' : ''; + // replace attributes + tmp += list.replace('[list_title]', value.title).replace('[list_url]', value.url).replace('', ''); + }); + // add items + template.find('.cms_toolbar-item_list').html($(tmp)); + // add events + var container = template.find('.cms_toolbar-item_list'); + var btn = template.find('.cms_toolbar-btn'); + btn.data('collapsed', true).bind('click', function (e) { + e.preventDefault(); + ($(this).data('collapsed')) ? show_list() : hide_list(); + }); + function show_list() { + // add event to body to hide the list needs a timout for late trigger + setTimeout(function () { + $(window).bind('click', hide_list); + }, 100); + + // show element and save data + container.show(); + btn.addClass('cms_toolbar-btn-active').data('collapsed', false); + } + function hide_list() { + // remove the body event + $(window).unbind('click'); + // show element and save data + container.hide(); + btn.removeClass('cms_toolbar-btn-active').data('collapsed', true); + } // append item this._injectItem(template, obj.dir, obj.order); @@ -251,6 +294,7 @@ // replace placeholders if(obj.title) template = template.replace('[title]', obj.title); if(obj.url) template = template.replace('[url]', obj.url); + if(!obj.icon && obj.type == 'button') template = template.replace(' ', '').replace(' ', ''); template = (obj.token) ? template.replace('[token]', obj.token) : template.replace('[token]', ''); template = (obj.action) ? template.replace('[action]', obj.action) : template.replace('[action]', ''); template = (obj.hidden) ? template.replace('[hidden]', obj.hidden) : template.replace('[hidden]', ''); @@ -280,6 +324,9 @@ var leftContent = left.find('> *'); if(!leftContent.length) { left.append(el); return false; } + // first insert it at start position + el.insertBefore($(leftContent[0])); + // and what happens if there is already an element? leftContent.each(function (index, item) { // sava data from element @@ -293,6 +340,9 @@ var rightContent = right.find('> *'); if(!rightContent.length) { right.append(el); return false; } + // first insert it at start position + el.insertBefore($(rightContent[0])); + rightContent.each(function (index, item) { // save data from element var current = $(item).data('order'); @@ -347,9 +397,4 @@ } }); - - //CMS.Collapse - // need some awesome show hide effects - - // new Toolbar(); })(jQuery, Class); \ No newline at end of file diff --git a/cms/templates/cms/toolbar/toolbar.html b/cms/templates/cms/toolbar/toolbar.html index 2bd7eea75d7..c330269560c 100644 --- a/cms/templates/cms/toolbar/toolbar.html +++ b/cms/templates/cms/toolbar/toolbar.html @@ -4,6 +4,7 @@ + -
          +